$row) { $sort_col[$key] = $row[$col]; } array_multisort($sort_col, $dir, $arr); } function getUrlData($url) { $result = false; $contents = \S::getUrlContents($url); if (isset($contents) && is_string($contents)) { $title = null; $metaTags = null; preg_match('/([^>]*)<\/title>/si', $contents, $match); if (isset($match) && is_array($match) && count($match) > 0) { $title = strip_tags($match[1]); } preg_match_all('/<[\s]*meta[\s]*name="?' . '([^>"]*)"?[\s]*' . 'content="?([^>"]*)"?[\s]*[\/]?[\s]*>/si', $contents, $match); if (isset($match) && is_array($match) && count($match) == 3) { $originals = $match[0]; $names = $match[1]; $values = $match[2]; if (count($originals) == count($names) && count($names) == count($values)) { $metaTags = array(); for ($i = 0, $limiti = count($names); $i < $limiti; $i++) { $metaTags[$names[$i]] = array( 'html' => htmlentities($originals[$i]), 'value' => $values[$i] ); } } } $result = array( 'title' => $title, 'metaTags' => $metaTags ); } return $result; } function getUrlContents($url, $maximumRedirections = 1, $currentRedirection = 0) { $result = false; $contents = @file_get_contents($url); // Check if we need to go somewhere else if (isset($contents) && is_string($contents)) { preg_match_all('/<[\s]*meta[\s]*http-equiv="?REFRESH"?' . '[\s]*content="?[0-9]*;[\s]*URL[\s]*=[\s]*([^>"]*)"?' . '[\s]*[\/]?[\s]*>/si', $contents, $match); if (isset($match) && is_array($match) && count($match) == 2 && count($match[1]) == 1) { if (!isset($maximumRedirections) || $currentRedirection < $maximumRedirections) { return self::getUrlContents($match[1][0], $maximumRedirections, ++$currentRedirection); } $result = false; } else { $result = $contents; } } return $contents; } public function getMonthNames() { return array(1 => 'Styczeń', 2 => 'Luty', 3 => 'Marzec', 4 => 'Kwiecień', 5 => 'Maj', 6 => 'Czerwiec', 7 => 'Lipiec', 8 => 'Sierpień', 9 => 'Wrzesień', 10 => 'Październik', 11 => 'Listopad', 12 => 'Grudzień'); } function getAddresses($domain) { $records = dns_get_record($domain); $res = array(); foreach ($records as $r) { if ($r['host'] != $domain) continue; // glue entry if (!isset($r['type'])) continue; // DNSSec if ($r['type'] == 'A') $res[] = $r['ip']; if ($r['type'] == 'AAAA') $res[] = $r['ipv6']; } return $res; } public static function number($value) { return number_format($value, 2, '.', ''); } public function number_display($value) { return number_format($value, 2, ',', ' ') . ' zł'; } public function downloadFile($file) { if (file_exists($file) && is_readable($file)) { $name = str_replace('temp/', '', $file); $name = str_replace('temp_t/', '', $name); header('Content-type: application/pdf'); header("Content-Disposition: attachment; filename=\"" . $name . "\""); readfile($file); } exit; } function d2w($digits) { if ($digits * 1 == 0) { return "zero"; } $jednosci = array('zero', 'jeden', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć', 'siedem', 'osiem', 'dziewięć'); $dziesiatki = array('', 'dziesięć', 'dwadzieścia', 'trzydzieści', 'czterdzieści', 'piećdziesiąt', 'sześćdziesiąt', 'siedemdziesiąt', 'osiemdziesiąt', 'dziewiećdziesiąt'); $setki = array('', 'sto', 'dwieście', 'trzysta', 'czterysta', 'pięćset', 'sześćset', 'siedemset', 'osiemset', 'dziewięćset'); $nastki = array('dziesięć', 'jedenaście', 'dwanaście', 'trzynaście', 'czternaście', 'piętnaście', 'szesnaście', 'siedemnaście', 'osiemnaście', 'dzięwietnaście'); $tysiace = array('tysiąc', 'tysiące', 'tysięcy'); $digits = (string) $digits; $digits = strrev($digits); $i = strlen($digits); $string = ''; if ($i > 5 && $digits[5] > 0) { $string .= $setki[$digits[5]] . ' '; } if ($i > 4 && $digits[4] > 1) { $string .= $dziesiatki[$digits[4]] . ' '; } else if ($i > 3 && $digits[4] == 1) { $string .= $nastki[$digits[3]] . ' '; } if ($i > 3 && $digits[3] > 0 && $digits[4] != 1) { $string .= $jednosci[$digits[3]] . ' '; } $tmpStr = substr(strrev($digits), 0, -3); if (strlen($tmpStr) > 0) { $tmpInt = (int) $tmpStr; if ($tmpInt == 1) { $string .= $tysiace[0] . ' '; } elseif (($tmpInt % 10 > 1 && $tmpInt % 10 < 5) && ($tmpInt < 10 || $tmpInt > 20)) { $string .= $tysiace[1] . ' '; } else { $string .= $tysiace[2] . ' '; } } if ($i > 2 && $digits[2] > 0) { $string .= $setki[$digits[2]] . ' '; } if ($i > 1 && $digits[1] > 1) { $string .= $dziesiatki[$digits[1]] . ' '; } elseif ($i > 0 && $digits[1] == 1) { $string .= $nastki[$digits[0]] . ' '; } if ($digits[0] > 0 && $digits[1] != 1) { $string .= $jednosci[$digits[0]] . ' '; } return $string; } function slownie($a, $j1, $j2, $j3) { $out = self::d2w($a); $i = strlen($a); $l = substr($a, $i - 1); if ($l == 1) { $out .= " $j1"; } else if ($l == 2 || $l == 3 || $l == 4) { $out .= " $j2"; } else { $out .= " $j3"; } return $out; } function SC($a) { $a = round($a, 2); $c = floor($a); $u = $a - $c; $us = self::slownie(round($u * 100, 2), "grosz", "grosze", "groszy"); $cs = self::slownie($c, "złoty", "złote", "złotych"); return "$cs, $us"; } public function sendEmail($email, $temat, $tresc, $replay = '', $file = '') { include_once 'resources/phpmailer/class.phpmailer.php'; include_once 'resources/phpmailer/class.smtp.php'; if (isset($email) && isset($temat) && isset($tresc)) { $admin_mail = 'biuro@project-pro.pl'; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->Host = 'mail.project-pro.pl'; $mail->Port = 465; $mail->Username = 'biuro@project-pro.pl'; $mail->Password = 'Legia1916Warszawa'; $mail->CharSet = "UTF-8"; $mail->SMTPSecure = 'ssl'; $mail->SMTPOptions = [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ] ]; if ($replay == "") { $mail->AddReplyTo($admin_mail, 'Project-Pro Pyziak Jacek'); $mail->SetFrom($admin_mail, 'Project-Pro Pyziak Jacek'); } else { $mail->AddReplyTo($replay, 'Project-Pro Pyziak Jacek'); $mail->SetFrom($replay, 'Project-Pro Pyziak Jacek'); } $mail->AddAddress($email, ''); $mail->Subject = $temat; $mail->setLanguage('pl'); $mail->Body = str_replace('<br>', chr(13) . chr(10), $tresc); if (is_array($file)) { foreach ($file as $f) $mail->AddAttachment($f); } else if ($file) $mail->AddAttachment($file); $mail->IsHTML(true); return $mail->Send(); } return false; } function curl_redir_exec($ch, $proxy = "") { static $curl_loops = 0; static $curl_max_loops = 20; if ($curl_loops++ >= $curl_max_loops) { $curl_loops = 0; return FALSE; } curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($proxy) { curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_PROXY, $proxy); } $data = curl_exec($ch); $debbbb = $data; @list($header, $data) = explode("\n\n", $data, 2); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($http_code == 301 || $http_code == 302) { $matches = array(); preg_match('/Location:(.*?)\n/', $header, $matches); $url = @parse_url(trim(array_pop($matches))); if (!$url) { $curl_loops = 0; return $data; } $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)); if (!isset($url['query'])) $url['query'] = ''; if (!isset($url['scheme'])) $url['scheme'] = ''; $new_url = $url['scheme'] . '://' . $url['host'] . $url['path'] . ($url['query'] ? '?' . $url['query'] : ''); curl_setopt($ch, CURLOPT_URL, $new_url); return self::curl_redir_exec($ch); } else { $curl_loops = 0; return $debbbb; } } public function info($text, $print = false) { $info = '<p style="font-size: 11px; font-family: Verdana; background: #f6f6f6; border: 1px solid #dddddd; line-height: 30px; padding: 5px 20px;">' . $text . '</p>'; if ($print) echo $info; return $info; } public function my_array_diff($a, $b) { $map = $out = array(); if (is_array($a)) foreach ($a as $val) $map[trim($val)] = 1; if (is_array($b)) foreach ($b as $val) unset($map[trim($val)]); return array_keys($map); } public function pre($data, $type = '') { $data = str_replace('Array (', '', $data); $data = str_replace(')', '', $data); echo '<pre'; if ($type == 'error') echo ' style="color: #cc0000;" '; else if ($type == 'info') echo ' style="color: #2c539e;" '; else echo ' style="color: #8fc400;" '; echo '>' . print_r($data, true) . '</pre>'; } public function deleteSessionVar($var) { unset($_SESSION[$var]); } public function deleteCache($str = '../temp/') { if (is_file($str)) { return @unlink($str); } else if (is_dir($str)) { $scan = glob(rtrim($str, '/') . '/*'); if (is_array($scan)) foreach ($scan as $index => $path) { \S::deleteCache($path); } if ($str != '../temp/' && $str != 'temp/') return @rmdir($str); } } public function saveString($val, $tolower = false) { if ($tolower) $val = strtolower($val); return trim(strip_tags($val)); } public function deleteCacheAdmin($str = 'temp/') { if (is_file($str)) { return @unlink($str); } else if (is_dir($str)) { $scan = glob(rtrim($str, '/') . '/*'); if (is_array($scan)) foreach ($scan as $index => $path) self::deleteCache($path); if ($str != 'temp/' && $str != 'admin/temp/') return @rmdir($str); } } public function getHash($val) { $val = base64_encode($val); $val = \S::get($val); return base64_decode($val); } public function deleteAction() { $akcja = "function mycallbackform(v,m,f){ if( v == true ) document.location.href='./?rw=del&id=[param]'; }"; $akcja .= "$.prompt('Potwierdz usunięcie',{ callback: mycallbackform, buttons: { tak: true, nie: false }, focus: 1 })"; $akcja = 'onClick="' . $akcja . '"'; return $akcja; } public function seo($val, $nopl = true) { $array_rep1 = array('*', '_', ' ', '/', '+', '.', '"', "'", '?', '-', ',', '!', '~', '<', '>', '@', '#', '$', '%', '^', '&', '*' . '(', ')' . '-', '=', '\\', '|', '[', ']', '/', ':'); $array_rep2 = array('-', '-', '-', '-', '-', '-', '', '', '', '-', '-', '', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '', '-', '-', '=', '-', '-', '-', '-'); if ($nopl) $val = self::noPl($val); $val = str_replace($array_rep1, $array_rep2, $val); return strtolower(trim($val)); } public function noPL($val) { $table = array( //WIN "\xb9" => "a", "\xa5" => "A", "\xe6" => "c", "\xc6" => "C", "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L", "\xf3" => "o", "\xd3" => "O", "\x9c" => "s", "\x8c" => "S", "\x9f" => "z", "\xaf" => "Z", "\xbf" => "z", "\xac" => "Z", "\xf1" => "n", "\xd1" => "N", //UTF "\xc4\x85" => "a", "\xc4\x84" => "A", "\xc4\x87" => "c", "\xc4\x86" => "C", "\xc4\x99" => "e", "\xc4\x98" => "E", "\xc5\x82" => "l", "\xc5\x81" => "L", "\xc3\xb3" => "o", "\xc3\x93" => "O", "\xc5\x9b" => "s", "\xc5\x9a" => "S", "\xc5\xbc" => "z", "\xc5\xbb" => "Z", "\xc5\xba" => "z", "\xc5\xb9" => "Z", "\xc5\x84" => "n", "\xc5\x83" => "N", //ISO "\xb1" => "a", "\xa1" => "A", "\xe6" => "c", "\xc6" => "C", "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L", "\xf3" => "o", "\xd3" => "O", "\xb6" => "s", "\xa6" => "S", "\xbc" => "z", "\xac" => "Z", "\xbf" => "z", "\xaf" => "Z", "\xf1" => "n", "\xd1" => "N" ); $array_de = array('Ü'); $array_de_pl = array('U'); $val = str_replace($array_de, $array_de_pl, $val); $array_uk = array('А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'ґ', 'Д', 'д', 'Е', 'е', 'Є', 'є', 'Ж', 'ж', 'З' . 'з', 'И', 'и', 'І', 'і', 'Ї', 'ї', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц' - 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ю', 'ю', 'Я', 'я', 'ь'); $array_uk_pl = array('А', 'a', 'B', 'b', 'V', 'v', 'Gg', 'gh', 'Gg', 'D', 'd', 'E', 'e', 'Ye', 'yr', 'Zh', 'zh', 'Z', 'z', 'Y', 'y', 'I', 'i', 'Yi', 'yi', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'F', 'f', 'Kh', 'kh', 'Ts', 'ts', 'Ch', 'ch', 'Sh', 'sh', 'Shch', 'shch', 'Yu', 'yu', 'Ya', 'ya', ''); $val = str_replace($array_uk, $array_uk_pl, $val); return strtr($val, $table); } public function getDateDiff($data1, $data2, $rodz = '60') { $d1_t = explode(' ', $data1); $d1_tt = explode('-', $d1_t[0]); $rok1 = $d1_tt[0]; $mc1 = $d1_tt[1]; $d1 = $d1_tt[2]; $d1_tt = explode(':', $d1_t[1]); $g1 = $d1_tt[0]; $m1 = $d1_tt[1]; $s1 = $d1_tt[2]; $d2_t = explode(' ', $data2); $d2_tt = explode('-', $d2_t[0]); $rok2 = $d2_tt[0]; $mc2 = $d2_tt[1]; $d2 = $d2_tt[2]; $d2_tt = explode(':', $d2_t[1]); $g2 = $d2_tt[0]; $m2 = $d2_tt[1]; $s2 = $d2_tt[2]; $lt = mktime($g2, $m2, $s2, $mc2, $d2, $rok2); $st = mktime($g1, $m1, $s1, $mc1, $d1, $rok1); return round(($lt - $st) / $rodz); } public function parseRSS($xml, $cat_id) { $cnt = count($xml->channel->item); for ($i = 0; $i < $cnt; $i++) { $row['link'] = $xml->channel->item[$i]->link; $row['date'] = $xml->channel->item[$i]->pubDate; $row['title'] = $xml->channel->item[$i]->title; $row['cat_id'] = $cat_id; $links[] = $row; } return $links; } public function synonyms($word) { global $db, $cache, $config; if (!$word) return $word; $key = 'synonyms:' . $word; if (!$synonim = $cache->fetch($key, 'temp_t')) { $query = $db->prepare('SELECT synonim FROM pro_thesaurus WHERE synonim LIKE "%;' . addslashes($word) . ';%" ORDER BY LENGTH(synonim) DESC LIMIT 1'); $query->execute(); if ($query->rowCount()) { while ($row = $query->fetch()) $synonim = $row['synonim']; $synonim = substr($synonim, 1); $synonim = substr($synonim, 0, -1); } else $synonim = $word; $query->closeCursor(); if (strpos($synonim, ';') !== false) $synonim = '{' . str_replace(';', '|', $synonim) . '}'; $cache->store($key, $synonim, $config['cxll'], 'temp_t'); } return $synonim; } public function getHost($page, $www = false) { $page = str_replace('https://', 'http://', $page); preg_match('@^(?:http://)?([^/]+)@i', $page, $matches); if (!$www) $matches[1] = str_replace("www.", "", $matches[1]); return $matches[1]; } public function preparRequest($query) { if (is_array($query) && !empty($query)) { foreach ($query as $key => $value) $query[$key] = urlencode($key) . '=' . urlencode($value); return implode('&', $query); } else return false; } public function getDate() { return date('Y-m-d H:i:s'); } public function getComboYesNo() { global $lang; $tab[0] = 'nie'; $tab[1] = 'tak'; return $tab; } public function getPagingVar($var, $bs, $ls) { if ($var == 'a') { if ($bs == 1) return 6; else if ($bs == 2) return 5; else if ($bs == 3) return 4; else return 3; } else if ($var == 'b') { if ($bs == $ls) return 6; else if ($bs == $ls - 1) return 5; else if ($bs == $ls - 2) return 4; else return 3; } } public static function alert($val) { \S::set_session('alert', $val); } public static function get($var) { if (isset($_POST[$var])) { if (is_string($_POST[$var])) return trim($_POST[$var]); else return $_POST[$var]; } else { if (isset($_GET[$var])) { if (is_string($_GET[$var])) return trim($_GET[$var]); else return $_GET[$var]; } } } public static function set_session($var, $val) { $_SESSION[$var] = $val; } public static function get_session($var) { return $_SESSION[$var]; } }