root/devel/mod/file/lib/function_search.php

Revision 1539, 7.5 kB (checked in by renato, 1 year ago)

Setting prop svn:eol-style in LOTS of files.

  • Property svn:eol-style set to native
Line 
1 <?php
2 global $CFG,$USER,$PAGE;
3 global $db;
4 global $search_exclusions;
5
6
7 $handle = 1;
8
9 if (!empty($PAGE->returned_items) && $PAGE->returned_items == "accounts") {
10     $handle = 0;
11 }
12
13 if (isset($parameter) && $parameter[0] == "file" && $handle) {
14     
15     $dbtag = $db->qstr($parameter[1]);
16     
17     $search_exclusions[] = "folder";
18     $owner = optional_param('owner',0,PARAM_INT);
19     $accessline = "(" . run("users:access_level_sql_where",$USER->ident) . ")";
20     $accessline = str_replace("owner","t.owner",$accessline);
21     $searchline_files = "$accessline AND tagtype = 'file' AND owner = $owner AND tag = " . $dbtag . "";
22     $searchline_folders = "$accessline AND tagtype = 'folder' AND owner = $owner AND tag = " . $dbtag . "";
23     $searchline = "";
24     $searchlist = array();
25     $file_refs = get_records_select('tags t',$searchline_files);
26     $folder_refs = get_records_select('tags t',$searchline_folders);
27     if (!empty($folder_refs) && sizeof($folder_refs) > 0) {
28         foreach($folder_refs as $folder) {
29             $searchlist[] = $folder->ref;
30         }
31         $searchline = " ff.ident IN (" . implode(", ", $searchlist) . ") ";
32         if (!empty($PAGE->search_type_unformatted)) {
33             $searchline .= " AND u.user_type = " . $PAGE->search_type;
34         }
35         $folders = get_records_sql('SELECT ff.name,u.name AS userfullname,u.ident as userid,u.username,ff.ident
36                                     FROM '.$CFG->prefix.'file_folders ff
37                                     LEFT JOIN '.$CFG->prefix.'users u ON u.ident = ff.files_owner
38                                     WHERE ('.$searchline.') ORDER BY name ASC');
39         
40         $name = '';
41         if (is_array($folders) && count($folders) > 0) {
42             $keys = array_keys($folders);
43             $f = $folders[$keys[0]];
44             if (!empty($f)) {
45                 // $name = stripslashes($f->userfullname);
46                 $name = user_info("name", $f->userid);
47             }
48             
49             $run_result .= "<h2>" . sprintf(__gettext("Folders owned by '%s' in category '%s'"),$name,$parameter[1])."</h2>\n";
50             foreach($folders as $folder) {
51                 $run_result .= templates_draw(array(
52                                                     'context' => 'folder',
53                                                     'username' => $folder->username,
54                                                     'url' => url . $folder->username . "/files/" . $folder->ident,
55                                                     'ident' => $folder->ident,
56                                                     'name' => stripslashes($folder->name),
57                                                     'menu' => "",
58                                                     'icon' => url . "mod/file/folder.png",
59                                                     'keywords' => ""
60                                                     )
61                                               );
62             }
63         }
64     }
65     $searchline = "";
66     $searchlist = array();
67     if (!empty($file_refs) && sizeof($file_refs) > 0) {
68         foreach($file_refs as $file) {
69             $searchlist[] = $file->ref;
70         }
71         $searchline = " f.ident IN (" . implode(", ", $searchlist) . ") ";
72         $files = get_records_sql('SELECT f.*,u.username,u.name AS userfullname,u.ident as userid
73                                   FROM '.$CFG->prefix.'files f
74                                   LEFT JOIN '.$CFG->prefix.'users u ON u.ident = f.owner
75                                   WHERE ('.$searchline.') ORDER BY title ASC');
76         $name = '';
77         $username = '';
78
79         if (!empty($files)) {
80             $keys = array_keys($files);
81             $f = $files[$keys[0]];
82             if (!empty($f)) {
83                 // $name = stripslashes($f->userfullname);
84                 $name = user_info("name", $f->userid);
85                 $username = $f->username;
86             }
87             $folder_names = array();
88             
89             $run_result .= "<h2>" . sprintf(__gettext("Files owned by %s in category '%s'"), $name, $parameter[1])."</h2>\n";
90             foreach($files as $file) {
91                 if (!isset($folder_names[$file->folder])) {
92                     $folder_name[$file->folder] = get_field("file_folders","name","ident",$file->folder);
93                 }
94                 $menu = '[<a href="' . $CFG->wwwroot . $file->username . "/files/" . (($file->folder > 0) ? $file->folder . '/' : '') . '">' . sprintf(__gettext("In folder '%s'"), $folder_name[$file->folder]) . '</a>]';
95                 $run_result .= templates_draw(array(
96                                                     'context' => 'file',
97                                                     'username' => $file->username,
98                                                     'title' => stripslashes($file->title),
99                                                     'ident' => $file->ident,
100                                                     'folder' => $file->folder,
101                                                     'description' => stripslashes($file->description),
102                                                     'originalname' => stripslashes($file->originalname),
103                                                     'url' => url.$file->username."/files/".$file->folder."/".$file->ident."/".$file->originalname,
104                                                     'menu' => $menu,
105                                                     'icon' => url."mod/file/file.png",
106                                                     'keywords' => ""
107                                                     )
108                                               );
109             }
110             $run_result .= "<p><small>[ <a href=\"".url.$username . "/files/rss/" . $parameter[1] . "\">"
111                 .sprintf(__gettext("RSS feed for files owned by %s"), $name) . " in category '".$parameter[1]."'</a> ]</small></p>\n";
112         }
113     }
114     $searchline = " tagtype IN ('file','folder') AND tag = " . $dbtag . "";
115     $searchline = "(" . run("users:access_level_sql_where",$_SESSION['userid']) . ") and " . $searchline;
116     $searchline = str_replace("owner","t.owner",$searchline);
117     $sql = 'SELECT DISTINCT u.* FROM '.$CFG->prefix.'tags t JOIN '.$CFG->prefix.'users u ON u.ident = t.owner WHERE ('.$searchline.')';
118     if ($parameter[0] == "file") {
119         $sql .= " AND u.ident != " . $owner;
120     }
121     if ($users = get_records_sql($sql)) {
122         $run_result .= "<h2>". __gettext("Users and communities with files or folders in category") . " '". $parameter[1]."'</h2>\n";
123         $body = "<table><tr>";
124         $i = 1;
125         $w = 100;
126         if (sizeof($users) > 4) {
127             $w = 50;
128         }
129         foreach($users as $key => $info) {
130             $friends_userid = $info->ident;
131             $friends_name = user_name($info->ident);
132             $info->icon = run("icons:get",$info->ident);
133             $friends_menu = run("users:infobox:menu",array($info->ident));
134             $link_keyword = urlencode($parameter[1]);
135             $friends_icon = user_icon_html($info->ident,$w);
136             $body .= <<< END
137         <td align="center">
138             <p>
139             <a href="{$CFG->wwwroot}search/index.php?file={$link_keyword}&amp;owner={$friends_userid}">
140             {$friends_icon}</a><br />
141             <span class="userdetails">
142                 {$friends_name}
143                 {$friends_menu}
144             </span>
145             </p>
146         </td>
147 END;
148             if ($i % 5 == 0) {
149                 $body .= "\n</tr><tr>\n";
150             }
151             $i++;
152         }
153         $body .= "</tr></table>";
154         $run_result .= $body;
155     }
156 }
157
158 ?>
Note: See TracBrowser for help on using the browser.