| [ Index ] |
PHP Cross Reference of MyBB 1.6.5 |
[Summary view] [Print] [Text view]
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("&", 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'].' '; 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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sun Dec 11 14:16:27 2011 | Cross-referenced by PHPXref 0.7.1 |