PageRenderTime 128ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/v1.4/priedai/funkcijos.php

http://mightmedia.googlecode.com/
PHP | 1255 lines | 963 code | 65 blank | 227 comment | 122 complexity | f75e7c5585a973bb6fdf15eb072ff75e MD5 | raw file
Possible License(s): AGPL-1.0, LGPL-2.0, GPL-2.0
  1. <?php
  2. /**
  3. * @Projektas: MightMedia TVS
  4. * @Puslapis: www.coders.lt
  5. * @$Author: P.Dambrauskas $
  6. * @copyright CodeRS Š2008
  7. * @license GNU General Public License v2
  8. * @$Revision: 1259 $
  9. * @$Date: 2009-05-01 13:26:05 +0200 (Fri, 01 May 2009) $
  10. **/
  11. //patikrinimui ar puslapaia atveriami taip kaip reikia
  12. if (basename($_SERVER['PHP_SELF']) == 'funkcijos.php') {
  13. ban($lang['system']['forhacking']);
  14. }
  15. define("OK", true);
  16. if (preg_match('%/\*\*/|SERVER|http|SELECT|UNION|UPDATE|INSERT%i', $_SERVER['QUERY_STRING'])) {
  17. $ip = getip();
  18. $forwarded = (isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : 'N/A');
  19. $remoteaddress = $_SERVER["REMOTE_ADDR"];
  20. ban($lang['system']['forhacking']);
  21. }
  22. //slaptaţodţio kodavimas
  23. function koduoju($pass) {
  24. return md5(sha1(md5($pass)));
  25. }
  26. //meta tagai ir kita
  27. function header_info() {
  28. global $conf, $page_pavadinimas;
  29. echo '
  30. <meta name="generator" content="notepad" />
  31. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  32. <meta name="description" content="' . input(strip_tags($conf['Pavadinimas']) . ' - ' . trimlink(strip_tags($conf['Apie']), 120)) . '" />
  33. <meta name="keywords" content="' . input(strip_tags($conf['Keywords'])) . '" />
  34. <meta name="author" content="' . input(strip_tags($conf['Copyright'])) . '" />
  35. <link rel="stylesheet" type="text/css" href="stiliai/' . input(strip_tags($conf['Stilius'])) . '/default.css" />
  36. <link rel="stylesheet" type="text/css" href="stiliai/system.css" />
  37. <link href="stiliai/rating_style.css" rel="stylesheet" type="text/css" media="all" />
  38. <link rel="shortcut icon" href="favicon.ico" />
  39. <title>' . input(strip_tags($conf['Pavadinimas']) . ' - ' . $page_pavadinimas) . '</title>
  40. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
  41. <script type="text/javascript" src="javascript/jquery/jquery-ui-personalized-1.6rc6.min.js"></script>
  42. <script type="text/javascript" src="javascript/jquery/jquery.tablesorter.js"></script>
  43. <script language="javascript" type="text/javascript" src="javascript/pagrindinis.js"></script>
  44. <script language="javascript" type="text/javascript" src="javascript/rating_update.js"></script>
  45. <script type="text/javascript" src="javascript/jquery/tooltip.js"></script>
  46. <!--[if lt IE 7]>
  47. <script type="text/javascript" src="javascript/jquery/jquery.pngFix.pack.js"></script>
  48. <script type="text/javascript">$(document).ready(function(){$(document).pngFix();});</script>
  49. <script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
  50. <![endif]-->
  51. ';
  52. }
  53. // Nupiesiam vartotojo avatara
  54. function avatar($mail, $size = 80) {
  55. $result = '<img src="http://www.gravatar.com/avatar/' . md5(strtolower($mail)) . '?s=' . htmlentities($size . '&r=any&default=' . urlencode(adresas() . 'images/avatars/no_image.jpg') . '&time=' . time()) . '" width="' . $size . '" alt="avataras" />';
  56. return $result;
  57. }
  58. function nice_name($name) {
  59. $name = ucfirst_utf8($name);
  60. $name = str_replace(".php", "", $name);
  61. $name = str_replace("_", " ", $name);
  62. return $name;
  63. }
  64. function ar_admin($failas) {
  65. global $_SESSION;
  66. if ((is_array(unserialize($_SESSION['mod'])) && in_array($failas, unserialize($_SESSION['mod']))) || $_SESSION['level'] == 1)
  67. return true;
  68. else
  69. return false;
  70. }
  71. function ucfirst_utf8($str) {
  72. if (mb_check_encoding($str, 'UTF-8')) {
  73. $first = mb_substr(mb_strtoupper($str, "utf-8"), 0, 1, 'utf-8');
  74. return $first . mb_substr(mb_strtolower($str, "utf-8"), 1, mb_strlen($str), 'utf-8');
  75. } else {
  76. return $str;
  77. }
  78. }
  79. function utf8_substr($str, $start) {
  80. preg_match_all("/./u", $str, $ar);
  81. if (func_num_args() >= 3) {
  82. $end = func_get_arg(2);
  83. return join("", array_slice($ar[0], $start, $end));
  84. } else {
  85. return join("", array_slice($ar[0], $start));
  86. }
  87. }
  88. // Svetaines adresui gauti
  89. function adresas() {
  90. $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
  91. $protocol = substr(strtolower($_SERVER["SERVER_PROTOCOL"]), 0, strpos(strtolower($_SERVER["SERVER_PROTOCOL"]), "/")) . $s;
  92. $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":" . $_SERVER["SERVER_PORT"]);
  93. //return $protocol . "://" . $_SERVER['SERVER_NAME'] . $port . $_SERVER['REQUEST_URI'];
  94. return $protocol . "://" . $_SERVER['SERVER_NAME'] . $port . '/';
  95. }
  96. /**
  97. * Patikrina ar puslapis egzistuoja ir grazina puslapio ID
  98. * @param string $puslapis
  99. */
  100. function puslapis($puslapis, $extra = false) {
  101. global $conf;
  102. if (isset($conf['puslapiai'][$puslapis]['id']) && !empty($conf['puslapiai'][$puslapis]['id']) && is_file(dirname(__file__) . '/puslapiai/' . $puslapis)) {
  103. if ($extra && isset($conf['puslapiai'][$puslapis][$extra]))
  104. return $conf['puslapiai'][$puslapis][$extra]; //Jei reikalinga kita informacija apie puslapi - grazinam ja.
  105. else
  106. return (int)$conf['puslapiai'][$puslapis]['id'];
  107. } else
  108. return false;
  109. }
  110. /**
  111. * UĹždrausti IP ant serverio
  112. *
  113. * @param string $kodel
  114. */
  115. function ban($kodel = 'XSS') {
  116. global $lang;
  117. global $_SERVER, $ip, $forwarded, $remoteaddress;
  118. $atidaryti = fopen(".htaccess", "a");
  119. fwrite($atidaryti, "# {$lang['system']['forhacking']} \ndeny from " . getip() . "\n");
  120. fclose($atidaryti);
  121. //@chmod(".htaccess", 0777);
  122. $forwarded = (isset($forwarded) ? $forwarded : 'N/A');
  123. $remoteaddress = (isset($remoteaddress) ? $remoteaddress : 'N/A');
  124. $ip = (isset($ip) ? $ip : getip());
  125. $referer = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : 'N/A');
  126. $message = <<< HTML
  127. FROM:{$referer}
  128. REQ:{$_SERVER['REQUEST_METHOD']}
  129. FILE:{$_SERVER['SCRIPT_FILENAME']}
  130. QUERY:{$_SERVER['QUERY_STRING']}
  131. IP:{$ip} - Forwarded = {$forwarded} - Remoteaddress = {$remoteaddress}
  132. HTML;
  133. die("<center><h1>{$lang['system']['nohacking']}!</h1><font color='red'><b>" . $kodel . " - {$lang['system']['forbidden']}<blink>!</blink></b></font><hr/></center>");
  134. }
  135. /// ASPAUGA - NETRINK - Pagal php-fusion
  136. /*foreach ($_GET as $check_url) {
  137. * if ((eregi("<[^>]*script*\"?[^>]*>", $check_url)) || (eregi("<[^>]*object*\"?[^>]*>", $check_url)) ||
  138. * (eregi("<[^>]*iframe*\"?[^>]*>", $check_url)) || (eregi("<[^>]*applet*\"?[^>]*>", $check_url)) ||
  139. * (eregi("<[^>]*meta*\"?[^>]*>", $check_url)) || (eregi("<[^>]*style*\"?[^>]*>", $check_url)) ||
  140. * (eregi("<[^>]*form*\"?[^>]*>", $check_url)) || (eregi("\([^>]*\"?[^)]*\)", $check_url)) ||
  141. * (eregi("\"", $check_url))) { ban('GET patikra'); }
  142. * }
  143. * unset($check_url);*/
  144. //Tvarkom $_SERVER globalus. Pagal php-fusion
  145. $_SERVER['PHP_SELF'] = cleanurl($_SERVER['PHP_SELF']);
  146. $_SERVER['QUERY_STRING'] = isset($_SERVER['QUERY_STRING']) ? cleanurl($_SERVER['QUERY_STRING']) : "";
  147. $_SERVER['REQUEST_URI'] = isset($_SERVER['REQUEST_URI']) ? cleanurl($_SERVER['REQUEST_URI']) : "";
  148. $PHP_SELF = cleanurl($_SERVER['PHP_SELF']);
  149. /**
  150. * Adreso apsauga pagal php-fusion
  151. *
  152. * @param unknown_type $url
  153. * @return unknown
  154. */
  155. function cleanurl($url) {
  156. $bad_entities = array('"', "'", "<", ">", "(", ")", '\\');
  157. $safe_entities = array("", "", "", "", "", "", "");
  158. $url = str_replace($bad_entities, $safe_entities, $url);
  159. return $url;
  160. }
  161. /// ASPAUGA - END
  162. //sutvarkom nuorodas
  163. if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
  164. $_GET = url_arr(cleanurl($_SERVER['QUERY_STRING']));
  165. $url = $_GET;
  166. } else {
  167. $url = array();
  168. }
  169. /**
  170. * VartotojĹł lygiai
  171. * @return array
  172. */
  173. unset($sql, $row);
  174. $sql = mysql_query1("SELECT * FROM `" . LENTELES_PRIESAGA . "grupes` WHERE `kieno` = 'vartotojai' AND `path`=0 ORDER BY `id` DESC");
  175. //$levels = '';
  176. if (mysql_num_rows($sql) > 0) {
  177. while ($row = mysql_fetch_assoc($sql)) {
  178. $sql2 = mysql_query1("SELECT * FROM `" . LENTELES_PRIESAGA . "grupes` WHERE path!=0 and `path` like'" . $row['id'] . "%' ORDER BY `id` ASC");
  179. if (mysql_num_rows($sql2) > 0) {
  180. $subcat = '';
  181. while ($path = mysql_fetch_assoc($sql2)) {
  182. $subcat .= "->" . $path['pavadinimas'];
  183. $levels[$row['teises']] = array('pavadinimas' => $row['pavadinimas'], 'aprasymas' => $row['aprasymas'], 'pav' => $row['pav']);
  184. $levels[$path['teises']] = array('pavadinimas' => $row['pavadinimas'] . $subcat, 'aprasymas' => $row['aprasymas'], 'pav' => $row['pav']);
  185. }
  186. } else {
  187. $levels[$row['teises']] = array('pavadinimas' => $row['pavadinimas'], 'aprasymas' => $row['aprasymas'], 'pav' => $row['pav']);
  188. }
  189. }
  190. }
  191. $levels[1] = array('pavadinimas' => $lang['system']['admin'], 'aprasymas' => $lang['system']['admin'], 'pav' => 'admin.png');
  192. //$levels[2] = array('pavadinimas' => $lang['system']['mod'], 'aprasymas' => $lang['system']['mod'], 'pav' => 'mod.png');
  193. $levels[2] = array('pavadinimas' => $lang['system']['user'], 'aprasymas' => $lang['system']['user'], 'pav' => 'user.png');
  194. $conf['level'] = $levels;
  195. unset($levels, $sql, $row);
  196. /**
  197. * Gaunam visus puslapius ir sukisam i masyva
  198. */
  199. $sql = mysql_query1("SELECT SQL_CACHE * FROM `" . LENTELES_PRIESAGA . "page` ORDER BY `place` ASC");
  200. while ($row = mysql_fetch_assoc($sql)) {
  201. $conf['puslapiai'][$row['file']] = array('id' => $row['id'], 'pavadinimas' => $row['pavadinimas'], 'file' => $row['file'], 'place' => (int)$row['place'], 'show' => $row['show']);
  202. }
  203. /**
  204. * Vartotojui atvaizduoti
  205. *
  206. * @param nickas $user
  207. * @param levelis $level
  208. * @return string
  209. */
  210. function user($user, $id = 0, $level = 0, $extra = false) {
  211. //kadangi vëjai gaunas jeigu nikas su utf-8 simboliais, tai pm sistema pakeiciu
  212. global $lang, $conf;
  213. if ($user == '') {
  214. $user = $lang['system']['guest'];
  215. }
  216. if (isset($conf['puslapiai']['view_user.php']['id'])) {
  217. //Jeigu galiam ziuret vartotojo profili tada nickas paspaudziamas
  218. if ($level > 0 && $id > 0) {
  219. return (isset($conf['level'][$level]['pav']) ? '<img src="images/icons/' . $conf['level'][$level]['pav'] . '" border="0" class="middle" alt="" /> ' : '') . ' <a href="?id,' . $conf['puslapiai']['view_user.php']['id'] . ';m,' . (int)$id . '" title="' . input($user) . '<br />' . $extra . '">' . trimlink($user, 10) . '</a> ' . (isset($_SESSION['username']) && $user != $_SESSION['username'] && isset($conf['puslapiai']['pm.php']) ? "<a href=\"?id," . $conf['puslapiai']['pm.php']['id'] . ";n,1;u," . str_replace("=", "", base64_encode($user)) . "\"><img src=\"images/pm/mail.png\" style=\"vertical-align:middle\" alt=\"pm\" border=\"0\" /></a>" : "");
  220. }
  221. if ($level == 0 || $id == 0) {
  222. return '<a href="?id,' . $conf['puslapiai']['view_user.php']['id'] . ';m,' . (int)$id . '" title="' . input($user) . '<br />' . $extra . '">' . trimlink($user, 10) . '</a> ' . (isset($_SESSION['username']) && $user != $_SESSION['username'] && isset($conf['puslapiai']['pm.php']) ? "<a href=\"?id," . $conf['puslapiai']['pm.php']['id'] . ";n,1;u," . str_replace("=", "", base64_encode($user)) . "\"><img src=\"images/pm/mail.png\" alt=\"pm\" border=\"0\" style=\"vertical-align:middle\" class=\"middle\" /></a>" : "");
  223. }
  224. } else {
  225. //Kitu atveju nickas nepaspaudziamas
  226. if ($level == 0 || $id == 0) {
  227. return '<a href="#" onclick="return false" title="' . input($user) . '<br /> ' . $extra . '">' . $user . '</a>';
  228. } else {
  229. return (isset($conf['level'][$level]['pav']) ? '<img src="images/icons/' . $conf['level'][$level]['pav'] . '" border="0" class="middle" /> ' : '') . ' <a href="#" onclick="return false" title="' . input($user) . '<br/>' . $extra . '">' . trimlink($user, 10) . '</a> ' . (isset($_SESSION['username']) && $user != $_SESSION['username'] && isset($conf['puslapiai']['pm.php']) ? "<a href=\"?id," . $conf['puslapiai']['pm.php']['id'] . ";n,1;u," . str_replace("=", "", base64_encode($user)) . "\"><img src=\"images/pm/mail.png\" alt=\"pm\" style=\"vertical-align:middle\" border=\"0\" /></a>" : "");
  230. }
  231. }
  232. }
  233. /**
  234. * MySQL uĹžklausoms
  235. *
  236. * @param sql string $query
  237. * @return resource
  238. */
  239. function mysql_query1($query) {
  240. global $mysql_num, $prisijungimas_prie_mysql;
  241. //if (defined("LEVEL") && LEVEL > 20) {
  242. $mysql_num++;
  243. //}
  244. return mysql_query($query, $prisijungimas_prie_mysql);
  245. }
  246. /**
  247. * Nuskaitom turinÄŻ iĹĄ adreso
  248. *
  249. * @param string $url
  250. * @return string
  251. */
  252. function http_get($url) {
  253. $request = fopen($url, "rb");
  254. $result = "";
  255. while (!feof($request)) {
  256. $result .= fread($request, 8192);
  257. }
  258. fclose($request);
  259. return $result;
  260. }
  261. /**
  262. * Gaunam informaciją iš XML
  263. *
  264. * @param string $xml
  265. * @param string $tag
  266. * @return string
  267. */
  268. function get_tag_contents($xml, $tag) {
  269. $result = "";
  270. $s_tag = "<$tag>";
  271. $s_offs = strpos($xml, $s_tag);
  272. // If we found a starting offset, then look for the end-tag.
  273. if ($s_offs) {
  274. $e_tag = "</$tag>";
  275. $e_offs = strpos($xml, $e_tag, $s_offs);
  276. // If we have both tags, then dig out the contents.
  277. if ($e_offs) {
  278. $result = substr($xml, $s_offs + strlen($s_tag), $e_offs - $s_offs - strlen($e_tag) + 1);
  279. }
  280. }
  281. return $result;
  282. }
  283. /**
  284. * Suskaičiuojam kiek nurodytoje lentelėje yra įrašų
  285. *
  286. * @param string $table
  287. * @param string $where
  288. * @param string $as
  289. * @return int
  290. */
  291. function kiek($table, $where = '', $as = "viso") {
  292. $viso = mysql_fetch_assoc(mysql_query1("SELECT count(id) AS $as FROM `" . LENTELES_PRIESAGA . $table . "` " . $where));
  293. return (isset($viso[$as]) && $viso[$as] > 0 ? (int)$viso[$as] : (int)0);
  294. }
  295. /**
  296. * Puslapiavimui generuoti
  297. *
  298. * @param puslapis $start
  299. * @param limit $count
  300. * @param viso $total
  301. * @param po kiek $range
  302. * @return unknown
  303. */
  304. function puslapiai($start, $count, $total, $range = 0) {
  305. $res = "";
  306. $pg_cnt = ceil($total / $count);
  307. if ($pg_cnt > 1) {
  308. $idx_back = $start - $count;
  309. $idx_next = $start + $count;
  310. $cur_page = ceil(($start + 1) / $count);
  311. $res .= "";
  312. $res .= "<center>\n";
  313. if ($idx_back >= 0) {
  314. if ($cur_page > ($range + 1))
  315. $res .= "<a href='" . url("p,0") . "'>[<u>ÂŤÂŤ</u>]</a>\n";
  316. $res .= "<a href='" . url("p,$idx_back") . "'>[<u>ÂŤ</u>]</a>\n";
  317. }
  318. $idx_fst = max($cur_page - $range, 1);
  319. $idx_lst = min($cur_page + $range, $pg_cnt);
  320. if ($range == 0) {
  321. $idx_fst = 1;
  322. $idx_lst = $pg_cnt;
  323. }
  324. for ($i = $idx_fst; $i <= $idx_lst; $i++) {
  325. $offset_page = ($i - 1) * $count;
  326. if ($i == $cur_page) {
  327. $res .= "<font color='red'>[<u><b>$i</b></u>]</font>\n";
  328. } else {
  329. $res .= "<a href='" . url("p,$offset_page") . "'>[<u>$i</u>]</a>\n";
  330. }
  331. }
  332. if ($idx_next < $total) {
  333. $res .= "<a href='" . url("p,$idx_next") . "'>[<u>Âť</u>]</a>\n";
  334. if ($cur_page < ($pg_cnt - $range)) {
  335. $res .= "<a href='" . url("p," . ($pg_cnt - 1) * $count . "") . "'>[<u></u>]</a>\n";
  336. }
  337. }
  338. $res .= "</center>\n";
  339. }
  340. return $res;
  341. }
  342. /**
  343. * Tikrina ar kintamasis teigiamas skaičius
  344. *
  345. * @param Skaičius $value
  346. * @return 1 arba NULL
  347. */
  348. function isNum($value) {
  349. return preg_match("/^[0-9]+$/", $value);
  350. }
  351. /**
  352. * GraĹžina lankytojo IP
  353. *
  354. * @return string
  355. */
  356. function getip() {
  357. if (getenv('HTTP_X_FORWARDED_FOR')) {
  358. $ip2 = '';
  359. $ip3 = '';
  360. $ip = $_SERVER['REMOTE_ADDR'];
  361. if (preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", getenv('HTTP_X_FORWARDED_FOR'), $ip3)) {
  362. $ip2 = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.16\..*/', '/^10..*/', '/^224..*/', '/^240..*/');
  363. $ip = preg_replace($ip2, $ip, $ip3[1]);
  364. }
  365. } else {
  366. $ip = $_SERVER['REMOTE_ADDR'];
  367. }
  368. if ($ip == "") {
  369. $ip = "x.x.x.x";
  370. }
  371. return $ip;
  372. }
  373. /**
  374. * Sugeneruojam atsitiktinę frazę
  375. *
  376. * @param frazės ilgis $i
  377. * @return string
  378. */
  379. function random_name($i = 10) {
  380. $chars = "abcdefghijkmnopqrstuvwxyz023456789";
  381. srand((double)microtime() * 1000000);
  382. $name = '';
  383. while ($i >= 0) {
  384. $num = rand() % 33;
  385. $tmp = substr($chars, $num, 1);
  386. $name = $name . $tmp;
  387. $i--;
  388. }
  389. return $name;
  390. }
  391. /**
  392. * Sutvarko SQL užklausą
  393. *
  394. * @param string $sql
  395. * @return escaped string
  396. */
  397. function escape($sql) {
  398. // Stripslashes
  399. if (get_magic_quotes_gpc()) {
  400. $sql = stripslashes($sql);
  401. }
  402. //Jei ne skaičius
  403. if (!isnum($sql) || $sql[0] == '0') {
  404. if (!isnum($sql)) {
  405. $sql = "'" . mysql_real_escape_string($sql) . "'";
  406. }
  407. }
  408. return $sql;
  409. }
  410. /**
  411. * Sutvarkom stringą saugiam atvaizdavimui
  412. * sito reikia jei nori grainti i inputa informacija.
  413. * daznai tai buna su visokiais \\\'? ir pan
  414. *
  415. * @param string $s
  416. * @return formated string
  417. */
  418. function input($s) {
  419. $s = htmlspecialchars($s, ENT_QUOTES, "UTF-8");
  420. return $s;
  421. }
  422. /////////////////////////////////////////////////////////
  423. //////// URL APDOROJIMUI
  424. ////////////////////////////////////////////////////////
  425. /**
  426. * Iš QUERY_STRING padarom masyvą
  427. *
  428. * @param QUERY_STRING $params
  429. * @return array
  430. */
  431. function url_arr($params) {
  432. $str2 = array();
  433. if (!isset($params))
  434. $params = $_SERVER['QUERY_STRING'];
  435. if (strrchr($params, '&'))
  436. $params = explode("&", $params); //Jeigu tai paprastas GET
  437. else
  438. $params = explode(";", $params); //Kitu atveju tai TVS ";," tipo GET
  439. if (isset($params) && is_array($params) && count($params) > 0) {
  440. foreach ($params as $key => $value) {
  441. if (strrchr($value, '='))
  442. $str1 = explode("=", $value);
  443. else
  444. $str1 = explode(",", $value);
  445. if (isset($str1[1]))
  446. $str2[$str1[0]] = $str1[1];
  447. }
  448. }
  449. return $str2;
  450. }
  451. /**
  452. * IĹĄ masyvo padarom ÄŻ QUERY_STRING
  453. * dekui: "sliekas_kanibalas" uz patobulinima
  454. *
  455. * @param array $params
  456. * @param string $str
  457. * @return string
  458. */
  459. function arr_url($params, $str = '') {
  460. $strs = array();
  461. foreach ($params as $key => $value) {
  462. if (!empty($value))
  463. $strs[] = $key . ',' . rawurlencode($value);
  464. }
  465. $str .= implode(";", $strs);
  466. return ($str);
  467. }
  468. /**
  469. * Papildo nuorodą naujais kintamaisiais
  470. * Esant reikalui atnaujina esamus
  471. *
  472. * @param string $str
  473. * @param string $link
  474. * @return formated string
  475. */
  476. function url($str, $link = '') {
  477. if (!empty($_SERVER['QUERY_STRING'])) {
  478. $url = url_arr($_SERVER['QUERY_STRING']);
  479. } else {
  480. $url = array();
  481. }
  482. if (!is_array($str)) {
  483. $str = url_arr($str);
  484. }
  485. return $link . "?" . arr_url(array_merge($url, $str));
  486. }
  487. /////////////////////////////////////////////////////////////
  488. ///////// URL PABAIGA
  489. /////////////////////////////////////////////////////////////
  490. /**
  491. * Naršyklės peradresavimas
  492. *
  493. * @param adresas $location
  494. * @param header/meta/script $type
  495. */
  496. function redirect($location, $type = "header") {
  497. if ($type == "header") {
  498. header("Location: " . $location);
  499. exit;
  500. }
  501. if ($type == "meta") {
  502. echo "<meta http-equiv='Refresh' content='1;url=$location'>";
  503. } else {
  504. echo "<script type='text/javascript'>document.location.href='" . $location . "'</script>\n";
  505. }
  506. }
  507. /**
  508. * Gražina amžių, nurodžius datą
  509. *
  510. * @param 0000-00-00 $data
  511. * @return int
  512. */
  513. function amzius($data) {
  514. if (!isset($data) || $data == '' || $data == '0000-00-00') {
  515. return "- ";
  516. } else {
  517. $data = explode("-", $data);
  518. $amzius = time() - mktime(0, 0, 0, $data['1'], $data['2'], $data['0']);
  519. $amzius = date("Y", $amzius) - 1970;
  520. return $amzius;
  521. }
  522. }
  523. /**
  524. * UĹžkoduoja problematiĹĄkus simbolius
  525. *
  526. * @param tekstas/string $text
  527. * @param true/false $striptags
  528. * @return string
  529. */
  530. function descript($text, $striptags = true) {
  531. // Convert problematic ascii characters to their true values
  532. $search = array("40", "41", "58", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "239");
  533. $replace = array("(", ")", ":", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "");
  534. $entities = count($search);
  535. for ($i = 0; $i < $entities; $i++)
  536. $text = preg_replace("#(&\#)(0*" . $search[$i] . "+);*#si", $replace[$i], $text);
  537. $text = str_replace(chr(32) . chr(32), "&nbsp;", $text);
  538. $text = str_replace(chr(9), "&nbsp; &nbsp; &nbsp; &nbsp;", $text);
  539. // the following is based on code from bitflux (http://blog.bitflux.ch/wiki/)
  540. // Kill hexadecimal characters completely
  541. $text = preg_replace('#(&\#x)([0-9A-F]+);*#si', "", $text);
  542. // remove any attribute starting with "on" or xmlns
  543. $text = preg_replace('#(<[^>]+[\\"\'\s])(onmouseover|onmousedown|onmouseup|onmouseout|onmousemove|onclick|ondblclick|onload|xmlns)[^>]*>#iU', ">", $text);
  544. // remove javascript: and vbscript: protocol
  545. $text = preg_replace('#([a-z]*)=([\`\'\"]*)script:#iU', '$1=$2nojscript...', $text);
  546. $text = preg_replace('#([a-z]*)=([\`\'\"]*)javascript:#iU', '$1=$2nojavascript...', $text);
  547. $text = preg_replace('#([a-z]*)=([\'\"]*)vbscript:#iU', '$1=$2novbscript...', $text);
  548. //<span style="width: expression(alert('Ping!'));"></span> (only affects ie...)
  549. $text = preg_replace('#(<[^>]+)style=([\`\'\"]*).*expression\([^>]*>#iU', "$1>", $text);
  550. $text = preg_replace('#(<[^>]+)style=([\`\'\"]*).*behaviour\([^>]*>#iU', "$1>", $text);
  551. if ($striptags) {
  552. do {
  553. $thistext = $text;
  554. $text = preg_replace('#</*(applet|meta|xml|blink|link|style|script|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>#i', "", $text);
  555. } while ($thistext != $text);
  556. }
  557. return $text;
  558. }
  559. /**
  560. * Patikrina ar tai tikrai paveiksliukas
  561. *
  562. * @param adresas $img
  563. * @return string
  564. */
  565. function isImage1($img) {
  566. //$img = $matches[1].str_replace(array("?","&","="),"",$matches[3]).$matches[4];
  567. //$img = $matches[1].$matches[3].$matches[4];
  568. if (@getimagesize($img)) {
  569. $res = "<img src='" . $img . "' style='border:0px;'>";
  570. } else {
  571. $res = "[img]" . $img . "[/img]";
  572. }
  573. return $res;
  574. }
  575. /**
  576. * SulauĹžo ĹžodÄŻ jei jis per ilgas
  577. * lauĹžo net jei Ĺžodis turi tarpus
  578. *
  579. * @param tekstas $text
  580. * @param ilgis $chars
  581. * @return string
  582. */
  583. function wrap1($text, $chars = 25) {
  584. $text = wordwrap($text, $chars, "<br />\n", 1);
  585. return $text;
  586. }
  587. /**
  588. * SulauĹžo per ilgus ĹžodĹžius
  589. * tik jei jis yra be tarpĹł
  590. *
  591. * @param tekstas $string
  592. * @param ilgis $width
  593. * @param simbolis $break
  594. * @return string
  595. */
  596. function wrap($string, $width, $break = "\n") {
  597. $string = preg_replace('/([^\s]{' . $width . '})/i', "$1$break", $string);
  598. return $string;
  599. }
  600. //tikrinam ar kintamasis sveikas skaicius ar normalus zodis
  601. function tikrinam($txt) {
  602. return (preg_match("/^[0-9a-zA-Z]+$/", $txt));
  603. }
  604. //bano galiojimo laikas. Rodo data iki kada +30 dienu
  605. //echo "Galioja iki: ".galioja('12', '19', '2007');
  606. //grazina: Galioja iki: 2008-01-17
  607. function galioja($menuo, $diena, $metai, $kiek_galioja = 30) {
  608. $nuo = (int)(mktime(0, 0, 0, $menuo, $diena, $metai) - time(void) / 86400);
  609. $liko = $nuo + ($kiek_galioja * 24 * 60 * 60);
  610. return date('Y-m-d', $liko);
  611. }
  612. function liko($diena, $menuo, $metai) {
  613. $until = mktime(0, 0, 0, $menuo, $diena, $metai);
  614. $now = time();
  615. $difference = $until - $now;
  616. $days = floor($difference / 86400);
  617. $difference = $difference - ($days * 86400);
  618. $hours = floor($difference / 3600);
  619. $difference = $difference - ($hours * 3600);
  620. $minutes = floor($difference / 60);
  621. $difference = $difference - ($minutes * 60);
  622. $seconds = $difference;
  623. return (int)$days + 1;
  624. }
  625. //sutvarko url iki linko
  626. function linkas($str) {
  627. $str = strtolower(strip_tags($str));
  628. //return preg_replace_callback("#([\n ])([a-z]+?)://([a-z0-9\-\.,\?!%\*_\#:;~\\&$@\/=\+]+)#si", "linkai", $str);
  629. return preg_replace("`((http)+(s)?:(//)|(www\.))((\w|\.|\-|_)+)(/)?(\S+)?`i", "<a href=\"http://\\5\\6\" title=\"\\0\" target=\"_blank\" class=\"link\" >\\5\\6</a>", $str);
  630. }
  631. // apvalinti:
  632. // suapvalina nurodyta skaičiu
  633. // (išesmės veikia kaip ceil() tik leidžia nurodyti dešimtainę)
  634. function apvalinti($sk, $kiek = 2) {
  635. if ($kiek < 0) {
  636. $kiek = 0;
  637. }
  638. $mult = pow(10, $kiek);
  639. return ceil($sk * $mult) / $mult;
  640. }
  641. function naujas($data, $nick = null) {
  642. if (isset($_SESSION['lankesi'])) {
  643. return (($data > $_SESSION['lankesi']) ? '<img src="images/icons/new.png" onload="new Effect.Pulsate(this)" alt="New" border="0" style="vertical-align: middle;" />' : '');
  644. } else {
  645. return '';
  646. }
  647. }
  648. //Pries kiek laiko
  649. function kada($ts) {
  650. global $lang;
  651. if ($ts == '' || $ts == "0000-00-00 00:00:00") {
  652. return '';
  653. }
  654. $mins = floor((strtotime(date("Y-m-d H:i:s")) - strtotime($ts)) / 60);
  655. $hours = floor($mins / 60);
  656. $mins -= $hours * 60;
  657. $days = floor($hours / 24);
  658. $hours -= $days * 24;
  659. $weeks = floor($days / 7);
  660. $days -= $weeks * 7;
  661. $month = floor($weeks / 4);
  662. $days -= $month * 4;
  663. $year = floor($month / 12);
  664. $days -= $year * 12;
  665. if ($year)
  666. return $year . " " . ($year > 1 ? "{$lang['system']['years']}" : "{$lang['system']['year']}") . " " . $lang['system']['ago'];
  667. if ($month)
  668. return $month . " " . ($month > 1 ? "{$lang['system']['months']}" : "{$lang['system']['month']}") . " " . $lang['system']['ago'];
  669. if ($weeks)
  670. return $weeks . " " . ($weeks > 1 ? "{$lang['system']['weeks']}" : "{$lang['system']['week']}") . " " . $lang['system']['ago'];
  671. if ($days)
  672. return $days . " " . ($days > 1 ? "{$lang['system']['days']}" : "{$lang['system']['day']}") . " " . $lang['system']['ago'];
  673. if ($hours)
  674. return $hours . " " . ($hours > 1 ? "{$lang['system']['hours']}" : "{$lang['system']['hour']}") . " " . $lang['system']['ago'];
  675. if ($mins)
  676. return $mins . " " . ($mins > 1 ? "{$lang['system']['minutes']}" : "{$lang['system']['minute']}") . " " . $lang['system']['ago'];
  677. return "&lt; 1 {$lang['system']['minute']} {$lang['system']['ago']}";
  678. }
  679. //vercia baitus i zmoniu kalba
  680. function baitai($size, $digits = 2, $dir = false) {
  681. $kb = 1024;
  682. $mb = 1024 * $kb;
  683. $gb = 1024 * $mb;
  684. $tb = 1024 * $gb;
  685. if (($size == 0) && ($dir)) {
  686. return " Nulis";
  687. } elseif ($size < $kb) {
  688. return $size . " Baitai";
  689. } elseif ($size < $mb) {
  690. return round($size / $kb, $digits) . " Kb";
  691. } elseif ($size < $gb) {
  692. return round($size / $mb, $digits) . " Mb";
  693. } elseif ($size < $tb) {
  694. return round($size / $gb, $digits) . " Gb";
  695. } else {
  696. return round($size / $tb, $digits) . " Tb";
  697. }
  698. }
  699. // Trim a line of text to a preferred length
  700. function trimlink($text, $length) {
  701. $dec = array("\"", "'", "\\", '\"', "\'", "<", ">");
  702. $enc = array("&quot;", "&#39;", "&#92;", "&quot;", "&#39;", "&lt;", "&gt;");
  703. $text = str_replace($enc, $dec, $text);
  704. if (strlen($text) > $length)
  705. $text = utf8_substr($text, 0, ($length - 3)) . "...";
  706. $text = str_replace($dec, $enc, $text);
  707. return $text;
  708. }
  709. //Paskaiciuojam procentus
  710. function procentai($reikia, $yra, $zenklas = false) {
  711. $return = (int)round((100 * $yra) / $reikia);
  712. if ($return > 100 && $zenklas) {
  713. $return = "<img src='images/icons/accept.png' class='middle' alt='100%' title='100%' borders='0' />";
  714. } elseif ($return > 0 && $zenklas) {
  715. $return = "<img src='images/icons/cross.png' class='middle' alt='" . $return . "%' title='" . $reikia . "/" . $yra . " - " . $return . "%' borders='0' />";
  716. }
  717. return $return;
  718. }
  719. //Insert SQL - supaprastina duomenų įterpimą, paduodam lentlės pavadinimą ir kitu argumentu asociatyvų masyvą
  720. function insert($table, $array) {
  721. return 'INSERT INTO `' . LENTELES_PRIESAGA . $table . '` (' . implode(', ', array_keys($array)) . ') VALUES (' . implode(', ', array_map('escape', $array)) . ')';
  722. }
  723. //echo "<img src='".pic('http://img95.imageshack.us/img95/6290/web1160860226jy1.jpg')."'>";
  724. function pic($off_site, $size = 150, $url = 'images/nuorodu/', $sub = 'url') {
  725. $pic_name = md5($off_site);
  726. $pic_name = $url . $sub . "_" . $pic_name . ".jpg";
  727. if (!file_exists($pic_name) || (time() - filemtime($pic_name)) > 32400) { //9 valandos senumo
  728. clearstatcache();
  729. @unlink($pic_name);
  730. if (pic1($off_site, $size, $url, $sub)) {
  731. return $pic_name;
  732. } else {
  733. clearstatcache();
  734. return $url . "noimage.jpg";
  735. }
  736. } else {
  737. clearstatcache();
  738. return $pic_name;
  739. }
  740. }
  741. function pic1($off_site, $size = 150, $url = 'images/nuorodu/', $sub = 'url') {
  742. $fp = @fopen($off_site, 'rb');
  743. $buf = '';
  744. if ($fp) {
  745. stream_set_blocking($fp, true);
  746. stream_set_timeout($fp, 2);
  747. while (!feof($fp)) {
  748. $buf .= fgets($fp, 4096);
  749. }
  750. $data = $buf;
  751. //set new height
  752. $src = @imagecreatefromstring($data);
  753. if (empty($src)) {
  754. return false;
  755. }
  756. $width = @imagesx($src);
  757. $height = @imagesy($src);
  758. $aspect_ratio = $width / $height;
  759. //start resizing
  760. if ($width <= $size) {
  761. $new_w = $width;
  762. $new_h = $height;
  763. } else {
  764. $new_w = $size;
  765. $new_h = @abs($new_w / $aspect_ratio);
  766. }
  767. $img = @imagecreatetruecolor($new_w, $new_h);
  768. //output image
  769. @imagecopyresampled($img, $src, 0, 0, 0, 0, $new_w, $new_h, $width, $height);
  770. $file = $url . $sub . "_" . md5($off_site) . ".jpg";
  771. // determine image type and send it to the browser
  772. @imagejpeg($img, $file, 90);
  773. @imagedestroy($img);
  774. unset($buf);
  775. sleep(2);
  776. }
  777. }
  778. /**
  779. * Sulietuvinimas m?nesio
  780. * echo menesis(12); //Gruodis
  781. *
  782. * @param INT $men
  783. * @return string
  784. */
  785. function menesis($men) {
  786. if (is_int($men)) {
  787. $ieskom = array(12, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11);
  788. } else {
  789. $ieskom = array("December", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November");
  790. }
  791. $keiciam = array("Gruodis", "Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis");
  792. return str_replace($ieskom, $keiciam, $men);
  793. }
  794. // grąžina failus iš nurodytos direktorijos ir sukiša į masyvą
  795. function getFiles($path, $denny = '.htaccess|index.php|index.html|index.htm|index.php3|conf.php') {
  796. $denny = explode('|', $denny);
  797. $path = urldecode($path);
  798. $files = array();
  799. $fileNames = array();
  800. $i = 0;
  801. //print_r(basename($path));
  802. //&& !in_array(basename($path), $denny)
  803. if (is_dir($path)) {
  804. if ($dh = opendir($path)) {
  805. while (($file = readdir($dh)) !== false) {
  806. if (!in_array($file, $denny)) {
  807. if (($file == ".") || ($file == ".."))
  808. continue;
  809. $fullpath = $path . "/" . $file;
  810. //$fkey = strtolower($file);
  811. $fkey = $file;
  812. while (array_key_exists($fkey, $fileNames))
  813. $fkey .= " ";
  814. $a = stat($fullpath);
  815. $files[$fkey]['size'] = $a['size'];
  816. if ($a['size'] == 0)
  817. $files[$fkey]['sizetext'] = "-";
  818. else
  819. if ($a['size'] > 1024 && $a['size'] <= 1024 * 1024)
  820. $files[$fkey]['sizetext'] = (ceil($a['size'] / 1024 * 100) / 100) . " K"; //patvarkom failo dydziu atvaizdavima
  821. else
  822. if ($a['size'] > 1024 * 1024)
  823. $files[$fkey]['sizetext'] = (ceil($a['size'] / (1024 * 1024) * 100) / 100) . " Mb";
  824. else
  825. $files[$fkey]['sizetext'] = $a['size'] . " bytes";
  826. $files[$fkey]['name'] = $file;
  827. $e = strip_ext($file); // $e failo pletinys - pvz: .gif
  828. $files[$fkey]['type'] = filetype($fullpath); // failo tipas, dir, file ir pan
  829. $k = $e . $file; // kad butu lengvau rusiuoti;
  830. $fileNames[$i++] = $k;
  831. }
  832. }
  833. closedir($dh);
  834. } else
  835. die(klaida($lang['system']['error'], "{$lang['system']['cantread']}: $path"));
  836. } else
  837. die(klaida($lang['system']['error'], "{$lang['system']['notdir']}: $path"));
  838. sort($fileNames, SORT_STRING); // surusiuojam
  839. $sortedFiles = array();
  840. $i = 0;
  841. foreach ($fileNames as $f) {
  842. $f = utf8_substr($f, 4, strlen($f) - 4); //sutvarko failo pletinius
  843. if ($files[$f]['name'] != '')
  844. $sortedFiles[$i++] = $files[$f];
  845. }
  846. return $sortedFiles;
  847. }
  848. //Grazina direktorijų sarašą
  849. function getDirs($dir) {
  850. if ($handle = opendir($dir)) {
  851. while (false !== ($file = readdir($handle))) {
  852. if ($file != "." && $file != ".." && $file != ".svn" && is_dir($dir . $file)) {
  853. $return[$file] = $file;
  854. }
  855. }
  856. closedir($handle);
  857. }
  858. return $return;
  859. }
  860. // grazina failo pletini
  861. function strip_ext($name, $ext = '') {
  862. $ext = utf8_substr($name, strlen($ext) - 4, 4);
  863. if (strpos($ext, '.') === false) { // jeigu tai folderis
  864. return " "; // grazinam biski tarpu kad rusiavimas butu ciki, susirusiuoja - folderiai virsuje
  865. }
  866. return $ext; // jei tai failas grazinam jo pletini
  867. }
  868. function admin_login() {
  869. global $_SERVER, $admin_name, $admin_pass, $lang;
  870. if (@$_SERVER['PHP_AUTH_USER'] != $admin_name || @$_SERVER['PHP_AUTH_PW'] != $admin_pass) {
  871. header("WWW-Authenticate: Basic realm='AdminAccess'");
  872. header("HTTP/1.0 401 Unauthorized");
  873. header("status: 401 Unauthorized");
  874. mysql_query1("INSERT INTO `" . LENTELES_PRIESAGA . "logai` (`action` ,`time` ,`ip`) VALUES (" . escape("ADMIN pultas - Klaida loginantis: User: " . (isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : "N/A") . " Pass: " . (isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : "N/A")) . ",NOW(),INET_ATON(" . escape($_SERVER['REMOTE_ADDR']) . "));");
  875. die(klaida("{$lang['system']['forbidden']}!", "{$lang['system']['notadmin']}"));
  876. } else {
  877. unset($admin_name, $admin_pass);
  878. return true;
  879. }
  880. }
  881. function get_user_os() {
  882. global $global_info, $HTTP_USER_AGENT, $HTTP_SERVER_VARS;
  883. if (!empty($global_info['user_os'])) {
  884. return $global_info['user_os'];
  885. }
  886. if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
  887. $HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
  888. } elseif (getenv("HTTP_USER_AGENT")) {
  889. $HTTP_USER_AGENT = getenv("HTTP_USER_AGENT");
  890. } elseif (empty($HTTP_USER_AGENT)) {
  891. $HTTP_USER_AGENT = "";
  892. }
  893. if (eregi("Win", $HTTP_USER_AGENT)) {
  894. $global_info['user_os'] = "WIN";
  895. } elseif (eregi("Mac", $HTTP_USER_AGENT)) {
  896. $global_info['user_os'] = "MAC";
  897. } elseif (eregi("UNIX", $HTTP_USER_AGENT)) {
  898. $global_info['user_os'] = "Linux";
  899. } else {
  900. $global_info['user_os'] = "OTHER";
  901. }
  902. return $global_info['user_os'];
  903. }
  904. function get_browser_info() {
  905. global $global_info, $HTTP_USER_AGENT, $HTTP_SERVER_VARS;
  906. if (!empty($global_info['browser_agent'])) {
  907. return $global_info['browser_agent'];
  908. }
  909. if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
  910. $HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
  911. } elseif (getenv("HTTP_USER_AGENT")) {
  912. $HTTP_USER_AGENT = getenv("HTTP_USER_AGENT");
  913. } elseif (empty($HTTP_USER_AGENT)) {
  914. $HTTP_USER_AGENT = "";
  915. }
  916. if (eregi("MSIE ([0-9].[0-9]{1,2})", $HTTP_USER_AGENT, $regs)) {
  917. $global_info['browser_agent'] = "MSIE";
  918. $global_info['browser_version'] = $regs[1];
  919. } elseif (eregi("Mozilla/([0-9].[0-9]{1,2})", $HTTP_USER_AGENT, $regs)) {
  920. $global_info['browser_agent'] = "MOZILLA";
  921. $global_info['browser_version'] = $regs[1];
  922. } elseif (eregi("Opera(/| )([0-9].[0-9]{1,2})", $HTTP_USER_AGENT, $regs)) {
  923. $global_info['browser_agent'] = "OPERA";
  924. $global_info['browser_version'] = $regs[2];
  925. } else {
  926. $global_info['browser_agent'] = "OTHER";
  927. $global_info['browser_version'] = 0;
  928. }
  929. return $global_info['browser_agent'];
  930. }
  931. /**
  932. * Gražina patvirtinimo kodą
  933. *
  934. * @return HTML
  935. */
  936. function kodas() {
  937. global $lang;
  938. return "<img src=\"priedai/human.php\" style=\"cursor: pointer;\" onclick='this.src=\"priedai/human.php?\"+Math.random()' id=\"captcha\" alt=\"code\" title=\"{$lang['system']['refresh']}\" />";
  939. }
  940. /** GraĹžina versijos numerÄŻ */
  941. function versija($failas = false) {
  942. if (!$failas) {
  943. $svnid = '$Rev: 1259 $';
  944. $scid = utf8_substr($svnid, 6);
  945. return apvalinti(intval(utf8_substr($scid, 0, strlen($scid) - 2))/1000,2);
  946. } else {
  947. //Nuskaityti faila ir paimti su regexp versijos numeri
  948. return '$Rev: 1259 $';
  949. }
  950. }
  951. /**
  952. * Debuginimui
  953. */
  954. function debug() {
  955. global $lang;
  956. $array = debug_backtrace();
  957. klaida($lang['system']['debuger'], '<pre>' . print_r(array_values($array), true) . '</pre>');
  958. }
  959. function sendcompressedcontent($content) {
  960. header("Content-Encoding: gzip");
  961. return gzencode($content, 9);
  962. }
  963. // compress HTML BLOGAS DUOMEN? SUSPAUDIMO B?DAS
  964. //ob_start('sendcompressedcontent');
  965. /**
  966. * Editorius skirtas vaizdĹžiai redaguoti html
  967. *
  968. * @example echo editorius('tiny_mce','mini');
  969. * @example echo editorius('spaw','standartinis',array('Glaustai'=>'Glaustai','Placiau'=>'Plačiau'),array('Glaustai'=>'Naujiena glaustai','Placiau'=>'Naujiena plačiau'));
  970. * @param string $tipas
  971. * @param string $dydis
  972. * @param string $id
  973. * @param string $value
  974. * @return string
  975. */
  976. function editorius($tipas = 'rte', $dydis = 'standartinis', $id = false, $value = '') {
  977. global $conf;
  978. if (!$id) {
  979. $id = md5(uniqid());
  980. }
  981. //$adr="http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/";
  982. $adr="../../../";
  983. $stilius=$adr.'stiliai/' . input(strip_tags($conf['Stilius'])) . '/default.css';
  984. /* //Editorius - SPAW2
  985. if ($tipas === 'spaw' && is_file('javascript/htmlarea/spaw2/spaw.inc.php')) {
  986. if ($dydis === 'standartinis') {
  987. include ("javascript/htmlarea/spaw2/spaw.inc.php");
  988. if (is_array($id)) {
  989. $spaw = new SpawEditor(array_shift(array_keys($id)), (isset($value) ? $value[array_shift
  990. (array_keys($id))] : ''));
  991. } else
  992. $spaw = new SpawEditor($id);
  993. $new_dir = array('dir' => 'images/naujienos/', 'caption' => 'Paveiksliukai',
  994. 'params' => array('allowed_filetypes' => array('images')));
  995. $spaw->setConfigValueElement('PG_SPAWFM_DIRECTORIES', sizeof($spaw->
  996. getConfigValue('PG_SPAWFM_DIRECTORIES')), $new_dir);
  997. $new_dir = array('dir' => 'siuntiniai/', 'caption' => 'Siuntiniai', 'params' =>
  998. array('allowed_filetypes' => array('documents', 'audio', 'video', 'archives',
  999. 'flash', 'images')));
  1000. $spaw->setConfigValueElement('PG_SPAWFM_DIRECTORIES', sizeof($spaw->
  1001. getConfigValue('PG_SPAWFM_DIRECTORIES')), $new_dir);
  1002. SpawConfig::setStaticConfigValue('default_height', '200px');
  1003. SpawConfig::setStaticConfigItem('base_href', adresas(), SPAW_CFG_TRANSFER_JS);
  1004. if (is_array($id)) {
  1005. foreach ($id as $key => $val) {
  1006. $spaw->addPage(new SpawEditorPage($key, $val, (isset($value[$key]) ? $value[$key] :
  1007. '')));
  1008. }
  1009. }
  1010. $spaw->setConfigValueElement('PG_SPAWFM_SETTINGS', 'allow_upload', true);
  1011. $spaw->setConfigValueElement('PG_SPAWFM_SETTINGS', 'allow_modify', false);
  1012. return $spaw->getHtml();
  1013. } else {
  1014. include ("javascript/htmlarea/spaw2/spaw.inc.php");
  1015. SpawConfig::setStaticConfigItem('base_href', adresas(), SPAW_CFG_TRANSFER_JS);
  1016. $new_dir = array('dir' => 'images/naujienos/', 'caption' => 'Paveiksliukai',
  1017. 'params' => array('allowed_filetypes' => array('images'), 'allow_upload' => true,
  1018. 'default_dir' => true, 'max_upload_filesize' => 1048576));
  1019. $irankiai = array('format' => 'format_mini', 'edit' => 'edit', 'insert' =>
  1020. 'insert', );
  1021. SpawConfig::setStaticConfigItem('toolbarset_mini', $irankiai);
  1022. // $spaw = new SPAW_Wysiwyg($id /*name*/ //, $value /*value*/, 'lt' /*language*/,
  1023. // 'mini' /*toolbar mode*/, '' /*theme*/, '100%' /*width*/, '150px' /*height*/ );
  1024. /* $spaw->setConfigValueElement('PG_SPAWFM_SETTINGS', 'allow_upload', false);
  1025. $spaw->setConfigValueElement('PG_SPAWFM_SETTINGS', 'allow_modify', false);
  1026. $spaw->setConfigValueElement('PG_SPAWFM_DIRECTORIES', sizeof($spaw->
  1027. getConfigValue('PG_SPAWFM_DIRECTORIES')), $new_dir);
  1028. return $spaw->getHtml();
  1029. }
  1030. }
  1031. elseif($tipas === 'jquery'){*/
  1032. if($tipas=='dsrte'){
  1033. require_once 'javascript/htmlarea/dsrte/lib/dsrte.php';
  1034. // compress HTML
  1035. $return = '<link rel="stylesheet" href="javascript/htmlarea/dsrte/lib/dsrte.css" type="text/css" />
  1036. <script type="text/javascript"><!--
  1037. // keyboard shortcut keys for current language
  1038. var ctrlb="b",ctrli="i",ctrlu="u";
  1039. //-->
  1040. </script>';
  1041. if (is_array($id)) {
  1042. foreach ($id as $key => $val) {
  1043. $dsrte = new dsRTE($key);
  1044. $return .= $dsrte->getScripts() . $dsrte->getHTML(isset($value[$key]) ? $value[$key] : $val);
  1045. }
  1046. } else {
  1047. $dsrte = new dsRTE($id);
  1048. $return .= $dsrte->getScripts() . $dsrte->getHTML($value ? $value : "");
  1049. }
  1050. }else{
  1051. $return=<<<HTML
  1052. <link type="text/css" rel="stylesheet" href="javascript/htmlarea/jquery.rte1_2/jquery.rte.css" />
  1053. <script type="text/javascript" src="javascript/htmlarea/jquery.rte1_2/jquery.rte.js"></script>
  1054. <script type="text/javascript" src="javascript/htmlarea/jquery.rte1_2/jquery.rte.tb.js"></script>
  1055. <script type="text/javascript" src="javascript/htmlarea/jquery.rte1_2/jquery.ocupload-1.1.4.js"></script>
  1056. HTML;
  1057. if (is_array($id)) {
  1058. foreach ($id as $key => $val) {
  1059. //$dsrte = new dsRTE($key);
  1060. //$return .= $dsrte->getScripts() . $dsrte->getHTML(isset($value[$key]) ? $value[$key] : $val);
  1061. $return.=<<<HTML
  1062. <script type="text/javascript">
  1063. $(document).ready(function() {
  1064. $('.{$key}').rte({
  1065. baseurl:'$adr',
  1066. css: ['{$stilius}'],
  1067. height: 150,
  1068. controls_rte: rte_toolbar,
  1069. controls_html: html_toolbar
  1070. });
  1071. //arr is array of RTEm you can use api as you want.
  1072. });
  1073. </script>
  1074. <textarea name="{$key}" style="width:100%" class="{$key}" method="post" action="#">{$value[$key]}</textarea>
  1075. HTML;
  1076. }
  1077. } else {
  1078. $return.=<<<HTML
  1079. <script type="text/javascript">
  1080. $(document).ready(function() {
  1081. $('.{$id}').rte({
  1082. baseurl:'$adr',
  1083. css: ['{$stilius}'],
  1084. height: 150,
  1085. frame_class: 'frameBody',
  1086. controls_rte: rte_toolbar,
  1087. controls_html: html_toolbar
  1088. });
  1089. //arr is array of RTEm you can use api as you want.
  1090. });
  1091. </script>
  1092. <textarea name="{$id}" style="width:100%" class="{$id}" method="post" action="#">{$value}</textarea>
  1093. HTML;
  1094. //$dsrte = new dsRTE($id);
  1095. //$return .= $dsrte->getScripts() . $dsrte->getHTML($value ? $value : "");
  1096. }
  1097. }
  1098. return $return;
  1099. /*}
  1100. //Editorius - Tiny_MCE
  1101. elseif (is_file('javascript/htmlarea/tiny_mce/tiny_mce.js')) {
  1102. if ($dydis === 'standartinis') {
  1103. $return = '<script language="javascript" type="text/javascript" src="javascript/htmlarea/tiny_mce/tiny_mce.js"></script><script language="JavaScript">tinyMCE.init({mode:"exact",language:"lt",elements:"' . (is_array
  1104. ($id) ? implode(',', array_keys($id)) : $id) .
  1105. '",theme:"advanced",theme_advanced_resizing:true,theme_advanced_resize_horizontal:false,theme_advanced_path_location:"bottom",force_p_newlines:"false",height:"350",plugin_insertdate_dateFormat:"%Y-%m-%d",plugin_insertdate_timeFormat:"%H:%M:%S",plugins:"inlinepopups,emotions,advimage,media,table,insertdatetime,style",content_css:"stiliai/' .
  1106. $conf['Stilius'] . '/default.css",theme_advanced_buttons1:"bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink",theme_advanced_buttons2_add:"separator,insertdate,separator,forecolor,backcolor,separator,emotions,media",theme_advanced_buttons3:"tablecontrols",theme_advanced_buttons4:"styleselect,fontsizeselect,formatselect",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_statusbar_location:"bottom",invalid_elements:"script,object,applet,iframe",extended_valid_elements:"a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",theme_advanced_disable:"help",apply_source_formatting:true,tab_focus:":prev,:next",entity_encoding:"raw"});</script>';
  1107. if (is_array($id)) {
  1108. foreach ($id as $key => $val) {
  1109. $return .= '<textarea rows="3" id="' . $key . '" name="' . $key .
  1110. '" style="width:100%">' . (isset($value[$key]) ? $value[$key] : $val) .
  1111. '</textarea>';
  1112. }
  1113. } else {
  1114. $return .= '<textarea rows="3" id="' . $id . '" name="' . $id .
  1115. '" style="width:100%">' . $value . '</textarea>';
  1116. }
  1117. return $return;
  1118. } else {
  1119. $return = '<script language="javascript" type="text/javascript" src="javascript/htmlarea/tiny_mce/tiny_mce.js"></script><script language="JavaScript">tinyMCE.init({mode : "exact",language : "lt",elements : "' . (is_array
  1120. ($id) ? implode(',', array_keys($id)) : $id) .
  1121. '",theme : "simple",apply_source_formatting : true,tab_focus : ":prev,:next",entity_encoding: "raw"});</script>';
  1122. if (is_array($id)) {
  1123. foreach ($id as $key => $val) {
  1124. $return .= '<textarea rows="3" id="' . $key . '" name="' . $value[$key] .
  1125. '" style="width:100%">' . (isset($value[$key]) ? $value[$key] : $val) .
  1126. '</textarea>';
  1127. }
  1128. } else {
  1129. $return .= '<textarea rows="3" id="' . $id . '" name="' .$value[$key].
  1130. '" style="width:100%">' . $value . '</textarea>';
  1131. }
  1132. return $return;
  1133. }
  1134. }*/
  1135. }
  1136. if (!function_exists('scandir')) {
  1137. function scandir($directory, $sorting_order = 0) {
  1138. $dh = opendir($directory);
  1139. while (false !== ($filename = readdir($dh))) {
  1140. $files[] = $filename;
  1141. }
  1142. if ($sorting_order == 0) {
  1143. sort($files);
  1144. } else {
  1145. rsort($files);
  1146. }
  1147. return ($files);
  1148. }
  1149. }
  1150. ?>