| 1 |
<?php |
|---|
| 2 |
|
|---|
| 3 |
function browser_pagesetup() { |
|---|
| 4 |
|
|---|
| 5 |
global $profile_id; |
|---|
| 6 |
global $PAGE; |
|---|
| 7 |
global $CFG; |
|---|
| 8 |
|
|---|
| 9 |
$page_owner = $profile_id; |
|---|
| 10 |
|
|---|
| 11 |
|
|---|
| 12 |
if (defined("context") && context == "network") { |
|---|
| 13 |
$PAGE->menu_sub[] = array( 'name' => 'friend', |
|---|
| 14 |
'html' => a_href("{$CFG->wwwroot}mod/browser/index.php" , |
|---|
| 15 |
__gettext("Browse users and communities"))); |
|---|
| 16 |
} |
|---|
| 17 |
*/ |
|---|
| 18 |
} |
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 |
|
|---|
| 22 |
function browser_advanced_search($type, $display, $filter) { |
|---|
| 23 |
|
|---|
| 24 |
global $CFG, $db; |
|---|
| 25 |
$sql = ""; |
|---|
| 26 |
|
|---|
| 27 |
$filter = preg_replace("/([A-Za-z_0-9]*)\:\:/i", "", $filter); |
|---|
| 28 |
|
|---|
| 29 |
$sort = optional_param('sort', ''); |
|---|
| 30 |
$sortcriteria = optional_param('sortcriteria', ''); |
|---|
| 31 |
$recent = optional_param('recent',''); |
|---|
| 32 |
|
|---|
| 33 |
switch($display) { |
|---|
| 34 |
|
|---|
| 35 |
case "users": |
|---|
| 36 |
$where = " u.user_type = 'person' "; |
|---|
| 37 |
break; |
|---|
| 38 |
case "communities": |
|---|
| 39 |
$where = " u.user_type = 'community' "; |
|---|
| 40 |
break; |
|---|
| 41 |
default: |
|---|
| 42 |
$where = " 1 "; |
|---|
| 43 |
break; |
|---|
| 44 |
|
|---|
| 45 |
} |
|---|
| 46 |
|
|---|
| 47 |
$having = ''; |
|---|
| 48 |
if ($sort == "yes") { |
|---|
| 49 |
|
|---|
| 50 |
switch($sortcriteria) { |
|---|
| 51 |
case "1-10": |
|---|
| 52 |
$having = " HAVING members > 0 AND members < 11"; |
|---|
| 53 |
break; |
|---|
| 54 |
case "11-100": |
|---|
| 55 |
$having = " HAVING members > 10 AND members < 101"; |
|---|
| 56 |
break; |
|---|
| 57 |
case "101-1000": |
|---|
| 58 |
$having = " HAVING members > 100 AND members < 1001"; |
|---|
| 59 |
break; |
|---|
| 60 |
case "1000": |
|---|
| 61 |
$having = " HAVING members > 1000"; |
|---|
| 62 |
break; |
|---|
| 63 |
} |
|---|
| 64 |
|
|---|
| 65 |
} |
|---|
| 66 |
|
|---|
| 67 |
$formatted_filter = $db->qstr($filter); |
|---|
| 68 |
$formatted_filter_wild = $db->qstr("%" . $filter . "%"); |
|---|
| 69 |
|
|---|
| 70 |
$sql = "SELECT u.ident, u.username, u.name, u.icon, u.user_type, COUNT(m.ident) AS members "; |
|---|
| 71 |
switch($type) { |
|---|
| 72 |
|
|---|
| 73 |
|
|---|
| 74 |
case "name": $sql .= "FROM ".$CFG->prefix."users u JOIN ".$CFG->prefix."friends m ON m.friend = u.ident WHERE $where AND u.name LIKE " . $formatted_filter_wild . " GROUP BY u.ident $having ORDER BY members DESC, name DESC"; |
|---|
| 75 |
break; |
|---|
| 76 |
case "schools": $sql .= "FROM ".$CFG->prefix."users u JOIN ".$CFG->prefix."profile_data p ON u.ident = p.owner JOIN ".$CFG->prefix."friends m ON m.friend = u.ident WHERE $where AND p.value LIKE " . $formatted_filter_wild . " AND p.name IN ('highschool', 'university') GROUP BY u.ident $having ORDER BY members DESC, name DESC"; |
|---|
| 77 |
break; |
|---|
| 78 |
|
|---|
| 79 |
|
|---|
| 80 |
case "email": $sql .= "FROM ".$CFG->prefix."users u JOIN ".$CFG->prefix."tags t ON u.ident = t.owner JOIN ".$CFG->prefix."friends m ON m.friend = u.ident WHERE $where AND t.tag = " . $formatted_filter . " AND t.tagtype = 'emailaddress' GROUP BY u.ident $having ORDER BY members DESC, name DESC"; |
|---|
| 81 |
break; |
|---|
| 82 |
case "interests": $sql .= "FROM ".$CFG->prefix."users u JOIN ".$CFG->prefix."tags t ON u.ident = t.owner JOIN ".$CFG->prefix."friends m ON m.friend = u.ident WHERE $where AND t.tag = " . $formatted_filter . " AND t.tagtype = 'interests' GROUP BY u.ident $having ORDER BY members DESC, name DESC"; |
|---|
| 83 |
break; |
|---|
| 84 |
case "expertise": $sql .= "FROM ".$CFG->prefix."users u JOIN ".$CFG->prefix."tags t ON u.ident = t.owner JOIN ".$CFG->prefix."friends m ON m.friend = u.ident WHERE $where AND t.tag = " . $formatted_filter . " AND t.tagtype = 'skills' GROUP BY u.ident $having ORDER BY members DESC, name DESC"; |
|---|
| 85 |
break; |
|---|
| 86 |
case "language": $sql .= "FROM ".$CFG->prefix."users u JOIN ".$CFG->prefix."tags t ON u.ident = t.owner JOIN ".$CFG->prefix."friends m ON m.friend = u.ident WHERE $where AND t.tag = " . $formatted_filter . " AND t.tagtype = 'languages' GROUP BY u.ident $having ORDER BY members DESC, name DESC"; |
|---|
| 87 |
break; |
|---|
| 88 |
|
|---|
| 89 |
} |
|---|
| 90 |
|
|---|
| 91 |
return $sql; |
|---|
| 92 |
} |
|---|
| 93 |
|
|---|
| 94 |
?> |
|---|