4 // It is anticipated that when userid support is added to phpwiki,
5 // this object will hold much more information (e-mail,
6 // home(wiki)page, etc.) about the user.
8 // There seems to be no clean way to "log out" a user when using HTTP
9 // authentication. So we'll hack around this by storing the currently
10 // logged in username and other state information in a cookie.
12 // 2002-09-08 11:44:04 rurban
13 // Todo: Fix prefs cookie/session handling:
14 // _userid and _homepage cookie/session vars still hold the
16 // If no homepage, fallback to prefs in cookie as in 1.3.3.
22 require_once (dirname(__FILE__)."/Utils.php");
25 class Buddy extends WikiUserNew {}
28 function addBuddy($user, $buddy, $dbi)
30 $START_DELIM = _("Buddies:");
31 // the delimiter is really a comma, but include a space to make it look
32 // nicer (getBuddies strips out extra spaces when extracting buddies)
35 addPageTextData($user, $dbi, $buddy, $START_DELIM, $DELIM);
38 function getBuddies($fromUser, $dbi, $thePage = ""){
39 $START_DELIM = $thePage . _("Buddies:");
41 $buddies_array = getPageTextData($fromUser, $dbi, $START_DELIM, $DELIM);
42 if (count($buddies_array) == 0 and $thePage !== "") {
43 $buddies_array = getPageTextData($fromUser, $dbi, _("Buddies:"), $DELIM);
45 if (empty($buddies_array)) {
46 // 1. calculate buddies automatically from the 10 top raters with the most numratings (min. 5 ratings).
47 // of all pages (only SQL)
48 // or 2. from 10 random raters of this page (non-SQL)
49 // or 3. from all members of your group (department) if <= 20
50 $rdbi = RatingsDb::getTheRatingsDb();
52 if (RATING_STORAGE == 'SQL') {
53 //$result = $this->_sql_get_rating_result($dimension, null, null, 'numrating', "rater");
54 $dbh = &$rdbi->_sqlbackend;
55 extract($dbh->_table_names);
56 $query = "SELECT raterpage, COUNT(rateepage) as numrating"
57 . " FROM $rating_tbl r, $page_tbl p "
58 // . " WHERE ratingvalue > 0 AND numrating > 5"
59 . " WHERE ratingvalue > 0"
60 . " GROUP BY raterpage"
61 . " ORDER BY numrating"
63 $result = $dbh->_dbh->query($query);
65 // from 10 random raters of this page (non-SQL)
71 if (is_array($buddies_array))
72 foreach ($buddies_array as $userid) {
73 $result[] = new RatingsUser($userid);
78 function CoAgreement($dbi, $page, $users, $active_userid){
79 //Returns a "yes" 1, "no" -1, or "unsure" 0 for whether
80 //the group agrees on the page based on their ratings
83 $my_ratings_iter = $dbi->get_rating(0, $active_userid, $page);
84 $my_ratings_single = $my_ratings_iter->next();
85 $cur_rating = $my_ratings_single['ratingvalue'];
89 if($cur_rating >= $MIDDLE_RATING){
94 foreach($users as $buddy){
95 $buddy_rating_iter = $dbi->get_rating(0, $buddy, $cur_page);
96 $buddy_rating_array = $buddy_rating_iter->next();
97 $buddy_rating = $buddy_rating_array['ratingvalue'];
98 if($buddy_rating == ""){
100 }else if($agreePos && $buddy_rating >= $MIDDLE_RATING){
102 } else if(!$agreePos && $buddy_rating < $MIDDLE_RATING){
109 if($agree && $agreePos){
111 } else if($agree && !$agreePos){
118 function MinMisery($dbi, $page, $users, $active_userid){
119 //Returns the minimum rating for the page
120 //from all the users.
124 $my_ratings_iter = $dbi->get_rating(0, $active_userid, $page);
125 $my_ratings_single = $my_ratings_iter->next();
126 $cur_rating = $my_ratings_single['ratingvalue'];
129 foreach($users as $buddy){
130 $buddy_rating_iter = $dbi->get_rating(0, $buddy, $cur_page);
131 $buddy_rating_array = $buddy_rating_iter->next();
132 $buddy_rating = $buddy_rating_array['ratingvalue'];
133 if($buddy_rating != "" && $buddy_rating < $min){
134 $min = $buddy_rating;
140 function AverageRating($dbi, $page, $users, $active_userid){
141 //Returns the average rating for the page
142 //from all the users.
146 $my_ratings_iter = $dbi->get_rating(0, $active_userid, $page);
147 $my_ratings_single = $my_ratings_iter->next();
148 $cur_rating = $my_ratings_single['ratingvalue'];
149 if($cur_rating != ""){
150 $total = $cur_rating;
156 foreach($users as $buddy){
157 $buddy_rating_iter = $dbi->get_rating(0, $buddy, $cur_page);
158 $buddy_rating_array = $buddy_rating_iter->next();
159 $buddy_rating = $buddy_rating_array['ratingvalue'];
160 if($buddy_rating != ""){
161 $total = $total + $buddy_rating;
168 return $total / $count;
176 // c-hanging-comment-ender-p: nil
177 // indent-tabs-mode: nil