db = new SQLite3( MYDIR . '/bd/'. DB_NAME ); $this -> conn = new PDO( 'sqlite:' . MYDIR . '/bd/'. BD_NAME ); $sql = 'PRAGMA foreign_keys=on;'; $this -> conn -> query ( $sql ); } } // работа с json function to_j($txt){ return json_encode($txt, JSON_UNESCAPED_UNICODE); } function from_j($txt){ return json_decode($json, true); } // Лог function to_log( $sql ){ if ( $this -> debug == '1' ){ require_once MYDIR . '/api/php/log.php'; $log1 = new save_log; $log1 -> file_name = @MOD; $log1 -> print_log( $sql ); } if ( $this -> debug == '2' ) echo $sql; } function replacer_param_xml ($text) { // ФУНКЦИЯ очистки кода для xml $old1 = array("<", ">", "/");#Ищем вредное ">",, "<" $new1 = array("", "", "");#Меняем на полезное">", , "<" $text = str_replace($old1, $new1, $text);#Собсно сама замена =) $this -> tmp = $text; } function clean ($text) { // ФУНКЦИЯ очистки кода для xml $old1 = array('"', "'");#Ищем вредное ">",, "<" $new1 = array('\"', "\'");#Меняем на полезное">", , "<" $text = str_replace($old1, $new1, $text);#Собсно сама замена =) return $text; } function clear_json ($text) { // ФУНКЦИЯ очистки кода для xml $old1 = array('\"');#Ищем вредное ">",, "<" $new1 = array('"');#Меняем на полезное">", , "<" $text = str_replace($old1, $new1, $text);#Собсно сама замена =) return $text; } /* коннект к бд */ function connect($a, $b, $c, $baza_name) { @mkdir(MYDIR . '/bd/', 0700); //если бд есть то просто подключ. к ней $this->db=new SQLite3( MYDIR . '/bd/'. $baza_name ); $sql="PRAGMA foreign_keys=on;"; $this->db->query($sql); } //Изменение базы function change_db( $baza_name ) { //echo $baza_name; $this -> connection = new PDO('mysql:host=localhost;dbname=' . $baza_name . ';charset=utf8', 'admin', '32143214');//исправить! $this->connection->exec("set names utf8"); } function get_massiv( $table, $where='', $order='', $limit='', $collums='*' ){ $debug = $this -> debug; $or_by_desc = $this -> or_by_desc; /*where - массив колонок и желаемых значений*/ $sql = 'SELECT ' . $collums . ' FROM `' . $table . '`'; if ( $where ){ $sql .= ' WHERE '; foreach ( $where as $key => $value ) @$str.=' `' . $key . '` = "' . $this->clean($value) . '" AND '; /* отрезаем лишнее */ $len = strlen( $str )-4; $sql .= substr( $str, 0, $len ); } /* выясняем сортировку */ if ( $order ) $sql .= ' ORDER BY `' . $order . '` '; if ( $or_by_desc == 1 ) $sql .= ' DESC '; if ( $limit ) $sql .= ' LIMIT ' . $limit; /* если указан дебаг, пишем в лог */ if ( $debug )$this -> to_log( $sql ); $data = $this -> conn -> query( $sql ) -> fetchAll( PDO::FETCH_ASSOC ); $this -> num = count( $data ); $this -> result = $data; return $data; } /* выборка по лайку */ function get_massiv_like( $table, $where='', $order='', $limit='', $collums='*' ){ $debug = $this -> debug; $or_by_decs = $this -> or_by_decs; /*where - массив колонок и желаемых значений*/ $sql='SELECT ' . $collums . ' FROM `' . $table . '`'; if ( $where ){ $sql .= ' WHERE '; foreach ( $where as $key => $value ) @$str .= ' `' . $key . '` LIKE "%' . $value . '%" AND '; /* отрезаем лишнее */ $len = strlen( $str )-4; $sql .= substr( $str, 0, $len ); } /* выясняем сортировку */ if ( $order ) $sql .= ' ORDER BY `' . $order . '` '; if ( $or_by_desc == 1 ) $sql .= ' DESC '; if ( $limit ) $sql .= ' LIMIT ' . $limit; /* если указан дебаг, пишем в лог */ if ( $debug ) $this -> to_log( $sql ); /* наконец то запрашиваем */ $result = mysql_query( $sql ); $this -> num = mysql_numrows( $result ); while ( $postrow[] = mysql_fetch_array($result) );/*Кидаем в переменную*/ $this -> result = $postrow; unset( $postrow ); } function free_sql( $sql ){ if ( $this -> debug ) $this -> to_log( $sql ); /* наконец то запрашиваем */ $data = $this -> conn -> query( $sql ) -> fetchAll( PDO::FETCH_ASSOC ); $this -> num = count( $data ); $this -> result = $data;//когда нибудь убрать return $data; //$result = $this -> conn -> query( $sql ); //if ( $result ) $res = $result -> fetchArray( SQLITE3_ASSOC ); //return $res; } function free_sql2($sql){ if ($this -> debug)$this->to_log($sql); /* наконец то запрашиваем */ $this->db->query($sql); //$this -> connection -> query($sql); } /* простой запрос - одно значение, по одному запросу */ function get_val( $table, $where, $collum ){ $debug = $this -> debug; foreach ( $where as $key => $value ) @$str.=' `' . $key . '` = "' . $value . '" AND '; $len = strlen( $str )-4; $str2 = substr( $str, 0, $len ); $sql = 'SELECT `' . $collum . '` FROM `' . $table . '` WHERE ' . $str2 . ' LIMIT 1'; /* если указан дебаг, пишем в лог */ if ( $debug ) $this -> to_log( $sql ); $result = $this->db->query($sql); $res=$result->fetchArray(SQLITE3_ASSOC); return $res[$collum]; } /* Функция добавления контента */ function add( $tab, $massiv ) { $debug = $this -> debug; foreach ( $massiv as $key => $value ) { if ( $key!='ok' ){ $tabs .= '`' . $key . '`, '; $val .= "'" . $value . "', "; } } $tabs = substr( $tabs, 0, strlen( $tabs ) - 2 ); $val = substr( $val, 0, strlen( $val ) - 2 ); $sql = 'insert into `' . $tab . '` (' . $tabs . ') VALUES (' . $val . ')'; if ( $debug ) $this -> to_log ( $sql ); $this -> conn -> query( $sql ); $this -> id = $this -> conn -> lastInsertId();//когда нибудь убрать return $this -> id; } /* функция обновления таблиц по ИД */ function update($tab, $id, $massiv) { $debug=$this->debug; foreach ($massiv as $key => $value) { if ($key!='ok') @$res.="`" . $key . "` = '" . $this->clean($value) . "', "; } $res=substr($res, 0, strlen($res)-2); $sql='UPDATE `' . $tab . '` SET ' . $res . ' WHERE `id` = "' . $id . '"'; //mysql_query($sql); $this->db->query($sql); //$query = $this->connection->prepare($sql); //$query->execute(); if ($debug)$this->to_log($sql); } /* функция обновления таблиц по ИД в формате XML */ function update_xml( $tab, $id, $massiv, $base64=0 ) { $debug = $this -> debug; if ( $base64 == 1 ){ foreach ( $massiv as $key => $value ) { if ( $key!='ok' ) $res.='<' . $key . '>' . base64_encode( $value ) . ''; } }else{ foreach ( $massiv as $key => $value ) { if ( $key!='ok' ) $res.='<' . $key . '>' . $this -> clean( $value ) . ''; } } $sql = 'UPDATE `' . $tab . '` SET `xml` = "' . $res . '" WHERE `id` = "' . $id . '"'; $query = $this -> connection -> prepare( $sql ); $query -> execute(); if ( $debug ) $this -> to_log( $sql ); } /* Функция добавления контента */ function add_xml($tab, $massiv, $base64) { $debug=$this->debug; if ($base64==1){ foreach ($massiv as $key => $value) { if ($key!='ok') $res.='<' . $key . '>' . base64_encode($value) . '';}} else{ foreach ($massiv as $key => $value) { if ($key!='ok') $res.='<' . $key . '>' . $value . '';} } $sql='insert into `' . $tab . '` (`xml`) VALUES ("' . $res . '")'; //mysql_query($sql); if ($debug)$this->to_log($sql); //$this -> id = mysql_insert_id(); $query = $this->connection->prepare($sql); $query->execute(); $this -> id = $db->lastInsertId(); } /* функция удаления по ИД */ function del_id ( $tab, $id ) { $debug = $this -> debug; $sql='DELETE FROM `' . $tab . '` WHERE `id` = "' . $id . '"'; //mysql_query( $sql ); //$this -> connection -> query($sql); $this->db->query($sql); // $query = $this->connection->prepare($sql); // $query->execute(); if ( $debug ) $this -> to_log ( $sql ); } /*счетчик записей*/ function count_sql($tab, $where) { $debug=$this->debug; /*where - массив колонок и желаемых значений*/ $sql='SELECT COUNT(*) FROM `' . $tab . '`'; if ($where){ $sql.=' WHERE '; foreach ($where as $key => $value) @$str.=' `' . $key . '` = "' . $value . '" AND '; /* отрезаем лишнее */ $len = strlen( $str )-4; $sql .= substr( $str, 0, $len ); } if ($debug)$this->to_log($sql); /* наконец то запрашиваем */ $res=$this->db->query($sql); $row = $res->fetchArray(); // print_r($row); $numRows = $row[0]; return $row[0]; } /* не в тему - но пусть письмо админу будет здесь*/ function send_to_admin($tema, $txt, $email) { include_once MYDIR . '/api/php/sendmail.php'; send_mime_mail( $_SERVER['SERVER_NAME'], 'info@' . $_SERVER['SERVER_NAME'], 'Вы', $email, 'UTF-8', // кодировка, в которой находятся передаваемые строки 'WINDOWS-1251', // кодировка, в которой будет отправлено письмо $tema, $txt); } /* функция получения настроек модуля */ function get_settings($mod){ unset($a); $a['mod'] = $mod; $xml = $this -> get_val( 'settings', $a, 'xml' ); require_once MYDIR . '/api/php/parsexml.php'; $parce = new parsexml; $parce -> make_massiv ( $xml ); $arr = $parce -> res; unset($tmp); foreach ( $arr as $key => $value ) $tmp[$key] = $value; return $tmp; } /* Берем двухмерный массив данных $db = new MySQL; $db->connect('localhost','root','','b-install'); $st['id']=1; - какие колонки с каким значением нужны $db -> debug = 2;// 1- пишет лог, 2 показывает на экране $db -> get_massiv ( 'pages', $st, $order, $limit ); //исполняем функцию с параметрами $massiv = $db->result; //получаем результат */ /* Функция вынимает xml профиля юзера */ function userxml($user_id){ unset($a); $a['user_id']=$user_id; $this->get_val('users_profiles', $a, 'json'); return $this->result; } /* Интернет-магазин */ /* Берем нужные директории категорий */ function get_cat_im($id){ unset($tmp); $tmp['id']=$id; $tmp['public']=1; $tmp['show_mnu']=1; $this->get_massiv('m_groupe', $tmp, 'naim'); return $this->result; } /* Получаем итого заказа */ function zakaz_itog($zakaz_id){ unset($tmp); $tmp['zakaz_id']=$zakaz_id; $tovar = $this -> get_massiv('cart', $tmp); $num = $this -> num; for( $i = 0; $i < $num; $i++ ){ unset($a); $a['id'] = $tovar[$i]['tovar_id']; $cena = $this -> get_val( 'm_tovar', $a, 'akccena' ); if ( $cena < 1 ) $cena = $this -> get_val( 'm_tovar', $a, 'cena' ); $pod_itog[$i] = $cena * $tovar[$i]['col']; unset($cena); } return array_sum($pod_itog); } /* 06.05.2021 проверка прав доступа к нужной записи в нужной таблице */ function check_access( $table, $id, $redirect=0 ){ $dostup = 0; //Все нельзя //модератору и администратору все можно: if ( $_SESSION['dostup']=='a' || $_SESSION['dostup']=='m' ) $dostup = 1; if ( $dostup == 0 ){//Да, условие, чтобы при очевидном не делать лишнего обращения к БД //Берем ИД пользователя из БД и сравниваем с сессией $a['id'] = $id; $user_id = $this -> get_val( $table, $a, 'user_id' ); if ( $user_id == $_SESSION['user_id'] ) $dostup = 1; } if ( $dostup == 0 && $redirect==1) header( 'Location: /403/' ); else return $dostup; } /* получаем сезон и выдергиваем картинку */ function sezon_img(){ if ( date("m")=='12' || date('m')=='01' || date('m')=='02' )$sezon='1'; if ( date("m")=='03' || date('m')=='04' || date('m')=='05' )$sezon='2'; if ( date("m")=='06' || date('m')=='07' || date('m')=='08' )$sezon='3'; if ( date("m")=='09' || date('m')=='10' || date('m')=='11' )$sezon='4'; @mkdir (MYDIR . '/files/template', 0700); @mkdir (MYDIR . '/files/template/sezon', 0700); @mkdir (MYDIR . '/files/template/sezon/1', 0700); @mkdir (MYDIR . '/files/template/sezon/2', 0700); @mkdir (MYDIR . '/files/template/sezon/3', 0700); @mkdir (MYDIR . '/files/template/sezon/4', 0700); $src=MYDIR . '/files/template/sezon/' . $sezon; @include_once(MYDIR . '/api/php/list_file.php'); $fl=list_file($src); //print_r($fl); @$count=count($fl); $rnd=rand(0, $count-1); define( 'SEZON_IMG', '/files/template/sezon/' . $sezon . '/' . $fl[$rnd] ); /* в любое место шаблона поместить поле в файл шаблона JS добавить строку // рандомный сезонный фон var sezon_img=$("#sezon_img").val();$("body").css({ "background-image": "url(" + sezon_img + ")", "background-attachment": "fixed", "background-size": "100%" }); включить в настройках сайта рандомный фон по сезону */ } } ?>