[ Index ]

PHP Cross Reference of MyBB 1.6.5

title

Body

[close]

/inc/ -> functions_online.php (source)

   1  <?php
   2  /**
   3   * MyBB 1.6
   4   * Copyright 2010 MyBB Group, All Rights Reserved
   5   *
   6   * Website: http://mybb.com
   7   * License: http://mybb.com/about/license
   8   *
   9   * $Id: functions_online.php 5623 2011-10-01 02:46:09Z ralgith $
  10   */
  11  
  12  $uid_list = $aid_list = $pid_list = $tid_list = $fid_list = $eid_list = array();
  13  
  14  /**
  15   * Fetch a users activity and any corresponding details from their location.
  16   *
  17   * @param string The location (URL) of the user.
  18   * @return array Array of location and activity information
  19   */
  20  function fetch_wol_activity($location, $nopermission=false)
  21  {
  22      global $uid_list, $aid_list, $pid_list, $tid_list, $fid_list, $eid_list, $plugins, $user, $parameters;
  23  
  24      $user_activity = array();
  25  
  26      $split_loc = explode(".php", $location);
  27      if($split_loc[0] == $user['location'])
  28      {
  29          $filename = '';
  30      }
  31      else
  32      {
  33          $filename = my_substr($split_loc[0], -my_strpos(strrev($split_loc[0]), "/"));
  34      }
  35      if($split_loc[1])
  36      {
  37          $temp = explode("&amp;", my_substr($split_loc[1], 1));
  38          foreach($temp as $param)
  39          {
  40              $temp2 = explode("=", $param, 2);
  41              $parameters[$temp2[0]] = $temp2[1];
  42          }
  43      }
  44      
  45      if($nopermission)
  46      {
  47          $filename = "nopermission";
  48      }
  49  
  50  
  51      switch($filename)
  52      {
  53          case "announcements":
  54              if(is_numeric($parameters['fid']))
  55              {
  56                  $fid_list[] = $parameters['fid'];
  57              }
  58              $user_activity['activity'] = "announcements";
  59              $user_activity['fid'] = $parameters['fid'];
  60              break;
  61          case "attachment":
  62              if(is_numeric($parameters['aid']))
  63              {
  64                  $aid_list[] = $parameters['aid'];
  65              }
  66              $user_activity['activity'] = "attachment";
  67              $user_activity['aid'] = $parameters['aid'];
  68              break;
  69          case "calendar":
  70              if($parameters['action'] == "event")
  71              {
  72                  if(is_numeric($parameters['eid']))
  73                  {
  74                      $eid_list[] = $parameters['eid'];
  75                  }
  76                  $user_activity['activity'] = "calendar_event";
  77                  $user_activity['eid'] = $parameters['eid'];
  78              }
  79              elseif($parameters['action'] == "addevent" || $parameters['action'] == "do_addevent")
  80              {
  81                  $user_activity['activity'] = "calendar_addevent";
  82              }
  83              elseif($parameters['action'] == "editevent" || $parameters['action'] == "do_editevent")
  84              {
  85                  $user_activity['activity'] = "calendar_editevent";
  86              }
  87              else
  88              {
  89                  $user_activity['activity'] = "calendar";
  90              }
  91              break;
  92          case "editpost":
  93              $user_activity['activity'] = "editpost";
  94              break;
  95          case "forumdisplay":
  96              if(is_numeric($parameters['fid']))
  97              {
  98                  $fid_list[] = $parameters['fid'];
  99              }
 100              $user_activity['activity'] = "forumdisplay";
 101              $user_activity['fid'] = $parameters['fid'];
 102              break;
 103          case "index":
 104          case '':
 105              $user_activity['activity'] = "index";
 106              break;
 107          case "managegroup":
 108              $user_activity['activity'] = "managegroup";
 109              break;
 110          case "member":
 111              if($parameters['action'] == "activate")
 112              {
 113                  $user_activity['activity'] = "member_activate";
 114              }
 115              elseif($parameters['action'] == "register" || $parameters['action'] == "do_register")
 116              {
 117                  $user_activity['activity'] = "member_register";
 118              }
 119              elseif($parameters['action'] == "login" || $parameters['action'] == "do_login")
 120              {
 121                  $user_activity['activity'] = "member_login";
 122              }
 123              elseif($parameters['action'] == "logout")
 124              {
 125                  $user_activity['activity'] = "member_logout";
 126              }
 127              elseif($parameters['action'] == "profile")
 128              {
 129                  $user_activity['activity'] = "member_profile";
 130                  if(is_numeric($parameters['uid']))
 131                  {
 132                      $uid_list[] = $parameters['uid'];
 133                  }
 134                  $user_activity['uid'] = $parameters['uid'];
 135              }
 136              elseif($parameters['action'] == "emailuser" || $parameters['action'] == "do_emailuser")
 137              {
 138                  $user_activity['activity'] = "member_emailuser";
 139              }
 140              elseif($parameters['action'] == "rate" || $parameters['action'] == "do_rate")
 141              {
 142                  $user_activity['activity'] = "member_rate";
 143              }
 144              elseif($parameters['action'] == "resendactivation" || $parameters['action'] == "do_resendactivation")
 145              {
 146                  $user_activity['activity'] = "member_resendactivation";
 147              }
 148              elseif($parameters['action'] == "lostpw" || $parameters['action'] == "do_lostpw" || $parameters['action'] == "resetpassword")
 149              {
 150                  $user_activity['activity'] = "member_lostpw";
 151              }
 152              else
 153              {
 154                  $user_activity['activity'] = "member";
 155              }
 156              break;
 157          case "memberlist":
 158              $user_activity['activity'] = "memberlist";
 159              break;
 160          case "misc":
 161              $accepted_parameters = array("markread", "help", "buddypopup", "smilies", "syndication", "imcenter", "dstswitch");
 162              if($parameters['action'] == "whoposted")
 163              {
 164                  if(is_numeric($parameters['tid']))
 165                  {
 166                      $tid_list[] = $parameters['tid'];
 167                  }
 168                  $user_activity['activity'] = "misc_whoposted";
 169                  $user_activity['tid'] = $parameters['tid'];
 170              }            
 171              elseif(in_array($parameters['action'], $accepted_parameters))
 172              {
 173                  $user_activity['activity'] = "misc_".$parameters['action'];
 174              }
 175              else
 176              {
 177                  $user_activity['activity'] = "misc";
 178              }
 179              break;
 180          case "modcp":
 181              $accepted_parameters = array("modlogs", "announcements", "finduser", "warninglogs", "ipsearch");
 182              
 183              foreach($accepted_parameters as $action)
 184              {
 185                  if($parameters['action'] == $action)
 186                  {
 187                      $user_activity['activity'] = "modcp_".$action;
 188                      break;
 189                  }
 190              }
 191              
 192              $accepted_parameters = array();
 193              $accepted_parameters['report'] = array("do_reports", "reports", "allreports");            
 194              $accepted_parameters['new_announcement'] = array("do_new_announcement", "new_announcement");
 195              $accepted_parameters['delete_announcement'] = array("do_delete_announcement", "delete_announcement");
 196              $accepted_parameters['edit_announcement'] = array("do_edit_announcement", "edit_announcement");
 197              $accepted_parameters['mod_queue'] = array("do_modqueue", "modqueue");
 198              $accepted_parameters['editprofile'] = array("do_editprofile", "editprofile");
 199              $accepted_parameters['banning'] = array("do_banuser", "banning", "liftban", "banuser");
 200              
 201              foreach($accepted_parameters as $name => $actions)
 202              {
 203                  if(in_array($parameters['action'], $actions))
 204                  {                    
 205                      $user_activity['activity'] = "modcp_".$name;
 206                      break;
 207                  }
 208              }
 209              
 210              if(!$user_activity['activity'])
 211              {
 212                  $user_activity['activity'] = "modcp";
 213              }
 214              break;
 215          case "moderation":
 216              $user_activity['activity'] = "moderation";
 217              break;
 218          case "newreply":
 219              if(is_numeric($parameters['pid']))
 220              {
 221                  $pid_list[] = $parameters['pid'];
 222                  $user_activity['activity'] = "newreply";
 223                  $user_activity['pid'] = $parameters['pid'];
 224              }
 225              else
 226              {
 227                  if(is_numeric($parameters['tid']))
 228                  {
 229                      $tid_list[] = $parameters['tid'];
 230                  }
 231                  $user_activity['activity'] = "newreply";
 232                  $user_activity['tid'] = $parameters['tid'];
 233              }
 234              break;
 235          case "newthread":
 236              if(is_numeric($parameters['fid']))
 237              {
 238                  $fid_list[] = $parameters['fid'];
 239              }
 240              $user_activity['activity'] = "newthread";
 241              $user_activity['fid'] = $parameters['fid'];
 242              break;
 243          case "online":
 244              if($parameters['action'] == "today")
 245              {
 246                  $user_activity['activity'] = "woltoday";
 247              }
 248              else
 249              {
 250                  $user_activity['activity'] = "wol";
 251              }
 252              break;
 253          case "polls":
 254              // Make the "do" parts the same as the other one.
 255              if($parameters['action'] == "do_newpoll")
 256              {
 257                  $user_activity['activity'] = "newpoll";
 258              }
 259              elseif($parameters['action'] == "do_editpoll")
 260              {
 261                  $user_activity['activity'] = "editpoll";
 262              }
 263              else
 264              {
 265                  $accepted_parameters = array("do_editpoll", "editpoll", "newpoll", "do_newpoll", "showresults", "vote");
 266              
 267                  foreach($accepted_parameters as $action)
 268                  {
 269                      if($parameters['action'] == $action)
 270                      {
 271                          $user_activity['activity'] = $action;
 272                          break;
 273                      }
 274                  }
 275                  
 276                  if(!$user_activity['activity'])
 277                  {
 278                      $user_activity['activity'] = "showresults";
 279                  }
 280              }
 281              break;
 282          case "printthread":
 283              if(is_numeric($parameters['tid']))
 284              {
 285                  $tid_list[] = $parameters['tid'];
 286              }
 287              $user_activity['activity'] = "printthread";
 288              $user_activity['tid'] = $parameters['tid'];
 289              break;
 290          case "private":
 291              if($parameters['action'] == "send" || $parameters['action'] == "do_send")
 292              {
 293                  $user_activity['activity'] = "private_send";
 294              }
 295              elseif($parameters['action'] == "read")
 296              {
 297                  $user_activity['activity'] = "private_read";
 298              }
 299              elseif($parameters['action'] == "folders" || $parameters['action'] == "do_folders")
 300              {
 301                  $user_activity['activity'] = "private_folders";
 302              }
 303              else
 304              {
 305                  $user_activity['activity'] = "private";
 306              }
 307              break;
 308          case "ratethread":
 309              $user_activity['activity'] = "ratethread";
 310              break;
 311          case "report":
 312              $user_activity['activity'] = "report";
 313              break;
 314          case "reputation":
 315              if(is_numeric($parameters['uid']))
 316              {
 317                  $uid_list[] = $parameters['uid'];
 318                  $user_activity['uid'] = $parameters['uid'];
 319              }
 320  
 321              if($parameters['action'] == "add")
 322              {
 323                  $user_activity['activity'] = "reputation";
 324              }
 325              else
 326              {
 327                  $user_activity['activity'] = "reputation_report";
 328              }
 329              break;
 330          case "search":
 331              $user_activity['activity'] = "search";
 332              break;
 333          case "sendthread":
 334              if(is_numeric($parameters['tid']))
 335              {
 336                  $tid_list[] = $parameters['tid'];
 337              }
 338              $user_activity['activity'] = "sendthread";
 339              $user_activity['tid'] = $parameters['tid'];
 340          break;
 341          case "showteam":
 342              $user_activity['activity'] = "showteam";
 343              break;
 344          case "showthread":
 345              if(is_numeric($parameters['pid']) && $parameters['action'] == "showpost")
 346              {
 347                  $pid_list[] = $parameters['pid'];
 348                  $user_activity['activity'] = "showpost";
 349                  $user_activity['pid'] = $parameters['pid'];
 350              }
 351              else
 352              {
 353                  if($parameters['page'])
 354                  {
 355                      $user_activity['page'] = $parameters['page'];
 356                  }
 357                  if(is_numeric($parameters['tid']))
 358                  {
 359                      $tid_list[] = $parameters['tid'];
 360                  }
 361                  $user_activity['activity'] = "showthread";
 362                  $user_activity['tid'] = $parameters['tid'];
 363              }
 364              break;
 365          case "stats":
 366              $user_activity['activity'] = "stats";
 367              break;
 368          case "usercp":
 369              if($parameters['action'] == "profile" || $parameters['action'] == "do_profile")
 370              {
 371                  $user_activity['activity'] = "usercp_profile";
 372              }
 373              elseif($parameters['action'] == "options" || $parameters['action'] == "do_options")
 374              {
 375                  $user_activity['activity'] = "usercp_options";
 376              }
 377              elseif($parameters['action'] == "password" || $parameters['action'] == "do_password")
 378              {
 379                  $user_activity['activity'] = "usercp_password";
 380              }
 381              elseif($parameters['action'] == "editsig" || $parameters['action'] == "do_editsig")
 382              {
 383                  $user_activity['activity'] = "usercp_editsig";
 384              }
 385              elseif($parameters['action'] == "avatar" || $parameters['action'] == "do_avatar")
 386              {
 387                  $user_activity['activity'] = "usercp_avatar";
 388              }
 389              elseif($parameters['action'] == "editlists" || $parameters['action'] == "do_editlists")
 390              {
 391                  $user_activity['activity'] = "usercp_editlists";
 392              }
 393              elseif($parameters['action'] == "favorites")
 394              {
 395                  $user_activity['activity'] = "usercp_favorites";
 396              }
 397              elseif($parameters['action'] == "subscriptions")
 398              {
 399                  $user_activity['activity'] = "usercp_subscriptions";
 400              }
 401              elseif($parameters['action'] == "notepad" || $parameters['action'] == "do_notepad")
 402              {
 403                  $user_activity['activity'] = "usercp_notepad";
 404              }
 405              else
 406              {
 407                  $user_activity['activity'] = "usercp";
 408              }
 409              break;
 410          case "usercp2":
 411              if($parameters['action'] == "addfavorite" || $parameters['action'] == "removefavorite" || $parameters['action'] == "removefavorites")
 412              {
 413                  $user_activity['activity'] = "usercp2_favorites";
 414              }
 415              else if($parameters['action'] == "addsubscription" || $parameters['action'] == "do_addsubscription" || $parameters['action'] == "removesubscription" || $parameters['action'] == "removesubscriptions")
 416              {
 417                  $user_activity['activity'] = "usercp2_subscriptions";
 418              }
 419              break;
 420          case "portal":
 421              $user_activity['activity'] = "portal";
 422              break;
 423          case "warnings":
 424              if($parameters['action'] == "warn" || $parameters['action'] == "do_warn")
 425              {
 426                  $user_activity['activity'] = "warnings_warn";
 427              }
 428              elseif($parameters['action'] == "do_revoke")
 429              {
 430                  $user_activity['activity'] = "warnings_revoke";
 431              }
 432              elseif($parameters['action'] == "view")
 433              {
 434                  $user_activity['activity'] = "warnings_view";
 435              }
 436              else
 437              {
 438                  $user_activity['activity'] = "warnings";
 439              }
 440              break;
 441          case "nopermission":
 442              $user_activity['activity'] = "nopermission";
 443              $user_activity['nopermission'] = 1;
 444              break;
 445          default:
 446              $user_activity['activity'] = "unknown";
 447              break;
 448      }
 449      
 450      // Expects $location to be passed through already sanitized
 451      $user_activity['location'] = $location;
 452      
 453      $user_activity = $plugins->run_hooks("fetch_wol_activity_end", $user_activity);
 454      
 455      return $user_activity;
 456  }
 457  
 458  /**
 459   * Builds a friendly named Who's Online location from an "activity" and array of user data. Assumes fetch_wol_activity has already been called.
 460   *
 461   * @param array Array containing activity and essential IDs.
 462   * @return string Location name for the activity being performed.
 463   */
 464  function build_friendly_wol_location($user_activity)
 465  {
 466      global $db, $lang, $uid_list, $aid_list, $pid_list, $tid_list, $fid_list, $eid_list, $plugins, $parser, $mybb;
 467      global $threads, $forums, $forums_linkto, $posts, $events, $usernames, $attachments;
 468  
 469      // Fetch forum permissions for this user
 470      $unviewableforums = get_unviewable_forums();
 471      if($unviewableforums)
 472      {
 473          $fidnot = " AND fid NOT IN ($unviewableforums)";
 474      }
 475  
 476      // Fetch any users
 477      if(!is_array($usernames) && count($uid_list) > 0)
 478      {
 479          $uid_sql = implode(",", $uid_list);
 480          $query = $db->simple_select("users", "uid,username", "uid IN ($uid_sql)");
 481          while($user = $db->fetch_array($query))
 482          {
 483              $usernames[$user['uid']] = $user['username'];
 484          }
 485      }
 486      
 487      // Fetch any attachments
 488      if(!is_array($attachments) && count($aid_list) > 0)
 489      {
 490          $aid_sql = implode(",", $aid_list);
 491          $query = $db->simple_select("attachments", "aid,pid", "aid IN ($aid_sql)");
 492          while($attachment = $db->fetch_array($query))
 493          {
 494              $attachments[$attachment['aid']] = $attachment['pid'];
 495              $pid_list[] = $attachment['pid'];
 496          }
 497      }
 498  
 499      // Fetch any posts
 500      if(!is_array($posts) && count($pid_list) > 0)
 501      {
 502          $pid_sql = implode(",", $pid_list);
 503          $query = $db->simple_select("posts", "pid,tid", "pid IN ($pid_sql) $fidnot");
 504          while($post = $db->fetch_array($query))
 505          {
 506              $posts[$post['pid']] = $post['tid'];
 507              $tid_list[] = $post['tid'];
 508          }
 509      }
 510  
 511      // Fetch any threads
 512      if(!is_array($threads) && count($tid_list) > 0)
 513      {
 514          $perms = array();
 515          $tid_sql = implode(",", $tid_list);
 516          $query = $db->query("
 517              SELECT t.uid, t.fid, t.tid, t.subject, t.visible, p.displaystyle AS threadprefix
 518              FROM ".TABLE_PREFIX."threads t
 519              LEFT JOIN ".TABLE_PREFIX."threadprefixes p ON (p.pid=t.prefix)
 520              WHERE tid IN({$tid_sql}) {$fidnot} {$visible}
 521          ");
 522  
 523          while($thread = $db->fetch_array($query))
 524          {
 525              if(!$perms[$thread['fid']])
 526              {
 527                  $perms[$thread['fid']] = forum_permissions($thread['fid']);
 528              }
 529  
 530              if($perms[$thread['fid']]['canonlyviewownthreads'] == 1 && $thread['uid'] != $mybb->user['uid'] && !is_moderator($thread['fid']))
 531              {
 532                  continue;
 533              }
 534  
 535              if(is_moderator($thread['fid']) || $thread['visible'] != '0')
 536              {
 537                  $thread_title = '';
 538                  if($thread['threadprefix'])
 539                  {
 540                      $thread_title = $thread['threadprefix'].'&nbsp;';
 541                  }
 542                  
 543                  $thread_title .= htmlspecialchars_uni($parser->parse_badwords($thread['subject']));
 544                  
 545                  $threads[$thread['tid']] = $thread_title;
 546                  $fid_list[] = $thread['fid'];
 547              }
 548          }
 549      }
 550  
 551      // Fetch any forums
 552      if(!is_array($forums) && count($fid_list) > 0)
 553      {
 554          $fid_sql = implode(",", $fid_list);
 555          $query = $db->simple_select("forums", "fid,name,linkto", "fid IN ($fid_sql) $fidnot");
 556          while($forum = $db->fetch_array($query))
 557          {
 558              $forums[$forum['fid']] = $forum['name'];
 559              $forums_linkto[$forum['fid']] = $forum['linkto'];
 560          }
 561      }
 562  
 563      // And finaly any events
 564      if(!is_array($events) && count($eid_list) > 0)
 565      {
 566          $eid_sql = implode(",", $eid_list);
 567          $query = $db->simple_select("events", "eid,name", "eid IN ($eid_sql)");
 568          while($event = $db->fetch_array($query))
 569          {
 570              $events[$event['eid']] = htmlspecialchars_uni($parser->parse_badwords($event['name']));
 571          }
 572      }
 573  
 574      // Now we've got everything we need we can put a name to the location
 575      switch($user_activity['activity'])
 576      {
 577          // announcement.php functions
 578          case "announcements":
 579              if($forums[$user_activity['fid']])
 580              {
 581                  $location_name = $lang->sprintf($lang->viewing_announcements, get_forum_link($user_activity['fid']), $forums[$user_activity['fid']]);
 582              }
 583              else
 584              {
 585                  $location_name = $lang->viewing_announcements2;
 586              }
 587              break;
 588          // attachment.php actions
 589          case "attachment":
 590              $pid = $attachments[$user_activity['aid']];
 591              $tid = $posts[$pid];
 592              if($threads[$tid])
 593              {
 594                  $location_name = $lang->sprintf($lang->viewing_attachment2, $user_activity['aid'], $threads[$tid], get_thread_link($tid));
 595              }
 596              else
 597              {
 598                  $location_name = $lang->viewing_attachment;
 599              }
 600              break;
 601          // calendar.php functions
 602          case "calendar":
 603              $location_name = $lang->viewing_calendar;
 604              break;
 605          case "calendar_event":
 606              if($events[$user_activity['eid']])
 607              {
 608                  $location_name = $lang->sprintf($lang->viewing_event2, get_event_link($user_activity['eid']), $events[$user_activity['eid']]);
 609              }
 610              else
 611              {
 612                  $location_name = $lang->viewing_event;
 613              }
 614              break;
 615          case "calendar_addevent":
 616              $location_name = $lang->adding_event;
 617              break;
 618          case "calendar_editevent":
 619              $location_name = $lang->editing_event;
 620              break;
 621          // editpost.php functions
 622          case "editpost":
 623              $location_name = $lang->editing_post;
 624              break;
 625          // forumdisplay.php functions
 626          case "forumdisplay":
 627              if($forums[$user_activity['fid']])
 628              {
 629                  if($forums_linkto[$user_activity['fid']])
 630                  {
 631                      $location_name = $lang->sprintf($lang->forum_redirect_to, get_forum_link($user_activity['fid']), $forums[$user_activity['fid']]);
 632                  }
 633                  else
 634                  {
 635                      $location_name = $lang->sprintf($lang->viewing_forum2, get_forum_link($user_activity['fid']), $forums[$user_activity['fid']]);
 636                  }
 637              }
 638              else
 639              {
 640                  $location_name = $lang->viewing_forum;
 641              }
 642              break;
 643          // index.php functions
 644          case "index":
 645              $location_name = $lang->sprintf($lang->viewing_index, $mybb->settings['bbname']);
 646              break;
 647          // managegroup.php functions
 648          case "managegroup":
 649              $location_name = $lang->managing_group;
 650              break;
 651          // member.php functions
 652          case "member_activate":
 653              $location_name = $lang->activating_account;
 654              break;
 655          case "member_profile":
 656              if($usernames[$user_activity['uid']])
 657              {
 658                  $location_name = $lang->sprintf($lang->viewing_profile2, get_profile_link($user_activity['uid']), $usernames[$user_activity['uid']]);
 659              }
 660              else
 661              {
 662                  $location_name = $lang->viewing_profile;
 663              }
 664              break;
 665          case "member_register":
 666              $location_name = $lang->registering;
 667              break;
 668          case "member":
 669          case "member_login":
 670              // Guest or member?
 671              if($mybb->user['uid'] == 0)
 672              {
 673                  $location_name = $lang->logging_in;
 674              }
 675              else
 676              {
 677                  $location_name = $lang->logging_in_plain;
 678              }
 679              break;
 680          case "member_logout":
 681              $location_name = $lang->logging_out;
 682              break;
 683          case "member_emailuser":
 684              $location_name = $lang->emailing_user;
 685              break;
 686          case "member_rate":
 687              $location_name = $lang->rating_user;
 688              break;
 689          case "member_resendactivation":
 690              $location_name = $lang->member_resendactivation;
 691              break;
 692          case "member_lostpw":
 693              $location_name = $lang->member_lostpw;
 694              break;
 695          // memberlist.php functions
 696          case "memberlist":
 697              $location_name = $lang->viewing_memberlist;
 698              break;
 699          // misc.php functions
 700          case "misc_dstswitch":
 701              $location_name = $lang->changing_dst;
 702              break;
 703          case "misc_whoposted":
 704              if($threads[$user_activity['tid']])
 705              {
 706                  $location_name = $lang->sprintf($lang->viewing_whoposted2, get_thread_link($user_activity['tid']), $threads[$user_activity['tid']]);
 707              }
 708              else
 709              {
 710                  $location_name = $lang->viewing_whoposted;
 711              }
 712              break;
 713          case "misc_markread":
 714              $location_name = $lang->sprintf($lang->marking_read, $mybb->post_code);
 715              break;
 716          case "misc_help":
 717              $location_name = $lang->viewing_helpdocs;
 718              break;
 719          case "misc_buddypopup":
 720              $location_name = $lang->viewing_buddylist;
 721              break;
 722          case "misc_smilies":
 723              $location_name = $lang->viewing_smilies;
 724              break;
 725          case "misc_syndication":
 726              $location_name = $lang->viewing_syndication;
 727              break;
 728          case "misc_imcenter":
 729              $location_name = $lang->viewing_imcenter;
 730              break;                        
 731          // modcp.php functions
 732          case "modcp_modlogs":
 733              $location_name = $lang->viewing_modlogs;
 734              break;
 735          case "modcp_announcements":
 736              $location_name = $lang->managing_announcements;
 737              break;
 738          case "modcp_finduser":
 739              $location_name = $lang->search_for_user;
 740              break;
 741          case "modcp_warninglogs":
 742              $location_name = $lang->managing_warninglogs;
 743              break;
 744          case "modcp_ipsearch":
 745              $location_name = $lang->searching_ips;
 746              break;
 747          case "modcp_report":
 748              $location_name = $lang->viewing_reports;
 749              break;
 750          case "modcp_new_announcement":
 751              $location_name = $lang->adding_announcement;
 752              break;
 753          case "modcp_delete_announcement":
 754              $location_name = $lang->deleting_announcement;
 755              break;
 756          case "modcp_edit_announcement":
 757              $location_name = $lang->editing_announcement;
 758              break;
 759          case "modcp_mod_queue":
 760              $location_name = $lang->managing_modqueue;
 761              break;
 762          case "modcp_editprofile":
 763              $location_name = $lang->editing_user_profiles;
 764              break;
 765          case "modcp_banning":
 766              $location_name = $lang->managing_bans;
 767              break;
 768          case "modcp":
 769              $location_name = $lang->viewing_modcp;
 770              break;
 771          // moderation.php functions
 772          case "moderation":
 773              $location_name = $lang->using_modtools;
 774              break;
 775          // newreply.php functions
 776          case "newreply":
 777              if($user_activity['pid'])
 778              {
 779                  $user_activity['tid'] = $posts[$user_activity['pid']];
 780              }
 781              if($threads[$user_activity['tid']])
 782              {
 783                  $location_name = $lang->sprintf($lang->replying_thread2, get_thread_link($user_activity['tid']), $threads[$user_activity['tid']]);
 784              }
 785              else
 786              {
 787                  $location_name = $lang->replying_thread;
 788              }
 789              break;
 790          // newthread.php functions
 791          case "newthread":
 792              if($forums[$user_activity['fid']])
 793              {
 794                  $location_name = $lang->sprintf($lang->posting_thread2, get_forum_link($user_activity['fid']), $forums[$user_activity['fid']]);
 795              }
 796              else
 797              {
 798                  $location_name = $lang->posting_thread;
 799              }
 800              break;
 801          // online.php functions
 802          case "wol":
 803              $location_name = $lang->viewing_wol;
 804              break;
 805          case "woltoday":
 806              $location_name = $lang->viewing_woltoday;
 807              break;
 808          // polls.php functions
 809          case "newpoll":
 810              $location_name = $lang->creating_poll;
 811              break;
 812          case "editpoll":
 813              $location_name = $lang->editing_poll;
 814              break;
 815          case "showresults":
 816              $location_name = $lang->viewing_pollresults;
 817              break;
 818          case "vote":
 819              $location_name = $lang->voting_poll;
 820              break;
 821          // printthread.php functions
 822          case "printthread":
 823              if($threads[$user_activity['tid']])
 824              {
 825                  $location_name = $lang->sprintf($lang->printing_thread2, get_thread_link($user_activity['tid']), $threads[$user_activity['tid']]);
 826              }
 827              else
 828              {
 829                  $location_name = $lang->printing_thread;
 830              }
 831              break;
 832          // private.php functions
 833          case "private_send":
 834              $location_name = $lang->sending_pm;
 835              break;
 836          case "private_read":
 837              $location_name = $lang->reading_pm;
 838              break;
 839          case "private_folders":
 840              $location_name = $lang->editing_pmfolders;
 841              break;
 842          case "private":
 843              $location_name = $lang->using_pmsystem;
 844              break;
 845          /* Ratethread functions */
 846          case "ratethread":
 847              $location_name = $lang->rating_thread;
 848              break;
 849          // report.php functions
 850          case "report":
 851              $location_name = $lang->reporting_post;
 852              break;
 853          // reputation.php functions
 854          case "reputation":
 855              $location_name = $lang->sprintf($lang->giving_reputation, get_profile_link($user_activity['uid']), $usernames[$user_activity['uid']]);
 856              break;
 857          case "reputation_report":
 858              $location_name = $lang->sprintf($lang->viewing_reputation_report, "reputation.php?uid={$user_activity['uid']}", $usernames[$user_activity['uid']]);
 859              break;
 860          // search.php functions
 861          case "search":
 862              $location_name = $lang->sprintf($lang->searching_forum, $mybb->settings['bbname']);
 863              break;
 864          // showthread.php functions
 865          case "showthread":
 866              if($threads[$user_activity['tid']])
 867              {
 868                  $pagenote = '';
 869                  $location_name = $lang->sprintf($lang->reading_thread2, get_thread_link($user_activity['tid']), $threads[$user_activity['tid']], $pagenote);
 870              }
 871              else
 872              {
 873                  $location_name = $lang->reading_thread;
 874              }
 875              break;
 876          // showteam.php functions
 877          case "showteam":
 878              $location_name = $lang->viewing_team;
 879              break;
 880          // stats.php functions
 881          case "stats":
 882              $location_name = $lang->viewing_stats;
 883              break;
 884          // usercp.php functions
 885          case "usercp_profile":
 886              $location_name = $lang->updating_profile;
 887              break;
 888          case "usercp_editlists":
 889              $location_name = $lang->managing_buddyignorelist;
 890              break;
 891          case "usercp_options":
 892              $location_name = $lang->updating_options;
 893              break;
 894          case "usercp_editsig":
 895              $location_name = $lang->editing_signature;
 896              break;
 897          case "usercp_avatar":
 898              $location_name = $lang->changing_avatar;
 899              break;
 900          case "usercp_subscriptions":
 901              $location_name = $lang->viewing_subscriptions;
 902              break;
 903          case "usercp_favorites":
 904              $location_name = $lang->viewing_favorites;
 905              break;
 906          case "usercp_notepad":
 907              $location_name = $lang->editing_pad;
 908              break;
 909          case "usercp_password":
 910              $location_name = $lang->editing_password;
 911              break;
 912          case "usercp":
 913              $location_name = $lang->user_cp;
 914              break;
 915          case "usercp2_favorites":
 916              $location_name = $lang->managing_favorites;
 917              break;
 918          case "usercp2_subscriptions":
 919              $location_name = $lang->managing_subscriptions;
 920              break;
 921          case "portal":
 922              $location_name = $lang->viewing_portal;
 923              break;
 924          // sendthread.php functions
 925          case "sendthread":
 926              $location_name = $lang->sending_thread;
 927              break;
 928          // warnings.php functions
 929          case "warnings_revoke":
 930              $location_name = $lang->revoking_warning;
 931              break;
 932          case "warnings_warn":
 933              $location_name = $lang->warning_user;
 934              break;
 935          case "warnings_view":
 936              $location_name = $lang->viewing_warning;
 937              break;
 938          case "warnings":
 939              $location_name = $lang->managing_warnings;
 940              break;
 941      }
 942      
 943      $plugin_array = array('user_activity' => &$user_activity, 'location_name' => &$location_name);
 944      $plugins->run_hooks("build_friendly_wol_location_end", $plugin_array);
 945      
 946      if($user_activity['nopermission'] == 1)
 947      {
 948          $location_name = $lang->viewing_noperms;
 949      }
 950      
 951      if(!$location_name)
 952      {
 953          $location_name = $lang->sprintf($lang->unknown_location, $user_activity['location']);
 954      }
 955  
 956      return $location_name;
 957  }
 958  
 959  /**
 960   * Build a Who's Online row for a specific user
 961   *
 962   * @param array Array of user information including activity information
 963   * @return string Formatted online row
 964   */
 965  function build_wol_row($user)
 966  {
 967      global $mybb, $lang, $templates, $theme, $session;
 968  
 969      // We have a registered user
 970      if($user['uid'] > 0)
 971      {
 972          // Only those with "canviewwolinvis" permissions can view invisible users
 973          if($user['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $user['uid'] == $mybb->user['uid'])
 974          {
 975              // Append an invisible mark if the user is invisible
 976              if($user['invisible'] == 1)
 977              {
 978                  $invisible_mark = "*";
 979              }
 980              else
 981              {
 982                  $invisible_mark = '';
 983              }
 984  
 985              $user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']);
 986              $online_name = build_profile_link($user['username'], $user['uid']).$invisible_mark;
 987          }
 988      }
 989      // We have a bot
 990      elseif($user['bot'])
 991      {
 992          $online_name = format_name($user['bot'], $user['usergroup']);
 993      }
 994      // Otherwise we've got a plain old guest
 995      else
 996      {
 997          $online_name = format_name($lang->guest, 1);
 998      }
 999  
1000      $online_time = my_date($mybb->settings['timeformat'], $user['time']);
1001      
1002      // Fetch the location name for this users activity
1003      $location = build_friendly_wol_location($user['activity']);
1004  
1005      // Can view IPs, then fetch the IP template
1006      if($mybb->usergroup['canviewonlineips'] == 1)
1007      {
1008          eval("\$user_ip = \"".$templates->get("online_row_ip")."\";");
1009      }
1010      else
1011      {
1012          $user['ip'] = '';
1013      }
1014  
1015      // And finally if we have permission to view this user, return the completed online row
1016      if($user['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $user['uid'] == $mybb->user['uid'])
1017      {
1018          eval("\$online_row = \"".$templates->get("online_row")."\";");
1019      }
1020      return $online_row;
1021  }
1022  ?>


Generated: Sun Dec 11 14:16:27 2011 Cross-referenced by PHPXref 0.7.1