'."\n"; } return ''; } //Функция для перевода текста без применения GetText "trt(" function trt($text) { global $db,$Schema; $result=''; $sql='select translation from '.$Schema.'_translations where del=false and language_id='.$_SESSION["LNG"].' and identifier=\''.$text.'\';'; //$sql='select translation from main._translations where del=false and language_id=(select id from main._languages where short_name=\''.$_SESSION["LNG"].'\') and identifier=\''.$text.'\';'; $res = NULL; try { $res = $db->query($sql); }catch (Exception $e) { echo $e->getMessage(); } if($res!=NULL && $res->rowCount()>0) { while ($row = $res->fetch(PDO::FETCH_NUM)) { $result=$row[0]; } }else { $result=str_replace("_", " ", $text); } return $result; } //Перевод для строки в которой встречаются подстроки вида: trt('') function trts($text) { $result=''; $pLen=4; //Длина преамбулы trt( $cut=0; $from = 0; // Позиция поиска для итерации while (true) { $pos1 = strpos($text, 'trt(', $from); if($pos1 !== false) { $from = $pos1+$pLen+1; $pos2 = false; if($text[$pos1+$pLen] == '"') $pos2 = strpos($text, '")', $from); if($text[$pos1+$pLen] == '\'') $pos2 = strpos($text, '\')', $from); if($pos2 !== false) { $result.=substr($text, $cut, $pos1 - $cut ); $toTranslate=substr($text, $pos1+$pLen+1, $pos2 - $pos1 - $pLen-1 ); $result.=trt($toTranslate); $cut=$pos2+2; $from = $pos2; } }else break; } $result.=substr($text, $cut); //Копируем остатки return $result; } //Выбираю из текста ${конкретные} слова для перевода function trs($text) { $pos1=0; while(true) { $pos1 = strpos($text, '${',$pos1); if($pos1 !== false) { $pos2 = strpos($text, '}', $pos1); if($pos1 !== false) { $sub=substr($text,$pos1+2,$pos2-$pos1-2); $text=substr($text,0, $pos1).trt($sub).substr($text,$pos2+1); }else { break; } }else { break; } } return $text; } //Получить разрешения для текущего пользователя function getAccess($key) { global $db; $result=false; if(isset($_SESSION['USER_ID'])) $sql="select main.p_getaccess(".$_SESSION['USER_ID'].",'".$key."') as acc;"; else $sql="select main.p_getaccess(0,'".$key."') as acc;"; try { $res = $db->query($sql); }catch (Exception $e) { echo $e->getMessage(); } if($res!=NULL && $res->rowCount()>0) { while ($row = $res->fetch(PDO::FETCH_NUM)) { $result=$row[0]; } } return $result; } function delPHPExt($fName) { $pos = strrpos($fName, '.')+1; if(strtolower(substr($fName,$pos))=='php') { return substr($fName,0,$pos).'VIRUS'; }else { return $fName; } } function getURLText($url,$data) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, trim($url)); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); curl_setopt($ch, CURLOPT_HEADER,0); //Change this to a 1 to return headers curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $data = trim(curl_exec($ch)); curl_close($ch); return $data; } // array imageResize (string $src, string $dest, integer $width, integer $height); // $src - имя исходного файла // $dest - имя генерируемого файла // $width, $height - максимальные ширина и высота генерируемого изображения // возвращает массив (0=>$width, 1=>$height) с шириной и высотой получившегося изображения function imageResize ($src, $dest, $width, $height) { if (!file_exists($src)) return false; if (($size=getimagesize($src))===false) return false; $format=strtolower(substr($size['mime'],strpos($size['mime'],'/')+1)); $icfunc='imagecreatefrom'.$format; if (!function_exists($icfunc)) return false; $x_ratio=$width/$size[0]; $y_ratio=$height/$size[1]; $ratio=min($x_ratio, $y_ratio); $use_x_ratio=($x_ratio==$ratio); $new_width=$use_x_ratio?$width:floor($size[0]*$ratio); $new_height=!$use_x_ratio?$height:floor($size[1]*$ratio); $new_left=$use_x_ratio?0:floor(($width-$new_width)/2); $new_top=!$use_x_ratio?0:floor(($height-$new_height)/2); $isrc=$icfunc($src); $idest=imagecreatetruecolor($new_width, $new_height); imagecopyresampled($idest, $isrc, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]); //Пишем в файл if ($format=='jpeg') imagejpeg($idest, $dest, 70); else if ($format=='gif') imagegif($idest, $dest); else imagepng($idest, $dest, 7); imagedestroy($isrc); imagedestroy($idest); return array($new_width, $new_height); } //Водяной знак (размножит по поверхности одного изображения другое) function watermark($src,$stm) { if (!file_exists($src) || !file_exists($stm)) return false; if (($size=getimagesize($src))===false) return false; $format=strtolower(substr($size['mime'],strpos($size['mime'],'/')+1)); // создание водяного знака в формате png $watermark = imagecreatefrompng($stm); // получаем ширину и высоту $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); // создание jpg изображения if ($format=='jpeg') { if(!$image = imagecreatefromjpeg($src)) { error_log('Error imagecreatefromjpeg '.$_SERVER['REQUEST_URI']); } }else if ($format=='gif') $image = imagecreatefromgif($src); else $image = imagecreatefrompng($src); //Выясняем количество повторов по оси X и по Y $dx=ceil($size[0] / $watermark_width); $dy=ceil($size[1] / $watermark_height); imagealphablending($image, true); imagealphablending($watermark, true); // создаём новое изображение for($y=0;$y<$dy;$y++) for($x=0;$x<$dx;$x++) imagecopy($image, $watermark, $x * $watermark_width, $y * $watermark_height, 0, 0, $watermark_width, $watermark_height); //Пишем в файл if ($format=='jpeg') imagejpeg($image,$src); else if ($format=='gif') imagegif($image,$src); else imagepng($image,$src); // освобождаем память imagedestroy($image); imagedestroy($watermark); } //вернёт только цифры function getInt($str) { $res=''; for($i=0;$i24*60*60) unlink($dir.$file); } closedir($dh); } } } //Генерация пароля function getPassword($max) { $chars="qazxswedcvfrtgbnhyujmkiolp1234567890"; $size=StrLen($chars)-1; $password=''; while($max--) $password.=$chars[rand(0,$size)]; return $password; } //Полный путь к текущему URL включая http и название скрипта function selfURL() { if(!isset($_SERVER['REQUEST_URI'])){ $suri = $_SERVER['PHP_SELF']; } else { $suri = $_SERVER['REQUEST_URI']; } $s = empty($_SERVER["HTTPS"]) ? '' : (($_SERVER["HTTPS"] == "on") ? "s" : ""); $sp=strtolower($_SERVER["SERVER_PROTOCOL"]); $pr = substr($sp,0,strpos($sp,"/")).$s; $pt = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); return $pr."://".$_SERVER['SERVER_NAME'].$pt.$suri; } //Путь без файла пример: http://truemisha.ru function selfDomain() { //if(!isset($_SERVER['REQUEST_URI'])) $suri = $_SERVER['PHP_SELF']; //else $suri = $_SERVER['REQUEST_URI']; $s = empty($_SERVER["HTTPS"]) ? '' : (($_SERVER["HTTPS"] == "on") ? "s" : ""); $sp=strtolower($_SERVER["SERVER_PROTOCOL"]); $pr = substr($sp,0,strpos($sp,"/")).$s; $pt = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); return $pr."://".$_SERVER['SERVER_NAME'].$pt;//.$suri; } //Строка до последнего найденого символа если символа нет то всю строку function beforeLast(&$str,$ch) { return substr($str, 0, strrpos($str, $ch)); } //Строка после последнего найденого символа если символа нет то всю строку function afterLast(&$str,$ch) { return substr($str, strrpos($str, $ch)+strlen($ch)); } //Строка до первого попавшегося символа function beforeFirst(&$str,$ch) { return substr($str, 0, strpos($str, $ch)); } //Строка после первого попавшегося символа function afterFirst(&$str,$ch) { return substr($str, strpos($str, $ch)+strlen($ch)); } // Вернёт подстроку если символа нет то всю строку // @param string $str // @param string $chr function cutStr(&$str,$chr) { $pos = strpos($str, $chr); if($pos===false) { return $str; }else { $buf = substr($str, 0, $pos); $str = substr($str, $pos + strlen($chr)); return $buf; } } //Вырезаеи всё после заданого разделителя удаляя разделитель если разделителя нет возвращает всю строку //$fstr - Разделитель //$num - На каком разделителе остановиться function cutAfterLast(&$sstr,$fstr,$num = 1) { $sub=''; $pos=strlen($sstr); for($i=0;$i<$num;$i++) { $pos = strripos($sstr, $fstr, $pos-strlen($sstr)-1); if($pos === false) { break; } } if($pos === false) { $sub=$sstr; $sstr=''; return $sub; }else { $sub = substr( $sstr , $pos + strlen($fstr)); $sstr = substr( $sstr , 0, $pos); return $sub; } } //Зачем коментил? //Отрезаем от строки всё до заданой подстроки если подстроки нет отрезается вся строка function cutBeforeFirst(&$sstr,$fstr) { $sub=''; $pos = strpos($sstr, $fstr); if($pos === false) { $sub=$sstr; $sstr=''; return $sub; }else { $sub = substr( $sstr , 0, $pos); $sstr = substr( $sstr , $pos + strlen($fstr)); return $sub; } }