core/api/php/mysql7.php

679 lines
30 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
#namespace anySite\db;
#use anySite\initSite as initSite;
#use \PDO;
class MySQL {
var $debug; //дебажим?
var $id; //возвращает или принимает id
var $num; //возвращает колличество
var $result; //возвращает результат
var $or_by_desc;
var $tmp;
var $connection;
var $conn;//взамен конектион
var $mod_set;
var $settings;
//Конструктор
public function __construct($mod='main'){//тип базы, если SQLITE3 то остальные параметры не важны
switch( BD_TYPE ) {
//Выбираем субд
case 'SQLITE3':
$this -> conn = new PDO( 'sqlite:' . $_SERVER['DOCUMENT_ROOT'] . '/bd/'. BD_NAME . '.db' );
//делаем бэкап
if (!file_exists('bd/' . date("Y.m.d") . '.zip')) exec("zip bd/" . date("Y.m.d") . ".zip bd/" . BD_NAME . ".db 9");
$sql = 'PRAGMA foreign_keys=on;';
$this -> conn -> query ( $sql );
break;
default: //по умолчанию MySQL
$this -> conn = new PDO('mysql:host=' . BD_HOST . ';dbname=' . BD_NAME . ';charset=utf8', BD_USER, BD_PWD);
$this -> conn -> exec("set names utf8");
}
//Получаем настройки сайта
$this->get_settings();
//Получаем текущий модуль
$this->get_mod();
//Проверяем есть ли инсталлятор модуля
if (file_exists(MYDIR . '/api/modules/' . MOD . '/install_' . BD_TYPE . '.php')) require_once MYDIR . '/api/modules/' . MOD . '/install_' . BD_TYPE . '.php';
$this -> mod_set = $this -> get_settings_mod($mod);
}
/* ----------------------------------------------------------------------
06.11.2022
Узнаем текущий модуль
---------------------------------------------------------------------- */
function get_mod(){
//выбор модуля
if ( isset ( $_GET['mod'] ) )
define ( 'MOD', @$_GET['mod'] );
else
define ( 'MOD', $this->settings['default_mod'] );
}
function get_settings($mod='global'){
//Получаем глобальные настройки
$b['mod']=$mod;
$json=$this->get_val('settings', $b, 'json');
//Если ничего нет, создаем настроки по умолчанию
if ( !$json ) $this->free_sql('INSERT INTO `settings` (`id`,`mod`,`json`) VALUES (\'1\',\'global\',\'{"default_mod":"main","default_mod_auth":"main","logo":"","main_page":"1","show_h1":"1","site_name":"Y-CMS","show_news_main_page":"0","show_slider":"0","cat_alias_news":"","news_limit":"10","editor":"","capcha_auth":"","lazyload":"1","show_description_in_cat":"1","cachePage":"1800","email":"","typepage":"2","otzyv":"1","like_page":"1","sezon_img":"1","autoseo":"0","templ":"","h1_page":"1","last_blogs":"","yawebmaster":"","yametrika":"","link_vk":"","link_fb":"","link_instagramm":"","gen_keywords":"","check_https":"1"}\')');
//Расшифровываем json
$this -> settings = $this -> from_j( $json );
}
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 clear_json ($text) { // ФУНКЦИЯ очистки кода для xml
$old1 = array('\"', '["', '"]' , '}","{', '\/');#Ищем вредное ">",, "<"
$new1 = array('"', '[', ']', '},{', '/');#Меняем на полезное"&gt;", , "&lt;"
$text = str_replace($old1, $new1, $text);#Собсно сама замена =)
return $text;
}
function del_str ($text, $str) { // ФУНКЦИЯ очистки кода для xml
$old1 = array($str);#Ищем вредное ">",, "<"
$new1 = array('');#Меняем на полезное"&gt;", , "&lt;"
$text = str_replace($old1, $new1, $text);#Собсно сама замена =)
return $text;
}
function to_j($txt){
return json_encode($txt, JSON_UNESCAPED_UNICODE);
}
function from_j($txt){
return json_decode($txt, true);
}
function replacer_param_xml ($text) { // ФУНКЦИЯ очистки кода для xml
$old1 = array("<", ">", "/");#Ищем вредное ">",, "<"
$new1 = array("", "", "");#Меняем на полезное"&gt;", , "&lt;"
$text = str_replace($old1, $new1, $text);#Собсно сама замена =)
$this -> tmp = $text;
}
function clean ($text) { // ФУНКЦИЯ очистки кода для xml
$old1 = array('"', "'");#Ищем вредное ">",, "<"
$new1 = array('\"', "\'");#Меняем на полезное"&gt;", , "&lt;"
$text = str_replace($old1, $new1, $text);#Собсно сама замена =)
return $text;
}
/* коннект к бд */
function connect($host,$login_mysql,$password_mysql,$baza_name) {
$this -> connection = new PDO('mysql:host=yurecnt.ru;dbname=' . $baza_name . ';charset=utf8', $login_mysql, $password_mysql);
$this -> connection -> exec("set names utf8");
}
//Изменение базы
function change_db( $baza_name ) {
$this -> connection = new PDO('mysql:host=yurecnt.ru;dbname=' . $baza_name . ';charset=utf8', 'admin', '32143214');//исправить!
$this->connection->exec("set names utf8");
}
public 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);
$result = $this -> conn -> query($sql) -> fetchAll( PDO::FETCH_ASSOC );
$this -> num = count($result);
return $result;
}
/* выборка по лайку */
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 -> connection -> query($sql)->fetchAll(PDO::FETCH_ASSOC);
// $this -> num = count($data);
// $this -> result = $data;//когда нибудь убрать
try {
$result = $this -> conn -> query($sql) -> fetchAll( PDO::FETCH_ASSOC );
}catch (Exception $e) {
$this -> to_log( MOD . ': Выброшено исключение: ' . $e->getMessage() );
}
//$row = $result->fetch();
if ($result)$this -> num = count($result);
return $result;
}
function free_sql2($sql){
if ($this -> debug)$this->to_log($sql);
/* наконец то запрашиваем */
if ($this -> conn)//убрать костыль, когда будет переписан этот файл
$this -> conn -> query($sql);
else
$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 -> conn -> query($sql) -> fetchAll( PDO::FETCH_ASSOC );
$res=$result[0];
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 . ')';
//echo $sql;
if ($debug)$this->to_log($sql);
$this -> conn -> query($sql);
//$query = $this->connection->prepare($sql);
//$query->execute();
//$this -> id = ;//когда нибудь убрать
return $this->conn->lastInsertId();
}
/* функция обновления таблиц по ИД */
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 . '"';
$this -> conn -> query($sql);
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 ) . '</' . $key . '>';
}
}else{
foreach ($massiv as $key => $value) {
if ($key!='ok') $res.='<' . $key . '>' . $this->clean($value) . '</' . $key . '>';
}
}
$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) . '</' . $key . '>';}
}else{
foreach ($massiv as $key => $value) { if ($key!='ok') $res.='<' . $key . '>' . $value . '</' . $key . '>';}
}
$sql='insert into `' . $tab . '` (`xml`) VALUES ("' . $res . '")';
if ($debug)$this->to_log($sql);
$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 . '"';
$this -> connection -> query($sql);
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->conn->query($sql);
$this -> result = $res->fetchColumn();//когда нибудь убрать
return $this -> result;
}
/* не в тему - но пусть письмо админу будет здесь*/
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( $mod=MOD ){//получаем настройки модуля из json
unset( $a );
$a['mod'] = $mod;
//проверяем существование записи
$id = $this -> get_val( 'settings', $a, 'id' );
if ( !$id ) $this -> add( 'settings', $a );
$json = $this -> get_val( 'settings', $a, 'json' );
return $this -> from_j( $json );
}
/* функция получения настроек модуля del ?? */
/*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;
}*/
function get_settings_json($mod=MOD){
unset($a);
$a['mod'] = $mod;
$json = $this -> get_val( 'settings', $a, 'json' );
return $this->from_j($json);
}
function update_settings($massiv){
$m = $this -> get_settings_json( MOD );
}
/*
Берем двухмерный массив данных
$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, 'xml');
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 get_user_id(){//Возвращает либо ид юзера либо ид сессии, в зависимости, авторизовался ли узер
if ($_SESSION['user_id'])
return $_SESSION['user_id'];
else
return session_id();
}
/* Экранирование SQLite3 */
function magicSQLite($txt){
$old = array('"', ' руб.');#Ищем вредное ">",, "<"
$new = array('""', '');#Меняем на полезное"&gt;", , "&lt;"
$txt = str_replace($old, $new, $txt);#Собсно сама замена =)
return $txt;
}
function user_browser($agent) {//пишем статистику в базу по браузерам
//узнаем, есть ли запись об этом пользователе в базе данных... если нет, то определяем браузер и пишем...
unset($a);
$a['session_id']=session_id();
$a['type']='browser';
$id=$this->get_val('stat', $a, 'id');
if(!$id){
preg_match("/(MSIE|Opera|Firefox|Chrome|Version|Opera Mini|Netscape|Konqueror|SeaMonkey|Camino|Minefield|Iceweasel|K-Meleon|Maxthon)(?:\/| )([0-9.]+)/", $agent, $browser_info); // регулярное выражение, которое позволяет отпределить 90% браузеров
list(,$browser,$version) = $browser_info; // получаем данные из массива в переменную
if (preg_match("/Opera ([0-9.]+)/i", $agent, $opera)) return 'Opera '.$opera[1]; // определение _очень_старых_ версий Оперы (до 8.50), при желании можно убрать
if ($browser == 'MSIE') { // если браузер определён как IE
preg_match("/(Maxthon|Avant Browser|MyIE2)/i", $agent, $ie); // проверяем, не разработка ли это на основе IE
if ($ie) return $ie[1].' based on IE '.$version; // если да, то возвращаем сообщение об этом
return 'IE '.$version; // иначе просто возвращаем IE и номер версии
}
if ($browser == 'Firefox') { // если браузер определён как Firefox
preg_match("/(Flock|Navigator|Epiphany)\/([0-9.]+)/", $agent, $ff); // проверяем, не разработка ли это на основе Firefox
if ($ff) return $ff[1].' '.$ff[2]; // если да, то выводим номер и версию
}
if ($browser == 'Opera' && $version == '9.80') return 'Opera '.substr($agent,-5); // если браузер определён как Opera 9.80, берём версию Оперы из конца строки
if ($browser == 'Version') return 'Safari '.$version; // определяем Сафари
if (!$browser && strpos($agent, 'Gecko')) return 'Browser based on Gecko'; // для неопознанных браузеров проверяем, если они на движке Gecko, и возращаем сообщение об этом
if ($browser){
$res['browser'] = $browser; // для всех остальных возвращаем браузер и версию
$res['version'] = $version; // для всех остальных возвращаем браузер и версию
$json=$this->to_j($res);
$a['json']=$json;
$a['data']=date('Y-m-d');
$a['t']=time();
$this->add('stat', $a);
}
}
}
/* получаем сезон и выдергиваем картинку */
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);
@$count=count($fl);
$rnd=rand(0, $count-1);
define( 'SEZON_IMG', '/files/template/sezon/' . $sezon . '/' . $fl[$rnd] );
/*
в любое место шаблона поместить поле <input type="hidden" value="{$smarty.const.SEZON_IMG}" id="sezon_img">
в файл шаблона JS добавить строку
// рандомный сезонный фон
var sezon_img=$("#sezon_img").val();$("body").css({ "background-image": "url(" + sezon_img + ")", "background-attachment": "fixed", "background-size": "100%" });
включить в настройках сайта рандомный фон по сезону
*/
}
function resize_img($img, $w=400, $h=400, $zip=100, $square=false, $path){
$big= $_SERVER['DOCUMENT_ROOT'] . '/img/' . $path . '/' . $img . '.jpg';
$small = $_SERVER['DOCUMENT_ROOT'] . '/img/' . $path . '/' . $img . '_' . $w . '_' . $h . '.jpg';
$size = getimagesize ($big);
if ( $size[0] > $size[1] ){//ширина больше высоты
$min=$size[1];
exec('convert ' . $big . ' -resize ' . $w . ' -quality ' . $zip . ' ' . $small);
}else{//высота больше ширины
exec('convert ' . $big . ' -resize x' . $h . ' -quality ' . $zip . ' ' . $small);
$min=$size[0];
}
$size2 = getimagesize ($small);
if ( $size2[0] > $size2[1] ){//ширина больше высоты
$min=$size2[1];
}else{
$min=$size2[0];
}
if ($square==true){
$small_s = $_SERVER['DOCUMENT_ROOT'] . '/img/' . $path . '/' . $img . '_' . $w . '_' . $h . '_s.jpg';
exec('convert ' . $small . ' -gravity Center -crop ' . $min . 'x' . $min . '+0 ' . $small_s);
}
}
function generate_password($number){
$arr = array('a','b','c','d','e','f', 'g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','x','y','z','1','2','3','4','5','6','7','8','9','0');
$pass = "";
for($i = 0; $i < $number; $i++){
$index = rand(0, count($arr) - 1);
$pass .= $arr[$index];
}
return $pass;
}
function upload_img($file, $path, $name_file){
if ( preg_match( '/[.](jpg)|(jpeg)|(JPG)|(JPEG)$/', $file[$name_file]['name'] ) ){
@mkdir( $_SERVER['DOCUMENT_ROOT'] . '/img/' . $path, 0700 );
$img_name = $this -> generate_password( 20 );
$source = $file[$name_file]['tmp_name'];
$target = $_SERVER['DOCUMENT_ROOT'] . '/img/' . $path . '/' . $img_name . '.jpg';
copy( $source, $target );
}
return $img_name;
}
//берем МАССИВ значений по типу с нужным паррентом из таблицы pages 14.03.2022
function get_massiv_from_pages( $parent=0, $tip ){
if ( $parent=='' ) $parent = 0;
unset($a);
$a['parent'] = $parent;
$a['tip'] = $tip;
//print_r($a);
$list = $this -> get_massiv ( 'pages', $a, 'txt' );
//print_r( $list );
$num = count( $list );
for( $i = 0; $i < $num; $i++ ){
if ( $list[$i]['id'] ){
unset( $b );
$tmp = $this -> from_j( $this -> clear_json( $list[$i]['json'] ) ); //строку в джейсона в массив
$this -> to_log ( $this -> clear_json( $list[$i]['json'] ) );
foreach ( $tmp as $key => $value ) $list[$i][$key] = $value;
unset( $tmp );
}
}
return $list;
}
//Берем контент по ИД
function get_content_from_pages($id){
unset($a);
$a['id'] = $id;
$list = $this -> get_massiv ( 'pages', $a, 'id', 1 );
//print_r( $list );
$num = count( $list );
for( $i = 0; $i < $num; $i++ ){
if ( $list[$i]['id'] ){
unset( $b );
$tmp = $this -> from_j( $this -> clear_json( $list[$i]['json'] ) ); //строку в джейсона в массив
$this -> to_log ( $this -> clear_json( $list[$i]['json'] ) );
foreach ( $tmp as $key => $value ) $list[$i][$key] = $value;
unset( $tmp );
}
}
return $list;
}
/*
21.05.2022
Берем настройки модуля
Читает JSON из таблицы settings нужного модуля и возвращает массив
Используется в модулях: main
*/
function get_mod_settings(){
$a['mod'] = ( MOD == '' ) ? "main" : MOD;
//if (MOD)$a['mod']=MOD;else $a['mod']='main';
$json = $this -> get_val( 'settings', $a, 'json' );
$res=$this->from_j($json);
return $res;
}
/* ----------------------------------------------------------------------
11.06.2022
Подсчет итога в корзине
---------------------------------------------------------------------- */
function get_itog(){
$a['user_id'] = ( $_SESSION['user_id'] ) ? $_SESSION['user_id'] : session_id();
$massiv=$this->get_massiv('cart', $a);
$count=count($massiv);
$itog=0;
for ( $i=0; $i < $count; $i++ ){
unset($a);
$a['id']=$massiv[$i]['pages_id'];
$cena = $this -> get_val( 'pages', $a, 'cena' );
$itog = $itog + ( $cena * $massiv[$i]['kolvo'] );
}
return $itog;
}
/* ----------------------------------------------------------------------
17.09.2022
Чиним сломанный json
---------------------------------------------------------------------- */
function json_fix($txt){
//Ищем служебные данные json и прячем
$old1 = array('{"', '":"', '"}');#Ищем вредное ">",, "<"
$new1 = array("{'", "':'", "'}");#Меняем на полезное"&gt;", , "&lt;"
$txt = str_replace($old1, $new1, $txt);#Собсно сама замена =)
//Ищем ковычки в значениях и меняем на код ковычек
$old1 = array('\"', '"');#Ищем вредное ">",, "<"
$new1 = array('&quot;', '&quot;');#Меняем на полезное"&gt;", , "&lt;"
$txt = str_replace($old1, $new1, $txt);
//Ищем служебные данные json и возвращаем
$old1 = array("{'", "':'", "'}");#Ищем вредное ">",, "<"
$new1 = array('{"', '":"', '"}');#Меняем на полезное"&gt;", , "&lt;"
$txt = str_replace($old1, $new1, $txt);#Собсно сама замена =)
return $txt;
}
/* ----------------------------------------------------------------------
17.09.2022
Костыль подготовки данных для json
---------------------------------------------------------------------- */
function json_prepare($txt){
$old1 = array('"', "'");#Ищем вредное ">",, "<"
$new1 = array('&quot;', "''");#Меняем на полезное"&gt;", , "&lt;"
$txt = str_replace($old1, $new1, $txt);
return $txt;
}
}
?>