Copy name and city into page keywords
[infodrom.org/www.zeitungsliste.de] / lib / search.inc
1 <?php
2
3 function search_zeitungen($keyword)
4 {
5   global $cfg;
6
7   $query = sprintf("SELECT id,name,city FROM zeitungen WHERE deleted IS false AND " .
8                    "( name ILIKE '%%%s%%' OR url ILIKE '%%%s%%' " .
9                    "OR city ILIKE '%%%s%%' OR description ILIKE '%%%s%%') " .
10                    "ORDER BY name",
11                    pg_escape_string($keyword), pg_escape_string($keyword),
12                    pg_escape_string($keyword), pg_escape_string($keyword));
13
14   if (($sth = db_query($query)) === false) return array();
15
16   if (pg_num_rows($sth) == 0) return array();
17
18   $ret = array();
19   for ($i=0; $i < pg_num_rows($sth); $i++) {
20     $row = pg_fetch_array($sth, $i);
21
22     $ret[] = sprintf('<a href="%szeitung/%d.html">%s</a>, %s',
23                      $cfg['basepath'], $row['id'], $row['name'], $row['city']);
24   }
25
26   return $ret;
27 }
28
29 function search_tags($keyword)
30 {
31   global $cfg;
32
33   $query = sprintf("SELECT tagname FROM tags WHERE " .
34                    "tagname ILIKE '%%%s%%' " .
35                    "ORDER BY lower(tagname)",
36                    pg_escape_string($keyword));
37
38   if (($sth = db_query($query)) === false) return array();
39
40   if (pg_num_rows($sth) == 0) return array();
41
42   $ret = array();
43   for ($i=0; $i < pg_num_rows($sth); $i++) {
44     $row = pg_fetch_array($sth, $i);
45
46     $ret[] = sprintf('Tag <a href="%stag/%s.html">%s</a>',
47                      $cfg['basepath'], urlencode($row['tagname']),
48                      $row['tagname']);
49   }
50
51   return $ret;
52 }
53
54 function search_topics($keyword)
55 {
56   global $cfg;
57
58   $query = sprintf("SELECT id,topic FROM topics WHERE " .
59                    "topic ILIKE '%%%s%%' ORDER BY topic",
60                    pg_escape_string($keyword));
61
62   if (($sth = db_query($query)) === false) return array();
63
64   if (pg_num_rows($sth) == 0) return array();
65
66   $ret = array();
67   for ($i=0; $i < pg_num_rows($sth); $i++) {
68     $row = pg_fetch_array($sth, $i);
69
70     $ret[] = sprintf('Diskussion <a href="%stopic/%d.html">%s</a>',
71                      $cfg['basepath'], $row['id'], 
72                      $row['topic']);
73   }
74
75   return $ret;
76 }
77
78 function process_search()
79 {
80   global $_POST;
81   global $zlist;
82
83   if (!strlen($_POST['keyword']))
84     $ret = warning('Sie haben keinen Suchbegriff angegeben!');
85   else {
86     $results = array_merge(search_zeitungen($_POST['keyword']),
87                            search_tags($_POST['keyword']),
88                            search_topics($_POST['keyword']));
89
90     if (count($results)) {
91       $ret = '<ul class="gold">';
92       foreach ($results as $res) {
93         $ret .= '<li>' . $res;
94       }
95       $ret .= '</ul>';
96     } else {
97       $zlist['keyword'] = htmlspecialchars($_POST['keyword']);
98       $ret = information(sprintf('Keine Treffer für "%s" gefunden.', $zlist['keyword']));
99     }
100   }
101
102   return $ret;
103 }
104
105 function ajax_search_check()
106 {
107   global $_POST;
108
109   $keyword = $_POST['keyword'];
110
111   $query = sprintf("SELECT count(*) FROM zeitungen WHERE deleted IS false AND " .
112                    "( name ILIKE '%%%s%%' OR url ILIKE '%%%s%%' " .
113                    "OR city ILIKE '%%%s%%' OR description ILIKE '%%%s%%') ",
114                    pg_escape_string($keyword), pg_escape_string($keyword),
115                    pg_escape_string($keyword), pg_escape_string($keyword));
116
117   if (($sth = db_query($query)) !== false) {
118     $row = pg_fetch_array($sth, 0);
119     if ($row[0] > 0)
120       return true;
121   }
122
123   $query = sprintf("SELECT count(*) FROM tags WHERE " .
124                    "tagname ILIKE '%%%s%%' ",
125                    pg_escape_string($keyword));
126
127   if (($sth = db_query($query)) !== false) {
128     $row = pg_fetch_array($sth, 0);
129     if ($row[0] > 0)
130       return true;
131   }
132
133   $query = sprintf("SELECT count(*) FROM topics WHERE " .
134                    "topic ILIKE '%%%s%%'",
135                    pg_escape_string($keyword));
136
137   if (($sth = db_query($query)) !== false) {
138     $row = pg_fetch_array($sth, 0);
139     if ($row[0] > 0)
140       return true;
141   }
142
143   return false;
144 }
145
146 ?>