root/devel/mod/browser/lib.php

Revision 971, 4.5 kB (checked in by sven, 2 years ago)

browser: only pull out fields we need

  • Property svn:eol-style set to native
Line 
1 <?php
2
3     function browser_pagesetup() {
4         // register links --
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     // Advanced search function
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 "; // assumes GROUP BY u.ident
71         switch($type) {
72             
73             //wildcards
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             // equals
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 ?>
Note: See TracBrowser for help on using the browser.