1 |
ravilov |
1.1 |
<?php |
2 |
ravilov |
1.4 |
$ME = "http".($HTTPS?"s":"")."://".$HTTP_HOST.$PHP_SELF; |
3 |
|
|
|
4 |
ravilov |
1.1 |
function MyQuote($str) { |
5 |
|
|
global $dbh; |
6 |
|
|
if (!$dbh) return "'$str'"; |
7 |
|
|
return $dbh->quote($str); |
8 |
|
|
} |
9 |
|
|
|
10 |
|
|
function MyMove($src, $dest) { |
11 |
|
|
$cmd = "mv -f '".EscapeShellCmd($src)."' '".EscapeShellCmd($dest)."'"; |
12 |
|
|
return exec($cmd); |
13 |
|
|
} |
14 |
|
|
|
15 |
|
|
function MyDelete($src) { |
16 |
ravilov |
1.5 |
#@unlink($src); |
17 |
ravilov |
1.1 |
} |
18 |
|
|
|
19 |
ravilov |
1.2 |
function PicSize($pic, $dir = "") { |
20 |
ravilov |
1.1 |
$ret = array(0, 0); |
21 |
|
|
if ($pic) { |
22 |
ravilov |
1.2 |
if (!$dir) { |
23 |
|
|
global $syspicdir; |
24 |
|
|
$dir = $syspicdir; |
25 |
|
|
} |
26 |
ravilov |
1.3 |
@$size = GetImageSize("$dir/$pic"); |
27 |
ravilov |
1.1 |
$ret = array($size[0], $size[1]); |
28 |
|
|
} |
29 |
|
|
return $ret; |
30 |
|
|
} |
31 |
|
|
|
32 |
ravilov |
1.3 |
function PicResize($w, $h, $maxsize = 80) { |
33 |
|
|
if ($w && $h && $w > $maxsize) { |
34 |
|
|
$ratio = ($w / $h); |
35 |
|
|
$w = intval($maxsize); |
36 |
|
|
$h = intval($w / $ratio); |
37 |
|
|
} |
38 |
|
|
return array($w, $h); |
39 |
|
|
} |
40 |
|
|
|
41 |
ravilov |
1.10 |
function GetLinks($read, $more, $more_title, $id, $cat, $name, $updown = false, $up = false, $down = false, $prikazi = true, $related = false) { |
42 |
ravilov |
1.3 |
$t = new Smarty(); |
43 |
ravilov |
1.7 |
global $section, $section_menu, $section_menu2, $spec, $isMed, $isEdit, $offset; |
44 |
ravilov |
1.3 |
$t->assign("section", $section); |
45 |
|
|
$t->assign("section_menu", $section_menu); |
46 |
ravilov |
1.5 |
$t->assign("section_menu2", $section_menu2); |
47 |
ravilov |
1.3 |
$t->assign("spec", $spec); |
48 |
ravilov |
1.6 |
$t->assign("offset", $offset); |
49 |
ravilov |
1.3 |
$t->assign("id", $id); |
50 |
|
|
$t->assign("cat", $cat); |
51 |
ravilov |
1.5 |
$t->assign("med", $isMed); |
52 |
ravilov |
1.12 |
$m = "tmore"; |
53 |
ravilov |
1.10 |
if ($cat == "t" || $cat == "3") $m = "tmore"; |
54 |
ravilov |
1.5 |
if ($cat == "w") $m = "wmore"; |
55 |
|
|
if ($cat == "p") $m = "pmore"; |
56 |
|
|
$t->assign("m", $m); |
57 |
ravilov |
1.3 |
$t->assign("name", $name); |
58 |
ravilov |
1.11 |
$t->assign("read", ($read || $related) ? $read : ""); |
59 |
ravilov |
1.3 |
$t->assign("more", /* $more */ strstr($more, "?") ? $more : ""); |
60 |
|
|
$t->assign("more_new", strstr($more, "://") ? true : false); |
61 |
|
|
$t->assign("more_title", $more_title); |
62 |
ravilov |
1.7 |
$t->assign("edit", $isEdit); |
63 |
ravilov |
1.3 |
$t->assign("updown", $updown); |
64 |
|
|
$t->assign("up", $up); |
65 |
|
|
$t->assign("down", $down); |
66 |
ravilov |
1.7 |
$t->assign("prikazi", $prikazi); |
67 |
ravilov |
1.10 |
$t->assign("related", $related); |
68 |
ravilov |
1.3 |
return $t->fetch("links.tpl"); |
69 |
ravilov |
1.6 |
} |
70 |
|
|
|
71 |
|
|
function GetRead($id, $ct = "") { |
72 |
|
|
global $section, $section_menu, $section_menu2, $spec, $offset, $cat, $acat, $acat2; |
73 |
|
|
$tmp = array(); |
74 |
|
|
if ($section) array_push($tmp, "section=$section"); |
75 |
|
|
if ($section_menu) array_push($tmp, "section_menu=$section_menu"); |
76 |
|
|
if ($section_menu2) array_push($tmp, "section_menu=$section_menu2"); |
77 |
|
|
if ($spec) array_push($tmp, "spec=$spec"); |
78 |
|
|
if ($offset) array_push($tmp, "offset=$offset"); |
79 |
|
|
if ($acat) array_push($tmp, "acat=$acat"); |
80 |
|
|
if ($acat2) array_push($tmp, "acat2=$acat2"); |
81 |
|
|
if (!$ct) $ct = $cat; |
82 |
|
|
if ($ct) array_push($tmp, "cat=$ct"); |
83 |
|
|
array_push($tmp, "id=$id"); |
84 |
|
|
array_push($tmp, "show=1"); |
85 |
|
|
return "?".HTMLSpecialChars(implode("&", $tmp)); |
86 |
ravilov |
1.3 |
} |
87 |
|
|
|
88 |
|
|
function GetHighlight($hl) { |
89 |
|
|
$tp = new Smarty(); |
90 |
|
|
$tp->assign("hl", $hl); |
91 |
|
|
return $tp->fetch("highlight.tpl"); |
92 |
ravilov |
1.7 |
} |
93 |
|
|
|
94 |
ravilov |
1.10 |
function GetAuthor($pic = "", $alt = "", $info = "", $width = 0, $height = 0, $cv = 0) { |
95 |
ravilov |
1.7 |
$t = new Smarty(); |
96 |
|
|
global $aupicdir; |
97 |
|
|
$t->assign("aupicdir", "$aupicdir/"); |
98 |
|
|
$t->assign("url", $pic); |
99 |
|
|
$t->assign("alt", $alt); |
100 |
ravilov |
1.10 |
$info = nl2br($info); |
101 |
|
|
if ($cv) { |
102 |
|
|
$info = str_replace("{", "<a href=\"autor.php?id=$cv\" target=\"_blank\" class=\"underlined\" onclick=\"window.open(this.href, this.target, 'width=450,height=600,toolbar=no,menu=no'); return false;\">", $info); |
103 |
|
|
$info = str_replace("}", "</a>", $info); |
104 |
|
|
} else { |
105 |
|
|
$info = str_replace("{", "", $info); |
106 |
|
|
$info = str_replace("}", "", $info); |
107 |
|
|
} |
108 |
|
|
$t->assign("info", $info); |
109 |
ravilov |
1.7 |
$t->assign("width", $width); |
110 |
|
|
$t->assign("height", $hight); |
111 |
|
|
return $t->fetch("author.tpl"); |
112 |
|
|
} |
113 |
|
|
|
114 |
|
|
function GetSemafor() { |
115 |
|
|
global $dbh; |
116 |
|
|
$conn = $dbh ? true : false; |
117 |
|
|
if (!$conn) include("inc/conn.php"); |
118 |
ravilov |
1.10 |
$sql = "SELECT stanje, trave, korov, stabla, date, prikazi_date FROM semafor ORDER BY date DESC LIMIT 1"; |
119 |
ravilov |
1.7 |
$sth = $dbh->prepare($sql); |
120 |
|
|
if (!$sth) error("Cannot prepare query: \"$sql\""); |
121 |
|
|
if (!$sth->execute()) error("Cannot execute query: \"$sql\""); |
122 |
|
|
$row = $sth->fetchrow_array(); |
123 |
|
|
$sth->finish(); |
124 |
|
|
if (!$conn) $dbh->disconnect(); |
125 |
|
|
$t = new Smarty(); |
126 |
|
|
if ($row) { |
127 |
ravilov |
1.10 |
list($stanje, $trave, $korov, $stabla, $date, $prik) = $row; |
128 |
|
|
if ($prik[0] == "f" || $prik[0] == "F") unset($prik); |
129 |
ravilov |
1.7 |
$t->assign("stabla", $stabla); |
130 |
|
|
$t->assign("trave", $trave); |
131 |
|
|
$t->assign("korov", $korov); |
132 |
|
|
$t->assign("msg", $stanje); |
133 |
ravilov |
1.10 |
$t->assign("date", $prik && $date ? strftime("%d.%m.%y.", strtotime($date)) : ""); |
134 |
ravilov |
1.7 |
} |
135 |
|
|
return $t->fetch("semafor-table.tpl"); |
136 |
ravilov |
1.3 |
} |
137 |
|
|
|
138 |
ravilov |
1.4 |
function GenerateUsername($ime, $prezime) { |
139 |
|
|
global $dbh; |
140 |
|
|
$replace_from = "¹ðè澩ÐÈÆ® "; |
141 |
|
|
$replace_to = "ssdcczzSSDCCZZ_"; |
142 |
|
|
$ime = strtolower(ereg_replace('[^A-Za-z0-9]', "", |
143 |
|
|
strtr($ime, $replace_from, $replace_to))); |
144 |
|
|
$prezime = strtolower(ereg_replace('[^A-Za-z0-9]', "", |
145 |
|
|
strtr($prezime, $replace_from, $replace_to))); |
146 |
|
|
$cnt = 1; |
147 |
|
|
while ($cnt <= strlen($ime)) { |
148 |
|
|
$username = substr($ime, 0, $cnt++).$prezime; |
149 |
|
|
$sql = "SELECT username FROM users WHERE username = '$username'"; |
150 |
|
|
$sth = $dbh->prepare($sql); |
151 |
|
|
if (!$sth) error("Cannot prepare query: \"$sql\""); |
152 |
|
|
if (!$sth->execute()) error("Cannot execute query: \"$sql\""); |
153 |
|
|
$row = $sth->fetchrow_array(); |
154 |
|
|
$sth->finish(); |
155 |
|
|
if (!$row) break; |
156 |
|
|
} |
157 |
|
|
if ($cnt > strlen($ime)) { |
158 |
|
|
$username2 = $username; |
159 |
|
|
$cnt = 1; |
160 |
|
|
while (true) { |
161 |
|
|
$username = $username.($cnt++); |
162 |
|
|
$sql = "SELECT username FROM users WHERE username = '$username'"; |
163 |
|
|
$sth = $dbh->prepare($sql); |
164 |
|
|
if (!$sth) error("Cannot prepare query: \"$sql\""); |
165 |
|
|
if (!$sth->execute()) error("Cannot execute query: \"$sql\""); |
166 |
|
|
$row = $sth->fetchrow_array(); |
167 |
|
|
$sth->finish(); |
168 |
|
|
if (!$row) break; |
169 |
|
|
} |
170 |
|
|
} |
171 |
|
|
return $username; |
172 |
|
|
} |
173 |
|
|
|
174 |
|
|
function GeneratePassword($length = 8) { |
175 |
|
|
$chars = preg_split('//', "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); |
176 |
|
|
array_shift($chars); |
177 |
|
|
array_pop($chars); |
178 |
|
|
$password = ""; |
179 |
|
|
for ($i = 0; $i < $length; $i++) $password .= $chars[rand(0, count($chars))]; |
180 |
|
|
return $password; |
181 |
|
|
} |
182 |
|
|
|
183 |
ravilov |
1.8 |
$isEdit = stristr($ME, "/edit/") ? true : false; |
184 |
ravilov |
1.10 |
# $isMed = stristr($ME, "med") || stristr($ME, "pm") ? true : false; |
185 |
|
|
include_once("_site.php"); // This should define $isMed. |
186 |
ravilov |
1.8 |
|
187 |
ravilov |
1.3 |
function Auth($user = "", $pwd = "") { |
188 |
ravilov |
1.4 |
global $ME,$HTTP_USER_AGENT,$REMOTE_ADDR; |
189 |
ravilov |
1.8 |
global $isEdit; |
190 |
|
|
if ($isEdit) return 0; |
191 |
ravilov |
1.4 |
// DEBUG: |
192 |
ravilov |
1.5 |
#if (stristr($ME, "test.plivamed.net")) return 0; |
193 |
ravilov |
1.4 |
// User-Agent: should be mnoGoSearch, but in version 3.1.19 |
194 |
|
|
// it's UdmSearch so we match just search |
195 |
|
|
if (strstr($HTTP_USER_AGENT, "Search") && strstr($REMOTE_ADDR, "10.254.1.")) return 0; |
196 |
ravilov |
1.3 |
global $PMusername, $PMpassword; |
197 |
|
|
if (!$user) $user = $PMusername; |
198 |
|
|
if (!$pwd) $pwd = $PMpassword; |
199 |
|
|
if (!$user) return 1; |
200 |
|
|
global $dbh; |
201 |
|
|
$connected = $dbh ? true : false; |
202 |
|
|
if (!$connected) include("inc/conn.php"); |
203 |
|
|
$sql = "SELECT username, password FROM users WHERE (username = '$user')"; |
204 |
|
|
$sth = $dbh->prepare($sql); |
205 |
|
|
if (!$sth) return 4; |
206 |
|
|
if (!$sth->execute()) return 5; |
207 |
|
|
$row = $sth->fetchrow_array(); |
208 |
|
|
$sth->finish(); |
209 |
|
|
if (!$connected) $dbh->disconnect(); |
210 |
|
|
list($u, $p) = $row; |
211 |
|
|
if ($u != $user) return 2; |
212 |
|
|
if ($p != $pwd) return 3; |
213 |
|
|
return 0; |
214 |
|
|
} |
215 |
|
|
|
216 |
|
|
Header("Content-Type: text/html; charset=ISO-8859-2"); |
217 |
ravilov |
1.8 |
/* |
218 |
ravilov |
1.3 |
if ($isEdit) { |
219 |
ravilov |
1.5 |
if ($PHP_AUTH_USER != "editor" && $PHP_AUTH_PW != "jokkvpr") { |
220 |
ravilov |
1.3 |
Header("WWW-Authenticate: Basic realm=\"PLIVA".($isMed?"med.net":"zdravlje.hr")."\""); |
221 |
|
|
Header("HTTP/1.0 401 Unauthorized"); |
222 |
|
|
echo "Sorry, you are not allowed to edit the site.\n"; |
223 |
|
|
exit; |
224 |
|
|
} |
225 |
|
|
} |
226 |
ravilov |
1.8 |
*/ |
227 |
ravilov |
1.3 |
$isReg = $isMed ? false : true; |
228 |
|
|
if (!$isReg) $isReg = (Auth() == 0) ? true : false; |
229 |
ravilov |
1.1 |
?> |