diff --git a/k2shop/k2shop/app/another/captcha.php b/k2shop/k2shop/app/another/captcha.php new file mode 100644 index 0000000..2cc240b --- /dev/null +++ b/k2shop/k2shop/app/another/captcha.php @@ -0,0 +1,394 @@ +")!==false) + { + if ($is_verbose) echo "server returned error: $result\n"; + return false; + } + else + { + $ex = explode("|", $result); + $captcha_id = $ex[1]; + if ($is_verbose) echo "captcha sent, got captcha ID $captcha_id\n"; + $waittime = 0; + if ($is_verbose) echo "waiting for $rtimeout seconds\n"; + sleep($rtimeout); + while(true) + { + $result = file_get_contents('http://rucaptcha.com/res.php?key='.$apikey.'&action=get&id='.$captcha_id); + if (strpos($result, 'ERROR')!==false) + { + if ($is_verbose) echo "server returned error: $result\n"; + return false; + } + if ($result=="CAPCHA_NOT_READY") + { + if ($is_verbose) echo "captcha is not ready yet\n"; + $waittime += $rtimeout; + if ($waittime>$mtimeout) + { + if ($is_verbose) echo "timelimit ($mtimeout) hit\n"; + break; + } + if ($is_verbose) echo "waiting for $rtimeout seconds\n"; + sleep($rtimeout); + } + else + { + $ex = explode('|', $result); + if (trim($ex[0])=='OK') return trim($ex[1]); + } + } + + return false; + } + } + + + + + + + // Загружает фотографию и передает информацию о ней + function get_file(){ + + global $k2; + + $rez=''; + + if (!((trim($k2->post('user'))=='fastunlock')and(trim($k2->post('password'))=='fast2015'))) + { + die('error user!'); + } + + + if (isset($_FILES)){ + if (file_exists($_FILES['filesend']['tmp_name'])){ + echo 'Found File: '.$_FILES['filesend']['tmp_name']."\n"; + }else{ + echo 'NOT FOUND file: '.$_FILES['filesend']['tmp_name']."\n"; + } + } + + + // проверяем isset файла из отправленной формы данных + if (isset($_FILES['filesend']['name'])) + { + + + //проверка расширения файла + $file_name = $_FILES['filesend']['name']; + $filetype = substr($file_name, strlen($file_name) - 3); + + + if ($filetype == "jpg" or + $filetype == "jpeg" or + $filetype == "gif" or + $filetype == "bmp" or + $filetype == "png") + { + + + // файл не должен быть пустым, + // или его размер должен быть <= 800 Кбайт + if($_FILES['filesend']['size'] != 0 + /*AND $_FILES['filesend']['size']<=819200*/ ) + { + + + //проверяем функцией is_uploaded_file + if(is_uploaded_file($_FILES['filesend']['tmp_name'])) + { + + + $dir=$k2->rootdir."/tmp/".$this->tmpimg; + + + @mkdir($dir, 0775); + $url=$dir.$GLOBALS['k2sys']->getGUID().'.'.$filetype; + + // проверяется перемещение файла + // в файловую систему хостинга + if (move_uploaded_file($_FILES['filesend']['tmp_name'], $url)) + { + // подсказываем + echo 'Файл '.basename($_FILES['filesend']['name']). + ' был успешно загружен в '.$url."\n"; + + $rez=$url; + } + } + } + } + } + + + return $rez; + + } + + + // Извлечение последней строки + // Последняя строка - это результат декодирования капчи + function getLastRow($strinp){ + $rez=''; + $arr=explode("\n", $strinp); + $cnt=count($arr); + + if ($cnt>0){ + $rez=$arr[$cnt-1]; + } + + return trim($rez); + } + + + // Поиск капчи в базе данных. + // Если не находит - выводит пустоту. + function searchCapcha($hashid){ + + global $k2; + + $sql = "SELECT k.hashid, k.decode_capcha FROM k2anticapcha k WHERE k.hashid='$hashid';"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['decode_capcha']; + } + + return $res; + + } + + + // Вставляет капчу в базу данных + // $hashid - хеш изображения капчи в формате md5 + // $decode_capcha - декодированное значение капчи + function insCapcha($hashid, $decode_capcha){ + + global $k2; + + $hashid=trim($hashid); + $decode_capcha=trim($decode_capcha); + + $sql = "INSERT INTO k2anticapcha (hashid, decode_capcha) + VALUES ('$hashid', '$decode_capcha')"; + + $k2->db->exec($sql); + } + + + + function show(){ + + $acapcha=''; + + $this->imagefile=$this->get_file(); + + if (file_exists($this->imagefile)) { + + // Получаем хеш файла + $hash=hash_file('md5', $this->imagefile); + + echo "hash=$hash\n"; + + // Ищем капчу в базе данных + $decode_capcha=$this->searchCapcha($hash); + + if (trim($decode_capcha)==''){ + +/* $acapcha="connecting rucaptcha.com...OK + sending request 3506 bytes...OK + getting response...OK + captcha sent, got captcha ID 153511525 + waiting for 5 seconds + captcha is not ready yet + waiting for 5 seconds + captcha is not ready yet + waiting for 5 seconds + grayed";*/ + + $acapcha=$this->recognize($this->imagefile,$this->apikey,true, "rucaptcha.com"); + + $decode_capcha=$this->getLastRow($acapcha); + + $this->insCapcha($hash, $decode_capcha); + + } + + // Заглушка на время тестирования + echo "$acapcha\ncaptcha=$decode_capcha\n"; + + }else{ + echo 'FILE NOT FOUND: '.$this->imagefile."\n"; + } + + echo "Anticapcha End..."; + + } + + } + + +// $ant = new k2_anticaptcha(); +// $ant->show(); + + +?> \ No newline at end of file diff --git a/k2shop/k2shop/app/another/k2proxies.php b/k2shop/k2shop/app/another/k2proxies.php new file mode 100644 index 0000000..ae44b71 --- /dev/null +++ b/k2shop/k2shop/app/another/k2proxies.php @@ -0,0 +1,156 @@ + 'http://corp2.kiev.ua/testproxy.php', + 'value' => 'ProxyGood'); + + public $proxy_list=array(); // Formation of the proxy server list (Формирование списка прокси-серверов) + + public $proxy_src=array( // The sources of the lists of proxies (Источники списков прокси-серверов) + array('url' => 'http://www.prime-speed.ru/proxy/free-proxy-list/all-working-proxies.php', // URL where does the list (URL откуда берется список) + 'tag'=>array('from'=>'
','to'=>'
'), // Tags, between which there is content (Теги, между которыми находится контент) + 'clear_strings' => array( '0.0.0.0:80', 'format:', '<proxy_server_name> : <proxy_port_number>' ) // The words that are removed (Слова, которые убираются) + ) + ); + + + public $wget; + + + + // Obtaining a proxy server list (Получение списка прокси-серверов) + // format: + // : + function getProxy($proxyurl, $proxy){ + + global $k2; + + $html = file_get_contents($proxyurl); + + // Select the area with the proxy server address (Выделяем область с адресами прокси-серверов) + $proxtmp=$k2->parser->getTagValue('
', '
', $html, true); + + + // Remove unnecessary tags (Удаляем лишние теги) + foreach ($proxy['clear_strings'] as $value) { + $proxtmp=str_replace(trim($value), '', $proxtmp); + } + + // Remove the extra spaces (Удаляем лишние пробелы) + $proxtmp=trim($proxtmp); + + + $this->proxy_list=array(); + + // Retrieve each row (Извлекаем каждую строку) + $arr=explode("\n", $proxtmp); + foreach ($arr as $row) { + list($ip, $port)=explode(":", $row); + array_push($this->proxy_list, array('ip'=>$ip, 'port'=>$port, 'checked'=>false)); + } + + + return $this->proxy_list; + + } + + + // Receiving proxy list from internet (Получение списка прокси-серверов из интернет) + function get_proxy_inet(){ + + foreach ($this->proxy_src as $proxy) { + echo $proxy['url']."\n"; + $this->getProxy($proxy['url'], $proxy); + } + + echo "CheckProxyList\n"; + + // Testing proxy (Тестирование прокси) + $this->check_proxy_list(); + } + + // Writing the proxy server list in the database (Запись списка прокси-серверов в базу данных) + function save_proxy_db(){ + + } + + // Load the list of proxies from the database (Загрузка списка прокси-серверов из базы) + function load_proxy_db(){ + + } + + // Initialization wget (Инициализация wget) + function wgetini(){ + + global $k2; + + if (!isset($this->wget)){ + $this->wget=$k2->ins_comp('k2wget'); + } + + } + + // Check proxy server list (Проверка списка прокси-серверов) + function check_proxy_list(){ + $this->wgetini(); + + foreach ($this->proxy_list as $value) { + $proxy=$value['ip'].':'.$value['port']; + + echo "$proxy: "; + + $this->check_proxy($proxy); + + } + + } + + // Check the operation of the proxy server (Проверка работы прокси-сервера) + // $proxy - verifiable proxy address (адрес проверяемого прокси) + function check_proxy($proxy){ + $this->wgetini(); + + ob_start(); + + try{ + $rez=$this->wget->wget($this->test_proxy['url'], $proxy); + }catch(Exception $e) { + $this->test_proxy['checked']=false; + } + + ob_end_clean(); + + echo "Test Proxy: $proxy. Result: ".$rez."\n"; + + if ($rez=='ProxyGood'){ + $this->test_proxy['checked']=true; + }else{ + $this->test_proxy['checked']=false; + } + + + } + + // Returns a random proxy server (Возвращет случайный прокси-сервер) + function getRndProxy(){ + } + + + function content(){ + $rez=''; + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/another/k2wget.php b/k2shop/k2shop/app/another/k2wget.php new file mode 100644 index 0000000..69df062 --- /dev/null +++ b/k2shop/k2shop/app/another/k2wget.php @@ -0,0 +1,87 @@ +wget(); + function wget($url, $proxy=''){ + + $ctext_param = array( + 'http' => array( + 'proxy' => $proxy, + 'request_fulluri' => True, + 'timeout' => $this->timeout + ), + ); + + $hd_ctext = stream_context_create($ctext_param); + + + ob_start(); + + try{ + $html = file_get_contents($url, False, $hd_ctext); + }catch(Exception $e) { + } + + ob_end_clean(); + + return $html; + + } + + + // Getting the content through a proxy (Получение контента через прокси) + // Getting content using CURL (Получение контента с использованием CURL) + // Example of use (Пример использования): + // $proxy = '185.25.117.158:3128'; + // $content = $this->get_proxy('http://corp2.net',$proxy); + // echo $content; + function get_proxy($url, $proxy='') { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout); + curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208'); + + + if ($proxy==''){ + curl_setopt($ch, CURLOPT_PROXY, "$proxy"); + } + + $ss=curl_exec($ch); + curl_close($ch); + return $ss; + } + + + // Returns the content without the admin part (Возвращает контент без админ-части) + function getContent($isshow=false){ + + } + + + // Returns content (Возвращает контент) + function content(){ + // We get content through CURL (Получаем контент через CURL) + $content = $this->get_proxy('http://2ip.ru','104.28.8.140:80'); + echo $content; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/cmd/auktion_progress.php b/k2shop/k2shop/app/cmd/auktion_progress.php new file mode 100644 index 0000000..772aa56 --- /dev/null +++ b/k2shop/k2shop/app/cmd/auktion_progress.php @@ -0,0 +1,274 @@ +check_connect(); + $k2->inc('k2mag','secur'); + } + + /** + * визначення кількості годин, що пройшло + * @param type $datecreate + * @return type + */ + function getProgrTime($datecreate) + { + $currentTime = time(); // теперішній часв мс + $datecreate = strtotime($datecreate)+600; //час створення в мс + 10 хвилин + + //$datecreate1 = date("Y-m-d H:i:s", $datecreate); + //$currentTime1 = date("Y-m-d H:i:s", $currentTime); + + $ms_passed = $currentTime - $datecreate; //пройшло мс + + //$ms_passed1 = date("H:i:s", $ms_passed); + + $weekday_create = date("w", $datecreate); + + $weekday_now = date("w", $currentTime); + + $night = 12*3600; + + $kolhours = $ms_passed/3600; + + if ($kolhours < 12) { + $numnight = 0; + } else { + $numnight = ceil(($ms_passed/3600)/24); // кількість ночей + } + + $hour = date("H", $currentTime); + $week = 24 * 3600; + + //если выпадает на ночь + if ($hour >= 20 || $hour <= 8 || $numnight>=1){ + $nights = $night*$numnight; //ночі в мс + + $aukdateMs = $ms_passed - $nights; + + //$aukdateMs2 = $aukdateMs/3600; + + //если пятница + if ($weekday_create > $weekday_now) { + $aukdateMs = $aukdateMs - $week; + } + + //$aukdateMs2 = $aukdateMs/3600; + + if ($hour >= 20 || $hour <= 8 ){ + $aukdateMs = $aukdateMs - $night; + } + + } else { + $aukdateMs = $ms_passed; + } + + + + //пройшло робочих годин + + if (($currentTime - $datecreate)<0) { + $time_passed = 0; + } else { + $time_passed = $aukdateMs; + } + + + + + return $time_passed; + + } + + /** + * вираховування прогрессу аукціону + * @global type $k2 + * @global type $mag + * @return string + */ + function setProgress ($i='') + { + global $k2, $mag; + + $mess = 'Початок Оновлення прогресу аукціонів. Дата: '.date("Y-m-d H:i"); + + $rez = ['rez'=>'', 'err'=>'']; + $r = $k2->sql->sel("SELECT datecreate, aukid, current_progress, trans_status, dateupdate, current_round, num_wait, datewait + FROM k2auktion + WHERE active=:active AND close=:close AND (trans_status=:trans_status OR trans_status=:wait_status) ", + ['active'=>1, 'close'=>0, 'trans_status'=>0, 'wait_status'=>2,] + ); + + + $rez['rez'] = $r['data']; + + foreach ($rez['rez'] as $value) { + + if ($value['trans_status'] == 2) { + + $ms_passed = $mag->getProgrTime("".$value['datewait'].""); + echo $ms_passed."\n"; + $mins_passed = $ms_passed/60; + echo $value['datewait']."\n"; + $num_wait = ceil($mins_passed/$this->wait_min); + + echo 'wait '.$mins_passed.'---раунд очікування '.$num_wait."\n"; + if ($num_wait <= $this->wait_rounds) { + if ($num_wait > $value['num_wait']) { + echo 'ok-wait'; + $rez = $mag->waitStatus($value['aukid'], $value['current_round'] - 1, $num_wait); + } + } else { + echo 'not-wait'; + $rez = $mag->changeStatus($value['aukid'], $value['current_round'], 0); + $k2->log->mess('Аукціон №'.$value['aukid'].' завершено без пропозицій', false); + } + + } else { + + + $hours_passed = $this->getProgrTime($value['datecreate'])/3600; + + if ($hours_passed > 0){ + + $step_time = $mag->step_time/60; + + + //номер раунду аукціону + $num_round = ceil($hours_passed/$step_time); + + //прогрес у поточному раунді + $cur_round_prg = round(($hours_passed/$step_time - $num_round + 1)*100); + + echo 'Аукцион '.$value['aukid'].'; раунд пропозицій №'.$num_round.'; погресс '.$cur_round_prg."\n"; + + $is_stavka = $mag->isRoundStavka($value['aukid'], $num_round); + + if($cur_round_prg < $value['current_progress']){ + + $is_stavka = $mag->isRoundStavka($value['aukid'], $num_round-1); + + if ($value['trans_status'] == 0) { + $err = $k2->sql->upd( + "UPDATE k2auktion + SET + current_progress=:current_progress + WHERE aukid =:aukid", + [ + 'current_progress'=>$cur_round_prg, + 'aukid' => $value['aukid'] + ] + ); + } + + //echo 'Аукціон №'.$value['aukid'].', завершено раунд:'.$num_round.', прогресс: '.$cur_round_prg.'%, кількість ставок: '.$is_stavka.' '; + if (trim($err['err'])<>''){ + $rez = 'Помилка оновлення прогресу аукціону. '.$err['err']; + $k2->log->err($err['err'], false); + return $rez; + } + + if ($is_stavka == 0) { + + //если прошел только 1 раунд то закрываем + if (($num_round - 1) == 1) { + $rez = $mag->changeStatus($value['aukid'], $num_round - 1, 0); + $k2->log->mess('Аукціон №'.$value['aukid'].' завершено без пропозицій', false); + } else { + echo 'wait21 '.$num_round."\n"; + $rez = $mag->waitStatus($value['aukid'], $num_round - 2, 1); + echo 'wait22 '.$num_round."\n"; + //$k2->log->mess('Аукціон №'.$value['aukid'].' завершено без пропозицій', false); + } + + } elseif ($is_stavka == 1) { + $rez = $mag->changeStatus($value['aukid'], $num_round - 1, 1); + $k2->log->mess('Аукціон №'.$value['aukid'].' завершено успішно', false); + } else { + $rez = $mag->calculateNextPrice($value['aukid']); + $k2->log->mess('Аукціон №'.$value['aukid'].' переведено на наступне коло', false); + } + + + } else { + $err = $k2->sql->upd( + "UPDATE k2auktion + SET + current_round=:current_round, + current_progress=:current_progress + WHERE aukid =:aukid", + [ + 'current_round'=>$num_round, + 'current_progress'=>$cur_round_prg, + 'aukid' => $value['aukid'] + ] + ); + + if (trim($err['err'])<>''){ + $rez = 'Помилка оновлення прогресу аукціону. '.$err['err']; + $k2->log->err($err['err'], false); + return $rez; + } + } + } + } + //echo 'Аукціон №'.$value['aukid'].', раунд:'.$num_round.', прогресс: '.$cur_round_prg.'%, кількість ставок: '.$is_stavka.' '; + //echo "\n"; + } + + $mess .= $i.'Кінець Оновлення прогресу аукціонів. Дата: '.date("Y-m-d H:i"); + + $rez .= $mess."\n"; + $k2->log->logcmd($mess, false); + return $rez; + } + + + function content(){ + $rez = ''; + + + $i = true; + while($i){ + sleep(3); + $hour = date("G"); + if ($hour >= $this->start_hour && $hour < $this->end_hour){ + $rez = $this->setProgress($i); + + } else { + $i = true; + } + $currentTime = date("Y-m-d H:i:s"); + echo $currentTime."\n"; + } + + return $rez; + + } + + +} + diff --git a/k2shop/k2shop/app/cmd/auto_bill.php b/k2shop/k2shop/app/cmd/auto_bill.php new file mode 100644 index 0000000..e3db81a --- /dev/null +++ b/k2shop/k2shop/app/cmd/auto_bill.php @@ -0,0 +1,34 @@ +check_connect(); + } + + function content(){ + $rez=''; + + echo 'Автоматическое выставление счетов'; + + return $rez; + } + + +} + diff --git a/k2shop/k2shop/app/cmd/check_shopscript.php b/k2shop/k2shop/app/cmd/check_shopscript.php new file mode 100644 index 0000000..31afdd0 --- /dev/null +++ b/k2shop/k2shop/app/cmd/check_shopscript.php @@ -0,0 +1,216 @@ +check_connect(); + } + + + // Расчитывает количество товаров в подкатегориях + function count_prod_subcat($catid){ + + global $k2; + + + $sql = "SELECT sum(count) as cnt + FROM shop_category s + WHERE s.parent_id=$catid"; + + $rez=0; + foreach ($k2->db->query($sql) as $row) { + $rez=$row['cnt']; + } + + return $rez; + } + + + + // Расчитывает количество продуктов в категори + function count_prod_cat($catid){ + + global $k2; + + $sql = "SELECT count(*) as cnt + FROM shop_category_products s + WHERE s.category_id=$catid"; + + $rez=0; + foreach ($k2->db->query($sql) as $row) { + $rez=$row['cnt']; + } + + return $rez; + } + + // Обновляет количество товаров в категориях + function update_count_cat($catid, $count){ + + global $k2; + + + $sql = "UPDATE shop_category + SET count=$count + WHERE (id=$catid)AND((count is null)or(count<>$count))"; + + //echo $sql."\n"; + + echo "Set Count: $count\n"; + echo "Updated Rows: ".$k2->db->exec($sql)."\n"; + + } + + // Устанавливает поле count в таблице категорий + // $catid - id категории + function set_count_cat($catid){ + $cnt_prod=$this->count_prod_cat($catid); + $cnt_subcat=$this->count_prod_subcat($catid); + $sum=$cnt_prod+$cnt_subcat; + + + $this->update_count_cat($catid, $sum); + } + + + + // Проверяет на корректность количество товаров, указанное в таблице категорий + function check_category(){ + + global $k2; + + $sql = 'SELECT s.id, s.depth, s.parent_id, s.count, s.name + FROM shop_category s + ORDER BY s.depth desc'; + + + foreach ($k2->db->query($sql) as $row) { + + $this->set_count_cat($row['id']); + + echo $row['id'].'|'.$row['name'].'|'.$row['count']."\n"; + + } + + } + + + // Подсчет совпадений URL + function get_cnt_url($url){ + + global $k2; + + $rez=0; + + $sql = "select count(*) as cnt + from shop_product s + where s.url='$url'"; + + + foreach ($k2->db->query($sql) as $row) { + $rez=$row['cnt']; + + } + + return $rez; + + } + + + // Добавляет id к url + function add_url_id($id){ + + global $k2; + + $sql = "update shop_product + set url=url+'-'+id + where id=$id"; + + + echo "Добавление id к url:".$k2->db->exec($sql)."\n"; + + } + + + // Проверяет URL в продуктах + function check_products_url(){ + + global $k2; + + $sql = 'select s.id, s.url + from shop_product s + order by s.id'; + + + foreach ($k2->db->query($sql) as $row) { + + $cnt=$this->get_cnt_url($row['url']); + + if ($cnt>1){ + echo "Найдено дубликатов: $cnt\n"; + $this->add_url_id($row['id']); + } + + } + + } + + + // Исправляет недочеты продукции + function check_products(){ + + global $k2; + + // Обновление даты создания товароshop_productв + $sql = "update shop_product + set create_datetime='NOW' + where create_datetime is null;"; + + echo "Обновление даты создания товаров:".$k2->db->exec($sql)."\n"; + + + // Обновление даты редактирования товаров + $sql = "update shop_product + set edit_datetime='NOW' + where edit_datetime is null;"; + + echo "Обновление даты редактирование товаров:".$k2->db->exec($sql)."\n"; + + + // Проверка URL в продукции + $this->check_products_url(); + + } + + + function content(){ + $rez=''; + $rez.=$this->check_category(); + $rez.=$this->check_products(); + + return $rez; + } + + + +} diff --git a/k2shop/k2shop/app/cmd/crm_billing.php b/k2shop/k2shop/app/cmd/crm_billing.php new file mode 100644 index 0000000..a53ad01 --- /dev/null +++ b/k2shop/k2shop/app/cmd/crm_billing.php @@ -0,0 +1,95 @@ + '86d8af39f7fade830c58fb2c780a1aee', + 'nametov'=>'Абонентська плата за {month}', + 'kol'=>1, + 'edizmid'=>'1', + 'cena'=>45.3 + ] + ]; // Назначение счета + public $doc_info=[ + 'typedocid'=>'2', // ID типа документа + 'docpref'=>'', // Префикс документа + 'docnmask'=>'{docn}' // Маска для формирования номера документа + ]; // Информация о документе + + public $myfirmid='dafed3fc95164f82562a297f3a8434c3'; + + + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + $k2->check_connect(); + $k2->inc('k2edocs','secur'); + } + + + + // Расчет счетов + function calcSchets(){ + global $k2, $edoc; + + $ksql=$k2->ins_comp('k2sql'); + + // KTODO: Проход по данным, по которым нужно выставить счет. Скорректировать по наличию. + // Так же, выбирать нашу компанию по потребности. + + + $find=$ksql->sel("SELECT f.firmid, f.name_firm, f.email, f.typefirmid + FROM k2firms f + WHERE f.typefirmid<>'1'"); + + + foreach ($find['data'] as $val){ + $datedoc=date("Y").'.'.date('m').'.01'; + $myfirmid=$this->myfirmid; + + + + + $edoc->createDoc([ + 'typedocid'=>$this->doc_info['typedocid'], + 'docpref'=>$this->doc_info['docpref'], + 'docnmask'=>$this->doc_info['docnmask'], + 'docdate'=>$datedoc, + 'myfirmid'=>$myfirmid, + 'firmid'=>$val['firmid'], + 'dvig'=>$this->naznach_schet + ]); + } + + + } + + + + function content(){ + global $k2; + $this->calcSchets(); + return $rez; + } + + + +} + +?> \ No newline at end of file diff --git a/k2shop/k2shop/app/cmd/do_archdp2.php b/k2shop/k2shop/app/cmd/do_archdp2.php new file mode 100644 index 0000000..bd94207 --- /dev/null +++ b/k2shop/k2shop/app/cmd/do_archdp2.php @@ -0,0 +1,341 @@ +sql->sel('select typezajavid from dp2_typezajav where type IS NOT NULL'); + //var_dump($find_tzaj); + $find_month = $k2->sql->sel('select monthid from k2month'); + foreach ($find_tzaj['data'] as $key => $value) { + foreach ($this->year_arr as $y => $year) { + foreach ($find_month['data'] as $m => $v) { + //echo $value['typezajavid'].' '.$year.' '.$v['monthid'].date('n')."\n"; + if ($year == date('Y') && $v['monthid'] > date('n')) { + + } else { + $this->insArchStr($value['typezajavid'], $year, $v['monthid']); + } + } + } + } + } + + + //створення занису в таблицю архівів + function insArchStr($typezajavid, $year, $monthid) + { + global $k2; + $find_arch = $k2->sql->sel('select archiveid from dp2_archive + where typezajavid=:typezajavid and monthid=:monthid and year=:year', + ['typezajavid'=>$typezajavid, 'monthid'=>$monthid, 'year'=>$year]); + + if ($find_arch['data'] == []) { + $archiveid = $this->getID(); + $k2->sql->ins_arr(['table'=>'dp2_archive', + 'fields'=>[ + 'archiveid' => $archiveid, + 'typezajavid' => $typezajavid, + 'monthid' => $monthid, + 'year' => $year, + ] + ]); + } + + } + ################## Формування запису в таблиці ############################################### + + + + ################## Формування тимчасової папки, з записом в таблицю шляху ############################################### + + //пошук строки для створення тимчасової папки та формування файлів + function findNeedArch() + { + global $k2; + // $typezajavid = '249ef7a6ecde2b662da243eda9c16109'; + // $year = '2022'; + // $monthid = '7'; + $startTime = date("Y-m-d H:i:s"); + echo 'Старт створення тимчасової папки' . $startTime."\n"; + $find_arch = $k2->sql->sel('select * from dp2_archive + where active IS NULL ORDER BY year, monthid LIMIT 1', + []); + + //var_dump($find_arch); + + // $find_arch = $k2->sql->sel('select * from dp2_archive + // where typezajavid=:typezajavid and monthid=:monthid and year=:year and active IS NULL', + // ['typezajavid'=>$typezajavid, 'monthid'=>$monthid, 'year'=>$year]); + + foreach ($find_arch['data'] as $k => $val) { + echo 'Формуємо тимчасову папку за ' . $val['monthid']. '.'. $val['year'] . '-' . $val['typezajavid'] . $startTime. "\n"; + $rez_arr = $this->searchArchives($val['typezajavid'], $val['year'], $val['monthid'], $val['archiveid']); + } + $startTime = date("Y-m-d H:i:s"); + echo 'Завершено створення тимчасової папки' . $startTime."\n"; + } + + //формування массиву з ID заявок + function searchArchives($typezajavid, $year, $month, $archiveid) + { + global $k2; + $mainfolder = 'public/temparch/DocFiles/'; + $number = cal_days_in_month(CAL_GREGORIAN, $month, $year); + $monthid = $month; + if ($monthid < 10) { + $monthid = '0'.$monthid; + } + $datestart = $year.'-'.$monthid.'-01'; + $dateend = $year.'-'.$monthid.'-'.$number; + $find_fitered = $k2->sql->sel($this->sql .' WHERE z.typezajavid="'.$typezajavid.'" AND z.zajav_date >= "'.$datestart.'" AND z.zajav_date <= "'.$dateend.'" ', []); + $rez_arr = []; + foreach ($find_fitered['data'] as $key => $value) { + //if ($value['is_cert'] == 1) { + array_push($rez_arr, $value['zajavkid']); + //} + } + + $mainfolder = $mainfolder.$this->getFolderName($typezajavid, $year, $month); + //var_dump($rez_arr); + //echo $mainfolder; + //echo count($rez_arr); + $this->downloadFilteredArchStep2($rez_arr, $mainfolder); + + $comment = ''; + if ($rez_arr == []) { + $comment = 'за вказаний період заявок не знайдено'; + } + + $this->updateTempPath($archiveid, $mainfolder, $comment); + return $rez_arr; + } + + //оновлення шляху до тимчасової папки + function updateTempPath($archiveid, $mainfolder, $comment) + { + global $k2; + + $rez = $k2->sql->upd( + "UPDATE dp2_archive + SET + tempfolder=:tempfolder, + comment=:comment, + active=:active + WHERE archiveid =:archiveid ", + [ + 'tempfolder' => $mainfolder, + 'comment' => $comment, + 'archiveid' => $archiveid, + 'active' => 0 + ] + ); + } + + //формування тимчасової папки по масиву заявок + function downloadFilteredArchStep2($arr_zaj, $mainfolder) + { + global $k2; + + foreach ($arr_zaj as $key => $value) { + + $find_zaj = $k2->sql->sel('SELECT zajavn, zajav_date FROM dp2_zajavka_obsteg WHERE zajavkid=:zajavkid', ['zajavkid'=>$value]); + $find_files = $k2->sql->sel('SELECT f.filename, f.file_name, t.nametd FROM dp2_files f + LEFT JOIN k2typedoc t + ON t.typedocid = f.typedocid + + WHERE zajavkid=:zajavkid', + ['zajavkid'=>$value] + ); + // $datepath = date('Y/m/d/', strtotime($find_zaj['data'][0]['zajav_date'])); + + // $year_str = strtotime($find_zaj['data'][0]['zajav_date']); + // $year = date('Y', $year_str); + + $file_path = $mainfolder.'/'.$find_zaj['data'][0]['zajavn'].'/files/'; + $k2->sys->forceDir($file_path); + foreach ($find_files['data'] as $k => $val) { + if(file_exists($val['file_name'])){ + $path_parts = pathinfo($val['file_name']); + copy($val['file_name'], $file_path.$path_parts['filename'].'.'.$path_parts['extension']); + } + } + $j++; + } + + return $rez; + } + ################## Формування тимчасової папки, з записом в таблицю шляху ############################################### + + + + ################## Формування архіву, з записом в таблицю посилання ############################################### + + //отримання даних з таблиці по яким потрібно архівування + function getArchive() + { + global $k2; + $startTime = date("Y-m-d H:i:s"); + echo 'Старт архівування' . $startTime."\n"; + $find_arch = $k2->sql->sel('SELECT * FROM dp2_archive WHERE (tempfolder IS NOT NULL OR tempfolder <> "") and active = 0 LIMIT 1', []); + //var_dump($find_arch); + foreach ($find_arch['data'] as $key => $value) { + $folder = $this->getFolderName($value['typezajavid'], $value['year'], $value['monthid']); + + $is_arch = $this->callArch($value['tempfolder'], $folder, $value['archiveid']); + //var_dump($is_arch); + //if ($is_arch) { + + //} + } + $endTime = date("Y-m-d H:i:s"); + echo 'Кінець архівування' . $endTime."\n"; + //var_dump($find_arch); + } + + //оновлення таблиці архівів + function updateArchDate($archiveid, $archpath) + { + global $k2; + $datecreate = date('Y-m-d H:i:s'); + $rez = $k2->sql->upd( + "UPDATE dp2_archive + SET + archpath=:archpath, + datecreate=:datecreate, + active=:active + WHERE archiveid =:archiveid ", + [ + 'archpath' => $archpath, + //'tempfolder' => $mainfolder, + 'datecreate' => $datecreate, + 'archiveid' => $archiveid, + 'active' => 1 + ] + ); + + } + + // + function getFolderName($typezajavid, $year, $monthid) + { + global $k2; + $find_foldname = $k2->sql->sel('SELECT latname FROM dp2_typezajav WHERE typezajavid=:typezajavid', ['typezajavid'=>$typezajavid]); + if ($monthid < 10) { + $monthid = '0'.$monthid; + } + $rez = $find_foldname['data'][0]['latname'].'/'.$year.'/'.$monthid.'/'; + return $rez; + } + + function callArch($source = '', $folder = '', $archiveid = '') + { + global $k2; + //$source = 'public/temparch/21_56_19/DocFiles/'; + //$arch_path = 'public/archives/'.date('Y').'/'.date('m').'/'.date('d').'/'; + $arch_path = 'public/archives/'; + if ($folder) { + $arch_path = 'public/archives/'.$folder; + } + + //var_dump(is_dir($source)); + $name_f = str_replace('/', '_', $folder); + $k2->sys->forceDir($arch_path); + //$dest = $arch_path.date('H_i_s').'_'.$name_f.'_arch.tar.gz'; + $dest = $arch_path.$name_f.'arch.tar.gz'; + echo 'Архівування з тимчасової папки - '.$source.' в '.$dest; + $source = nslashe($k2->rootdir.'/'.$source); + + $destination = nslashe($k2->rootdir.'/'.$dest); + + //echo $source; + + $this->updateArchDate($archiveid, $dest); + + $command = 'cd '.$source.' && tar -czf '.$destination.' .'; + $output = array(); + $return_var = -1; + exec($command, $output, $return_var); + if ($return_var === 0) { + echo "The command executed successfully.\n"; + return $dest; + } else { + echo "The command failed with exit code $return_var. Error output:\n"; + foreach ($output as $line) { + echo "$line\n"; + } + return false; + } + } + + function defMark() + { + $rez = 'Оберіть подію для ахівування'; + //echo 'Оберіть подію для ахівування'; + return $rez; + } + + function routeArchive() + { + global $k2; + + //извлечение параметров из списка аргументов командной строки + $options = getopt("", array("event:","typezajavid:","year:","monthid:")); + + //var_dump($options); + + switch ($options['event']) + { + case "update": + $rez = $this->fillTypeZajavk(); + break; + case "tempfolder": + $rez = $this->findNeedArch(); + break; + case "archive": + $rez = $this->getArchive(); + break; + default: + $rez = $this->defMark(); + } + return $rez; + } + + + function content() + { + global $k2; + //echo $this->getID(); + $currentTime = date("Y-m-d H:i:s"); + echo $currentTime."\n"; + $rez = $this->routeArchive(); + return $rez; + } +} diff --git a/k2shop/k2shop/app/cmd/export_docs.php b/k2shop/k2shop/app/cmd/export_docs.php new file mode 100644 index 0000000..46a39fb --- /dev/null +++ b/k2shop/k2shop/app/cmd/export_docs.php @@ -0,0 +1,149 @@ +check_connect(); + } + + //получение списка документов + function getSchet(){ + + global $k2; + + //извлечение параметров из списка аргументов командной строки + $options = getopt("", array("typedocid:","datefrom:","dateto:","mydate:")); + + $typedocid=$options['typedocid']; + + $k2->addLog('Обработка типа документа: '.$typedocid, 'export_doc.log'); + + + $doc = ''; + + if ($typedocid==2) { + $docname='Rahunki'; + if(!isset($options['datefrom'])){ + //проверка на наличие конкретной даты + if (!isset($options['mydate'])) { + $myDate=date("Y-m-d", strtotime('-1 day'));//если нет то берется вчерашняя дата + }else{ + $myDate=$options['mydate']; + } + $sql = "SELECT docdate, docnum, username, name_firm, adress_firm, docsum, docpref, directorname, typefirmname, edrpou, ipn, svidnum, adress_firm, phone_firm, email, codfil + FROM k2docs + left join k2firms on k2docs.firmid = k2firms.firmid + left join k2typefirm on k2firms.typefirmid=k2typefirm.typefirmid + WHERE docdate ='".$myDate."' and typedocid ='".$typedocid."' GROUP BY docnum"; + }else{ + + $datefrom=$options['datefrom']; + $dateto=$options['dateto']; + $sql = "SELECT docdate, docnum, username, name_firm, adress_firm, docsum, docpref, directorname, typefirmname, edrpou, ipn, svidnum, adress_firm, phone_firm, email, codfil + FROM k2docs + left join k2firms on k2docs.firmid = k2firms.firmid + left join k2typefirm on k2firms.typefirmid=k2typefirm.typefirmid + WHERE docdate>='".$datefrom."' AND docdate<='".$dateto."' and typedocid ='".$typedocid."' GROUP BY docnum"; + } + foreach ($k2->db->query($sql) as $row) { + $date = explode("-", $row["docdate"]); + $doc.="++++++++++"."\r\n".$date[0].'|'.$date[1].'|'.$date[2].'|'.$row["docpref"].'-'.$row["docnum"].'|'.'|'.'|'.'|'.($row["docsum"]*1.2).'|'; + $doc.=$row["name_firm"].'|'.$row["typefirmname"].'|'.$row["edrpou"].'|'.$row["ipn"].'|'.$row["svidnum"].'|'.$row["adress_firm"].'|'.$row["phone_firm"].'|'.$row["email"].'|'.$row["codfil"]; + $doc.="\r\n"."##########"."\r\n"; + $sql1 = "SELECT tovname, k2dvig.kol, summa, k2dvig.cena + FROM k2docs + left join k2dvig on k2docs.docid=k2dvig.docid + left join k2tov on k2dvig.tovid=k2tov.tovid + WHERE docnum =".$row["docnum"]." and typedocid =".$typedocid." "; + foreach ($k2->db->query($sql1) as $row) { + $doc.=$row["tovname"].'|'.($row["cena"]*1.2).'|'.$row["kol"].'|'.($row["summa"]*1.2).'|'."\r\n"; + } + $doc.="----------"."\r\n"; + } + + $doc=iconv('UTF-8', 'windows-1251', $doc); + $file_name = $k2->rootdir.'/upload/'.$docname.'.csv'; // название файла + + $k2->addLog("Пишем в $file_name", 'export_doc.log'); + + file_put_contents ($file_name,$doc); + } else{ +// $docname='Nakladni'; +// if(!isset($options['datefrom'])){ +// //проверка на наличие конкретной даты +// if (!isset($options['mydate'])) { +// $myDate=date("Y-m-d", strtotime('-1 day'));//если нет то берется вчерашняя дата +// }else{ +// $myDate=$options['mydate']; +// } +// +// $sql = "SELECT docdate, docnum, username, name_firm, datecreate, adress_firm, docsum, docpref, directorname, typefirmname, edrpou, ipn, svidnum, adress_firm, phone_firm, email, codfil +// FROM k2docs +// left join k2firms on k2docs.firmid = k2firms.firmid +// left join k2typefirm on k2firms.typefirmid=k2typefirm.typefirmid +// WHERE docdate ='".$myDate."' and typedocid ='".$typedocid."' GROUP BY docnum"; +// }else{ +// +// $datefrom=$options['datefrom']; +// $dateto=$options['dateto']; +// //$i=0; +// $sql = "SELECT docdate, docnum, osndprnum, username, name_firm, datecreate, adress_firm, docsum, docpref, directorname, typefirmname, edrpou, ipn, svidnum, adress_firm, phone_firm, email, codfil +// FROM k2docs +// left join k2firms on k2docs.firmid = k2firms.firmid +// left join k2typefirm on k2firms.typefirmid=k2typefirm.typefirmid +// WHERE docdate>='".$datefrom."' AND docdate<='".$dateto."' and typedocid ='".$typedocid."' GROUP BY docnum"; +// } +// foreach ($k2->db->query($sql) as $row) { +// $date = explode("-", $row["docdate"]); +// $sql22="SELECT docnum from k2docs where docpref = 'dpr' and docsum=".$row['docsum']." and datecreate='".$row['datecreate']."' and username='".$row['username']."' LIMIT 1"; +// $doc.="++++++++++"."\r\n".$date[0].'|'.$date[1].'|'.$date[2].'|'.$row["docpref"].'-'.$row["docnum"].'|'.'dpr-'; +// $doc.=$row["osndprnum"]; +// $doc.='|'.'|'.'|'.'|'.($row["docsum"]*1.2).'|'; +// $doc.=$row["name_firm"].'|'.$row["typefirmname"].'|'.$row["edrpou"].'|'.$row["ipn"].'|'.$row["svidnum"].'|'.$row["adress_firm"].'|'.$row["phone_firm"].'|'.$row["email"].'|'.$row["codfil"]; +// $doc.="\r\n"."##########"."\r\n"; +// $sql1 = "SELECT tovname, k2dvig.kol, summa, k2dvig.cena +// FROM k2docs +// left join k2dvig on k2docs.docid=k2dvig.docid +// left join k2tov on k2dvig.tovid=k2tov.tovid +// WHERE docnum =".$row["docnum"]." and typedocid =".$typedocid." "; +// foreach ($k2->db->query($sql1) as $row) { +// $doc.=$row["tovname"].'|'.($row["cena"]*1.2).'|'.$row["kol"].'|'.($row["summa"]*1.2).'|'."\r\n"; +// } +// $doc.="----------"."\r\n"; +// } +// +// $doc=iconv('UTF-8', 'windows-1251', $doc); +// +// $file_name = $k2->rootdir.'/upload/'.$docname.'.csv'; // название файла +// +// $k2->addLog("Пишем в $file_name", 'export_doc.log'); +// +// file_put_contents ($file_name,$doc); + } + } + + function content(){ + global $k2; + + $k2->addLog('Запуск экспорта документов export_doc', 'export_doc.log'); + $rez=$this->getSchet(); + $k2->addLog('Конец экспорта документов export_doc', 'export_doc.log'); + + return $rez; + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/cmd/export_prom.php b/k2shop/k2shop/app/cmd/export_prom.php new file mode 100644 index 0000000..9f4a934 --- /dev/null +++ b/k2shop/k2shop/app/cmd/export_prom.php @@ -0,0 +1,565 @@ + '1', + 'xmlname' => 'prom.xml', + 'keywordid' => '1', + 'limit_size' => 0, + 'prom_format' => true + ), + + array('id' => '2', + 'xmlname' => 'allbiz.xml', + 'keywordid' => '2', + 'limit_size' => 0, + 'prom_format' => false + ), + + array('id' => '3', + 'xmlname' => 'zakupka.xml', + 'keywordid' => '3', + 'limit_size' => 0, + 'prom_format' => true + ), + + array('id' => '4', + 'xmlname' => 'priceua.xml', + 'keywordid' => '4', + 'limit_size' => 0, + 'prom_format' => false + ), + + array('id' => '5', + 'xmlname' => 'hotline.xml', + 'keywordid' => '5', + 'limit_size' => 0, + 'prom_format' => false + ), + + array('id' => '6', + 'xmlname' => 'yandex.xml', + 'keywordid' => '6', + 'limit_size' => 0, + 'prom_format' => false + ) + + + + + ); + + + public function __construct( ) { + global $k2; + $k2->check_connect(); + } + + + + function head_yandex(){ + + // + + $s= + ' + + + '.$this->catname.' + '.$this->catname_nat.' + '.$this->url.' + + + + + + + + '."\n"; + + return $s; + } + + + + // Вывод групп товаров + function groups_yandex(){ + + global $k2; + + $sql = 'SELECT id, name, parent_id FROM shop_category c'; + + $s=str_repeat (' ',15).''."\n"; + + //$k2->check_connect(); + //var_dump($GLOBALS['k2cfg']->db); + //var_dump($k2->db); + + // Выводим строки + foreach ($k2->db->query($sql) as $row) { + if ($row['parent_id']=='0'){ + $parent=''; + }else{ + $parent=$row['parent_id']; + } + + + $nametmp=$this->blockSpec($row['name']); + + if ($nametmp<>''){ + $s.=str_repeat (' ',20).''.$nametmp.''."\n"; + } + } + + + + $s.=str_repeat (' ',15).''."\n\n"; + + return $s; + + } + + + + // Удаляет теги + function strip_tags_content($text, $tags = '', $invert = FALSE) { + + preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags); + $tags = array_unique($tags[1]); + + if(is_array($tags) AND count($tags) > 0) { + if($invert == FALSE) { + return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?@si', '', $text); + } + else { + return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?@si', '', $text); + } + } + elseif($invert == FALSE) { + return preg_replace('@<(\w+)\b.*?>.*?@si', '', $text); + } + + return $text; + } + + + + // Блокирование спец-символов + function sym($sinp){ + + $s=$sinp; + + $s = preg_replace('/()/Uis','', $s); + $s = preg_replace('/()/Uis','', $s); + + + $s=strip_tags($s); + + $s=str_replace(' ','',$s); + $s=str_replace('&','',$s); + $s=str_replace('
','
',$s); + + + return $s; + } + + + + // Возвращает название файла изображения + // Примеры файлов изображения: + // http://corp2.kiev.ua/wa-data/public/shop/products/66/07/766/images/863/863.750x0.jpeg + // http://corp2.kiev.ua/wa-data/public/shop/products/36/04/436/images/436/436.750x0.jpg + // http://corp2.kiev.ua/wa-data/public/shop/products/42/00/42/images/42/42.750x0.jpg + // http://corp2.kiev.ua/wa-data/public/shop/products/61/00/61/images/61/61.970.jpg + // http://corp2.kiev.ua/index.php/webasyst/shop/?action=products#/product/1608/edit/images/927/ + // http://corp2.kiev.ua/wa-data/public/shop/products/08/16/1608/images/927/927.970.JPG + // http://corp2.kiev.ua/wa-data/public/shop/products/08/16/1608/images/928/928.970.JPG + // http://corp2.kiev.ua/wa-data/public/shop/products/08/16/1608/images/929/929.970.JPG + // http://corp2.kiev.ua/wa-data/public/shop/products/96/07/796/images/864/864.750x0.jpg + function get_image_filename($imageid, $product_id, $ext){ + + global $k2; + + $rez=''; + + if (trim($imageid)<>''){ + + + $id=trim($product_id); + //$id=str_pad($id, 4, "0", STR_PAD_RIGHT); + + if (strlen($id)<4){ + $id2=str_pad(substr($id,1,2),2,'0',STR_PAD_LEFT); + }else if (strlen($id)==4){ + $id2=str_pad(substr(str_pad($id,"0",STR_PAD_LEFT),2,2),2,'0',STR_PAD_LEFT); + } + + + $id1=str_pad(substr(str_pad($id,4,"0",STR_PAD_LEFT),0,2),2,'0',STR_PAD_LEFT); + + + if (strlen($id)>4){ + $id1=substr($id,-4,2); + $id2=substr($id,-2); + } + + $file="/wa-data/public/shop/products/$id2/$id1/$id/images/".$imageid."/".$imageid.".750x0.".$ext; + $rez="https://corp2.kiev.ua".$file; + $fullfile=$k2->rootdir.$file; + + if (!file_exists($fullfile)){ + //$rez="https://corp2.kiev.ua/wa-data/public/shop/products/$id2/$id1/$id/images/".$imageid."/".$imageid.".970.".$row['ext']; + $file="/wa-data/public/shop/products/$id2/$id1/$id/images/".$imageid."/".$imageid.".970.".$ext; + $rez="https://corp2.kiev.ua".$file; + $fullfile=$k2->rootdir.$file; + + + if (!file_exists($fullfile)){ + //echo "Изображение не найдено: $fullfile\n"; + } + + } + }else{ + $rez=''; + } + + return $rez; + } + + + // Получает перечень изображений + function get_tag_images($product_id){ + + global $k2; + + $sql = "SELECT si.id as id, ext FROM shop_product_images si WHERE si.product_id=$product_id"; + + $rez=''; + foreach ($k2->db->query($sql) as $row) { + + $pic=$this->get_image_filename($row['id'], $product_id, $row['ext']); + + //echo "picture=$product_id: $pic\n"; + + if (strlen($pic)>1){ + $rez.=''.$pic.''."\n"; + } + } + + return $rez; + + } + + + // Функция возвращает какая выгрузка сейчас делается Prom или Allbiz + function isProm(){ + return $this->limit_size==0; + } + + + // Получает ключевые слова + // $id - id товарной позиции + // default_keywords - ключевые слова по умолчанию + function get_keywords($id, $default_keywords=''){ + + global $k2; + + $rez=$default_keywords; + +// if ($this->isProm()){ +// $resid=$this->promid; +// }else{ +// $resid=$this->allbiz; +// } + + + $resid=/*$this->keywordid*/$this->cur_res['keywordid']; + + + $sql = "select k.keywords as keywords + from k2keys k + where (k.resurs='$resid') + and(k.keysid='$id') + limit 1"; + + + foreach ($k2->db->query($sql) as $row) { + $rez=$row['keywords']; + + } + + if (trim($rez)==''){ + $rez=$default_keywords; + } + + return $rez; + } + + + // Блокирует спец-символы + // Нужно блокировать & в названиях + function blockSpec($nameinp){ + $rez=trim($nameinp); + + $rez= str_replace('&', ' ', $rez); + + return $rez; + } + + + // Удаляет не допустимые UTF-8 символы + function delNotUTF($inpstr){ + $rez= str_replace("\0", " ", $inpstr); + + return $rez; + } + + + // Вывод списка товаров + function tov_yandex(){ + + global $k2; + + $sql = 'SELECT p.id, p.name, p.url, p.price, p.description, p.category_id, p.ext, p.meta_keywords, p.k2type_import, p.k2keyimport + FROM shop_product p'; + + + + + $s=str_repeat (' ',15).''; + + // Выводим строки + foreach ($k2->db->query($sql) as $row) { + + $price=$row['price']; + + if (trim($price)==''){ + $price=0; + } + + + $urlsrc=$this->url_index.$row['url']."/"; + + + // Подстановка изображения для Softkey + if (($row['k2type_import']=='softkey')and(trim($row['k2keyimport'])<>'')){ + $pic="/img/sk_".$row['k2keyimport'].'.png'; + + if (file_exists($k2->rootdir.$pic)){ + $imagetag=''.'https://corp2.kiev.ua'.$pic.''."\n"; + } + + }else{ + $imagetag=$this->get_tag_images($row['id']); + } + + + + $addparams=''; + + // Тип товвара в Prom + if ($this->prom_format){ + $addparams='selling_type="r"'; + } + + + $keywords=$this->get_keywords($row['id'], trim($row['meta_keywords'])); + + $nameitem=$this->blockSpec($row['name']); + if ($nameitem=='') continue; + + $s.=' + + '.$urlsrc.' + '.$price.' + UAH + '.$row['category_id'].' + true + true + true + '.$imagetag.' + true + '.$this->sym($nameitem).' + delNotUTF($row['description']).'Смотрите подробнее: '.$urlsrc.''.']]> + предоплата + '.$keywords.' + '; + + + + if ($this->prom_format){ +/* $s.=' + + '.$price.' + 1 + + + '.$price.' + 10000000 + + '.$price.' + '.$price.' + '; + */ + } + + + + /* + Можно загружать несколько фотографий. + Ссылка1 + Ссылка10 + + Можно загружать название производителя. + Название_производителя + Код товара производителя: + Код(Артикул) или Код(Артикул) + + Страна: + Страна_производитель + + Характеристики: + Значение_характеристики_товара + + Название модели товара: + Название_модели + + */ + + + $s.=''; + + + + $s.="\n"; + + + + if (($this->limit_size>0)and(strlen($s)>=$this->limit_size)){ + break; + } + + + } + + $s.=str_repeat (' ',15).''; + + + echo "\nsize=".strlen($s)."\n"; + echo "\nlimit=".$this->limit_size."\n"; + + + return $s; + + + + + } + + + // Заканчивает вывод Яндекс-файла + function foot_yandex(){ +// + $s=' +
+
'; + + return $s; + + } + + + + // Сохранение данных в формате Yandex + function yandex_save($file_nameinp='prom.xml'/*, $small=false*/){ + + global $k2; + + $filname=$k2->rootdir.'/import/'.$file_nameinp; + + // Включение ограниченного размера на файл + //if ($small){ + // $this->limit_size=(10*1024*1024)-(700*1024); + //} + + $s=$this->head_yandex().$this->groups_yandex()./*"\n".*/$this->tov_yandex().$this->foot_yandex(); + + try{ + echo "Сохранение файла: ".$filname."\n"; + file_put_contents ($filname,$s); + + }catch (Exception $e) { + echo "export_prom. Возникла ошибка:\n".$e->getMessage(); + } + + // Архивируем в формат xip + try{ + $zipname = str_replace('.xml', '.zip', $filname); + echo "Архивация файла: ".$zipname."\n"; + $zip = new ZipArchive(); //Создаём объект для работы с ZIP-архивами + $zip->open($zipname, ZIPARCHIVE::CREATE); //Открываем (создаём) архив archive.zip + $zip->addFile("$filname"); //Добавляем в архив файл index.php + $zip->close(); //Завершаем работу с архивом + + }catch (Exception $e) { + echo "export_prom. Возникла ошибка архивации:\n".$e->getMessage(); + } + + + + } + + + + function content(){ + $rez=''; + + foreach ($this->res as $key => $value) { + $this->cur_res=$value; + $this->prom_format=$this->cur_res['prom_format']; + $this->limit_size=$this->cur_res['limit_size']; + $this->yandex_save($value['xmlname']); // Сохранение для Prom + } + + return $rez; + } + + + function show(){ + echo $this->content(); + } + + + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/cmd/get_invoice.php b/k2shop/k2shop/app/cmd/get_invoice.php new file mode 100644 index 0000000..7f2927f --- /dev/null +++ b/k2shop/k2shop/app/cmd/get_invoice.php @@ -0,0 +1,256 @@ +check_connect(); + } + + //шаблон письма + function message($id, $login){ + global $k2; + $p = $k2->ins_comp('k2pay','liqpay'); + $ksql=$k2->ins_comp('k2sql'); + //информация про контрагента + $user=$ksql->sel('SELECT d.docdate, d.docnum, d.datecreate, d.docid, d.docsum , d.typedocid, d.myfirmid, f.platnykPDV, f.name_firm FROM (k2docs d) left join ( k2firms f ) on d.firmid=f.firmid WHERE (docid=:docid);', ['docid'=>$id]); + //информация про авто контрагента + $car=$ksql->sel('SELECT d.nameservice, d.tovid, d.dvigid, e.edizm , d.docid, d.kol, d.summa FROM k2dvig d left join k2edizm e on e.edizmid=d.edizmid ' + . ' WHERE (docid=:docid);', ['docid'=>$id]); + $cars=''; + $i=1; + $sum=0; + $kol=0; + + + foreach($car['data'] as $item){ + $cars.=" + ".$i++." + ".$item['nameservice']." + ".$item['kol']." + ".$item['edizm']." + ".$item['summa']." + ".$item['kol']*$item['summa']." + "; + $sum+=$item['kol']*$item['summa']; + $kol+=$item['kol']; + } + $desc=""; + $myfirmid=$user['data'][0]['myfirmid']; + //если фоп тогда оплата LiqPay + if($user['data'][0]['platnykPDV']==0){ + $pay = $p->payZakaz($id, $sum, $desc); + } + + //дрругие данные + $date=''; + $docnum=''; + $name_firm=''; + if($user['data'][0]['docdate']<>''){ + $date=$user['data'][0]['docdate']; + } + if($user['data'][0]['docnum']<>''){ + $docnum=$user['data'][0]['docnum']; + } + if($user['data'][0]['name_firm']<>''){ + $name_firm=$user['data'][0]['name_firm']; + } + $sum=number_format($sum, 0, '.', ' '); + $dat=$this->date_ua(date("m")-1, date("Y")); + $rez="
+

Оплата послуг моніторингу автотранспорту за ".$dat."(".$login.")

+

На суму: ".$sum."грн

+
+
".$pay."
+ Перегляд
+
"; + + return $rez; + } + //формирование и сохранение письма + function addMessage($email, $id, $login=''){ + global $em, $k2; + //заполнение таблицы (Message) + $k2->sql->ins_arr(['table'=>'k2message', + 'fields'=>[ + 'docid'=>$id, + 'id_message'=>$this->getID(), + 'date_formation'=>'{now}', + 'email'=>$email, + 'status'=>0, + 'subj'=>'Оплата послуг Wialon ('.$login.') ', + 'message'=>$this->message($id, $login) + ] + ]); + } + + //получение месяца текстовом формате + год + function date_ua( $m, $y) { + $months = array('грудень','cічень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудеь'); + return $months[$m] . ' ' . $y ; + } + //добавление данных в номенклатуру + function addNomentclature($probeg, $id){ + global $em, $k2; + if($probeg<>''){ + foreach($probeg as $item){ + $nameservice = str_replace(array('{date}', '{car}'), array($this->date_ua(date("m")-1, date("Y")), $item['car']), $this->nameservice); + $k2->sql->ins_arr(['table'=>'k2dvig', + 'fields'=>[ + 'cena'=>$item['tarif'], + 'nameservice'=>$nameservice, + 'tovid'=>'86d8af39f7fade830c58fb2c780a1aee', + 'edizmid'=>1, + 'dvigid'=>$this->getID(), + 'docid'=>$id, + 'kol'=>'1', + 'summa'=>$item['tarif']*1 + ] + ]); + } + } + } + //заполнение таблиц со счетами и товарными позицыями + function addRekvizity($array){ + global $em, $k2; + $id=$this->getID(); + //Максимальний номер документа + $re = $k2->sql->sel("SELECT MAX(CAST(docnum AS SIGNED)) + FROM k2docs" + ); + $next_doc=$re['data'][0][0]+1; + //заполнение таблицы (счета) + $k2->sql->ins_arr(['table'=>'k2docs', + 'fields'=>[ + 'docid'=>$id, + 'docnum'=>$next_doc, + 'docdate'=>date('Y-m-d'), + 'datecreate'=>'{now}', + 'docsum'=>$array['summ'], + 'typedocid'=>'2', + 'firmid'=>$array['firmid'], + 'myfirmid'=>$array['myfirmid'] + ] + ]); + //заполнение таблицы (Товарные позиции) + $this->addNomentclature($array['car'], $id); + //заполнение таблицы Message + $this->addMessage($array['email'], $id, $array['login']); + } + //Формирование массива для выставление счетов + function getInvoice(){ + global $k2; + $ksql=$k2->ins_comp('k2sql'); + //выбор акаутов + $acount=$ksql->sel('SELECT acc_name, acc_wialon, firmid, tarif_plan, email, vkl FROM crmZohoAcc WHERE vkl=1'); + + //проход по акаунтам + foreach($acount['data'] as $item1){ + $email=''; + if($item1['firmid']<>''){ + $firm=$ksql->sel('SELECT email FROM k2firms WHERE (firmid=:firmid);', + ['firmid'=>$item1['firmid']]); + //проверка на существование Email в Zoho + if($firm<>''){ + $email= $firm['data'][0][0]; + } + }else{ + $k2->addLog("Не вказаний Контрагент для користувача-".$item1['acc_name'], 'ErrorAmocrm.log'); + } + if(($item1['email']<>'') or ($email<>'') ){ + if($item1['email']<>''){ + $email=$item1['email']; + } + //выбор авто в акаунте + $wialon=$k2->sql->sel('SELECT car_new_mileage, ' + . 'car_mileage, acc_car, tarifid FROM crmWialonAcc WHERE (acc_wialon=:acc_wialon);', + ['acc_wialon'=>$item1['acc_wialon']]); + //получение пробега за месяц автомобилей акаунта + $probeg=0; + $sum=0; + $i=0; + $car=null; + foreach($wialon['data'] as $item){ + //выбор тарифа + $tarif_plan=$item['tarifid']; + $tarif=$ksql->sel('SELECT cena_month FROM crmZohoTarif WHERE (tarifid=:tarifid);', ['tarifid'=>$tarif_plan]); + $tarifs=0; + //если тариф отсутствует тогда записиваем ошибку в лог файл + if(!empty($tarif['data'][0]['cena_month'])){ + $tarifs=$tarif['data'][0]['cena_month']; + $probeg+=$item['car_new_mileage']-$item['car_mileage']; + $sum+=$tarifs; + //масив автомобилей акаунта + $car[$i]=array( + 'car'=>$item['acc_car'], + 'tarif'=>$tarifs, + 'probeg'=>$item['car_new_mileage']-$item['car_mileage'] + ); + $i++; + }else{ + $k2->addLog('Не вказаний тариф для автомобіля-'.$item['acc_car'], 'ErrorAmocrm.log'); + } + } + //Проверка ли плательщик ндс + $platnykPDV=$ksql->sel('SELECT platnykPDV FROM k2firms WHERE (firmid=:firmid);', ['firmid'=>$item1['firmid']]); + //Выставление счетов по ФОП ити ТОВ + if($platnykPDV['data'][0]['platnykPDV']==0){ + $myfirmid='21626c9dbb6caac8d5178d8870d17d58'; + }else if($platnykPDV['data'][0]['platnykPDV']==1){ + $myfirmid='dafed3fc95164f82562a297f3a8434c3'; + }else{ + $myfirmid=null; + } + //проверка есть ли автомобили + if($car<>null){ + //масив с данными акаунта + $array = array( + 'login' => $item1['acc_name'], + 'car' => $car, + 'summ' => $sum, + 'email' => $email, + 'myfirmid'=>$myfirmid, + 'firmid'=>$item1['firmid'], + 'datenow' =>date('01:m:Y') + ); + $this->addRekvizity($array); + } + }else{ + $k2->addLog("Не вказаний Email для користувача-".$item1['acc_name'], 'ErrorAmocrm.log'); + } + } + } + //отправка счетов + function SendMess(){ + global $k2; + $rez=''; + $send = $k2->ins_comp('k2sendMess'); + $send->mailsSend(); + return $rez; + } + + function content(){ + global $k2; + $rez=''; + //механизм выставления счетов + $this->getInvoice(); + //отправка счетов + $this->SendMess(); + return $rez; + } +} diff --git a/k2shop/k2shop/app/cmd/get_nutrend.php b/k2shop/k2shop/app/cmd/get_nutrend.php new file mode 100644 index 0000000..bc579ee --- /dev/null +++ b/k2shop/k2shop/app/cmd/get_nutrend.php @@ -0,0 +1,95 @@ +check_connect(); + } + + //получение списка документов + function getNutrend(){ + + global $k2; + require_once($k2->rootdir.'/k2shop/k2shop/libs/simpleHtmlDom/simple_html_dom.php'); + $login = $this->login; + $pswd = $this->pswd; + $url = $this->url; + $url2 = $this->url2; + + $cookie_jar = tempnam('tmp','cookie'); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url ); + curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE ); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // следовать за редиректами + curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE ); + curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE ); + curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); + curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar); + curl_setopt($ch, CURLOPT_HEADER, 0 ); + curl_setopt($ch, CURLOPT_POSTFIELDS, array( + 'mail'=>$login, + 'pass'=>$pswd, + 'login'=>'true', + )); + + //переходим на страницу авторизации + $page = curl_exec($ch); + + //получаем данные + $page = str_get_html($page); + + $kurs_eur = $page->find('span[class=eur]'); + $kurs_eur = strip_tags($kurs_eur[0], '
'); + $discount = $page->find('span[id=discount]'); + $discount = substr(strip_tags($discount[0], '
'), 1, -1); + $doc=''; + + + curl_setopt($ch, CURLOPT_URL,$url2); + + curl_setopt($ch, CURLOPT_POSTFIELDS, array( + 'mail'=>$login, + 'pass'=>$pswd, + 'login'=>'true', + )); + + $file_name = $k2->rootdir.'/k2shop/k2shop/upload/nutrend.csv'; + $doc.=$discount."|"; + $doc.=$kurs_eur."|"; + $doc.= curl_exec($ch); + file_put_contents ($file_name,$doc); + echo 'Получение перечня товаров из магазина Nutrend. Текущая скидка: -'.$discount.'%. Текущий курс: '.$kurs_eur.' '; + curl_close($ch); + } + + function content(){ + global $k2; + $k2->addLog('Запуск получения файла', 'nutrend.log'); + $rez=$this->getNutrend(); + $k2->addLog('Конец получения файла', 'nutrend.log'); + return $rez; + } + +} diff --git a/k2shop/k2shop/app/cmd/import_abbyy.php b/k2shop/k2shop/app/cmd/import_abbyy.php new file mode 100644 index 0000000..e63ecab --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_abbyy.php @@ -0,0 +1,299 @@ +check_connect(); + } + + function getData() { + + $html = file_get_contents('http://1c.abbyy.ua/products/prices/'); + + $arr=array(); + + $arrid=0; + //$i=0; + while (trim($html)<>'') { + + + $s=strpos($html, ''); + $arr[$arrid]=substr($html, 0, $s+strlen(''+1)); + $html=substr($html, $s+strlen('')); + + $arrid++; + } + + } + + //echo $arr[0]; + + $this->parsing($arr); + + } + + // Парсинг таблицы на строки + + function parsing($arr){ + + $data = $arr[0]; + + + $i=0; + while (trim($data)<>'') { + + $a=strpos($data, ''); + + $data=substr($data, $a+strlen('')); + + $a=strpos($data, ''); + + $rowinp=substr($data, 0, $a); + + $data=substr($data, $a+strlen('')); + + //echo $rowinp."\n"; + + $this->parsing_row($rowinp); + + $i++; + //echo 'i='.$i."\n"; + + if ($i>5000){ + exit; + } + } + } + + + //очистка строки от лишних символов + function clear_value($strinp){ + + $s=$strinp; + $s=strip_tags($s); + //$s=trim(str_replace("\n",'',$s)); + //$s=trim(str_replace("грн.",'',$s)); + + return $s; + + } + + + + //Парсинг строки + function parsing_row($rowinp){ + + +//echo "$rowinp\n\n"; + + $arr2=array(); + + $arrid2=0; + $i=0; + while (trim($rowinp)<>'') { + + $e=strpos($rowinp, '"#eeeeee">'); + + $rowinp=substr($rowinp, $e+strlen('"#eeeeee">')); + + $e=strpos($rowinp, ''); + + $arr2[$arrid2]=$this->clear_value(substr($rowinp, 0, $e)); + + $rowinp=substr($rowinp, $e+strlen('')); + + $arrid2++; + $i++; + if ($i>1000){ + exit; + } + } + + //Проверка вывода массива + /* foreach ($arr2 as $value){ + echo $value. "|"; + } + echo "\n"; */ + + + //Присваиваем параметры для вставки в базу + + echo 'count='.count($arr2)."\n"; + if (count($arr2)>0){ + echo $arr2[0]."|".$arr2[1]."|".$arr2[2]."\n"; + } + + + if (count($arr2)==4){ + + $id=$arr2[0]; + $name=$arr2[1]; + $price=$arr2[2]; + + + } elseif(count($arr2)==1){ + //$delete = $arr2; + //unset($delete); + return; + } else{ + echo "\n".'parsing_row(). Не соответствует количество столбцов: '.count($arr2)."\n"; + return; + } + + if (trim($name)<>''){ + $this->save_row($id, $name, $price); + } + + } + + + // Вставляет в базу + // $name - название номенклатуры + // $price - цена + + function save_row($id, $name, $price){ + + $name=str_replace("'","''",$name); + + + $idupdate=$this->serch_product($id, $name); + + if ($idupdate==null){ + $this->insert($name, $price, $id); + }else{ + $this->update($name, $price, $id, $idupdate); + } + + + } + + function serch_product($id, $name){ + + global $k2; + + $sql = "SELECT s.id FROM shop_product s WHERE (s.k2type_import='abbyy' and s.k2keyimport='$id')or(s.name='$name');"; + + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['id']; + } + + return $res; + + } + + + + function insert ($name, $price, $id) { + + global $k2; + + // Генерируем следующий id + $sql='select max(id) as maxid from shop_product;'; + + $nextid=0; + + foreach ($k2->db->query($sql) as $row) { + $nextid=$row['maxid']+1; + } + + + //echo "$nextid=".$nextid."\n"; + + + // Вставка товара + $sql = "INSERT INTO shop_product (id, k2keyimport, name, price, k2type_import, category_id, url,status, currency,meta_title, meta_keywords, meta_description, description) + VALUES ($nextid, '$id', '$name', '$price', 'abbyy','".$this->catid."','".$k2->sys->chpu($name,$nextid)."',1, 'UAH', '$name', '$name', '$name', '$name')"; + + + echo $sql."\n"; + + echo "Insert: $id ".$k2->db->exec($sql)."\n"; + + + // Вставка группы товара + $sql="INSERT INTO shop_category_products(product_id,category_id,sort) + VALUES('$nextid','".$this->catid."','$nextid')"; + + try { + echo "Insert Group: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Insert Group: $id".$nextid."\n".$e->getMessage()."\n"; + } + + + //Вставка наличия товаров + $sql="INSERT INTO shop_product_skus(product_id,sort,price,primary_price,purchase_price,compare_price,available,file_size,virtual,sku) + VALUES('$nextid','1','$price','$price','$price','$price','1','0','0','$id')"; + + try { + echo "Insert Avaiable: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Insert Avaiable: $id".$nextid."\n".$e->getMessage()."\n"; + } + + } + + function update($name, $price, $id, $idupdate) { + global $k2; + + $sql = "UPDATE shop_product SET price='$price', compare_price='$price', min_price='$price', max_price='$price', name='$name' + WHERE (id='$idupdate');"; + + + echo "Update: ".$k2->db->exec($sql)."\n"; + + + // Вставка наличия товаров + $sql="UPDATE shop_product_skus SET price='$price', primary_price='$price', purchase_price='$price', compare_price='$price', sku='$id', available='1' + WHERE product_id='$idupdate';"; + + echo $sql."\n"; + + try { + echo "UPDATE Avaiable: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Update Avaiable : $id\n".$e->getMessage()."\n"; + } + + + } + + + function content(){ + $rez=$this->getData(); + return $rez; + } + + +} + diff --git a/k2shop/k2shop/app/cmd/import_agro.php b/k2shop/k2shop/app/cmd/import_agro.php new file mode 100644 index 0000000..2ca4ddc --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_agro.php @@ -0,0 +1,115 @@ +check_connect(); + } + + + // Структура CSV-файла для обмена с 1С: + // [0] => Array + // ( + // [0] => code_1c + // [1] => name + // [2] => edrpou + // [3] => inn + // [4] => tax_paper_number + // [5] => address_jur + // [6] => phone + // [7] => email + // [8] => bank_account + // [9] => bank_name + // [10] => mfo + // [11] => director_name + // [12] => director_posada + // [13] => company_type + // [14] => code_web + // ) + function exportFirmsFrom1C() + { + global $em, $k2; + $rez = ''; + + $file=nslashe($k2->rootdir.'/tmp/AgroSeproContacts.csv'); + + $arr=$this->loadCSVTable($file, $razd='|', $rows=0); + + $i=0; + foreach ($arr as $el){ + if ($i>0){ + + $firmSearch = $em->getRepository('K2firms')->findBy(['code1c'=>$el[0]]); + + + if ($firmSearch == []) { + + $firms = new K2firms(); + $firms->setCode1c($el[0]); + if (isset($el[1])) $firms->setNameFirm($el[1]); + if (isset($el[2])) $firms->setEdrpou($el[2]); + if (isset($el[3])) $firms->setIpn($el[3]); + if (isset($el[4])) $firms->setSvidnum($el[4]); + if (isset($el[5])) $firms->setAdressFirm($el[5]); + if (isset($el[6])) $firms->setPhoneFirm($el[6]); + if (isset($el[7])) $firms->setEmail($el[7]); + if (isset($el[8])) $firms->setRaschschet($el[8]); + if (isset($el[9])) $firms->setBankname($el[9]); + if (isset($el[10])) $firms->setMfo($el[10]); + if (isset($el[11])) $firms->setDirectorname($el[11]); + if (isset($el[12])) $firms->setDolgndir($el[12]); + if (isset($el[13])) $firms->setTypefirmid($el[13]); + + $em->persist($firms); + $em->flush(); + + $str_info=$el[0]; + if (isset($el[1])) $str_info.=' '.$el[1]; + if (isset($el[4])) $str_info.=' '.$el[4]; + if (isset($el[13])) $str_info.=' '.$el[13]; + echo $str_info."\n"; + echo "Create Firm ID=".$firms->getFirmid().".\n"; + + }else{ + echo "Find Firm 1CID=".$el[0].".\n"; + } + } + $i++; + } + + return $rez; + } + + + function content() + { + global $k2; + $rez=''; + + $this->exportFirmsFrom1C(); + + + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/cmd/import_agro_auto.php b/k2shop/k2shop/app/cmd/import_agro_auto.php new file mode 100644 index 0000000..ed807f4 --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_agro_auto.php @@ -0,0 +1,166 @@ +check_connect(); + } + + + // Структура CSV-файла I_MTP_GROUP_UKR для обмена: + // [0] => Array + // ( + // [1] => Назва групи + // [5] => kod_group + // ) + function exportGroupAuto() + { + global $em, $k2; + $rez = ''; + $file=nslashe($k2->rootdir.'/tmp/I_MTP_GROUP_UKR.csv'); + $arr=$this->loadCSVTable($file, $razd='|', $rows=0); + $i=0; + foreach ($arr as $el){ + $el[1]=iconv('windows-1251', 'UTF-8', $el[1]); + if ($i>0){ + // Строчка закачивалась, если совпадает название клиента и название машины + $find=$k2->sql->sel('SELECT * FROM agro_group_auto WHERE (kod_group=:kod_group);', ['kod_group'=>$el[5]]); + + //если данных нет то вставляем, если есть то обновляем + if ($find['data']==[]){ + $k2->sql->ins_arr(['table'=>'agro_group_auto', + 'fields'=>[ + 'kod_group'=>$el[5], + 'name_group'=>$el[1] + ] + ]); + } + } + $i++; + } + + return $rez; + } + + // Структура CSV-файла I_MTP_VID_FINAL для обмена: + // [0] => Array + // ( + // [0] => vid_id + // [13] => group_id + // [19] => назва + // ) + function exportVidAuto() + { + global $em, $k2; + $rez = ''; + $file=nslashe($k2->rootdir.'/tmp/I_MTP_VID_FINAL.csv'); + $arr=$this->loadCSVTable($file, $razd='|', $rows=0); + $i=0; + + foreach ($arr as $el){ + $el[19]=iconv('windows-1251', 'UTF-8', $el[19]); + + if ($i>0){ + // Строчка закачивалась, если совпадает название клиента и название машины + $find=$k2->sql->sel('SELECT * FROM agro_vid_auto WHERE (vid_id=:vid_id);', ['vid_id'=>$el[0]]); + //если данных нет то вставляем, если есть то обновляем + if ($find['data']==[]){ + $k2->sql->ins_arr(['table'=>'agro_vid_auto', + 'fields'=>[ + 'vid_id'=>$el[0], + 'kod_group'=>$el[13], + 'name_vid'=>$el[19] + ] + ]); + } + } + $i++; + } + + return $rez; + } + + // Структура CSV-файла I_MTP_MARKA_FINAL для обмена: + // [0] => Array + // ( + // [0] => marka_id + // [52] => type_spec_vid + // [22] => Назва марки + // ) + function exportMarkaAuto() + { + global $em, $k2; + $rez = ''; + + $file=nslashe($k2->rootdir.'/tmp/Mar.csv'); + + $arr=$this->loadCSVTable($file, $razd='|', $rows=0); + + $i=0; + + + // print_r($arr); + foreach ($arr as $el){ + if ($i>0){ + $el[56]=iconv('windows-1251', 'UTF-8', $el[56]); + $el[0] = trim($el[0], '"'); + // Строчка закачивалась, если совпадает название клиента и название машины + $find=$k2->sql->sel('SELECT * FROM agro_marka_auto WHERE (marka_id=:marka_id);', ['marka_id'=>$el[0]]); + + //если данных нет то вставляем, если есть то обновляем + + if ($find['data']==[]){ + $k2->sql->ins_arr(['table'=>'agro_marka_auto', + 'fields'=>[ + 'marka_id'=>$el[0], + 'vid_id'=>$el[53], + 'name_marka'=>$el[56] + ] + ]); + } + } + $i++; + + + } + + return $rez; + + + } + + + function content() + { + global $k2; + $rez=''; + + //$this->exportGroupAuto(); + //$this->exportVidAuto(); + //$this->exportMarkaAuto(); + + + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/cmd/import_agro_zavod.php b/k2shop/k2shop/app/cmd/import_agro_zavod.php new file mode 100644 index 0000000..dd29043 --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_agro_zavod.php @@ -0,0 +1,119 @@ +check_connect(); + } + + + // Структура CSV-файла I_TBLREGIONS для обмена: + // [0] => Array + // ( + // [2] => id_region_kod + // [3] => Регіон + // ) + function exportRegion() + { + global $em, $k2; + $rez = ''; + $file=nslashe($k2->rootdir.'/tmp/I_TBLREGIONS.csv'); + $arr=$this->loadCSVTable($file, $razd='|', $rows=0); + $i=0; + print_r($arr); + foreach ($arr as $el){ + $el[3]=iconv('windows-1251', 'UTF-8', $el[3]); + if ($i>0){ + // Строчка закачивалась, если совпадает название клиента и название машины + $find=$k2->sql->sel('SELECT * FROM agro_region_zavod WHERE (id_region=:id_region);', ['id_region'=>$el[2]]); + + //если данных нет то вставляем, если есть то обновляем + if ($find['data']==[]){ + $k2->sql->ins_arr(['table'=>'agro_region_zavod', + 'fields'=>[ + 'id_region'=>$el[2], + 'region'=>$el[3] + ] + ]); + } + } + $i++; + } + + return $rez; + } + + // Структура CSV-файла i_tbldepartment для обмена: + // [0] => Array + // ( + // [0] => record_id + // [1] => id_region_kod + // [4] => Виробник + // ) + function exportZavod() + { + global $em, $k2; + $rez = ''; + $file=nslashe($k2->rootdir.'/tmp/i_tbldepartment.csv'); + $arr=$this->loadCSVTable($file, $razd='|', $rows=0); + $i=0; + + foreach ($arr as $el){ + $el[4]=iconv('windows-1251', 'UTF-8', $el[4]); + + if ($i>0){ + // Строчка закачивалась, если совпадает название клиента и название машины + $find=$k2->sql->sel('SELECT * FROM agro_zavod WHERE (id_zavod=:id_zavod);', ['id_zavod'=>$el[0]]); + //если данных нет то вставляем, если есть то обновляем + if ($find['data']==[]){ + $k2->sql->ins_arr(['table'=>'agro_zavod', + 'fields'=>[ + 'id_zavod'=>$el[0], + 'id_region'=>$el[1], + 'zavod'=>$el[4] + ] + ]); + } + } + $i++; + } + + return $rez; + } + + + + + function content() + { + global $k2; + $rez=''; + + //$this->exportRegion(); + $this->exportZavod(); + + + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/cmd/import_docs.php b/k2shop/k2shop/app/cmd/import_docs.php new file mode 100644 index 0000000..8c15212 --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_docs.php @@ -0,0 +1,293 @@ +check_connect(); + } + + //старая функция обработки оплаченных счетов +// function payed(){ +// global $k2, $edoc; +// $typedocid = 3; +// $docpref = "dpv"; +// $doc = $k2->ins_comp('k2edocs', 'doc'); +// +// $filename=$k2->rootdir.'/upload/SplRahunki.csv'; +// +// $k2->addLog("Читаем $filename", 'import_doc.log'); +// +// $data=file_get_contents($filename); +// $data=iconv('windows-1251', 'UTF-8',$data); +// $arr=explode("\n", $data); +// foreach ($arr as $key) { +// if (trim($key)<>''){ +// list($prefdocnum, $docdate)=explode("|", $key); +// +// +// $prefdocnum=trim($prefdocnum); +// +// //убираем префикс dpr +// $docnum = substr($prefdocnum, 4); +// +// +// //убираем пробелы +// $docnum=trim($docnum); +// $docdate=trim($docdate); +// +// //получаем число +// $docnum=intval($docnum); +// +// +// //проверка на наличие проплаты по данному номеру +// $idupdate=$this->search_payed($docnum); +// +// +// +// if($idupdate==null){ +// +// //изменение поля "Оплатить" +// $k2->db->exec("UPDATE k2docs SET is_payed = 1 WHERE (docnum='$docnum')"); +// +// //создание новой записи в базе на основании существующего счета +// //и получение id нового документа +// $maxid=$doc->createDocNaOsn($docnum); +// +// //получение следующего номера накладной +// $numvd=$doc->nextDocNum($typedocid); +// +// $numvd = $numvd['docnum']; +// +// //изменение данных в созданной записи +// $k2->db->exec("UPDATE k2docs SET docdate = '$docdate', docnum = '$numvd', docpref = '$docpref', typedocid = $typedocid, osndprnum = '$docnum', is_payed = 1" +// . " WHERE (docid=$maxid)"); +// +// $sql="select docid from k2docs where typedocid=2 and docnum =".$docnum; +// +// //создание документа движения +// foreach($k2->db->query($sql) as $docid){ +// $docid = $docid['docid']; +// $sql2 = "insert into k2dvig (docid, tovid, edizmid, kol, cena, summa) +// select '.$maxid.', tovid, edizmid, kol, cena, summa from k2dvig +// where `docid` = $docid"; +// $k2->db->exec($sql2); +// } +// }else{ +// +// } +// +// } +// } +// } +// +// function search_payed($docnum){ +// +// global $k2; +// +// $sql = "SELECT is_payed FROM k2docs WHERE docnum =".$docnum; +// +// $res=null; +// +// foreach ($k2->db->query($sql) as $row) { +// $res=$row['is_payed']; +// +// } +// +// return $res; +// } + + /** + * Функция обработки опаченных накладных + * @global type $k2 + * @global type $edoc + */ + function insSplNakl() + { + global $k2, $edoc; + $rez = ''; + $doc = $k2->ins_comp('k2edocs', 'doc'); + + $filename=$k2->rootdir.'/upload/Nakladni.csv'; + + $k2->addLog("Читаем $filename", 'import_doc.log'); + + $data=file_get_contents($filename); + $data=iconv('windows-1251', 'UTF-8',$data); + $arr=explode("----------", $data); + + foreach ($arr as $key) { + + if (trim($key)<>''){ + + //Убираем лишние символы + $row_data = substr(trim($key), 10); + + + //Отделяем заголовок накладной от тела + $arr_nakl = explode("##########", $row_data); + + $head_nakl = $arr_nakl[0]; + $arr_head = explode("|", $head_nakl); + + + //Присваиваем переменным значения из массива + list($year, $month, $day, $nakl_num, $rah_num, , , , + $docsum, $name_firm, $typefirmname, $edrpou, + $ipn, $svidnum, $adress_firm, $phone_firm, $email, $codfil) = $arr_head; + + //получение номера счета + $docnum = substr($rah_num, 4); + + //проверка на наличие проплаты по данному номеру + $idupdate = $this->isRahPayed($docnum); + + $docdate = $year.'-'.$month.'-'.$day; + + if($idupdate == 0){ + + $this->doPay($docnum); + + //создание новой записи в базе на основании существующего счета + //и получение id нового документа + $maxid = $doc->createDocNaOsn($docnum); + + $numvd = substr($nakl_num, 4); + + //обновления накладной на основании счета + try { + $sql = "UPDATE k2docs SET docdate = '$docdate', docnum = '$numvd', docpref = '$this->docpref', typedocid = $this->typedocid, osndprnum = '$docnum', is_payed = 1 + WHERE (docid=$maxid)"; + $k2->db->exec($sql); + } catch (PDOException $e) { + echo "Ошибка обновления накладной на основании счета = $docnum: $sql\n"; + echo $e->getMessage(); + } + + $this->searchRah($docnum, $maxid); + + } + } + } + return $rez; + } + + /** + * Фиксация проплаты по счету + * @global type $k2 + * @param type $docnum + * @return string + */ + function doPay($docnum) + { + global $k2; + $rez = ''; + try { + $sql = "UPDATE k2docs SET is_payed = 1 WHERE (docnum='$docnum')"; + $k2->db->exec($sql); + } catch (PDOException $e) { + echo "Ошибка вставки проплаты: $sql\n"; + echo $e->getMessage(); + } + return $rez; + } + + /** + * Поиск нужного счета и запуск создания документа движения + * @global type $k2 + * @param type $docid + * @param type $maxid + * @return string + */ + function searchRah($docnum, $maxid) + { + global $k2; + $rez = ''; + try { + $sql="SELECT docid from k2docs WHERE typedocid=2 and docnum =".$docnum; + //создание документа движения + foreach($k2->db->query($sql) as $row){ + $docid = $row['docid']; + $this->insDvigDoc($docid, $maxid); + } + } catch (PDOException $e) { + echo "Ошибка выборки номера счета: $sql\n"; + echo $e->getMessage(); + } + return $rez; + } + + /** + * Создание документа движения + * @global type $k2 + * @param type $docid + * @param type $maxid + * @return type + */ + function insDvigDoc($docid, $maxid) + { + global $k2; + $rez=''; + try { + $sql = "INSERT into k2dvig (docid, tovid, edizmid, kol, cena, summa) + SELECT '.$maxid.', tovid, edizmid, kol, cena, summa from k2dvig + WHERE `docid` = $docid"; + $k2->db->exec($sql); + } catch (PDOException $e) { + echo "Ошибка вставки информации о контакте: $sql\n"; + echo $e->getMessage(); + } + return $rez; + } + + /** + * Проверка проплаты по счету + * @global type $k2 + * @param type $docnum + * @return type + */ + function isRahPayed($docnum) + { + + global $k2; + $rez=1; + + try { + $sql = "SELECT is_payed FROM k2docs WHERE typedocid=2 and docnum =".$docnum; + foreach ($k2->db->query($sql) as $row) { + $rez = $row['is_payed']; + } + } catch (PDOException $e) { + echo "Ошибка выборки id компании: $sql\n"; + echo $e->getMessage(); + } + return $rez; + } + + function content() + { + global $k2; + $k2->addLog('Запуск импорта документов import_doc', 'import_doc.log'); + $rez=$this->insSplNakl(); + $k2->addLog('Конец импорта документов import_doc', 'import_doc.log'); + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/cmd/import_iname.php b/k2shop/k2shop/app/cmd/import_iname.php new file mode 100644 index 0000000..4a6f027 --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_iname.php @@ -0,0 +1,315 @@ +check_connect(); + } + + //Парсинг на группы + function getData() { + + $html = file_get_contents('http://iname.ua/price/'); + + $arr=array( array('', $this->catid1), + array('', $this->catid2), + array('', $this->catid3), + array('', $this->catid4) + ); + + $arrid=0; + //$i=0; + while (trim($html)<>'') { + + + $s=strpos($html, ''); + + if ($s==FALSE){ + $html=''; + break; + + } else{ + + $html=substr($html, $s+strlen('')); + $s=strpos($html, ''); + $arr[$arrid][0]=substr($html, 0, $s+strlen(''+1)); + $html=substr($html, $s+strlen('')); + + $arrid++; + } + + } + + // разбивка на массивы работает + //echo $arr[0][0]; + + // Парсинг + for ($i=0;$i<=3;$i++){ + $this->parsing($arr[$i]); + } + + } + + + // Парсинг таблицы на строки + function parsing($arr){ + + $data = $arr[0]; + while (trim($data)<>'') { + + + $a=strpos($data, ''); + $rowinp=substr($data, 0, $a+1); + $data=substr($data, $a+strlen('')); + + //echo $rowinp; + + $this->parsing_row($rowinp,$arr[1]); + + } + + } + + } + + + //очистка строки от лишних символов + function clear_value($strinp){ + + $s=$strinp; + $s=strip_tags($s); + $s=trim(str_replace("\n",'',$s)); + $s=trim(str_replace("грн.",'',$s)); + + return $s; + + } + + //Парсинг строки + function parsing_row($rowinp, $catid){ + + $arr2=array(); + + $arrid2=0; + + while (trim($rowinp)<>'') { + + + $e=strpos($rowinp, 'style="">'); + + if ($e==FALSE){ + $rowinp=''; + continue; + } else{ + + $rowinp=substr($rowinp, $e+strlen('style="">')); + + $e=strpos($rowinp, ''); + + $arr2[$arrid2]=$this->clear_value(substr($rowinp, 0, $e)); + $rest=substr($rowinp, $e+strlen('')); + + $arrid2++; + } + + } + + //Присваиваем параметры для вставки в базу + + + if (count($arr2)==5){ + + $name=$arr2[0]; + $price=$arr2[3]; + $desc=$arr2[4]; + + if (trim($arr2[4])<>''){ + $desc='
'; + } + $desc='Минимальный срок регистрации: '.$arr2[1].'
' + .'Максимальный срок регистрации: '.$arr2[2].'
'; + + } elseif(count($arr2)==6){ + $name=$arr2[0]; + $price=$arr2[4]; + $desc=$arr2[5]; + + if (trim($arr2[5])<>''){ + $desc='
'; + } + $desc='Страна: '.$arr2[1].'
' + .'Минимальный срок регистрации: '.$arr2[2].'
' + .'Максимальный срок регистрации: '.$arr2[3].'
'; + + + }else{ + //echo "\n".'parsing_row(). Не соответствует количество столбцов: '.count($arr2)."\n"; + return; + } + + + $this->save_row($name, $price, $desc, $catid); + + } + + + // Вставляет в базу + // $name - название номенклатуры + // $price - цена + // $desc - описание + function save_row($name, $price, $desc, $catid){ + + //echo 'name='.$name; + //echo 'price='.$price; + //echo 'desc='.$desc; + //echo "\n"; + + $idupdate=$this->serch_product($name); + + echo "idupdate: $idupdate \n"; + + if ($idupdate==null){ + $this->insert($name, $price, $desc, $catid); + }else{ + $this->update($name, $price, $desc, $idupdate); + } + + + } + + function serch_product($name){ + + global $k2; + + $sql = "SELECT s.id FROM shop_product s WHERE s.k2type_import='iname' and s.k2keyimport='$name';"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['id']; + } + + return $res; + + } + + function insert ($name, $price, $desc, $catid) { + + global $k2; + + // Генерируем следующий id + $sql='select max(id) as maxid from shop_product;'; + + $nextid=0; + + foreach ($k2->db->query($sql) as $row) { + $nextid=$row['maxid']+1; + } + + + //echo "$nextid=".$nextid."\n"; + + $name_prod="Регистрация домена".' '.trim($name); + + + // Вставка товара + $sql = "INSERT INTO shop_product (id, k2keyimport, name, price, k2type_import, category_id, url,status, currency,meta_title, meta_keywords, meta_description, description) + VALUES ($nextid, '$name', '$name_prod', '$price', 'iname','".$catid."','".$k2->sys->chpu($name,$nextid)."',1, 'UAH', '$name', '$name', '$name', '$desc')"; + + + echo $sql."\n"; + + echo "Insert: $name ".$k2->db->exec($sql)."\n"; + + + // Вставка группы товара + $sql="INSERT INTO shop_category_products(product_id,category_id,sort) + VALUES('$nextid','".$catid."','$nextid')"; + + try { + echo "Insert Group: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Insert Group: $name".$nextid."\n".$e->getMessage()."\n"; + } + + + //Вставка наличия товаров + $sql="INSERT INTO shop_product_skus(product_id,sort,price,primary_price,purchase_price,compare_price,available,file_size,virtual) + VALUES('$nextid','1','$price','$price','$price','$price','1','0','0')"; + + try { + echo "Insert Avaiable: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Insert Avaiable: $name".$nextid."\n".$e->getMessage()."\n"; + } + + } + + function update($name, $price, $desc, $idupdate) { + + global $k2; + + //$sql = "UPDATE shop_product SET price='$price', name='$name' + // WHERE id='$idupdate';"; + + $sql = "UPDATE shop_product SET price='$price', compare_price='$price', min_price='$price', max_price='$price', name='$name' WHERE (id='$idupdate');"; + + + + echo "Update: ".$k2->db->exec($sql)."\n"; + + + // Вставка наличия товаров + $sql="UPDATE shop_product_skus SET price='$price', primary_price='$price', purchase_price='$price', compare_price='$price', available='1' WHERE product_id='$idupdate';"; + + echo $sql."\n"; + + try { + echo "UPDATE Avaiable: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Update Avaiable : $name\n".$e->getMessage()."\n"; + } + + + } + + + function content(){ + $rez=$this->getData(); + + return $rez; + } + + +} + diff --git a/k2shop/k2shop/app/cmd/import_litres.php b/k2shop/k2shop/app/cmd/import_litres.php new file mode 100644 index 0000000..5c1222f --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_litres.php @@ -0,0 +1,894 @@ +resize = $k2->ins_comp('k2image_resize'); + $k2->check_connect(); + } + + + + function getData() { + + global $k2; + + + echo "Импорт Litres...\n"; + + /* + // Загрузка файла из интернет + try{ + $xml = file_get_contents($this->url_xml); + }catch(PDOException $e) { + echo "Error getData().file_get_contents().".$this->url_xml."\n"; + echo $e->getMessage(); + } + + + + // Конвертируем в UTF-8 + if ($this->is_convert){ + $xml = iconv('windows-1251', 'UTF-8', $xml); + } + + // Сохраняем в файл на диске + try{ + $putfile=$k2->rootdir.'/k2shop/k2shop/upload/softkey_market_ua.xml'; + + if ($this->is_debug){ + file_put_contents($putfile,$xml); + } + }catch(PDOException $e) { + echo "Error getData().file_put_contents().".$putfile."\n"; + echo $e->getMessage(); + } + + + // Обработка xml + try{ + $this->xml = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); + //simplexml_load_file($putfile); + }catch(PDOException $e) { + echo "Error getData().simplexml_load_file().".$this->url_xml."\n"; + echo $e->getMessage(); + } + + echo "savetofile=$putfile\n"; + + $this->addCategories(); + $this->addGoods(); + */ + } + + // Обрабатываются категории + function addCategories(){ + /* + $this->xml; + foreach($this->xml->shop->categories->category as $b) { + + $idupdate=$this->SearchCategories($b->attributes()['id'], $b['0']); + + echo "idcat=$idupdate\n"; + + if ($idupdate==null){ + $this->InsertCategories($b->attributes()['id'], $b, $b->attributes()['parentId']); + } + } +*/ + } + + + function SearchCategories($id, $name){ + /* + global $k2; + + $sql = "SELECT s.id FROM shop_category s WHERE ((s.k2type_import='".$this->import_label."') and (s.k2keyimport='$id'));"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['id']; + } + + return $res; +*/ + } + + function InsertCategories($id, $name, $parentid){ + global $k2; + +/* // Генерируем следующий id + $sql='select max(id) as maxid from shop_category;'; + + $nextid=0; + + foreach ($k2->db->query($sql) as $row) { + $nextid=$row['maxid']+1; + } + + $myparentid='0'; + + + if ((trim($parentid)<>'')and(trim($parentid)<>'0')){ + + $sql2="SELECT s.id as id + FROM shop_category s + WHERE (s.k2keyimport='$parentid') + and(s.k2type_import='".$this->import_label."')"; + + try { + + echo "search_sql=$sql2\n"; + + foreach ($k2->db->query($sql2) as $row2){ + $myparentid=$row2['id']; + + echo "\nmyparentid=$myparentid\n"; + + } + + }catch (Exception $e) { + echo "Error Select: ".$e->getMessage()."\n"; + } + + $depth=1+$this->depthroot; + + }else{ + $myparentid=$this->rootid; + $depth=0+$this->depthroot; + } + + + // Вставка категорий + $url=$k2->sys->chpu($name,$nextid); + + $sql = "INSERT INTO shop_category (id, k2keyimport, name, parent_id, k2type_import, url, full_url, depth) + VALUES ($nextid, '$id', '$name', '$myparentid', '".$this->import_label."','$url','$url','$depth')"; + + + try{ + echo "Будет SQL: $sql \n"; + echo "Insert Category: myid=$nextid, softkeyid=$id, name=$name\n sql=$sql \n".$k2->db->exec($sql)."\n"; + }catch(PDOException $e) { + echo "Error Insert Category: $sql\n"; + echo $e->getMessage(); + } + +*/ + + } + + + // Изменение категории + function UpdateCategories($id, $name, $parentid){ + global $k2; + + + } + + // Обрабатываются товары + function addGoods(){ +/* + foreach($this->xml->shop->offers->offer as $a) { + //echo $a->attributes()['id']."\n"; + //echo $a->attributes()['available']."\n"; + //echo $a->url."\n"; + //echo $a->price."\n"; + //echo $a->categoryId[0]."\n"; + //echo $a->categoryId[1]."\n"; + //echo $a->picture."\n"; + //echo $a->name."\n"; + //echo $a->description."\n"; + //echo $a->sales_notes."\n"; + + //var_dump($a->description); + //print_r($a->description); + //print_r($a); + // break; + + $idupdate=$this->SearchGoods($a->attributes()['id']); + + echo "idtov=$idupdate \n"; + + + if ($idupdate==null){ + $this->InsertGoods($a); + }else{ + $this->UpdateGoods($a->name, $a->price, $a->description, $idupdate, $a); + } + + //return ""; + + } +*/ + } + + //поиск id в товарах по id партнера + function SearchGoods($id){ +/* + global $k2; + + $sql = "SELECT s.id FROM shop_product s WHERE s.k2type_import= '".$this->import_label."' and s.k2keyimport='$id';"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['id']; + } + + return $res; + +*/ + } + + + //поиск id в категориях по id партнера + function SearchCat($id) { +/* + global $k2; + + $sql ="SELECT s.id FROM shop_category s WHERE (s.k2keyimport='$id') and (s.k2type_import='".$this->import_label."')"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['id']; + } + + return $res; +*/ + } + + + function addurl($url){ + return 'http://www.softkey.ua'.$url.'&progdesc=long&print=Y'; + } + + + function URL($url){ + return ''; + } + + function GetUrl($content, $url, $startpos=0){ +/* + $pos = strpos($content, '#program', $startpos); + + if ($pos<>FALSE){ + + $i = $pos-1; + while ($content{$i}<>'"'){ + $i--; + + } + + $endpos = $pos-1; + + $url2 = substr($content, $i+1, $endpos-$i); + + $pos2=strpos($url2,'/catalog/program'); + + if (($pos2==FALSE)and(trim($url2)<>'')){ + $urltmp=$this->GetUrl($content, $url, ($pos+strlen('#program')+1)); + if (trim($urltmp)<>'') $url2=$urltmp; + } + + + return $url2; + + + }else{ + if ($startpos==0) { + echo 'Not Found: '.$id."\n"; + } + } +*/ + } + + + function GetContentSoftkey($url) { + return ''; + } + + + + function GetDesc($data) { +/* + $startpos = strpos($data, '

'); + $endpos = strpos($data, ''); + $desc = substr($data, $startpos, $endpos-$startpos); + + $desc = trim($desc); + + return $desc; + + } + + + // Блокировать спец-символы + function blockSym($strinp){ + + $rez=trim(str_replace("'", "''", $strinp)); + + return $rez; + */ + } + + + function InsertGoods($a){ +/* + global $k2; + + // Генерируем следующий id + $sql='select max(id) as maxid from shop_product;'; + + $nextid=0; + + foreach ($k2->db->query($sql) as $row) { + $nextid=$row['maxid']+1; + } + + + // Вставка товара + $catid = $this->SearchCat($a->categoryId[0]); + + $url=$this->URL($a->url); + + if ($this->descript_from_xml){ + $description=$a->description; + }else{ + $description=$this->GetContentSoftkey($url); + } + + + $sql = "INSERT INTO shop_product (id, k2keyimport, name, meta_description, meta_title, price, k2type_import, category_id, url, status, currency, description, meta_keywords, image_filename, k2import_url) + VALUES ('$nextid', '".trim($a->attributes()['id'])."', '".$this->blockSym($a->name)."', '".$this->blockSym($a->name)."', '".$this->blockSym($a->name)."', '".trim($a->price)."', '".$this->import_label."','".trim($catid)."','".$k2->sys->chpu($this->blockSym($a->name), $nextid)."','1', 'UAH', '".$this->blockSym($description)."','".$this->blockSym($a->keywords)."', '1', '".$this->blockSym($a->url)."')"; + + echo "Insert Tov SQL $sql \n"; + echo "Insert Tov: $catid, ".$a->name." \n ".$k2->db->exec($sql)."\n"; + + + // Вставка группы товара + foreach ($a->categoryId as $c) { + $catid = $this->SearchCat($c); + $sql="INSERT INTO shop_category_products(product_id,category_id,sort,k2keyimport,k2type_import) + VALUES('$nextid','".$catid."','$nextid', '".trim($a->attributes()['id'])."', '".$this->import_label."')"; + + + try { + echo "Insert CatTov: $sql \n"; + echo "Insert CatTov: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error SQL Insert GroupTov: $sql \n"; + echo "Error Insert GroupTov: ".$a->name." ".$nextid."\n".$e->getMessage()."\n"; + } + + + } + + + //Вставка наличия товаров + $sql="INSERT INTO shop_product_skus(product_id,sort,price,primary_price,purchase_price,compare_price,available,file_size,virtual,k2keyimport,k2type_import) + VALUES('$nextid','1','".trim($a->price)."','".trim($a->price)."','".trim($a->price)."','".$a->price."','1','0','0', '".trim($a->attributes()['id'])."', '".$this->import_label."')"; + + + try { + echo "Insert TovSkus: $sql \n"; + echo "Insert TovSkus: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error SQL Insert Tov: $sql \n"; + echo "Error Insert Tov: ".$nextid."\n".$e->getMessage()."\n"; + } + + */ + } + + + function UpdateGoods($name, $price, $desc, $idupdate, $a){ + + global $k2; + /* + $sql = "UPDATE shop_product SET price='$price', compare_price='$price', min_price='$price', max_price='$price', name='".$this->blockSym($name)."', urlsrc='".trim($a->url)."', urlpic='".trim($a->picture)."' + WHERE (id='$idupdate');"; + + + echo "UpdatSQL: $sql\n"; + + echo "Update: ".$k2->db->exec($sql)."\n"; + + + // Вставка наличия товаров + $sql="UPDATE shop_product_skus SET price='$price', primary_price='$price', purchase_price='$price', compare_price='$price', available='1' + WHERE product_id='$idupdate';"; + + echo 'UpdateSQL: '.$sql."\n"; + + try { + echo "UPDATE Avaiable: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Update Avaiable : $name\n".$e->getMessage()."\n"; + } + +*/ + } + + + + // Граббинг изображений + function grabImage(){ + $rez=''; + return $rez; + } + + + + // Извлечение контента + function getURLContent($url){ +/* $content = file_get_contents($url); + + $url2=$this->GetUrl($content, $url); + $rez=$url=$this->addurl($url2); + return $rez; + + */ + } + + + // Получаем контент + function GetContentSoftkeyContent($url) { +/* + try { + $data = file_get_contents($url); + } + catch(PDOException $e) { + echo $e->getMessage()."\n"; + echo "url=$url\n"; + } + + + return $this->GetDesc($data); + + */ + } + + + + // Обновление описания + function setContent($id, $content){ + global $k2; +/* + if (trim($id)=='') exit; + + $sql = "update shop_product set description='".$this->blockSym($content)."', obrabot_grabber='1' where (id='$id')"; + + echo $content."\n id=$id \n"; + + try{ + echo "Update Content: ".$k2->db->exec($sql)."\n"; + }catch(PDOException $e) { + echo "Error Update Content: $sql\n"; + echo $e->getMessage(); + } + */ + + } + + + + // Граббинг контента + function gabContent(){ + global $k2; +/* + $rez=''; + $rez.="Граббинг контента..."; + + + $sql = "select id, urlsrc from shop_product where (trim(urlsrc)<>'')and(obrabot_grabber=0)"; + + + + + foreach ($k2->db->query($sql) as $value) { + + $url=$this->getURLContent($value['urlsrc']); + $description=$this->GetContentSoftkeyContent($url); + + $this->setContent($value['id'], $description); + + sleep(rand(1,5)); + } + + + return $rez; + + */ + } + + + + /////////////////////////////////////////////////////////////////////////// + // Серисные функции + /////////////////////////////////////////////////////////////////////////// + + + // Загрузка изображений из статического файла + function grabImageUpload(){ + + global $k2; +/* + // Обработка xml + try{ + $this->xml = simplexml_load_file($this->url_xml); + }catch(PDOException $e) { + echo "Error getData().simplexml_load_file().".$this->url_xml."/n"; + echo $e->getMessage(); + } + + + // Извлекаю xml + foreach($this->xml->shop->offers->offer as $a) { + + $pic=$a->picture; + + if (trim($pic)<>''){ + + $pic=str_replace('softkey.ua', 'softkey.ru', $pic); + + $fileto=$k2->rootdir."/img/sk_".$a->attributes()['id'].'.'.$this->new_ext; + + if (!file_exists($fileto)){ + $cmd="convert $pic $fileto"; + echo $cmd."\n"; + shell_exec($cmd); + + if ($this->pause){ + sleep(rand(1,3)); + } + } + + + } + + } + + */ + + } + + + + // Возвращает название файла Softkey, сохраненного у нас локально на диске + function getMySoftkeyImage($product_id, $isabsolute=true){ + global $k2; +/* $rez=''; + + if ($isabsolute){ + $rez=$k2->rootdir; + } + + $rez.="/img/sk_".$product_id.'.'.$this->new_ext; + + return $rez; + + */ + } + + + + + // Вставка изображения в базу данных + function insImageDB($product_id, $k2keyimport){ + global $k2; +/* $rez=''; + + $filename=$this->getMySoftkeyImage($k2keyimport); + + echo 'filename='.$filename."\n"; + + if (!file_exists($filename)){ + return ''; + } + + $size= filesize($filename); + $size_foto_px=getimagesize($filename); + + $width=$size_foto_px[0]; + $height=$size_foto_px[1]; + + $origfilename=$k2keyimport.'.'.$this->new_ext; + + $sql="INSERT INTO shop_product_images(product_id,upload_datetime,width,height,size,original_filename,ext) + VALUES('$product_id',now(),'$width','$height','$size','$origfilename','".$this->new_ext."')"; + + + try { + + echo $sql."\n"; + echo "Insert Image: ".$k2->db->exec($sql)."\n"; + $rez=$k2->db->lastInsertId(); + }catch (Exception $e) { + echo "Error Insert Image: $product_id \n".$e->getMessage()."\n"; + } + + + + return $rez;*/ + } + + + // Выполняет sql на позициях + function setProdductImage($product_id, $imageid){ + global $k2; + +/* $sql="UPDATE shop_product SET image_id=$imageid, ext='".$this->new_ext."', image_filename='' WHERE id=$product_id "; + + try { + echo "Update Product: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Update Product: $product_id \n".$e->getMessage()."\n"; + } + */ + + } + + + + // Добавлет изображение, если его нет + function addImageInfo($product_id, $imageid, $k2keyimport){ + global $k2; + +/* echo "addImageInfo($product_id, $imageid, $k2keyimport)\n"; + + if (trim($product_id)==''){ + echo "ID продукта пуст. Выходим из процедуры.\n"; + return ''; + } + + $id=trim($product_id); + + if (strlen($id)<4){ + $id2=str_pad(substr($id,1,2),2,'0',STR_PAD_LEFT); + }else{ + $id2=str_pad(substr(str_pad($id,"0",STR_PAD_LEFT),2,2),2,'0',STR_PAD_LEFT); + } + + $id1=str_pad(substr(str_pad($id,4,"0",STR_PAD_LEFT),0,2),2,'0',STR_PAD_LEFT); + + + //echo "Не найдено изображений в $product_id. Будем добавлять... \n"; + // /wa-data/protected/shop/products/70/29/22970/images/2721.png + + if ($imageid==''){ + $imageid=$this->insImageDB($product_id, $k2keyimport); + + if ($imageid=='') return ''; + } + + + $dir=$k2->rootdir."/wa-data/protected/shop/products/$id2/$id1/$id/images/"; + echo "makedir=$dir\n"; + $k2->sys->forceDir($dir); + + $filename_src=$this->getMySoftkeyImage($k2keyimport); + + if (!file_exists($filename_src)){ + return ''; + } + + + $filename_ds=$dir.$imageid.'.'.$this->new_ext; + + + echo 'filename='.$filename_ds."\n"; + + if (!file_exists($filename_src)){ + echo "Исходного файла нет, поэтому выходим: $filename_src\n"; + return ""; + } + + + + if (!file_exists($filename_ds)){ + echo "Копируем файл из $filename_src в $filename_ds \n"; + + if (!copy($filename_src, $filename_ds)) { + echo "Не удалось скопировать $filename_src...\n"; + }else{ + + } + } + + // Создаем уменьшенные копии + $dir2=$k2->rootdir."/wa-data/public/shop/products/$id2/$id1/$id/images/$imageid/"; + $k2->sys->forceDir($dir2); + + + //public $sizes=array('0x220','0x320','200','200x0','48x48','750','750x0','96x96','970'); + + + foreach ($this->sizes as $s) { + $size=explode('x', $s); + + if (count($size)==0){ + if (trim($s)==''){ + continue; + }else{ + $size[0]=$s; + } + } + + if (count($size)==1){ + $size[1]=$size[0]; + } + + $filename=$dir2."$imageid.$s".".".$this->new_ext; + + echo "Файл изображения: $filename\n"; + + if (!file_exists($filename)){ + echo "Создаем...\n"; + }else{ + echo "Есть в наличии. Перегенерируем.\n"; + } + + $this->resize->resizeto($filename_src, $filename, $size[0], $size[1]); + + } + + // Пометка в базе данных номенклатуры + $this->setProdductImage($product_id, $imageid); + + + //$k2->sys->forceDir($dir) + + */ + + + } + + + + + + + // Получает из базы информацию о изображении + function getImageInfo($product_id, $k2keyimport){ + global $k2; +/* $sql = "SELECT si.id as id, ext FROM shop_product_images si WHERE (not (si.product_id is null))and(si.product_id=$product_id)"; + + $rez=''; + $id=''; + foreach ($k2->db->query($sql) as $row) { + $id=trim($row['id']); + } + + echo "getImageInfo($product_id,$k2keyimport)\n"; + + //if (trim($id)==''){ + $this->addImageInfo($product_id, $id, $k2keyimport); + //} + + + return $rez; + */ + } + + + + + + + // Устанавивает картинки ShopScript + function setImageShopScript(){ + global $k2; +/* + $sql = 'SELECT p.id, p.name, p.url, p.price, p.description, p.category_id, p.ext, p.meta_keywords, p.k2type_import, p.k2keyimport + FROM shop_product p'; + + + foreach ($k2->db->query($sql) as $row) { + + + if (($row['k2type_import']==$this->import_label)and(trim($row['k2keyimport'])<>'')){ + + // Исходное изображение + $pic=$k2->rootdir."/img/sk_".$row['k2keyimport'].'.'.$this->new_ext; + + if (file_exists($pic)){ + + // \wa-data\protected\shop\products\06\03\306\images + // берем строку из shop_product_images (там кстати есть и оригинальные название фото) + // id: 1949 + // product_id: 1389 + // Идем в /wa-data/public/shop/products + // Ищем папку 89 + // В ней папку 13 + // Дальше видим папку 1389 + // в ней папка images + // и там фотки вида: 1949.размер.jpg + + // http://test.corp2.kiev.ua/wa-data/public/shop/products/70/29/22970/images/2721/2721.200x0.png + // /wa-data/protected/shop/products/70/29/22970/images/2721.png + // id product = 22970 + // id image = 2721 + + echo 'id='.$row['id']." | ".$row['name']." | ".$pic."\n"; + + $this->getImageInfo($row['id'], $row['k2keyimport']); + + //exit; + + } + + } + } + + echo "Процесс закончился\n"; + + */ + } + + + + function content(){ + + $grab_options = getopt("", array("g:")); + $rez=''; + + if (!isset($grab_options['g'])){ + $rez.=$this->getData(); + } + + + return $rez; + } + + + +} + +?> \ No newline at end of file diff --git a/k2shop/k2shop/app/cmd/import_nutrend.php b/k2shop/k2shop/app/cmd/import_nutrend.php new file mode 100644 index 0000000..7331252 --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_nutrend.php @@ -0,0 +1,239 @@ +check_connect(); + } + + + // Получение дерева групп товаров + function getCategory() { + + global $k2; + + $sql = 'SELECT * FROM shop_category c'; + // Выводим заголовок структуры + print "c.id|"; + print "c.name|"; + print "c.parent_id|\n"; + + // Выводим строки + foreach ($k2->db->query($sql) as $row) { + print $row['id'] . "|"; + print $row['name'] . "|"; + print $row['parent_id'] . "|\n"; + } + + } + + + function getProduct() { + + global $k2; + + $sql = 'SELECT p.id, p.name, p.url FROM shop_product p'; + // Выводим заголовок структуры + print "p.id|"; + print "p.name|"; + print "p.url|\n"; + + // Выводим строки + foreach ($k2->db->query($sql) as $row) { + print $row['id'] . "|"; + print $row['name'] . "|"; + print $row['url'] . "|\n"; + } + } + + + // Получает файл с прай-листом Nutrend + function getContent($isshow=false) { + + global $k2; + $options = getopt("", array("discount:")); + //echo $k2->rootdir.'/k2shop/upload/nutrend_ext_2015-10-26.csv'."\n"; + + //echo 'path='.$k2->rootdir.'/k2shop/k2shop/upload/nutrend.csv'; + + $data = file_get_contents($k2->rootdir.'/k2shop/k2shop/upload/nutrend.csv'); + $data = iconv('windows-1251', 'UTF-8', $data); + + + $arrData=explode("|", $data); + + $this->kurs_eur=$arrData[1]; + if(isset($options['discount'])){ + $this->discount=$options['discount']; + } + + //echo ($arrDate[1]); + $arr=explode("\n", $arrData[2]); + foreach ($arr as $key) { + + if (trim($key)<>''){ + list($id, $name, $price, $presence)=explode(";", $key); + + $id=trim($id); + $name=trim($name); + + if (trim($name)=='') continue; + + $price=str_replace(',', '.', $price); // Заменяю дробную часть + + //echo '!!!!!!!!!price='.$price."\n"; + + $price=(trim($price)-(trim($price)*$this->discount/100))*$this->kurs_eur; + + $price= round($price, 2); + + $presence=trim($presence); + + + + $idupdate=$this->serch_product($id); + + //echo "idupdate=$idupdate\n"; + + if ($idupdate==null){ + $this->insert($id, $name, $price, $presence); + }else{ + $this->update($id, $name, $price, $presence, $idupdate); + } + + + } + } + } + + + + function serch_product($id){ + + global $k2; + + $sql = "SELECT s.id FROM shop_product s WHERE s.k2type_import='nutrend' and s.k2keyimport='$id';"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['id']; + } + + return $res; + + } + + + + function insert ($id, $name, $price, $presence) { + + global $k2; + + // Генерируем следующий id + $sql='select max(id) as maxid from shop_product;'; + + $nextid=0; + + foreach ($k2->db->query($sql) as $row) { + $nextid=$row['maxid']+1; + } + + + echo "$nextid=".$nextid."\n"; + + + // Вставка товара + $sql = "INSERT INTO shop_product (id, k2keyimport, name, price, k2type_import, category_id, url,status, currency) + VALUES ($nextid, '$id', '$name', '$price', 'nutrend','".$this->catid."','".$k2->sys->chpu($name,$nextid)."',1, 'UAH')"; + + + + echo "Insert $id: ".$k2->db->exec($sql)."\n"; + + + // Вставка группы товара + $sql="INSERT INTO shop_category_products(product_id,category_id,sort) + VALUES('$nextid','".$this->catid."','$nextid')"; + + try { + echo "Insert Group $id: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Insert Group $id: ".$nextid."\n".$e->getMessage()."\n"; + } + + + // Вставка наличия товаров + $sql="INSERT INTO shop_product_skus(product_id,sort,price,primary_price,purchase_price,compare_price,available,file_size,virtual) + VALUES('$nextid','1','$price','$price','$price','$price','".$presence."','0','0')"; + + try { + echo "Insert Avaiable $id: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Insert Avaiable $id: ".$nextid."\n".$e->getMessage()."\n"; + } + + + + } + + function update ($id, $name, $price, $presence, $idupdate) { + + global $k2; + + //$sql = "UPDATE shop_product SET price='$price' + // WHERE (id='$idupdate');"; + + $sql = "UPDATE shop_product SET price='$price', compare_price='$price', min_price='$price', max_price='$price', name='$name' + WHERE (id='$idupdate');"; + + + + echo "Update $id: ".$k2->db->exec($sql)."\n"; + + + // Вставка наличия товаров + $sql="UPDATE shop_product_skus SET available='".$presence."', price='$price', primary_price='$price', purchase_price='$price', compare_price='$price' + WHERE (product_id='$idupdate');"; + + echo $sql."\n"; + + try { + echo "UPDATE Avaiable $id: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Update Avaiable id: $id\n".$e->getMessage()."\n"; + } + + + } + + + function content(){ + $rez=$this->getContent(); + return $rez; + } + + +} + diff --git a/k2shop/k2shop/app/cmd/import_privat.php b/k2shop/k2shop/app/cmd/import_privat.php new file mode 100644 index 0000000..8f8ea37 --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_privat.php @@ -0,0 +1,160 @@ +check_connect(); + } + + + // Загрузка банковских выписок из CSV + // Формат CSV формирутеся из веб-интерфейса банка. Открывается Excel-файл и сохраняется в CSV. + // Далее, закидывается по пути, указанному в upload_filename + // Предполагается вот такой формат полученного файла: + // ;;;;;;;;;;; + // ;;;;;;;;;;; + // №;Дата проводки;Время проводки;Сумма;;Валюта;Назначение платежа;ЕГРПОУ;Наименование контрагента;Счет контрагента;МФО контрагента;Референс + // 320;18.05.2018;14:37:00;46672,00;;UAH;Залишкова оплата 50% за 3D-вiзуалiзацiю та моделювання екстер'єру виробн. комплексу зг. рах. № 1536 вiд 18.05.18 Без ПДВ.;40683062;"ТОВ ""Мегаполис""";26004010870;300647;HSKLI0518L24VG. + function loadFromCSV(){ + global $k2; + + $FileName=nslashe($k2->rootdir.$this->upload_filename); + echo "Загрузка файла: ".$FileName."\n"; + + $ksql=$k2->ins_comp('k2sql'); + + + $data = file_get_contents($FileName); + + $data = iconv('windows-1251', 'UTF-8', $data); + + $arr=explode("\n", $data); + + + $i=0; + foreach ($arr as $val) { + + if ($i>=$this->skip_row){ + + $row=str_getcsv($val, ';'); + + $datetmp=explode(".", $row[1]); + $date_rez=''; + if (!empty($datetmp)){ + $date_rez=$datetmp[2].'.'.$datetmp[1].'.'.$datetmp[0]; + } + + if (trim($row[0])<>'№' && trim($row[0])<>''){ + + + // Строчка закачивалась, если порядковый номер совпадает и референс платежа + $find=$ksql->sel('SELECT privatid FROM crmPrivatBank WHERE (num=:num)AND(referens=:referens);', ['num'=>trim($row[0]), 'referens'=>trim($row[11])]); + + //echo 'find='.trim($find['err'])."\n"; + //echo 'find='.trim($find['data']['privatid'])."\n"; + + if ($find['data']==[]){ + $ksql->ins_arr(['table'=>'crmPrivatBank', + 'fields'=>[ + 'privatid'=>'{id}', + 'num'=>trim($row[0]), + 'date_provodk'=>/*$row[1]*/$date_rez, + 'time_provodk'=>$row[2], + 'sum_prih'=>$row[3], + 'sum_rash'=>$row[4], + 'valuta'=>trim($row[5]), + 'name_plat'=>$row[6], + 'edrpou'=>trim($row[7]), + 'name_firm'=>trim($row[8]), + 'schet_firm'=>trim($row[9]), + 'mfo_firm'=>trim($row[10]), + 'referens'=>trim($row[11]) + ] + ]); + } + + } + + } + + $i++; + } + + + echo "Конец загрузки.\n"; + + + } + + + + // Получение данных из загруженного файла + function upload_decode(){ + global $k2; + + $this->loadFromCSV(); + + } + + + + function content(){ + $rez=''; + + $this->upload_decode(); + + //echo $this->getPlats(); + + return $rez; + } + + +} + diff --git a/k2shop/k2shop/app/cmd/import_shop.php b/k2shop/k2shop/app/cmd/import_shop.php new file mode 100644 index 0000000..03e3754 --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_shop.php @@ -0,0 +1,922 @@ +resize = $k2->ins_comp('k2image_resize'); + $k2->check_connect(); + } + + /** + * Получение данных + * @global type $k2 + */ + function getData() { + + global $k2; + + + // Загрузка файла из интернет + try{ + $xml = file_get_contents($k2->rootdir.$this->url_xml); + }catch(PDOException $e) { + echo "Error getData().file_get_contents().".$this->url_xml."\n"; + echo $e->getMessage(); + } + + + + // Конвертируем в UTF-8 + //$xml = iconv('windows-1251', 'UTF-8', $xml); + + + // Сохраняем в файл на диске + try{ + $putfile=$k2->rootdir.'/k2shop/k2shop/upload/newshop.xml'; + file_put_contents($putfile,$xml); + }catch(PDOException $e) { + echo "Error getData().file_put_contents().".$putfile."\n"; + echo $e->getMessage(); + } + + + // Обработка xml + try{ + $this->xml = simplexml_load_file($putfile); + }catch(PDOException $e) { + echo "Error getData().simplexml_load_file().".$k2->rootdir.$this->url_xml."\n"; + echo $e->getMessage(); + } + + + $this->addCategories(); + $this->addGoods(); + + } + + + + /** + * Обрабатываются категории + */ + function addCategories(){ + + $this->xml; + foreach($this->xml->shop->categories->category as $b) { + + $idupdate=$this->SearchCategories($b->attributes()['id'], $b['0']); + + echo "idcat=$idupdate\n"; + + if ($idupdate==null){ + $this->InsertCategories($b->attributes()['id'], $b, $b->attributes()['parentId']); + } + } + + } + + /** + * Выбор категории + * @global type $k2 + * @param type $id + * @param type $name + * @return type + */ + function SearchCategories($id, $name){ + + global $k2; + + $sql = "SELECT s.category_id FROM k2shop_category s WHERE ((s.k2type_import='newshop') and (s.k2keyimport='$id'));"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['category_id']; + } + + return $res; + + } + + /** + * Вставка категорий + * @global type $k2 + * @param type $id + * @param type $name + * @param type $parentid + */ + function InsertCategories($id, $name, $parentid){ + global $k2; + + // Генерируем следующий id + $sql='select max(category_id) as maxid from k2shop_category;'; + + $nextid=0; + + foreach ($k2->db->query($sql) as $row) { + $nextid=$row['maxid']+1; + } + + $myparentid='0'; + + + if ((trim($parentid)<>'')and(trim($parentid)<>'0')){ + + $sql2="SELECT s.category_id as id + FROM k2shop_category s + WHERE (s.k2keyimport='$parentid') + and(s.k2type_import='newshop')"; + + try { + + echo "search_sql=$sql2\n"; + + foreach ($k2->db->query($sql2) as $row2){ + $myparentid=$row2['category_id']; + + echo "\nmyparentid=$myparentid\n"; + + } + + }catch (Exception $e) { + echo "Error Select: ".$e->getMessage()."\n"; + } + + $depth=1+$this->depthroot; + + }else{ + $myparentid=$this->rootid; + $depth=0+$this->depthroot; + } + + + // Вставка категорий + $url=$k2->sys->chpu($name,$nextid); + + $sql = "INSERT INTO k2shop_category (category_id, k2keyimport, name, parent_id, k2type_import, url, full_url) + VALUES ($nextid, '$id', '$name', '$myparentid', 'newshop','$url','$url')"; + + + try{ + echo "Будет SQL: $sql \n"; + echo "Insert Category: myid=$nextid, newshopid=$id, name=$name\n sql=$sql \n".$k2->db->exec($sql)."\n"; + }catch(PDOException $e) { + echo "Error Insert Category: $sql\n"; + echo $e->getMessage(); + } + } + + + + /** + * Изменение категории + * @global type $k2 + * @param type $id + * @param type $name + * @param type $parentid + */ + function UpdateCategories($id, $name, $parentid){ + global $k2; + + + } + + + /** + * Обрабатываются товары + */ + function addGoods(){ + $this->xml; + + foreach($this->xml->shop->offers->offers->offer as $a) { + //echo $a->attributes()['id']."\n"; + //echo $a->attributes()['available']."\n"; + //echo $a->url."\n"; + //echo $a->price."\n"; + //echo $a->categoryId[0]."\n"; + //echo $a->categoryId[1]."\n"; + //echo $a->picture."\n"; + //echo $a->name."\n"; + //echo $a->description."\n"; + //echo $a->sales_notes."\n"; + + $idupdate=$this->SearchGoods($a->attributes()['id']); + + echo "idtov=$idupdate \n"; + + + if ($idupdate==null){ + $this->InsertGoods($a); + }else{ + $this->UpdateGoods($a->name, $a->price, $a->description, $idupdate, $a); + } + + //return ""; + + } + + } + + + /** + * поиск id в товарах по id партнера + * @global type $k2 + * @param type $id + * @return type + */ + function SearchGoods($id){ + + global $k2; + + $sql = "SELECT s.tovid FROM k2tov s WHERE s.k2type_import= 'newshop' and s.k2keyimport='$id';"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['tovid']; + } + + return $res; + + + } + + + + /** + * поиск id в категориях по id партнера + * @global type $k2 + * @param type $id + * @return type + */ + function SearchCat($id) { + + global $k2; + + $sql ="SELECT s.category_id FROM k2shop_category s WHERE (s.k2keyimport='$id') and (s.k2type_import='newshop')"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['category_id']; + } + + return $res; + + } + + /** + * Добавление url + * @param type $url + * @return type + */ + function addurl($url){ + return 'http://shop.corp2.net'.$url.'&progdesc=long&print=Y'; + } + + /** + * + * @param type $url + * @return string + */ + function URL($url){ + + return ''; + + /*$content = file_get_contents($url); + + $url2=$this->GetUrl($content, $url); + $rez=$url=$this->addurl($url2); + + return $rez;*/ + + } + + /** + * Подучение URL + * @param type $content + * @param type $url + * @param type $startpos + * @return type + */ + function GetUrl($content, $url, $startpos=0){ + + $pos = strpos($content, '#program', $startpos); + + if ($pos<>FALSE){ + + $i = $pos-1; + while ($content{$i}<>'"'){ + $i--; + + } + + $endpos = $pos-1; + + $url2 = substr($content, $i+1, $endpos-$i); + + $pos2=strpos($url2,'/catalog/program'); + + if (($pos2==FALSE)and(trim($url2)<>'')){ + $urltmp=$this->GetUrl($content, $url, ($pos+strlen('#program')+1)); + if (trim($urltmp)<>'') $url2=$urltmp; + } + + + return $url2; + + + }else{ + if ($startpos==0) { + echo 'Not Found: '.$id."\n"; + } + } + + } + function GetContentShop($url) { + + + return ''; + + /*try { + $data = file_get_contents($url); + } + catch(PDOException $e) { + echo $e->getMessage()."\n"; + echo "url=$url\n"; + } + + + return $this->GetDesc($data);*/ + } + + + + /** + * Поучение описания + * @param type $data + * @return type + */ + function GetDesc($data) { + + $startpos = strpos($data, '

'); + $endpos = strpos($data, ''); + $desc = substr($data, $startpos, $endpos-$startpos); + + $desc = trim($desc); + + return $desc; + + } + + + + /** + * Блокировать спец-символы + * @param type $strinp + * @return type + */ + function blockSym($strinp){ + + $rez=trim(str_replace("'", "''", $strinp)); + + return $rez; + + } + + /** + * Вставка товароов + * @global type $k2 + * @param type $a + */ + function InsertGoods($a){ + + global $k2; + + // Генерируем следующий id + $sql='select max(tovid) as maxid from k2tov;'; + + $nextid=0; + + foreach ($k2->db->query($sql) as $row) { + $nextid=$row['maxid']+1; + } + + + // Вставка товара + $catid = $this->SearchCat($a->categoryId[0]); + + $url=$this->URL($a->url); + + $description=$this->GetContentShop($url); + + + $sql = "INSERT INTO k2tov (tovid, k2keyimport, tovname, price, k2type_import, category_id, url, status, valid, description, image_filename, k2import_url) + VALUES ('$nextid', '".trim($a->attributes()['F'])."', '".$this->blockSym($a->name)."', '".trim($a->price)."', 'newshop','".trim($catid)."','".$k2->sys->chpu($this->blockSym($a->name), $nextid)."','1', '1', '".$this->blockSym($description)."', '1', '".$this->blockSym($a->url)."')"; + + echo "Insert Tov SQL $sql \n"; + echo "Insert Tov: $catid, ".$a->name." \n ".$k2->db->exec($sql)."\n"; + + + // Вставка группы товара + foreach ($a->categoryId as $c) { + $catid = $this->SearchCat($c); + $sql="INSERT INTO k2shop_category_products(cat_product_id,category_id,sort,k2keyimport,k2type_import) + VALUES('$nextid','".$catid."','$nextid', '".trim($a->attributes()['id'])."', 'newshop')"; + + + try { + echo "Insert CatTov: $sql \n"; + echo "Insert CatTov: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error SQL Insert GroupTov: $sql \n"; + echo "Error Insert GroupTov: ".$a->name." ".$nextid."\n".$e->getMessage()."\n"; + } + + + } +// +// //Вставка наличия товаров +// $sql="INSERT INTO k2tov_skus(product_id,sort,price,primary_price,purchase_price,compare_price,available,file_size,virtual,k2keyimport,k2type_import) +// VALUES('$nextid','1','".trim($a->price)."','".trim($a->price)."','".trim($a->price)."','".$a->price."','1','0','0', '".trim($a->attributes()['id'])."', 'newshop')"; +// +// +// try { +// echo "Insert TovSkus: $sql \n"; +// echo "Insert TovSkus: ".$k2->db->exec($sql)."\n"; +// }catch (Exception $e) { +// echo "Error SQL Insert Tov: $sql \n"; +// echo "Error Insert Tov: ".$nextid."\n".$e->getMessage()."\n"; +// } + } + + /** + * Обновление товаров + * @global type $k2 + * @param type $name + * @param type $price + * @param type $desc + * @param type $idupdate + * @param type $a + */ + function UpdateGoods($name, $price, $desc, $idupdate, $a){ + + global $k2; + + $sql = "UPDATE k2tov SET price='$price', compare_price='$price', min_price='$price', max_price='$price', tovname='".$this->blockSym($name)."', urlsrc='".trim($a->url)."', urlpic='".trim($a->picture)."' + WHERE (id='$idupdate');"; + + + echo "UpdatSQL: $sql\n"; + + echo "Update: ".$k2->db->exec($sql)."\n"; + + +// // Вставка наличия товаров +// $sql="UPDATE k2tov_skus SET price='$price', primary_price='$price', purchase_price='$price', compare_price='$price', available='1' +// WHERE product_id='$idupdate';"; +// +// echo 'UpdateSQL: '.$sql."\n"; +// +// try { +// echo "UPDATE Avaiable: ".$k2->db->exec($sql)."\n"; +// }catch (Exception $e) { +// echo "Error Update Avaiable : $name\n".$e->getMessage()."\n"; +// } + + + } + + + + + /** + * Граббинг изображений + * @return string + */ + function grabImage(){ + $rez=''; + + $rez.="Будет граббинг изображений..."; + + return $rez; + } + + + // Получаем контент + function GetContentShopContent($url) { + + try { + $data = file_get_contents($url); + } + catch(PDOException $e) { + echo $e->getMessage()."\n"; + echo "url=$url\n"; + } + + + return $this->GetDesc($data); + } + + + + + /** + * Извлечение контента + * @param type $url + * @return type + */ + function getURLContent($url){ + $content = file_get_contents($url); + + $url2=$this->GetUrl($content, $url); + $rez=$url=$this->addurl($url2); + return $rez; + } + + + + + + /** + * Обновление контента + * @global type $k2 + * @param type $id + * @param type $content + */ + function setContent($id, $content){ + global $k2; + + if (trim($id)=='') exit; + + $sql = "update k2tov set description='".$this->blockSym($content)."', obrabot_grabber='1' where (id='$id')"; + + echo $content."\n id=$id \n"; + + try{ + echo "Update Content: ".$k2->db->exec($sql)."\n"; + }catch(PDOException $e) { + echo "Error Update Content: $sql\n"; + echo $e->getMessage(); + } + + + } + + + + + /** + * Граббинг контента + * @global type $k2 + * @return string + */ + function gabContent(){ + global $k2; + + $rez=''; + $rez.="Граббинг контента..."; + + + $sql = "select tovid, urlsrc from k2tov where (trim(urlsrc)<>'')and(obrabot_grabber=0)"; + + + + + foreach ($k2->db->query($sql) as $value) { + + $url=$this->getURLContent($value['urlsrc']); + $description=$this->GetContentShopContent($url); + + $this->setContent($value['tovid'], $description); + + sleep(rand(1,5)); + } + + + return $rez; + } + + + + /////////////////////////////////////////////////////////////////////////// + // Серисные функции + /////////////////////////////////////////////////////////////////////////// + + + + /** + * Загрузка изображений из статического файла + * @global type $k2 + */ + function grabImageUpload(){ + + global $k2; + + // Обработка xml + try{ + $this->xml = simplexml_load_file($this->url_xml); + }catch(PDOException $e) { + echo "Error getData().simplexml_load_file().".$this->url_xml."/n"; + echo $e->getMessage(); + } + + + // Извлекаю xml + foreach($this->xml->shop->offers->offer as $a) { + + $pic=$a->picture; + + if (trim($pic)<>''){ + + $pic=str_replace('newshop.ua', 'newshop.ru', $pic); + + $fileto=$k2->rootdir."/img/sk_".$a->attributes()['id'].'.png'; + + if (!file_exists($fileto)){ + $cmd="convert $pic $fileto"; + echo $cmd."\n"; + shell_exec($cmd); + + sleep(rand(1,3)); + } + + + } + + } + + } + + + + + /** + * Возвращает название файла, сохраненного у нас локально на диске + * @global type $k2 + * @param type $product_id + * @param type $isabsolute + * @return string + */ + function getMyShopImage($product_id, $isabsolute=true){ + global $k2; + $rez=''; + + if ($isabsolute){ + $rez=$k2->rootdir; + } + + $rez.="/img/sk_".$product_id.'.png'; + + return $rez; + } + + + + + + /** + * Вставка изображения в базу данных + * @global type $k2 + * @param type $product_id + * @param type $k2keyimport + * @return string + */ + function insImageDB($product_id, $k2keyimport){ + global $k2; + $rez=''; + + $filename=$this->getMyShopImage($k2keyimport); + + echo 'filename='.$filename."\n"; + + if (!file_exists($filename)){ + return ''; + } + + $size= filesize($filename); + $size_foto_px=getimagesize($filename); + + $width=$size_foto_px[0]; + $height=$size_foto_px[1]; + + $origfilename=$k2keyimport.'.png'; + + $sql="INSERT INTO k2tov_images(product_id,upload_datetime,width,height,size,original_filename,ext) + VALUES('$product_id',now(),'$width','$height','$size','$origfilename','png')"; + + + try { + + //echo $sql."\n"; + + echo "Insert Image: ".$k2->db->exec($sql)."\n"; + $rez=$k2->db->lastInsertId(); + }catch (Exception $e) { + echo "Error Insert Image: $product_id \n".$e->getMessage()."\n"; + } + + + + return $rez; + } + + + + /** + * Выполняет sql на позициях + * @global type $k2 + * @param type $product_id + * @param type $imageid + */ + function setProdductImage($product_id, $imageid){ + global $k2; + + $sql="UPDATE k2tov SET image_id=$imageid, ext='png', image_filename='' WHERE id=$product_id "; + + try { + echo "Update Product: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Update Product: $product_id \n".$e->getMessage()."\n"; + } + + + } + + + + + /** + * Добавлет изображение, если его нет + * @global type $k2 + * @param type $product_id + * @param type $imageid + * @param type $k2keyimport + * @return string + */ + function addImageInfo($product_id, $imageid, $k2keyimport){ + global $k2; + + + $id=trim($product_id); + + if (strlen($id)<4){ + $id2=str_pad(substr($id,1,2),2,'0',STR_PAD_LEFT); + }else{ + $id2=str_pad(substr(str_pad($id,"0",STR_PAD_LEFT),2,2),2,'0',STR_PAD_LEFT); + } + + $id1=str_pad(substr(str_pad($id,4,"0",STR_PAD_LEFT),0,2),2,'0',STR_PAD_LEFT); + + + //echo "Не найдено изображений в $product_id. Будем добавлять... \n"; + // /wa-data/protected/shop/products/70/29/22970/images/2721.png + + if ($imageid==''){ + $imageid=$this->insImageDB($product_id, $k2keyimport); + } + + + + $dir=$k2->rootdir."/wa-data/protected/shop/products/$id2/$id1/$id/images/"; + echo "makedir=$dir\n"; + $k2->sys->forceDir($dir); + + $filename_src=$this->getMyShopImage($k2keyimport); + $filename_ds=$dir.$imageid.'.png'; + + if (!file_exists($filename_src)){ + return ""; + } + + + + if (!file_exists($filename_ds)){ + echo "Копируем файл из $filename_src в $filename_ds \n"; + + if (!copy($filename_src, $filename_ds)) { + echo "Не удалось скопировать $filename_src...\n"; + } + } + + // Создаем уменьшенные копии + $dir2=$k2->rootdir."/wa-data/public/shop/products/$id2/$id1/$id/images/$imageid/"; + $k2->sys->forceDir($dir2); + + if (!file_exists($dir2."$imageid.0x220.png")){ + $this->resize->resizeto($filename_src, $dir2."$imageid.0x220.png", 0, 220); + $this->resize->resizeto($filename_src, $dir2."$imageid.0x320.png", 0, 320); + $this->resize->resizeto($filename_src, $dir2."$imageid.200.png", 200, 0); + $this->resize->resizeto($filename_src, $dir2."$imageid.200x0.png", 200, 200); + $this->resize->resizeto($filename_src, $dir2."$imageid.48x48.png", 48, 48); + $this->resize->resizeto($filename_src, $dir2."$imageid.750.png", 750, 0); + $this->resize->resizeto($filename_src, $dir2."$imageid.750x0.png", 750, 0); + $this->resize->resizeto($filename_src, $dir2."$imageid.96x96.png", 96, 96); + $this->resize->resizeto($filename_src, $dir2."$imageid.970.png", 970, 0); + + // Пометка в базе данных номенклатуры + $this->setProdductImage($product_id, $imageid); + + } + + $this->resize->resizeto($filename_src, $dir2."$imageid.220.png", 220, 0); + + + //$k2->sys->forceDir($dir) + + + + + } + + + + + + + + /** + * Получает из базы информацию о изображении + * @global type $k2 + * @param type $product_id + * @param type $k2keyimport + * @return string + */ + function getImageInfo($product_id, $k2keyimport){ + global $k2; + $sql = "SELECT si.tovid as id, ext FROM k2tov_images si WHERE si.product_id=$product_id"; + + $rez=''; + $id=''; + foreach ($k2->db->query($sql) as $row) { + $id=trim($row['tovid']); + } + + //if (trim($id)==''){ + $this->addImageInfo($product_id, $id, $k2keyimport); + //} + + + return $rez; + + } + + + + + + + + + + function content(){ + //$options = getopt("", array("c:","g:")); + //$grab_options = getopt("", array("g:")); + + $rez='34567'; + + if (!isset($grab_options['g'])){ + $rez.=$this->getData(); + }elseif(trim($grab_options['g'])=='image'){ // Граббинг изображений + $rez.=$this->grabImage(); + }elseif(trim($grab_options['g'])=='content'){ // Граббинг контента + $rez.=$this->gabContent(); + }elseif(trim($grab_options['g'])=='image_upload'){ // Граббинг изображений из загруженного файла xml + $rez.=$this->grabImageUpload(); + }elseif(trim($grab_options['g'])=='image_shopscript'){ // Размещает изображения картинок, как нужно для ShopScropt + $rez.=$this->setImageShopScript(); + } + + + return $rez; + } + + +} + +?> \ No newline at end of file diff --git a/k2shop/k2shop/app/cmd/import_softkey.php b/k2shop/k2shop/app/cmd/import_softkey.php new file mode 100644 index 0000000..7d09449 --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_softkey.php @@ -0,0 +1,940 @@ +resize->resizeto($filename_src, $dir2."$imageid.0x220.png", 0, 220); + $this->resize->resizeto($filename_src, $dir2."$imageid.0x320.png", 0, 320); + $this->resize->resizeto($filename_src, $dir2."$imageid.200.png", 200, 0); + $this->resize->resizeto($filename_src, $dir2."$imageid.200x0.png", 200, 200); + $this->resize->resizeto($filename_src, $dir2."$imageid.48x48.png", 48, 48); + $this->resize->resizeto($filename_src, $dir2."$imageid.750.png", 750, 0); + $this->resize->resizeto($filename_src, $dir2."$imageid.750x0.png", 750, 0); + $this->resize->resizeto($filename_src, $dir2."$imageid.96x96.png", 96, 96); + $this->resize->resizeto($filename_src, $dir2."$imageid.970.png", 970, 0);*/ + + + public $resize; + + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + $this->resize = $k2->ins_comp('k2image_resize'); + $k2->check_connect(); + } + + + function getData() { + + global $k2; + + + // Загрузка файла из интернет + try{ + $xml = file_get_contents($this->url_xml); + }catch(PDOException $e) { + echo "Error getData().file_get_contents().".$this->url_xml."\n"; + echo $e->getMessage(); + } + + + + // Конвертируем в UTF-8 + if ($this->is_convert){ + $xml = iconv('windows-1251', 'UTF-8', $xml); + } + + + //$xml= str_replace('', '', $xml); + + //$xml= str_replace('', $xml); + //$xml= str_replace(']]>', '', $xml); + + // Сохраняем в файл на диске + try{ + $putfile=$k2->rootdir.'/k2shop/k2shop/upload/softkey_market_ua.xml'; + + if ($this->is_debug){ + file_put_contents($putfile,$xml); + } + }catch(PDOException $e) { + echo "Error getData().file_put_contents().".$putfile."\n"; + echo $e->getMessage(); + } + + + // Обработка xml + try{ + $this->xml = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); + //simplexml_load_file(/*$this->url_xml*/$putfile); + }catch(PDOException $e) { + echo "Error getData().simplexml_load_file().".$this->url_xml."\n"; + echo $e->getMessage(); + } + + echo "savetofile=$putfile\n"; + + $this->addCategories(); + $this->addGoods(); + + } + + // Обрабатываются категории + function addCategories(){ + + $this->xml; + foreach($this->xml->shop->categories->category as $b) { + + $idupdate=$this->SearchCategories($b->attributes()['id'], $b['0']); + + echo "idcat=$idupdate\n"; + + if ($idupdate==null){ + $this->InsertCategories($b->attributes()['id'], $b, $b->attributes()['parentId']); + } + } + + } + + + function SearchCategories($id, $name){ + + global $k2; + + $sql = "SELECT s.id FROM shop_category s WHERE ((s.k2type_import='".$this->import_label."') and (s.k2keyimport='$id'));"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['id']; + } + + return $res; + + } + + function InsertCategories($id, $name, $parentid){ + global $k2; + + // Генерируем следующий id + $sql='select max(id) as maxid from shop_category;'; + + $nextid=0; + + foreach ($k2->db->query($sql) as $row) { + $nextid=$row['maxid']+1; + } + + $myparentid='0'; + + + if ((trim($parentid)<>'')and(trim($parentid)<>'0')){ + + $sql2="SELECT s.id as id + FROM shop_category s + WHERE (s.k2keyimport='$parentid') + and(s.k2type_import='".$this->import_label."')"; + + try { + + echo "search_sql=$sql2\n"; + + foreach ($k2->db->query($sql2) as $row2){ + $myparentid=$row2['id']; + + echo "\nmyparentid=$myparentid\n"; + + } + + }catch (Exception $e) { + echo "Error Select: ".$e->getMessage()."\n"; + } + + $depth=1+$this->depthroot; + + }else{ + $myparentid=$this->rootid; + $depth=0+$this->depthroot; + } + + + // Вставка категорий + $url=$k2->sys->chpu($name,$nextid); + + $sql = "INSERT INTO shop_category (id, k2keyimport, name, parent_id, k2type_import, url, full_url, depth) + VALUES ($nextid, '$id', '$name', '$myparentid', '".$this->import_label."','$url','$url','$depth')"; + + + try{ + echo "Будет SQL: $sql \n"; + echo "Insert Category: myid=$nextid, softkeyid=$id, name=$name\n sql=$sql \n".$k2->db->exec($sql)."\n"; + }catch(PDOException $e) { + echo "Error Insert Category: $sql\n"; + echo $e->getMessage(); + } + + + + } + + + // Изменение категории + function UpdateCategories($id, $name, $parentid){ + global $k2; + + + } + + // Обрабатываются товары + function addGoods(){ + //$this->xml; + + //echo 'xml='.print_r($this->xml)."\n"; + + //echo print_r($this->xml->shop->offers->offer)."\n\n"; + + foreach($this->xml->shop->offers->offer as $a) { + //echo $a->attributes()['id']."\n"; + //echo $a->attributes()['available']."\n"; + //echo $a->url."\n"; + //echo $a->price."\n"; + //echo $a->categoryId[0]."\n"; + //echo $a->categoryId[1]."\n"; + //echo $a->picture."\n"; + //echo $a->name."\n"; + //echo $a->description."\n"; + //echo $a->sales_notes."\n"; + + //var_dump($a->description); + //print_r($a->description); + //print_r($a); + // break; + + $idupdate=$this->SearchGoods($a->attributes()['id']); + + echo "idtov=$idupdate \n"; + + + if ($idupdate==null){ + $this->InsertGoods($a); + }else{ + $this->UpdateGoods($a->name, $a->price, $a->description, $idupdate, $a); + } + + //return ""; + + } + + } + + //поиск id в товарах по id партнера + function SearchGoods($id){ + + global $k2; + + $sql = "SELECT s.id FROM shop_product s WHERE s.k2type_import= '".$this->import_label."' and s.k2keyimport='$id';"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['id']; + } + + return $res; + + + } + + + //поиск id в категориях по id партнера + function SearchCat($id) { + + global $k2; + + $sql ="SELECT s.id FROM shop_category s WHERE (s.k2keyimport='$id') and (s.k2type_import='".$this->import_label."')"; + + $res=null; + + foreach ($k2->db->query($sql) as $row) { + $res=$row['id']; + } + + return $res; + + } + + + function addurl($url){ + return 'http://www.softkey.ua'.$url.'&progdesc=long&print=Y'; + } + + + function URL($url){ + + return ''; + + /*$content = file_get_contents($url); + + $url2=$this->GetUrl($content, $url); + $rez=$url=$this->addurl($url2); + + return $rez;*/ + + } + + function GetUrl($content, $url, $startpos=0){ + + $pos = strpos($content, '#program', $startpos); + + if ($pos<>FALSE){ + + $i = $pos-1; + while ($content{$i}<>'"'){ + $i--; + + } + + $endpos = $pos-1; + + $url2 = substr($content, $i+1, $endpos-$i); + + $pos2=strpos($url2,'/catalog/program'); + + if (($pos2==FALSE)and(trim($url2)<>'')){ + $urltmp=$this->GetUrl($content, $url, ($pos+strlen('#program')+1)); + if (trim($urltmp)<>'') $url2=$urltmp; + } + + + return $url2; + + + }else{ + if ($startpos==0) { + echo 'Not Found: '.$id."\n"; + } + } + + } + + + function GetContentSoftkey($url) { + return ''; + } + + + + function GetDesc($data) { + + $startpos = strpos($data, '

'); + $endpos = strpos($data, ''); + $desc = substr($data, $startpos, $endpos-$startpos); + + $desc = trim($desc); + + return $desc; + + } + + + // Блокировать спец-символы + function blockSym($strinp){ + + $rez=trim(str_replace("'", "''", $strinp)); + + return $rez; + + } + + + function InsertGoods($a){ + + global $k2; + + // Генерируем следующий id + $sql='select max(id) as maxid from shop_product;'; + + $nextid=0; + + foreach ($k2->db->query($sql) as $row) { + $nextid=$row['maxid']+1; + } + + + // Вставка товара + $catid = $this->SearchCat($a->categoryId[0]); + + $url=$this->URL($a->url); + + if ($this->descript_from_xml){ + $description=$a->description; + }else{ + $description=$this->GetContentSoftkey($url); + } + + + $sql = "INSERT INTO shop_product (id, k2keyimport, name, meta_description, meta_title, price, k2type_import, category_id, url, status, currency, description, meta_keywords, image_filename, k2import_url) + VALUES ('$nextid', '".trim($a->attributes()['id'])."', '".$this->blockSym($a->name)."', '".$this->blockSym($a->name)."', '".$this->blockSym($a->name)."', '".trim($a->price)."', '".$this->import_label."','".trim($catid)."','".$k2->sys->chpu($this->blockSym($a->name), $nextid)."','1', 'UAH', '".$this->blockSym($description)."','".$this->blockSym($a->keywords)."', '1', '".$this->blockSym($a->url)."')"; + + echo "Insert Tov SQL $sql \n"; + echo "Insert Tov: $catid, ".$a->name." \n ".$k2->db->exec($sql)."\n"; + + + // Вставка группы товара + foreach ($a->categoryId as $c) { + $catid = $this->SearchCat($c); + $sql="INSERT INTO shop_category_products(product_id,category_id,sort,k2keyimport,k2type_import) + VALUES('$nextid','".$catid."','$nextid', '".trim($a->attributes()['id'])."', '".$this->import_label."')"; + + + try { + echo "Insert CatTov: $sql \n"; + echo "Insert CatTov: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error SQL Insert GroupTov: $sql \n"; + echo "Error Insert GroupTov: ".$a->name." ".$nextid."\n".$e->getMessage()."\n"; + } + + + } + + + //Вставка наличия товаров + $sql="INSERT INTO shop_product_skus(product_id,sort,price,primary_price,purchase_price,compare_price,available,file_size,virtual,k2keyimport,k2type_import) + VALUES('$nextid','1','".trim($a->price)."','".trim($a->price)."','".trim($a->price)."','".$a->price."','1','0','0', '".trim($a->attributes()['id'])."', '".$this->import_label."')"; + + + try { + echo "Insert TovSkus: $sql \n"; + echo "Insert TovSkus: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error SQL Insert Tov: $sql \n"; + echo "Error Insert Tov: ".$nextid."\n".$e->getMessage()."\n"; + } + } + + + function UpdateGoods($name, $price, $desc, $idupdate, $a){ + + global $k2; + + $sql = "UPDATE shop_product SET price='$price', compare_price='$price', min_price='$price', max_price='$price', name='".$this->blockSym($name)."', urlsrc='".trim($a->url)."', urlpic='".trim($a->picture)."' + WHERE (id='$idupdate');"; + + + echo "UpdatSQL: $sql\n"; + + echo "Update: ".$k2->db->exec($sql)."\n"; + + + // Вставка наличия товаров + $sql="UPDATE shop_product_skus SET price='$price', primary_price='$price', purchase_price='$price', compare_price='$price', available='1' + WHERE product_id='$idupdate';"; + + echo 'UpdateSQL: '.$sql."\n"; + + try { + echo "UPDATE Avaiable: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Update Avaiable : $name\n".$e->getMessage()."\n"; + } + + + } + + + + // Граббинг изображений + function grabImage(){ + $rez=''; + + $rez.="Будет граббинг изображений..."; + + return $rez; + } + + + + + + + + // Извлечение контента + function getURLContent($url){ + $content = file_get_contents($url); + + $url2=$this->GetUrl($content, $url); + $rez=$url=$this->addurl($url2); + return $rez; + } + + + // Получаем контент + function GetContentSoftkeyContent($url) { + + try { + $data = file_get_contents($url); + } + catch(PDOException $e) { + echo $e->getMessage()."\n"; + echo "url=$url\n"; + } + + + return $this->GetDesc($data); + } + + + + // Обновление описания + function setContent($id, $content){ + global $k2; + + if (trim($id)=='') exit; + + $sql = "update shop_product set description='".$this->blockSym($content)."', obrabot_grabber='1' where (id='$id')"; + + echo $content."\n id=$id \n"; + + try{ + echo "Update Content: ".$k2->db->exec($sql)."\n"; + }catch(PDOException $e) { + echo "Error Update Content: $sql\n"; + echo $e->getMessage(); + } + + + } + + + + // Граббинг контента + function gabContent(){ + global $k2; + + $rez=''; + $rez.="Граббинг контента..."; + + + $sql = "select id, urlsrc from shop_product where (trim(urlsrc)<>'')and(obrabot_grabber=0)"; + + + + + foreach ($k2->db->query($sql) as $value) { + + $url=$this->getURLContent($value['urlsrc']); + $description=$this->GetContentSoftkeyContent($url); + + $this->setContent($value['id'], $description); + + sleep(rand(1,5)); + } + + + return $rez; + } + + + + /////////////////////////////////////////////////////////////////////////// + // Серисные функции + /////////////////////////////////////////////////////////////////////////// + + + // Загрузка изображений из статического файла + function grabImageUpload(){ + + global $k2; + + // Обработка xml + try{ + $this->xml = simplexml_load_file($this->url_xml); + }catch(PDOException $e) { + echo "Error getData().simplexml_load_file().".$this->url_xml."/n"; + echo $e->getMessage(); + } + + + // Извлекаю xml + foreach($this->xml->shop->offers->offer as $a) { + + $pic=$a->picture; + + if (trim($pic)<>''){ + + $pic=str_replace('softkey.ua', 'softkey.ru', $pic); + + $fileto=$k2->rootdir."/img/sk_".$a->attributes()['id']./*'.png'*/'.'.$this->new_ext; + + if (!file_exists($fileto)){ + $cmd="convert $pic $fileto"; + echo $cmd."\n"; + shell_exec($cmd); + + if ($this->pause){ + sleep(rand(1,3)); + } + } + + + } + + } + + } + + + + // Возвращает название файла Softkey, сохраненного у нас локально на диске + function getMySoftkeyImage($product_id, $isabsolute=true){ + global $k2; + $rez=''; + + if ($isabsolute){ + $rez=$k2->rootdir; + } + + $rez.="/img/sk_".$product_id./*'.png'*/'.'.$this->new_ext; + + return $rez; + } + + + + + // Вставка изображения в базу данных + function insImageDB($product_id, $k2keyimport){ + global $k2; + $rez=''; + + $filename=$this->getMySoftkeyImage($k2keyimport); + + echo 'filename='.$filename."\n"; + + if (!file_exists($filename)){ + return ''; + } + + $size= filesize($filename); + $size_foto_px=getimagesize($filename); + + $width=$size_foto_px[0]; + $height=$size_foto_px[1]; + + $origfilename=$k2keyimport./*'.png'*/'.'.$this->new_ext; + + $sql="INSERT INTO shop_product_images(product_id,upload_datetime,width,height,size,original_filename,ext) + VALUES('$product_id',now(),'$width','$height','$size','$origfilename','".$this->new_ext."')"; + + + try { + + echo $sql."\n"; + echo "Insert Image: ".$k2->db->exec($sql)."\n"; + $rez=$k2->db->lastInsertId(); + }catch (Exception $e) { + echo "Error Insert Image: $product_id \n".$e->getMessage()."\n"; + } + + + + return $rez; + } + + + // Выполняет sql на позициях + function setProdductImage($product_id, $imageid){ + global $k2; + + $sql="UPDATE shop_product SET image_id=$imageid, ext='".$this->new_ext."', image_filename='' WHERE id=$product_id "; + + try { + echo "Update Product: ".$k2->db->exec($sql)."\n"; + }catch (Exception $e) { + echo "Error Update Product: $product_id \n".$e->getMessage()."\n"; + } + + + } + + + + // Добавлет изображение, если его нет + function addImageInfo($product_id, $imageid, $k2keyimport){ + global $k2; + + echo "addImageInfo($product_id, $imageid, $k2keyimport)\n"; + + if (trim($product_id)==''){ + echo "ID продукта пуст. Выходим из процедуры.\n"; + return ''; + } + + $id=trim($product_id); + + if (strlen($id)<4){ + $id2=str_pad(substr($id,1,2),2,'0',STR_PAD_LEFT); + }else{ + $id2=str_pad(substr(str_pad($id,"0",STR_PAD_LEFT),2,2),2,'0',STR_PAD_LEFT); + } + + $id1=str_pad(substr(str_pad($id,4,"0",STR_PAD_LEFT),0,2),2,'0',STR_PAD_LEFT); + + + //echo "Не найдено изображений в $product_id. Будем добавлять... \n"; + // /wa-data/protected/shop/products/70/29/22970/images/2721.png + + if ($imageid==''){ + $imageid=$this->insImageDB($product_id, $k2keyimport); + + if ($imageid=='') return ''; + } + + + $dir=$k2->rootdir."/wa-data/protected/shop/products/$id2/$id1/$id/images/"; + echo "makedir=$dir\n"; + $k2->sys->forceDir($dir); + + $filename_src=$this->getMySoftkeyImage($k2keyimport); + + if (!file_exists($filename_src)){ + return ''; + } + + + $filename_ds=$dir.$imageid./*'.png'*/'.'.$this->new_ext; + + + echo 'filename='.$filename_ds."\n"; + + if (!file_exists($filename_src)){ + echo "Исходного файла нет, поэтому выходим: $filename_src\n"; + return ""; + } + + + + if (!file_exists($filename_ds)){ + echo "Копируем файл из $filename_src в $filename_ds \n"; + + if (!copy($filename_src, $filename_ds)) { + echo "Не удалось скопировать $filename_src...\n"; + }else{ + + } + } + + // Создаем уменьшенные копии + $dir2=$k2->rootdir."/wa-data/public/shop/products/$id2/$id1/$id/images/$imageid/"; + $k2->sys->forceDir($dir2); + + + //public $sizes=array('0x220','0x320','200','200x0','48x48','750','750x0','96x96','970'); + + + foreach ($this->sizes as $s) { + $size=explode('x', $s); + + if (count($size)==0){ + if (trim($s)==''){ + continue; + }else{ + $size[0]=$s; + } + } + + if (count($size)==1){ + $size[1]=$size[0]; + } + + $filename=$dir2."$imageid.$s".".".$this->new_ext; + + echo "Файл изображения: $filename\n"; + + if (!file_exists($filename)){ + echo "Создаем...\n"; + }else{ + echo "Есть в наличии. Перегенерируем.\n"; + } + + $this->resize->resizeto($filename_src, $filename, $size[0], $size[1]); + + } + + // Пометка в базе данных номенклатуры + $this->setProdductImage($product_id, $imageid); + + + /*if (!file_exists($dir2."$imageid.0x220.png")){ + $this->resize->resizeto($filename_src, $dir2."$imageid.0x220.png", 0, 220); + $this->resize->resizeto($filename_src, $dir2."$imageid.0x320.png", 0, 320); + $this->resize->resizeto($filename_src, $dir2."$imageid.200.png", 200, 0); + $this->resize->resizeto($filename_src, $dir2."$imageid.200x0.png", 200, 200); + $this->resize->resizeto($filename_src, $dir2."$imageid.48x48.png", 48, 48); + $this->resize->resizeto($filename_src, $dir2."$imageid.750.png", 750, 0); + $this->resize->resizeto($filename_src, $dir2."$imageid.750x0.png", 750, 0); + $this->resize->resizeto($filename_src, $dir2."$imageid.96x96.png", 96, 96); + $this->resize->resizeto($filename_src, $dir2."$imageid.970.png", 970, 0); + + // Пометка в базе данных номенклатуры + $this->setProdductImage($product_id, $imageid); + + } + + $this->resize->resizeto($filename_src, $dir2."$imageid.220.png", 220, 0);*/ + + + //$k2->sys->forceDir($dir) + + + + + } + + + + + + + // Получает из базы информацию о изображении + function getImageInfo($product_id, $k2keyimport){ + global $k2; + $sql = "SELECT si.id as id, ext FROM shop_product_images si WHERE (not (si.product_id is null))and(si.product_id=$product_id)"; + + $rez=''; + $id=''; + foreach ($k2->db->query($sql) as $row) { + $id=trim($row['id']); + } + + echo "getImageInfo($product_id,$k2keyimport)\n"; + + //if (trim($id)==''){ + $this->addImageInfo($product_id, $id, $k2keyimport); + //} + + + return $rez; + + } + + + + + + + // Устанавивает картинки ShopScript + function setImageShopScript(){ + global $k2; + + $sql = 'SELECT p.id, p.name, p.url, p.price, p.description, p.category_id, p.ext, p.meta_keywords, p.k2type_import, p.k2keyimport + FROM shop_product p'; + + + foreach ($k2->db->query($sql) as $row) { + + + if (($row['k2type_import']==$this->import_label)and(trim($row['k2keyimport'])<>'')){ + + // Исходное изображение + $pic=$k2->rootdir."/img/sk_".$row['k2keyimport']./*'.png'*/'.'.$this->new_ext; + + if (file_exists($pic)){ + + // \wa-data\protected\shop\products\06\03\306\images + // берем строку из shop_product_images (там кстати есть и оригинальные название фото) + // id: 1949 + // product_id: 1389 + // Идем в /wa-data/public/shop/products + // Ищем папку 89 + // В ней папку 13 + // Дальше видим папку 1389 + // в ней папка images + // и там фотки вида: 1949.размер.jpg + + // http://test.corp2.kiev.ua/wa-data/public/shop/products/70/29/22970/images/2721/2721.200x0.png + // /wa-data/protected/shop/products/70/29/22970/images/2721.png + // id product = 22970 + // id image = 2721 + + echo 'id='.$row['id']." | ".$row['name']." | ".$pic."\n"; + + $this->getImageInfo($row['id'], $row['k2keyimport']); + + //exit; + + } + + } + } + + echo "Процесс закончился\n"; + } + + + + function content(){ + + $grab_options = getopt("", array("g:")); + + $rez=''; + + + + if (!isset($grab_options['g'])){ + //echo 'url='.$this->url_xml."\n"; + //echo "getData...\n"; + $rez.=$this->getData(); + }elseif(trim($grab_options['g'])=='image'){ // Граббинг изображений + $rez.=$this->grabImage(); + }elseif(trim($grab_options['g'])=='content'){ // Граббинг контента + $rez.=$this->gabContent(); + }elseif(trim($grab_options['g'])=='image_upload'){ // Граббинг изображений из загруженного файла xml + $rez.=$this->grabImageUpload(); + }elseif(trim($grab_options['g'])=='image_shopscript'){ // Размещает изображения картинок, как нужно для ShopScropt + $rez.=$this->setImageShopScript(); + } + + + return $rez; + } + + +} + +?> \ No newline at end of file diff --git a/k2shop/k2shop/app/cmd/import_wialon.php b/k2shop/k2shop/app/cmd/import_wialon.php new file mode 100644 index 0000000..5aaab6c --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_wialon.php @@ -0,0 +1,567 @@ + 'hst-api.wialon.com', + 'login' => 'kaplia', + 'password' => 'H4ogY80nbgtyv', + 'token' => '3af3ca234996bfa1707e2bc2c41a0e4c0F55E1F1C2C54710F079D9EFC2F1D1959F3CA546', + 'scheme' => 'https' + ], + + /*['host' => 'local.overseer.ua', + 'login' => 'GPS24_agro', + 'password' => 'GPS24_agro', + 'token' => '016ab096bc683cc232a9e03cf663dc7045C06369EBA777F269B6616D32F511883871043D', + 'scheme' => 'http' + ]*/ + ]; + + + // Демо-пример Api + // Демо-сервер: https://kit-api.wialon.com + // Логин и пароль demo: kitdemo kitdemo + // Генерация Токена + // https://kit-api.wialon.com/login.html + + + + + // Информация о аккаунтах + function accInfo(Wialon $wialon_api){ + // Получение информации о аккаунте + echo "\nИнформация о аккаунте:\n"; + $accinfo=$wialon_api->call('core_get_account_data', '{"type":2}'); + var_dump($accinfo); + echo "\n"; + } + + + /** + * Информция по машинах на основании id + * @param Wialon $wialon_api + * @param type $id + */ + function findIDParam(Wialon $wialon_api, $id) + { + echo "\nЗапрос по id на сервере:\n"; + $accinfo=$wialon_api->call('core_search_item', '{ + "id":'.$id.', + "flags":4611686018427387903 + }'); + + $json = json_decode($accinfo, true); + + + //foreach ($json as $item){ + // echo $json['item']['nm']." | ".$json['item']['id']."\n"; + //} + //print_r($json['item']); + + + //echo "\n"; + + return $json['item']; + } + + // Информаци о всех пользователях на сервере + function allUsersInfo(Wialon $wialon_api){ + // Описание команд поиска: + // https://sdk.wialon.com/wiki/ru/kit/remoteapi/apiref/core/search_items + echo "\nЗапрос всех пользователей на сервере:\n"; + $accinfo=$wialon_api->call('core_search_items', '{ + "spec":{ + "itemsType":"user", + "propName":"sys_name", + "propValueMask":"*", + "sortType":"sys_name" + },"force":1, + "flags":4611686018427387903, + "from":0, + "to":0 + }'); + + $json = json_decode($accinfo, true); + + + + //print_r($json['items']); + + + //echo "\n"; + + return $json['items']; + } + + + + // Информаци о всех устройствах на сервере + function allDeviceInfo(Wialon $wialon_api){ + // Описание команд поиска: + // https://sdk.wialon.com/wiki/ru/kit/remoteapi/apiref/core/search_items + echo "\nЗапрос всех пользователей на сервере:\n"; + $accinfo=$wialon_api->call('core_search_items', '{ + "spec":{ + "itemsType":"avl_unit", + "propName":"unit_sensors", + "propValueMask":"*", + "sortType":"unit_sensors" + },"force":1, + "flags":1, + "from":0, + "to":0 + }'); + + $json = json_decode($accinfo, true); + + foreach ($json['items'] as $item){ + //echo $item['nm']." | ".$item['id']." | ".$item['mu']." | ".$item['uacl']."\n"; + + //echo $item['id']."\n"; + } + + print_r($json['items']); + + + echo "\n"; + } + + + // Импорт данных из одного аккаунта Wialon + function importWialonData($dostup_info){ + global $k2, $em; + + echo $dostup_info['host']."\n"; + echo $dostup_info['login']."\n"; + echo $dostup_info['password']."\n"; + echo $dostup_info['token']."\n"; + echo $dostup_info['scheme']."\n"; + + // $scheme = 'http', $host = 'hst-api.wialon.com' + $wialon_api = new Wialon($dostup_info['scheme'], $dostup_info['host']); + + // old username and password login is deprecated, use token login + $token = $dostup_info['token']; + $result = $wialon_api->login($token); + $json = json_decode($result, true); + + //var_dump($json); + + if(!isset($json['error'])){ + + echo 'id session='.$wialon_api->get_sid()."\n"; + + //$this->accInfo($wialon_api); + + //$this->findIDParam($wialon_api, 15199589); + /*Получение порции*/ + $re = $k2->sql->sel("SELECT MAX(CAST(portion AS SIGNED)) + FROM crmWialonAcc" + ); + + $portion=$re['data'][0][0]+1; + + $userData = $this->allUsersInfo($wialon_api); + + foreach ($userData as $item){ + //echo $item['nm']." | ".$item['id']." | ".$item['mu']." | ".$item['uacl']."\n"; + + //строка с перечнем id машин + $str_id = $item['prp']['monu']; + + //преобразуем в массив + $str_id = substr($str_id, 2, -2)."\n"; + $arr_id = explode('","', $str_id); + + + + + //получае данные по машинам + foreach ($arr_id as $id){ + $car_data = $this->findIDParam($wialon_api, trim($id)); + $acc_wialon = trim($item['nm']); + $acc_car = trim($car_data['nm']); + $car_mileage = trim($car_data['cnm']); + $this->insAccData($acc_wialon, $acc_car, $car_mileage, $portion); + } + + } + + $wialon_api->logout(); + } else { + echo WialonError::error($json['error']); + } + + + echo "Подключение завершено.\n"; + } + + /** + * вставка в таблицу аккаунтов Wialon + * @global type $k2 + * @param type $acc_wialon + * @param type $acc_car + * @param type $car_mileage + */ + function insAccData($acc_wialon='', $acc_car='', $car_mileage='', $portion) + { + global $k2; + + $ksql=$k2->ins_comp('k2sql'); + + if (trim($acc_wialon)<>'' && $acc_car<>''){ + + + // Строчка закачивалась, если совпадает название клиента и название машины + $find=$ksql->sel('SELECT accwialonid, car_new_mileage FROM crmWialonAcc WHERE (acc_wialon=:acc_wialon)AND(acc_car=:acc_car);', ['acc_wialon'=>$acc_wialon, 'acc_car'=>$acc_car]); + $a=$this->dostup; + + //если данных нет то вставляем, если есть то обновляем + //print_r($find['data']); + + if ($find['data']==[]){ + $ksql->ins_arr(['table'=>'crmWialonAcc', + 'fields'=>[ + 'accwialonid'=>'{id}', + 'portion'=>$portion, + 'acc_wialon'=>$acc_wialon, + 'acc_car'=>$acc_car, + 'car_mileage'=>$car_mileage, + 'datecreate'=>'{now}', + 'nameserver'=>$a[0]['host'], + 'car_new_mileage'=>$car_mileage + ] + ]); + } else { + + $ksql->upd( + "UPDATE crmWialonAcc + SET + car_mileage=:car_mileage, + car_new_mileage=:car_new_mileage, + datecreate=:datecreate, + portion=:portion, + nameserver=:nameserver + WHERE (acc_wialon=:acc_wialon) AND (acc_car=:acc_car) ", + ['acc_wialon'=>$acc_wialon, + 'acc_car'=>$acc_car, + 'portion'=>$portion, + 'nameserver'=>$a[0]['host'], + 'datecreate'=>'{now}', + 'car_mileage'=>$find['data'][0]['car_new_mileage'], + 'car_new_mileage'=>$car_mileage + ] + ); + + } + + } + + echo "Конец вставки записи.\n"; + + } + + + // Импорт данных из Wialon + function importAllWialonData(){ + + foreach ($this->dostup as $d) { + $this->importWialonData($d); + echo "\n"; + } + + } + + + + protected function init_obj(){ + global $k2; + $k2->check_connect(); + } + + // Логин/логаут + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/login + function login(){ + // /ajax.html?svc=core/login& + // params={ + // "user":"wialon", + // "password":"" + // } + } + + // Поиск элемента по ID + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/search + function findItemID($id){ + // /ajax.html?svc=core/search_item& + // params={ + // "itemId":48, + // "flags":1025 + // }&ssid= + } + + + // Поиск элемента по критериям + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/search + function findItemCrit(){ + // /ajax.html?svc=core/search_items& + // params={ + // "spec":{ + // "itemsType":"user", + // "propName":"sys_name", + // "propValueMask":"*", + // "sortType":"sys_name" + // }, + // "force":1, + // "flags":1, + // "from":0, + // "to":0xffffffff + // }&ssid= + } + + + + // Поиск объектов по создателю + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/search + function findItemOwner($owner){ + // /ajax.html?svc=core/search_items& + // params={ + // "spec":{ + // "itemsType":"avl_unit", + // "propName":"22sys_user_creator", + // "propValueMask":"22ac745a8ec8eb54469607d30bfeffb807", /* свойство "gd" создателя */ + // "sortType":"sys_name" + // }, + // "force":1, + // "flags":1, + // "from":0, + // "to":0xffffffff + // }&ssid= + } + + + // Создание объекта + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/update_item + function AddObject(){ + // /ajax.html?svc=core/create_unit& + // params={ + // "creatorId":7, + // "name":"ips_unit", + // "hwType":6 + // }&ssid= + } + + + // Редактирование объекта + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/update_item + function EditObject(){ + // /ajax.html?svc=core/search_item& + // params={ + // "itemId":51, + // "flags":2049 + // }&ssid= + } + + + // Удаление объекта + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/update_item + function DelObject(){ + // /ajax.html?svc=item/delete_item& + // params={ + // "itemId":51 + // }&ssid= + } + + + // Создание POI + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/resources + function AddROI(){ + // /ajax.html?svc=resource/update_poi& + // params={ + // "itemId":8, + // "id":0, + // "callMode":"create", + // "n":"gurtam", + // "d":"poi", + // "y":53.91069937030936, + // "x":27.516643322771575, + // "r":100, + // "f":1, + // "c":16733440 + // }&ssid= + } + + + // Редактирование POI + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/resources + function EditROI(){ + // /ajax.html?svc=resource/update_poi& + // params={ + // "itemId":8, + // "id":1, + // "callMode":"update", + // "n":"gurtam_office", /* меняем "gurtam" на "gurtam_office" */ + // "d":"poi", + // "y":53.91069937030936, + // "x":27.516643322771575, + // "r":50, /* меняем 100 на 50 */ + // "f":1, + // "c":16733440 + // }&ssid= + } + + + // Удаление POI + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/resources + function DelROI(){ + // /ajax.html?svc=resource/update_poi& + // params={ + // "itemId":8, + // "id":1, + // "callMode":"delete" + // }&ssid= + } + + + // Выполнение отчета + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/reports + function RunReport(){ + // /ajax.html?svc=report/exec_report& + // params={ + // "reportResourceId":163266, + // "reportTemplateId":10, + // "reportObjectId":34868, + // "reportObjectSecId":0, + // "interval":{ + // "from":1356984000, + // "to":1358711999, + // "flags":0 + // }, + // "tzOffset":134228528, + // "lang":"ru" + // }&ssid= + } + + + // Получение данных из таблиц + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/reports + function getDataFromTable(){ + // /ajax.html?svc=report/get_result_rows& + // params={ + // "tableIndex":0, + // "indexFrom":0, + // "indexTo":0 + // }&ssid= + } + + + // Получение графических данных + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/reports + function getGraphData(){ + // /ajax.html?svc=report/get_result_map& + // params={ + // "width":600, + // "height":600 + // }&ssid= + } + + + // Загрузка сообщений + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/messages + function loadMess(){ + // /ajax.html?svc=messages/load_interval& + // params={ + // "itemId":48, + // "type":1, + // "ival1":1361912400, + // "ival2":1361998799, + // "flags":0, + // "flagsMask":0, + // "loadLocations":false, + // "loadCount":3 + // }&ssid= + } + + + // Удаление сообщений + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/messages + function delMess(){ + // /ajax.html?svc=messages/delete_message& + // params={ + // "index":0 + // }&ssid= + } + + + // Очистка загрузчика сообщений + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/messages + function clearMess(){ + // /ajax.html?svc=messages/unload¶ms={}&ssid= + } + + + // Построение слоя треков + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/messages + function BuildTrack(){ + // /ajax.html?svc=renderer/create_image_renderer& + // params={ + // "tzOffset":134228528, + // "lang":"ru" + // }&ssid= + } + + + // Определение адреса + // https://sdk.wialon.com/wiki/ru/pro/remoteapi/codesamples/messages + function getAdressCoord(){ + // /ajax.html?svc=gis/get_locations& + // params={ + // "points":[{ + // "x":27.516643322771575, + // "y":53.91069937030936 + // }] + //}&ssid= + } + + + function content(){ + $rez=''; + + $this->importAllWialonData(); + //echo 'Импорт данных из Wialon CMS'; + + return $rez; + } + + +} + diff --git a/k2shop/k2shop/app/cmd/import_zoho.php b/k2shop/k2shop/app/cmd/import_zoho.php new file mode 100644 index 0000000..b67aaac --- /dev/null +++ b/k2shop/k2shop/app/cmd/import_zoho.php @@ -0,0 +1,517 @@ +check_connect(); + } + + + // Тестирование обращения к User по Doctrine + function doctrine_test_user(){ + global $em, $k2; + + + $productRepository = $em->getRepository('K2users'); + $products = $productRepository->findAll(); + + // Выборка + foreach ($products as $product) { + echo sprintf("-%s\n", $product->getUserId().' '.$product->getName()." ".$product->getLogin()); + } + + + echo "Select прошел.\n"; + + // Вставка записи + $user = new K2users(); + $user->setName('User Test'); + $em->persist($user); + $em->flush(); + + echo "Create User ID=".$user->getUserId().".\n"; + + } + + + // + function doctrine_test_user2(){ + global $em, $k2; + + /**$cont = new k2contacts(); + $cont->setFam('Тестовая фамилия'); + $cont->setIm('Иван'); + $cont->setOtch('Петрович'); + $em->persist($cont); + $em->flush(); + */ + + $productRepository = $em->getRepository('k2contacts'); + $products = $productRepository->findAll(); + + // Выборка + foreach ($products as $product) { + echo sprintf("-%s\n", $product->getContactid().' '.$product->getFam().' '.$product->getIm()." ".$product->getOtch()); + } + + + echo "Test\n"; + } + + + // Импорт из Zoho всех аккаунтов + function importFromZohoAll($is_all=0){ + $this->getAcc($is_all); + } + + // Импорт из Zoho аккаунтов за последний день или неделю - в зависимости от потребности + function importFromZohoNorm($is_all=1){ + $this->getAcc($is_all); + } + + + + function SetZohoData(crmZohoAcc $ZohoDB, $ZohoArr){ + global $em, $k2; + + $ZohoDB->setAccid($ZohoArr->data['ACCOUNTID']); + $ZohoDB->setSmownerid($ZohoArr->data['SMOWNERID']); + $ZohoDB->setAccOwner($ZohoArr->data['Account Owner']); + $ZohoDB->setAccName($ZohoArr->data['Account Name']); + + if (isset($ZohoArr->data['Учетная запись Wialon'])) + $ZohoDB->setAccWialon($ZohoArr->data['Учетная запись Wialon']); + + if (isset($ZohoArr->data['Тарифный план'])) + $ZohoDB->setTarifPlan($ZohoArr->data['Тарифный план']); + + //$acc->setLastActivity($rec->data['Last Activity Time']); + + if (isset($ZohoArr->data['Annual Revenue'])) + $ZohoDB->setAnnualRevenue($ZohoArr->data['Annual Revenue']); + + if (isset($ZohoArr->data['Employees'])) + $ZohoDB->setEmployees($ZohoArr->data['Employees']); + + $ZohoDB->setAccNumber($ZohoArr->data['Account Number']); + + $em->persist($ZohoDB); + $em->flush(); + } + + + + // Получение всего перечня контрагентов + // https://github.com/cristianpontes/zoho-crm-client-php + // + // Структура массива: + // [ACCOUNTID] => 2912936000000205132 + // [SMOWNERID] => 2912936000000131011 + // [Account Owner] => Сергей Капля + // [Account Name] => Роман Такси + // [Account Number] => 0 + // [Employees] => 0 + // [Annual Revenue] => 0 + // [SIC Code] => 0 + // [SMCREATORID] => 2912936000000131011 + // [Created By] => Сергей Капля + // [MODIFIEDBY] => 2912936000000131011 + // [Modified By] => Сергей Капля + // [Created Time] => 2017-12-05 23:15:16 + // [Modified Time] => 2017-12-05 23:22:27 + // [Last Activity Time] => 2017-12-05 23:22:27 + // [Учетная запись Wialon] => Роман Такси + // [Тарифный план] => kaplia + // [Объекты] => 0 + // + // $is_all - режим получения данных + // $is_all=0 - получать данные за все время + // $is_all=1 - получать данные за последнюю неделю + // $is_all=2 - получать данные за последний день + // $is_all=xxxx - получать данные по указанный индекс + // + // Просмотр в админке: https://crm.zoho.com/crm/EntityInfo.do?module=Accounts&id=2912936000000205146 + // + function getAcc($is_all=1){ + global $em, $k2; + + $client = new ZohoCRMClient('Accounts', $this->tocken); + + $records = $client->getRecords(); + //->fromIndex(1) + //->toIndex(20000) + //->selectColumns('First Name', 'Last Name', 'Email') + //->sortBy('Last Name')->sortAsc() + //->since(date_create('last week')) + //->request(); + + + // Получение данных за все время. (Внимание! Может наступить time-out!) + if ($is_all==0){ // Получаем все данные + $records->fromIndex(1)->toIndex(200000000); + }elseif($is_all==1){ // Получаем за последнюю неделю + $records->since(date_create('last week')); + }elseif($is_all==2){ // Получаем за последний день + $records->since(date_create('last day')); + }else{ // Получаем данные по индекс $is_all + $records->fromIndex(1)->toIndex($is_all); + } + + $records = $records->request(); + print_r($records); + + foreach ($records as $rec){ + + //var_dump($rec); + + + + $acc = new crmZohoAcc(); + print_r($acc); + $findacc = $em->find('crmZohoAcc', $rec->data['ACCOUNTID']); + + if ($findacc === null) { + $this->SetZohoData($acc, $rec); + echo "Create ZohoAcc ID=" . $acc->getAccid() . ".\n"; + }else{ + + if ($findacc->getAccName()<>$rec->data['Account Name']){ + $this->SetZohoData($findacc, $rec); + echo "Updated ZohoAcc ID=" . $findacc->getAccid() . ".\n"; + + } + + } + + } + + + + } + + + // Получаем перечень пользователей + // https://github.com/cristianpontes/zoho-crm-client-php + // Вход в админке: https://crm.zoho.com/crm/ShowTab.do?module=Leads + function getLeads(){ + global $k2; + $rez=''; + + $client = new ZohoCRMClient('Leads', $this->tocken); + + $records = $client->getRecords() + /*->selectColumns('First Name', 'Last Name', 'Email') + ->sortBy('Last Name')->sortAsc() + ->since(date_create('last week'))*/ + ->request(); + + // Just for debug + echo "

";
+        print_r($records);
+        echo "
"; + + + return $rez; + } + + + + // Получаем перечень счетов + // https://github.com/cristianpontes/zoho-crm-client-php + function getInvoices(){ + global $k2; + $rez=''; + + $client = new ZohoCRMClient('Invoices', $this->tocken); + + $records = $client->getRecords() + /*->selectColumns('First Name', 'Last Name', 'Email') + ->sortBy('Last Name')->sortAsc() + ->since(date_create('last week'))*/ + ->request(); + + // Just for debug + echo "
";
+        print_r($records);
+        echo "
"; + + + return $rez; + } + + + + // Получаем заказы на продажу + function getSalesOrders(){ + global $k2; + $rez=''; + + $client = new ZohoCRMClient('SalesOrders', $this->tocken); + + $records = $client->getRecords() + /*->selectColumns('First Name', 'Last Name', 'Email') + ->sortBy('Last Name')->sortAsc() + ->since(date_create('last week'))*/ + ->request(); + + // Just for debug + echo "
";
+        print_r($records);
+        echo "
"; + + + return $rez; + } + + + // Получаем Продукты + function getProducts(){ + global $k2; + $rez=''; + + $client = new ZohoCRMClient('Products', $this->tocken); + + $records = $client->getRecords() + /*->selectColumns('First Name', 'Last Name', 'Email') + ->sortBy('Last Name')->sortAsc() + ->since(date_create('last week'))*/ + ->request(); + + // Just for debug + echo "
";
+        print_r($records);
+        echo "
"; + + + return $rez; + } + + + // Получаем звонки + function getCalls(){ + global $k2; + $rez=''; + + $client = new ZohoCRMClient('Calls', $this->tocken); + + $records = $client->getRecords() + /*->selectColumns('First Name', 'Last Name', 'Email') + ->sortBy('Last Name')->sortAsc() + ->since(date_create('last week'))*/ + ->request(); + + // Just for debug + echo "
";
+        print_r($records);
+        echo "
"; + + + return $rez; + } + + + + + ///////////////////////////////////////////////////////////////////// + // Функции из документации к Zoho + ///////////////////////////////////////////////////////////////////// + + // Fetch Records from the "Leads" Module + // https://www.zoho.eu/crm/help/api/examples.html#10._Generate_Auth_token_PHP + function fetch_leads(){ + header("Content-type: application/xml"); + $token=$this->tocken; + $url = "https://crm.zoho.eu/crm/private/xml/Leads/getRecords"; + $param= "authtoken=".$token."&scope=crmapi"; + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $param); + $result = curl_exec($ch); + curl_close($ch); + echo $result; + return $result; + + } + + + // Generate Authentication Token using PHP + function generate_tocken(){ + $username = $this->username; + $password = $this->password; + $param = "SCOPE=ZohoCRM/crmapi&EMAIL_ID=".$username."&PASSWORD=".$password; + $ch = curl_init("https://accounts.zoho.eu/apiauthtoken/nb/create"); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $param); + $result = curl_exec($ch); + + /*This part of the code below will separate the Authtoken from the result. + Remove this part if you just need only the result*/ + $anArray = explode("\n",$result); + $authToken = explode("=",$anArray['2']); + $cmp = strcmp($authToken['0'],"AUTHTOKEN"); + echo $anArray['2'].""; if ($cmp == 0) + { + echo "Created Authtoken is : ".$authToken['1']; + return $authToken['1']; + } + curl_close($ch); + } + + + + + + + // Creating Potential with an existing Account + // API Method: insertRecords + // XML Format: + // https://crm.zoho.eu/crm/private/xml/Leads/insertRecords?authtoken=AuthToken&scope=crmapi + function CreatePotentialAcc(){ + // XML Data: + // + // + // First Potential + // description of the potential + // 01/04/2009 + // Your__Account__ID + // test@test.test + // "-data-" + // TRUE + // FREE + // 01/01/1970 + // Germany + // + // + } + + + + + // Insert Date Fields + // API Method: insertRecords + // XML Format: + // https://crm.zoho.eu/crm/private/xml/Accounts/insertRecords?authtoken=Auth Token&scope=crmapi + function insDateFields(){ + //XML Data: + // + // + // TestUser + // test@test.test + // TRUE + // 01/01/2009 + + // 05/10/2009 + // + // + } + + + + + // Insert Products into Invoice + // API Method: insertRecords + // XML Format: + // https://crm.zoho.eu/crm/private/xml/Leads/insertRecords?authtoken=AuthToken&scope=crmapi + function insProductInvoice(){ + //XML Data: + // + // + // ...all other invoice attributes... + // + // + // ___your_zoho_productId___ + // ___your_zoho_product_name___ + // 1 + // 1.00 + // 0 + // 1.00 + // 1.00 + // 0 + // 1.00 + // + // ...any other invoice attributes... + // + // + } + + + + function content(){ + $rez=''; + + $this->getAcc(0); + //$this->getLeads(); + //$this->getInvoices(); + //$this->getSalesOrders(); + //$this->getProducts(); + //$this->getCalls(); + + //$this->doctrine_test_user(); + + //$this->doctrine_test_user2(); + + //$this->importFromZohoAll(); + //$this->importFromZohoNorm(); + + echo 'Импорт данных из Zoho завершен.'; + + return $rez; + } + + +} + diff --git a/k2shop/k2shop/app/cmd/k2orm.php b/k2shop/k2shop/app/cmd/k2orm.php new file mode 100644 index 0000000..a618fc1 --- /dev/null +++ b/k2shop/k2shop/app/cmd/k2orm.php @@ -0,0 +1,211 @@ +check_connect(); + $this->k2struct=$k2->ins_comp('k2struct'); + } + + + // Вывод информации о таблице $tablename + function getTableInfo($tablename){ + global $k2; + + echo 'Будет информация для таблицы: '.$tablename."\n"; + $fields=$this->k2struct->getFields($tablename); + if ($fields<>''){ + $k2->sys->echo_arr_multy($fields, true, 20); + } + + echo "\nИнформация о индексах таблицы ".$tablename.":\n"; + $indexs=$this->k2struct->getIndexes($tablename); + if ($indexs<>''){ + $k2->sys->echo_arr_multy($indexs, true, 20); + } + + } + + + // Выводит информацию о всех таблицах + function getTableInfoAll(){ + global $k2; + + $tables=$this->k2struct->getTables(); + + foreach ($tables as $k=>$v){ + $this->getTableInfo($v); + } + } + + + // Информация о базе данных + function db_info(){ + global $k2; + + echo 'Текущая база данных: '.$this->k2struct->getCurrentDB()."\n\n"; + echo "Перечень таблиц в базе данных: \n"; + $k2->sys->echo_arr($this->k2struct->getTables(), true, 4, 40); + echo "\n\n"; + + } + + + // Основной модуль ORM-системы + function show_orm(){ + global $k2; + $rez=''; + $this->db_info(); + return $rez; + } + + + // Выводит помощь на экран + function help(){ + global $k2; + + $help=$this->loadTextFromRes('k2orm.txt'); + echo $help."\n"; + } + + + function content(){ + $rez=''; + + $opt = getopt("", array("p:", "c:", "t:", "op:")); + + // Вывод помощи + if (isset($opt['p'])&&($opt['p']=='?' or $opt['p']=='help')){ + $this->help(); + } + + // Вывод информации о полях и индексах таблицы tablename: + elseif (isset($opt['p'])&&($opt['p']=='info')&&((!isset($opt['t']))or(isset($opt['t']))&&($opt['t']=='*')) ){ + $this->getTableInfoAll(); + } + + // Вывод информации о полях и индексах таблицы tablename: + elseif (isset($opt['p'])&&($opt['p']=='info')&&(isset($opt['t']))){ + $this->getTableInfo($opt['t']); + } + + // Вывод информации о базе данных и ВСЕХ таблицах + elseif (isset($opt['p'])&&($opt['p']=='info')){ + $this->db_info(); + } + + // Реверс инжиниринг всех таблиц (создание YML-файла с описанием): + elseif (isset($opt['p'])&&($opt['p']=='reverse')&&((!isset($opt['t']))or(isset($opt['t']))&&($opt['t']=='*')) ){ + $this->k2struct->saveAllToYml(); + } + + // Вывод информации о полях и индексах всех таблиц: + elseif (isset($opt['p'])&&($opt['p']=='reverse')&&(isset($opt['t']))){ + $this->k2struct->saveToYml($opt['t']); + } + + + // Вывод структуры описания YML-файлов для всех таблиц + elseif (isset($opt['p'])&&($opt['p']=='struct')&&((!isset($opt['t']))or(isset($opt['t']))&&($opt['t']=='*'))){ + $this->k2struct->loadAllFromYml(); + } + + // Вывод структуры описания YML-файла для таблицы tablename + elseif (isset($opt['p'])&&($opt['p']=='struct')&&(isset($opt['t']))){ + $this->k2struct->infoFromYML($opt['t']); + } + + // Создание SQL структуры базы данных для всех файлов описания для полностью новой базы данных + elseif (isset($opt['p'])&&($opt['p']=='create')&&((!isset($opt['t']))or(isset($opt['t']))&&($opt['t']=='*'))){ + $this->k2struct->createSQLAllYml(); + } + + // Создание SQL структуры базы данных для файла описания tablename для полностью новой базы данных + elseif (isset($opt['p'])&&($opt['p']=='create')&&(isset($opt['t']))){ + $this->k2struct->createSQLYml($opt['t']); + } + + + // Сравнение структуры базы данных и выполнение SQL обновления + elseif (isset($opt['p'])&&($opt['p']=='compare')&&((!isset($opt['t'])) + or(isset($opt['t']))&&($opt['t']=='*'))&&(isset($opt['op'])&&($opt['op']=='run'))){ + $this->k2struct->runSQLCompareAll(); + } + + + // Сравнение структуры базы данных и выполнение SQL обновления для таблицы tablename + elseif (isset($opt['p'])&&($opt['p']=='compare')&&(isset($opt['t']))&&(isset($opt['op'])&&($opt['op']=='run'))){ + $this->k2struct->runSQLCompare($opt['t']); + } + + + // Сравнение структуры базы данных и описания в yml + elseif (isset($opt['p'])&&($opt['p']=='compare')&&((!isset($opt['t']))or(isset($opt['t']))&&($opt['t']=='*'))){ + echo "SQL для обновления:\n".$this->k2struct->compareSQLAll(); + } + + + // Сравнение структуры базы данных и описания в yml для таблицы tablename + elseif (isset($opt['p'])&&($opt['p']=='compare')&&(isset($opt['t']))){ + echo "SQL для обновления всех таблиц:\n".$this->k2struct->compareSQL($opt['t']); + } + + + // Изменение кодировки в таблицах + elseif (isset($opt['p'])&&($opt['p']=='convert')&&((!isset($opt['t']))or(isset($opt['t']))&&($opt['t']=='*'))){ + $this->k2struct->convertUTFAll(); + } + + + // Изменение кодировки для таблицы tablename + elseif (isset($opt['p'])&&($opt['p']=='convert')&&(isset($opt['t']))){ + $this->k2struct->convertTable($opt['t']); + } + + + + + + // Включение логирования на уровне БД для всех таблиц + + // Включение логирования на уровне БД для таблицы tablename + + // Отключение логирования на уровне БД для всех таблиц + + // Отключение логирования на уровне БД для таблицы tablename + + + + //print_r($this->k2struct->packs); + + + return $rez; + } + + +} + diff --git a/k2shop/k2shop/app/cmd/nginx_config.php b/k2shop/k2shop/app/cmd/nginx_config.php new file mode 100644 index 0000000..77a18be --- /dev/null +++ b/k2shop/k2shop/app/cmd/nginx_config.php @@ -0,0 +1,175 @@ +http_data_file*/$filename); + + $cnt=0; + $arr=explode("\n", $data); + foreach ($arr as $key) { + if ($cnt==0){ + $cnt++; + continue; + } + + if (trim($key)=='') continue; + + list($isupdate,$filename,$domain_names,$ip,$comment,$rootdir)=explode("|", $key); + + + // Пропускаем изменения, если отмечено, что не нужно обновлять + if ($isupdate=='1') { + + $config_temp=$template; + + $config_temp=str_replace('{alias}', $domain_names, $config_temp); + $config_temp=str_replace('{ip}', $ip, $config_temp); + $config_temp=str_replace('{domain_name}', $filename, $config_temp); + + $root='/var/www/html_my'; + if (trim($rootdir)<>''){ + $root=trim($rootdir); + } + + $k2->sys->forceDir($root); + + $config_temp=str_replace('{root}', $root, $config_temp); + + + file_put_contents($this->dir_nginx."/$filename",$config_temp); + + echo "$domain_names\n"; + echo "$config_temp\n\n"; + } + + $cnt++; + } + + echo "Создание конфигурационных файлов завершено.\n"; + return $rez; + } + + + // Возвращаем контент + function content(){ + global $k2; + $rez=''; + + $this->getListDomains($this->http_data_file, $this->redirect_config); + $this->getListDomains($this->https_data_file, $this->redirect_config_https); + + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/cmd/res/k2orm.txt b/k2shop/k2shop/app/cmd/res/k2orm.txt new file mode 100644 index 0000000..6a45de1 --- /dev/null +++ b/k2shop/k2shop/app/cmd/res/k2orm.txt @@ -0,0 +1,68 @@ +Подсказка по командам ORM +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="help" + +Вывод информации о базе данных и таблицах +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="info" + +Вывод информации о полях и индексах таблицы tablename: +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="info" --t="tablename" + +Вывод информации о полях и индексах всех таблиц: +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="info" --t="*" + +Реверс инжиниринг всех таблиц (создание YML-файла с описанием): +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="reverse" --t="*" + +Реверс инжиниринг структуры описания YML-файла для таблицы tablename +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="reverse" --t="tablename" + +Вывод структуры описания YML-файла для таблицы tablename +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="struct" --t="tablename" + +Вывод структуры описания YML-файлов для всех таблиц +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="struct" +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="struct" --t="*" + + +Сравнение структуры базы данных и описания в yml +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="compare" +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="compare" --t="*" + +Сравнение структуры базы данных и описания в yml для таблицы tablename +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="compare" --t="tablename" + +Сравнение структуры базы данных и выполнение SQL обновления для всех таблиц +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="compare" --op="run" +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="compare" --t="*" --op="run" + +Сравнение структуры базы данных и выполнение SQL обновления для таблицы tablename +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="compare" --t="tablename" --op="run" + +Создание SQL структуры базы данных для всех файлов описания для полностью новой базы данных +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="create" +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="create" --t="*" + +Создание SQL структуры базы данных для файла описания tablename для полностью новой базы данных +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="create" --t="tablename" + + +Включение логирования на уровне БД для таблицы tablename +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="log" --t="tablename" --op="run" + +Включение логирования на уровне БД для всех таблиц +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="log" --t="*" --op="run" +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="log" --op="run" + +Отключение логирования на уровне БД для таблицы tablename +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="log" --t="tablename" --op="stop" + +Отключение логирования на уровне БД для всех таблиц +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="log" --t="*" --op="stop" +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="log" --op="stop" + +Изменение кодировки для всех таблиц на UTF-8 +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="convert" +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="convert" --t="*" + +Изменение кодировки для таблицы tablename на UTF-8 +php ./k2shop/k2shop/cmd.php --c="k2orm" --p="convert" --t="tablename" \ No newline at end of file diff --git a/k2shop/k2shop/app/cmd/transfer_sendEmail.php b/k2shop/k2shop/app/cmd/transfer_sendEmail.php new file mode 100644 index 0000000..da97fda --- /dev/null +++ b/k2shop/k2shop/app/cmd/transfer_sendEmail.php @@ -0,0 +1,210 @@ + + html, body { font-family: Calibri; font-size: 10px; } + h1 { font-size: 36px; } + h2 { font-size: 24px; } + h3 { font-size: 16px; } + + table { width:75%; text-align: left; margin:20px; } + table tr { border-bottom: 1px solid #9c9c9c; height: 33px} + + .line { border-left: 1px solid #9c9c9c; padding-left: 10px } + + + + '; + public $emailBody=' + + + + + + + '; + public $emailFooter=' +
{letter}Оплатить
+ '; + public $returnUrl='/?comp=k2transferzakaz&c=pay&group_transid={transid}'; + public $letter_text = 'Нужно оплатить данный заказ'; + + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2, $trans; + $k2->inc('k2transfermain'); + } + + + /** + * + * @global type $k2 + * @global type $trans + * @return type + */ + function showForm(){ + global $k2, $trans; + $rez=''; + //отправка письма + + $now_time = time()+3600;//время в секундах + $now_date = date('j'); //сегодняшний день + $vip_days = $trans->getVipDate(); + $email_days = $vip_days[0]['email_day']; + + $arr_email_days = explode(', ', $email_days); + + foreach ($arr_email_days as $value) { + + $email_day = $value; + if ($email_day == 0) { + $email_day = self::VIP_EMAIL_DAY; + } + + if ($now_date == $email_day) { + $vip_email = $this->sendVipEmail(); + $rez .= $vip_email; + } + } + + $getAct = $trans->getActTr(); + + foreach ($getAct as $value) { + $start_time = strtotime($value['begin_service']); + $is_email = round(($start_time - $now_time)/3600); + $grp_tr = $value['group_transferid']; + $is_full_pay = $trans->isFullPay($grp_tr); + $email = $value['email']; + $is_vip = $value['partner_statusid']; + if (($is_email == self::EMAIL_TIME1)||($is_email == self::EMAIL_TIME2)){ + if ($is_vip == 2) { + $rez .= $this->sendEmail($grp_tr, $email); + } + } + // $rez .= $is_email.'
'; + } + + + + + return $rez; + } + + /** + * + * @global type $k2 + * @global type $trans + * @param type $grp_tr + * @param type $email + * @return type + */ + function sendEmail($grp_tr, $email) { + global $k2, $trans; + $rez = ''; + $rez .= $this->emailHead; + $rez .= $this->emailBody; + $rez .= $this->emailFooter; + $rez = str_replace('{pagepay}', 'http://'.$k2->domain().$this->returnUrl, $rez); + $rez = str_replace('{transid}', $grp_tr, $rez); + $rez = str_replace('{letter}', $this->letter_text, $rez); + $to = "".$email."" ; + + $subject = "ClickTransfert"; + + $message = " + + Transfer + + ".$rez." + "; + + $headers = "Content-type: text/html; charset=utf-8 \r\n"; + $headers .= "From: ClickTransfert\r\n"; + $headers .= "Bcc: ClickTransfert@example.com\r\n"; + mail($to, $subject, $message, $headers); + + return $rez; + } + + /** + * + * @global type $k2 + * @global type $trans + * @param type $grp_tr + * @param type $email + * @return type + */ + function sendVipEmail() { + global $k2, $trans; + $rez = ''; + + $vip_email = $trans->getVipEmail(); + + foreach ($vip_email as $value) { + $rez .= $this->emailHead; + $email = $email = $value['email']; + $forfeit = $trans->getForfeitTr($email); + + foreach ($forfeit as $val) { + $grp_tr = $val['group_transferid']; + $rez .= $this->emailBody; + $rez = str_replace('{pagepay}', 'http://'.$k2->domain().$this->returnUrl, $rez); + $rez = str_replace('{transid}', $grp_tr, $rez); + $rez = str_replace('{letter}', $this->letter_text, $rez); + $is_email = $trans->putEmeil($grp_tr); + } + $rez .= $this->emailFooter; + + $to = "".$email."" ; + $subject = "ClickTransfert"; + + $message = " + + Transfer + + ".$rez." + "; + + $headers = "Content-type: text/html; charset=utf-8 \r\n"; + $headers .= "From: ClickTransfert\r\n"; + $headers .= "Bcc: ClickTransfert@example.com\r\n"; + mail($to, $subject, $message, $headers); + } + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2, $trans; + + $rez=$this->showForm(); + + $checkAnn = $trans->checkActTr(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2ajax.php b/k2shop/k2shop/app/components/k2ajax.php new file mode 100644 index 0000000..25f4438 --- /dev/null +++ b/k2shop/k2shop/app/components/k2ajax.php @@ -0,0 +1,87 @@ +addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead() + { + global $k2; + + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + + // progress bar + public function simpleAjax($arr) + { + global $k2; + $rez = ''; + $this->setParam($arr); + $script = " function $this->call_func { + $.ajax({ + url: $this->url, + type: $this->method, + //processData: ".$this->processData.", + //contentType: ".$this->contentType.", + data: {".$this->data."}, + success: function(result){ + $this->success_func; + }}); + } + "; + + $k2->site->addJavaScript($this->ajax_id, $script); + + return $rez; + } + + function content() + { + global $k2; + + $rez = $this->simpleAjax($arr); + + return $rez; + } + + + function show() + { + echo $this->content(); + } + + + + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2autocomplite.php b/k2shop/k2shop/app/components/k2autocomplite.php new file mode 100644 index 0000000..ecdaf78 --- /dev/null +++ b/k2shop/k2shop/app/components/k2autocomplite.php @@ -0,0 +1,177 @@ +addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead() + { + global $k2; + + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + + + public function searchAct($searchTerm, $my_sql, $alias, $linkname, $relation) + { + global $k2; + + $rez = ''; + //$searchTerm2 = ucfirst($searchTerm); + $script = " + function set_item(item, id) { + $('#from_id').val(item); + // hide proposition list + $('#search_id').hide(); + $('#search_id').html(' '); + console.log(44); + } + "; + + $k2->site->addJavaScript('qwert', $script); + + $arr_sql = explode(" ", $my_sql); + + $id = $arr_sql[1]; + $id2 = $id; + + $name = $arr_sql[4]; + + $table = $arr_sql[8]; + + $and = ''; + if($relation !== ''){ + $and = 'AND '.$linkname.' = "'.$relation.'" '; + //echo $and; + } + + + if(strpos($my_sql, 'active') !== false){ + $and .= ' AND active = 1 '; + } + $addfield = ''; + if ($id == 'VirobnikId') { + $addfield = 'IdentNomer'; + } + + $new_sql = 'SELECT '.$id.', '.$name.' from '.$table.' where (Upper('.$name.') LIKE Upper("%'.$searchTerm.'%")) '.$and.' '; + if ($addfield != '') { + $new_sql = 'SELECT '.$id.', '.$name.', '.$addfield.' from '.$table.' where (Upper('.$name.') LIKE Upper("%'.$searchTerm.'%")) OR ('.$addfield.' LIKE Upper("%'.$searchTerm.'%")) '.$and.' '; + } + + + //показать все + if($searchTerm == '***'){ + $new_sql = 'SELECT '.$id.', '.$name.' FROM '.$table.' WHERE '.$name.'<> "" '.$and.' ORDER BY '.$name.' '; + } + //echo $new_sql; + $html = ""; + + if($alias !== ''){ + $id2 = $alias; + } + foreach($k2->db->query($new_sql) as $key){ + $key[$name] = trim($key[$name]); + $key[$name] = str_replace('"', '`', $key[$name]); + $key[$name] = str_replace("'", '’', $key[$name]); + $key[$name] = str_replace(",", '', $key[$name]); + $key[$name] = str_replace('\n', '', $key[$name]); + $rez .= "
  • ".$key[$name].$key[$addfield]."
  • "; + //$html = str_replace('"', '`', $html); + } + //echo $html; + return $rez; + } + + + + function searchForm() + { + global $k2; + + $script = "function autocomplet() { + var min_length = 1; + var keyword = $('#from_id').val(); + console.log(keyword); + if (keyword.length > min_length) { + $.ajax({ + url: '?comp=k2autocomplite&temp=ajax&event=search&mode=admin', + type: 'POST', + data: {keyword:keyword}, + success:function(data){ + $('#search_id').show(); + $('#search_id').html(data); + } + }); + } else { + $('#search_id').hide(); + } + + + } + function set_item(item, id) { + console.log(item); + $('#from_id').val(item); + // hide proposition list + $('#search_id').hide(); + //$('#search_id').html(' '); + + } + "; + $k2->site->addJavaScript('qwert', $script); + + $rez .= " +
      "; + return $rez; + } + + + function content() + { + global $k2; + + $event = $k2->get('event'); + + switch ($event) + { + case "search": + $searchTerm = $k2->post('keyword'); + $my_sql = $k2->post('sql'); + $alias = $k2->post('alias'); + $linkname = $k2->post('linkname'); + $relation = $k2->post('relation'); + $rez = $this->searchAct($searchTerm, $my_sql, $alias, $linkname, $relation); + break; + default: + $rez = ''; + } + + + return $rez; + } + + + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2browser.php b/k2shop/k2shop/app/components/k2browser.php new file mode 100644 index 0000000..f825dc6 --- /dev/null +++ b/k2shop/k2shop/app/components/k2browser.php @@ -0,0 +1,74 @@ +'Internet Explorer', + 'ver'=>10 + ], + + ['name'=>'Firefox', + 'ver'=>20 + ], + + ['name'=>'Chrome', + 'ver'=>20 + ], + + ['name'=>'Opera', + 'ver'=>20 + ] + ]; + + public $browser_name=''; // Название браузера + public $browser_ver=0; // Версия браузера + + public $comp; // Компонента браузера + + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + + $browse_file=nslashe($k2->rootdir.'\k2shop\k2shop\libs\browser\Browser.php'); + //echo 'file='.$browse_file.'
      '; + + require_once $browse_file; + $this->comp = new Browser(); + + $this->browser_name = $this->comp->getBrowser(); + $this->browser_ver = $this->comp->getVersion(); + } + + + // Блокирование доступа с браузера ниже версии, чем неоходимо + function blockBrowser(){ + foreach ($this->browser_allows as $br){ + if( $this->browser_name == $br['name'] && $this->browser_ver < $br['ver'] ) { + die('Необходим браузер '.$br['name'].' версии '.$br['ver'].' или выше'); + } + } + } + + + function content() + { + global $k2; + $rez='Будет определяться версия браузера клиента...'; + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2button.php b/k2shop/k2shop/app/components/k2button.php new file mode 100644 index 0000000..b132af9 --- /dev/null +++ b/k2shop/k2shop/app/components/k2button.php @@ -0,0 +1,160 @@ +addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + + $k2->site->addCSS('jqx.base.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.base.css"); + $k2->site->addJS('jqxcore.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcore.js"); + $k2->site->addJS('jqxbuttons.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxbuttons.js"); + $k2->site->addJS('jqxcheckbox.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcheckbox.js"); + $k2->site->addJS('jqxradiobutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxradiobutton.js"); + $k2->site->addJS('jqxswitchbutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxswitchbutton.js"); + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + + if (!isset($arr['hint'])){ + $this->hint = $this->btn_name; + } + + } + + // кнопка + public function simpleBtn($arr) + { + global $k2; + $this->setParam($arr); + $script = " + $(document).ready(function () { + $('#".$this->btn_id."').jqxButton({ width: '".$this->width."', height: '".$this->height."', template: '".$this->btn_tmp."', textImageRelation: 'imageBeforeText', textPosition: 'left', imgSrc: '".$this->img_src."', disabled: '".$this->disabled."' }); + $('#".$this->btn_id."').on('click', function () + { + ".$this->onclick." + }); + }); + "; + $k2->site->addJavaScript($this->btn_id, $script); + $rez = "
      "; + return $rez; + } + +// public function radioBtn($arr) +// { +// global $k2; +// $this->setParam($arr); +// $script = " +// $(document).ready(function () { +// $('#radio').jqxRadioButton({ width: ".$this->width.", height: ".$this->height." }); +// $('#radio2').jqxRadioButton({ width: ".$this->width.", height: ".$this->height." }); +// }); +// "; +// $k2->site->addJavaScript('k2radio', $script); +// $rez = "Radio 1 +// Radio 2"; +// return $rez; +// } +// +// public function switchBtn($arr) +// { +// global $k2; +// $this->setParam($arr); +// $script = " +// $(document).ready(function () { +// $('#".$this->btn_id."').jqxSwitchButton({ width: ".$this->width.", height: ".$this->height." }); +// +// }); +// "; +// $k2->site->addJavaScript('k2switch', $script); +// $rez = ""; +// +// return $rez; +// } +// + public function checkBox($arr) + { + global $k2; + $this->setParam($arr); + $script = " + $(document).ready(function () { + $('#".$this->btn_id."').jqxCheckBox({ width: ".$this->width.", height: ".$this->height." }); + + }); + "; + $k2->site->addJavaScript($this->btn_id, $script); + $rez = ""; + + return $rez; + } +// +// +// public function simpleButton ($arr) +// { +// $this->setParam($arr); +// echo '' +// . ''; +// } + + function showBtn($arr = []) + { + global $k2; + $this->setParam($arr); + switch ($this->btn_type) + { + case 'simple': + $rez = $this->simpleBtn($arr); + break; + case 'checkBox': + $rez = $this->checkBox($arr); + break; + default : + $rez = $this->simpleBtn(); + } + + return $rez; + } + + function content() + { + global $k2; + + $rez = $this->showBtn(); + + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2chat.php b/k2shop/k2shop/app/components/k2chat.php new file mode 100644 index 0000000..9ab9894 --- /dev/null +++ b/k2shop/k2shop/app/components/k2chat.php @@ -0,0 +1,426 @@ + +

      {chat_name}

      +
      +
        +
        +
        +

        Напишіть повідомлення×

        +
        + + + + + + Текст + + +
        +
        + + +

        '; + + protected function init_obj(){ + global $k2; + $this->addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + + $k2->site->addCSS('emojione.min.css', "//cdn.jsdelivr.net/emojione/1.3.0/assets/css/emojione.min.css"); + $k2->site->addCSS('styles.css', $this->chatlib_path."/assets/css/styles.css"); + //$k2->site->addJS('script.js', $this->chatlib_path."/assets/js/script.js"); + $k2->site->addJS('emojione.min.js', "//cdn.jsdelivr.net/emojione/1.3.0/lib/js/emojione.min.js"); + + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + + public function loadChat($room) + { + global $k2; + + require_once($k2->rootdir.$this->chatlib_path.'vendor/autoload.php'); + + // Если вы хотите удалить старые сообщения, измените значение на true. Мы так сделали для очистки демо-примера. + $deleteOldComments = false; + + // Настройка хранилища данных + + $dir = $k2->rootdir.'/chats'; + + $config = new \JamesMoss\Flywheel\Config($dir, array( + 'formatter' => new \JamesMoss\Flywheel\Formatter\JSON, + )); + + $repo = new \JamesMoss\Flywheel\Repository($room, $config); + + // Удаляем комментарии, опубликованные больше 1 часа назад, если в переменной содержится true. + + if($deleteOldComments) { + + $oldShouts = $repo->query() + ->where('createdAt', '<', strtotime('-1 hour')) + ->execute(); + + foreach($oldShouts as $old) { + $repo->delete($old->id); + } + + } + + // Отправляем последние 20 сообщений в формате json + + $shouts = $repo->query() + ->orderBy('createdAt ASC') + ->limit(20,0) + ->execute(); + + $results = array(); + + $config = array( + 'language' => '\RelativeTime\Languages\English', + 'separator' => ', ', + 'suffix' => true, + 'truncate' => 1, + ); + + $relativeTime = new \RelativeTime\RelativeTime($config); + + foreach($shouts as $shout) { + $shout->timeAgo = $relativeTime->timeAgo($shout->createdAt); + $results[] = $shout; + } + + $chatdir = $dir.'/'.$room.'/'; + $dir = opendir($chatdir); + $count = 0; + while($file = readdir($dir)){ + if($file == '.' || $file == '..' || is_dir($chatdir . $file)){ + continue; + } + $count++; + } + //echo 'Количество файлов: ' . $count; + + $k2->session[$room] = $count; + + header('Content-type: application/json'); + echo json_encode($results); + } + + + public function publishChat(){ + global $k2; + + $rez = ''; + + require_once($k2->rootdir.$this->chatlib_path.'vendor/autoload.php'); + + // Настраиваем хранилище данных + + $dir = $k2->rootdir.'/chats'; + + //$k2->sys->forceDir($dir.'/shouts/'.$this->chat_room); + + $config = new \JamesMoss\Flywheel\Config($dir, array( + 'formatter' => new \JamesMoss\Flywheel\Formatter\JSON, + )); + + $repo = new \JamesMoss\Flywheel\Repository($_POST["room"], $config); + + // Сохраняем поступившие данные (сообщения) в хранилище данных + + if(isset($_POST["name"]) && isset($_POST["comment"])) { + + $name = htmlspecialchars($_POST["name"]); + $name = str_replace(["\n", "\r"], '', $name); + + $comment = htmlspecialchars($_POST["comment"]); + $comment = str_replace(["\n", "\r"], '', $comment); + + // Сохранение нового сообщения + + $shout = new \JamesMoss\Flywheel\Document(array( + 'text' => $comment, + 'name' => $name, + 'createdAt' => time() + )); + + $repo->store($shout); + + + + } + + return $rez; + } + + + public function startChat($arr='') + { + global $k2; + + $this->setParam($arr); + + + + $script = " + "; + //$k2->site->addJavaScript($this->chat_room, $script); + + $rez = $script; + + $rez .= $this->chat_tpl; + + $rez = str_replace('{chat_name}', $this->chat_name, $rez); + $rez = str_replace('{chatlib_path}', $this->chatlib_path, $rez); + $rez = str_replace('{login}', $k2->auth->login.'-'.$k2->auth->username, $rez); + $rez = str_replace('{chat_room}', $this->chat_room, $rez); + + return $rez; + } + + + + function content(){ + global $k2; + + $rez ='111'; + + $event = $k2->get('event'); + + switch ($event) + { + case "publish": + $rez = $this->publishChat(); + break; + case "load": + $room = $k2->get('room'); + $rez = $this->loadChat($room); + break; + default: + $rez = $this->startChat(); + } + //$rez = $this->startChat(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2combobox.php b/k2shop/k2shop/app/components/k2combobox.php new file mode 100644 index 0000000..c98c3e5 --- /dev/null +++ b/k2shop/k2shop/app/components/k2combobox.php @@ -0,0 +1,112 @@ +ins_comp('k2combobox'); + // $arr = array('sql' => 'select * from table', + // 'name' => 'kcb' + // ); + // $rez .= $grid->simpleTable($arr); + function simpleList($arr){ + + global $k2; + + $this->ini_arr=$arr; + + require_once $k2->kool->KoolControlsFolderAbs."/KoolComboBox/koolcombobox.php"; + + $sql=$arr['sql'] /*"select countryid, countryname from k2country order by countryname"*/; + + // Устанавливаем название + $this->name='kcb'; + if (isset($arr['name'])){ + $this->name=$arr['name']; + } + + $this->comp = new KoolComboBox($this->name); + $this->comp->scriptFolder = $k2->kool->KoolControlsFolder."/KoolComboBox"; + + // Устанавливаем ширину + /*$width="120px";*/ + if (isset($arr['width'])){ + $width=$arr['width']; + $this->comp->width = $width; + } + + if (isset($arr['enabled'])){ + $enabled=$arr['enabled']; + $this->comp->enabled = $enabled; + } + + $this->comp->styleFolder=$k2->kool->style_combobox(); + $this->comp->itemTemplate = "
        {text}
        "; + + + $selectValue = ""; + $selectText = ""; + if($k2->post($this->name."_selectedValue")<>'') + { + $selectValue = $k2->post($this->name."_selectedValue"); + $selectText = $k2->post($this->name."_selectedText"); + } + + if (isset($arr['value']) && trim($arr['value'])<>''){ + $selectValue = trim($arr['value']); + } + + // Инициализация списка + foreach ($k2->db->query($sql) as $row) { + $this->comp->addItem($row[$arr['namefield']], $row[$arr['idfield']], array(),($selectValue==$row[$arr['idfield']])); + } + + + } + + + // Возвращает выбранный ID + function selID(){ + global $k2; + + $selectValue = ""; + if(trim($k2->post($this->name."_selectedValue"))<>'') + { + $selectValue = $k2->post($this->name."_selectedValue"); + + } + return $selectValue; + } + + // Возвращает выбранный текст + function selText(){ + global $k2; + + $selectText = ""; + if(trim($k2->post($this->name."_selectedValue"))<>'') + { + $selectText = $k2->post($this->name."_selectedText"); + } + return $selectText; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2connections.php b/k2shop/k2shop/app/components/k2connections.php new file mode 100644 index 0000000..5839c3c --- /dev/null +++ b/k2shop/k2shop/app/components/k2connections.php @@ -0,0 +1,18 @@ +ini_arr=$arr; + + // Устанавливаем название + if (isset($arr['name'])){ + $this->name=$arr['name']; + } + + } + + + // Выводит поле с датой + function date($arr){ + global $k2; + $this->saveVar($arr); + + require_once $k2->kool->KoolControlsFolderAbs."/KoolCalendar/koolcalendar.php"; + + $this->comp = new KoolDatePicker($this->name); //Create calendar object + $this->comp->scriptFolder = $k2->kool->KoolControlsFolder."/KoolCalendar";//Set scriptFolder + // $this->comp->styleFolder=$k2->kool->style_calendar(); + $this->comp->styleFolder=$k2->kool->KoolControlsFolder."/KoolCalendar/styles/sunset"; + $this->comp->Localization->Load($k2->kool->KoolControlsFolderAbs."/KoolCalendar/localization/ru.xml"); + $this->comp->DayNameFormat='Short'; + $this->comp->Width = "520px"; + $this->comp->CalendarSettings->FirstDayOfWeek=1; + + + //Change date and time format + $this->comp->DateFormat = "d.m.Y"; + + $this->comp->Init(); + + //return $this->comp->Render(); + } + + // Выводит поле с временем + function time($arr){ + global $k2; + $this->saveVar($arr); + + require_once $k2->kool->KoolControlsFolderAbs."/KoolCalendar/koolcalendar.php"; + + $this->comp = new KoolTimePicker("timepicker"); //Create calendar object + $this->comp->scriptFolder = $k2->kool->KoolControlsFolder."/KoolCalendar";//Set scriptFolder + $this->comp->styleFolder=$k2->kool->style_calendar(); + + $this->comp->TimeViewSettings->StartTime = mktime(0,0,0); // Start at 8:00 + $this->comp->TimeViewSettings->EndTime = mktime(23,0,0); // End at 17:00 + $this->comp->TimeViewSettings->Interval = mktime(1,0,0); // Every 1 hour + + $this->comp->Init(); + + } + + + // Замена символов + function replace_tag(){ + + } + + + + + // Выводит поле вввода + function Render(){ + $rez=$this->comp->Render(); + + // $pos=stripos($rez ,' +/* while ($pos<>FALSE) { + $rez=str_ireplace ( '>' , '/>', $rez ,$pos ); + $pos=stripos($rez ,'inc('k2transfermain'); + //$k2->site->addJS('jquery.min.js',$this->phpgrid_path."js/jquery.min.js"); + //$k2->site->addJSEnd('transfermain.js', '/k2shop/k2shop/app/app/transfer/k2transfermain/transfermain.js'); + + + $k2->site->addCSS('jquery-ui.css', '//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css'); + + $k2->site->addJS('jquery-ui.js', '//code.jquery.com/ui/1.12.1/jquery-ui.js'); + //$k2->site->addJS('jquery.timepicker.js','//cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.10.0/jquery.timepicker.js'); + //$k2->site->addJS('jquery-1.12.4.js','//code.jquery.com/jquery-1.12.4.js'); + //$k2->site->addJS('datepicker.ru-RU.js','//cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/i18n/datepicker.ru-RU.js'); + //$k2->site->addJSEnd('jquery.datetimepicker.full.min.js', '/k2shop/k2shop/app/app/shop/k2mag/scripts/datapicker/jquery.datetimepicker.full.min.js'); + //$k2->site->addJSEnd('datapicker.js', '/k2shop/k2shop/app/app/shop/k2mag/scripts/datapicker.js'); + } + + // Сохраняет параметры, как свойства + function saveVar($arr) { + global $k2; + $this->ini_arr = $arr; + // Устанавливаем название + if (isset($arr['name'])) { + $this->name = $arr['name']; + } + } + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + + } + // Выводит поле с датой + function date($arr = []) { + global $k2; + $this->setParam($arr); + ob_start(); + ?> + + + + + + + + + '; + return $rez; + } + + // Выводит поле с временем + function time($arr) { + global $k2; + } + + // Замена символов + function replace_tag() { + + } + + // Выводит поле вввода + function content() { + + return $rez; + } + +} diff --git a/k2shop/k2shop/app/components/k2feedback.php b/k2shop/k2shop/app/components/k2feedback.php new file mode 100644 index 0000000..71f1774 --- /dev/null +++ b/k2shop/k2shop/app/components/k2feedback.php @@ -0,0 +1,389 @@ +Обратная связь'; //Название кнопки + public $link_tpl2 = 'НАПИШИТЕ НАМ'; //Название кнопки + public $modwindow = ' '; + public $subscribe_tpl = ' +
        + +
        +
        +
        + + +
        +
        +
        +
        '; + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + // $this->addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + + + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + + + + } + + + + function renderJS(){ + global $k2; + + $rez=" + "; + return $rez; + } + + function subscribe() + { + global $k2; + $rez .= $this->renderJS(); + $rez .= $this->subscribe_tpl; + + return $rez; + } + + + //подписка на рассылку + function addSubscribe(){ + global $k2; + $k2->post('email'); + $rez = $this->addSubscribeEmail($k2->post('email')); + + return $rez; + } + + function addSubscribeEmail($email){ + global $k2; + + //проверка Подписки + $r = $k2->sql->sel("SELECT s.email + FROM k2email_subscribe s + + + Where s.email=:email + ", + ['email'=>$email]); + + if($r['data'][0]['email']==''){ + $err = $k2->sql->ins_arr( + ['table' => 'k2email_subscribe', + 'fields' => [ + 'email'=>$email + ] + ] + ); + $rez="
        Ваш Email: '".$email."' подписaн
        "; + }else{ + $rez="
        Email: '".$email."' уже подписaн
        "; + } + return $rez; + } + + function sendEmail2() + { + global $k2; + $mailto = 'ae@corp2.net'; + $array = $k2->post('arr'); + $mess_arr = []; + foreach ($array as $key => $value) { + $mess_arr[$value['name']] = $value['value']; + } + + if($k2->post('arr')){ + $subj = 'Новое сообщение'; + $headers = "Content-type: text/html; charset=utf-8 \r\n"; + $headers .= "From: K2\r\n"; + //$headers .= "Bcc: noreply@let-know.com\r\n"; + + $message = ''; + $message .= 'ФИО: '.$mess_arr['name'].'
        '; + $message .= 'Email: '.$mess_arr['email'].'
        '; + $message .= 'Телефон: '.$mess_arr['phone'].'
        '; + $message .= 'Курсы: '.$mess_arr['webcheck'].' '.$mess_arr['1ccheck'].' '.$mess_arr['crosscheck'].'
        '; + $message .= 'Сообщение: '.$mess_arr['message'].'
        '; + + + $k2->mail->sendMail($mailto, $subj, $message, $headers); + //$k2->mail->sendMail($mailto2, $subj, $message, $headers); + + + $this->saveEmails($mess_arr, $message); + } + + return $rez; + } + + + function saveEmails($mess_arr, $message){ + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + $emailid = $this->getID(); + $created_at = date('Y-m-d H:i:s'); + $r = $k2->sql->ins_arr( + ['table' => 'k2emails', + 'fields' => [ + 'emailid'=>$emailid, + 'from_emeil'=>$mess_arr['email'], + 'created_at'=>$created_at, + 'message'=>$message, + ] + ] + ); + if (trim($err['err'])<>''){ + $rez['err']='Помилка. '.$r['err']; + $k2->log->err($rez['err'], false); + } + return $rez; + } + + + /** + * отправка письма + * @global type $k2 + * @return type + */ + function sendEmail() + { + global $k2; + + if(trim($k2->post('feedtextemail'))<>''){ + $mask_arr = [ + '', + '', + $k2->post('feedname'), + $k2->post('feedemail'), + $k2->post('feedtextemail'), + $k2->proto.'://'.$k2->domain(), + $_SERVER['REQUEST_URI'] + ]; + + $email_comp = $k2->ins_comp('k2setemail'); + $mess = $email_comp->formEmail('mess_tpl_11', $mask_arr); + + $headers = "Content-type: text/html; charset=utf-8 \r\n"; + $headers .= "From: ikiss\r\n"; + $headers .= "Bcc: noreply@ikiss.com.ua\r\n"; + //$mailto = 'info@let-know.com'; + $mailto2 = $k2->site->getRequisites('email'); + $mailto = 'ae@corp2.net'; + //$mailto3 = 'vasylyuk@corp2.net'; + $rez=$mess; + $subj = 'Сообщение c сайта ikiss'; + /*$mess = "Обратная связь от клиента.\n"; + $mess .= "Имя: ".$k2->post('feedname')."\n" + . "Email: ".$k2->post('feedemail')."\n" + . "Сообщение: ".$k2->post('feedtextemail');*/ + + $k2->mail->sendMail($mailto, $subj, $mess, $headers); + $k2->mail->sendMail($mailto2, $subj, $mess, $headers); + //$k2->mail->sendMail($mailto3, $subj, $mess, $headers); + //$k2->mail->sendSMTPMail($mailto, $subj, $mess, $k2->post('feedemail')); + //$k2->mail->sendSMTPMail($mailto2, $subj, $mess, $k2->post('feedemail')); + //$k2->mail->sendSMTPMail($mailto3, $subj, $mess, $k2->post('feedemail')); + } + + return $rez; + } + + public function showModalBtn($arr = []) + { + global $k2; + $rez .= $this->renderJS(); + $rez .= $this->link_tpl2; + $rez .= $this->modwindow; + return $rez; + } + + // кнопка + public function showLink($arr = []) + { + global $k2; + //$this->setParam($arr); + + $rez .= $this->renderJS(); + $rez .= $this->link_tpl; + + //всплывающее окно + $jqx = $k2->ins_comp('k2window'); + + $arr_win = [ + 'main_div'=>'footer_feedback', + 'wnd_id'=>'feedback', + 'is_modal'=>true, + 'height'=>550, + 'width'=>450, + 'left'=>400, + 'top'=>0, + 'button'=>false, + 'wnd_body'=>' + + ' + ]; + $rez .= $jqx->showWindow($arr_win); + + + + return $rez; + } + + + + function content() + { + global $k2; + + $event = $k2->get('event'); + + switch ($event) + { + case "sendemail": + $rez = $this->sendEmail2(); + break; + case "subscribe": + $rez = $this->addSubscribe(); + break; + default: + $rez = $this->showLink(); + } + + return $rez; + } + + + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2form.php b/k2shop/k2shop/app/components/k2form.php new file mode 100644 index 0000000..a784b94 --- /dev/null +++ b/k2shop/k2shop/app/components/k2form.php @@ -0,0 +1,2581 @@ +addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + + $k2->site->addJS('jquery.min.js',$this->phpgrid_path."js/jquery.min.js"); + $k2->site->addCSS('select2.min.css', "/k2shop/k2shop/libs/select2/select2.min.css"); + $k2->site->addJS('select2.min.js', "/k2shop/k2shop/libs/select2/select2.min.js"); + $k2->site->addCSS('jqx.base.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.base.css"); + + $k2->site->addJS('jqxcore.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcore.js"); + //$k2->site->addJS('jqxloader.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxloader.js"); + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + + + + /** + * Получение полей + * @global type $k2 + * @param type $arr + * @return string + */ + public function getFields($arr) + { + global $k2; + $rez = ''; + + $js_str = ''; + $all_fields = 'allFields = $( [] )'; + + foreach ($arr['fields'] as $key => $value) { + if(trim($value['field']) !== ''){ + $js_str .= $value['field']." = $( '#".$value['field']."'), "; + $all_fields .= ".add(".$value['field'].")"; + } + } + + $rez = $js_str.$all_fields.','; + + return $rez; + } + + /** + * Добавление данных в базу из формы + * @global type $k2 + * @param type $add_json + * @return type + */ + public function addData($add_json, $arr) + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; + + $arr_add = json_decode($add_json, true); + + $arr = json_decode($arr, true); + + + $add = $arr['perm']['add']; + + $k2->log->addDBLog($k2->getCurURL(), 'Додавання заявки', json_encode($arr_add, JSON_UNESCAPED_UNICODE)); + //$is_ins = $this->permission['i']; + + //генерация hash ID + if (!isset($arr['typeid'])||($arr['typeid'] == 1)){ + $new_id = $this->getID(); + $arr_keys = array_keys ($arr_add['fields']); + $id = $arr_keys[0]; + $arr_add['fields'][$id] = $new_id; + } + $rez['id'] = $new_id; + if($add == false){ + + $k2->log->err('Помилка! Недостатньо прав для додавання записів'.$k2->auth->roleid); + $rez['err'] = 'Помилка! Недостатньо прав для додавання записів'; + $rez = json_encode($rez); + return $rez; + + } else { + + eval($arr["before_ins"]); + + $r = $k2->sql->ins_arr( + $arr_add + ); + + eval($arr["after_ins"]); + + + if($r['err']!==''){ + $k2->log->err($r['err']); + $rez['err'] = $r['err']; + $rez = json_encode($rez); + return $rez; + } + } + + $rez = json_encode($rez); + return $rez; + } + + /** + * Проверка прав пользователя на внесение изменений + * @global type $k2 + * @param type $arr + * @return boolean + */ + function checkRights($arr) + { + global $k2; + + $rez = true; + + $compn = $arr['compn']; + + $k2->secur->loadMenuPrav(); + + $arr_rights = $k2->secur->searchPrav("$compn"); + + if ($arr_rights['w'] !== '1'){ + $rez=false; + } + + if ($k2->auth->isSuperAdmin()){ + $rez = true; + } + + return $rez; + } + + + /** + * Проверка является ли запись редактируемой + */ + function isReadOnlyField(&$arr, $fieldname) + { + $rez=true; + + foreach ($arr['fields'] as $v){ + //if ($v['field']==$fieldname or $v['alias']==$fieldname){ + if (!isset($v['readonly'])||$v['readonly']!=true){ + $rez=false; + } + + //} + } + + return $rez; + } + + + + /** + * Редактирование данных в базе из формы + * @global type $k2 + * @param type $add_json + * @return type + */ + public function editData($edit_json, $arr) + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; + + $arr_edit = json_decode($edit_json, true); + $arr = json_decode($arr, true); + $set_str = ''; + + $qwe = $this->owner->owner->sets; + + $total = count($arr_edit['fields']); + $counter = 0; + + $edit = $arr['perm']['edit']; + + //$is_wright = $this->permission['w']; + + //$data = $k2->dump($arr['fields']); + //file_put_contents('D:\tmp\array.txt', $data); + $json_string = json_encode($arr_edit, JSON_UNESCAPED_UNICODE); + $json_string = str_replace("'", "`", $json_string); + $k2->log->addDBLog($k2->getCurURL(), 'Редагування заявки', $json_string); + + $arr_edit2=[]; + + foreach ($arr_edit['fields'] as $key => $value) { + $counter++; + + $isReaOnly=$this->isReadOnlyField($arr, $key); + + if (!$isReaOnly){ + if (trim($set_str)<>'') $set_str.=', '; + $set_str .= "$key=:$key"; + /*if($counter !== $total){ + $set_str .= ', '; + }*/ + + $arr_edit2[$key]=$value; + } + } + + + + + $arr_keys = array_keys ($arr_edit['fields']); + + $val = $arr_edit['fields'][$arr_keys[0]]; + + $where = $arr_keys[0]."='".$val."'"; + + + $keyId = $arr_edit['fields'][$arr_keys[0]]; + + + $sql="UPDATE ".$arr_edit['table']." + SET $set_str + WHERE $where "; + + if($edit == false){ + + $k2->log->err('Помилка! Недостатньо прав для редагування записів'.$k2->auth->roleid); + $rez['err'] = 'Помилка! Недостатньо прав для редагування записів'; + $rez = json_encode($rez); + return $rez; + + } else { + + //проверка на наличие ключевого поля + if($keyId == '' || $keyId == NULL){ + $k2->log->err('Помилка! Ключове поле не може бути порожнім '.$sql); + $rez = json_encode($rez); + return $rez; + } else { + $r = $k2->sql->upd( + $sql, + /*$arr_edit['fields']*/ + $arr_edit2 + ); + eval($arr["on_edit"]); + } + + //обработка ошибок + if($r['err']!==''){ + $k2->log->err($r['err']); + $rez['err'] = $r['err']; + $rez = json_encode($rez); + return $rez; + } + } + + $rez = json_encode($rez); + + return $rez; + } + + /** + * Вывод формы не привязанной к grid + * @global type $k2 + * @param type $arr + * @return string + */ + public function showForm($arr, $elsef = '') + { + global $k2; + $rez = ''; + + $grid=$k2->ins_comp2('k2phpgrid', $this); + $sess_hash = $this->getID(); + $k2->site->addJS('jquery.min.js',$this->phpgrid_path."js/jquery.min.js"); + $k2->site->addCSS('jquery-ui.custom.css',$this->phpgrid_path."js/themes/redmond/jquery-ui.custom.css"); + $k2->site->addCSS('select2.min.css', "/k2shop/k2shop/libs/select2/select2.min.css"); + $k2->site->addJS('select2.min.js', "/k2shop/k2shop/libs/select2/select2.min.js"); + $k2->site->addCSS('jquery.timepicker.css', '//cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.10.0/jquery.timepicker.css'); + $k2->site->addJS('jquery.timepicker.js','//cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.10.0/jquery.timepicker.js'); + $k2->site->addJSEnd('jquery.datetimepicker.full.min.js', '/k2shop/k2shop/app/app/shop/k2mag/scripts/datapicker/jquery.datetimepicker.full.min.js'); + $k2->site->addJSEnd('datapicker.js', '/k2shop/k2shop/app/app/shop/k2mag/scripts/datapicker.js'); + $k2->site->addCSS('jqx.base.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.base.css"); + + $k2->site->addJS('jqxcore.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcore.js"); + //$k2->site->addJS('jqxloader.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxloader.js"); + $k2->session[$sess_hash.'arr_sets'] = json_encode($arr); + + if($arr['btn_hidd'] == true){ + $btn_hidd = 'hidden'; + } + $myaddscript = ''; + if($arr['addscript']){ + $myaddscript = $arr['addscript']; + } + $myeditscript = ''; + if($arr['editscript']){ + $myeditscript = $arr['editscript']; + } + + $btn_text = ''; + if($arr['btn_text']){ + $btn_text = $arr['btn_text']; + } + + $btn_class = ''; + if($arr['btn_class']){ + $btn_class = $arr['btn_class']; + } + + $after_save_script = ''; + if($arr['after_save_script']){ + $after_save_script = $arr['after_save_script']; + } + + $before_show_script = 'null'; + if($arr['before_show_script']){ + $before_show_script = $arr['before_show_script']; + } + + $after_show_script = 'null'; + if($arr['after_show_script']){ + $after_show_script = $arr['after_show_script']; + } + /* $elsef=''; + if($elsef<>''){ + $elsef="elsef:'$elsef',"; + }*/ + + $table = $arr['table']; + $rez .= " + "; + $rez.= ""; + //$rez .= ""; + //$rez.= "
        "; + return $rez; + } + + + // форма + public function getForm($arr) + { + global $k2; + $sess = $k2->post('sess'); + $grid = 1; + if($k2->get('event')=='data_add'){ + $arr = json_decode($arr, true); + } + if (!$arr) { + $sess_data = $k2->session[$sess]; + $grid = 0; + $arr = json_decode($sess_data, true); + } + + + $this->sets = $arr; + + $this->setParam($arr); + + $dec_arr = json_encode($arr); + + $table = $arr['table']; + + $after_save_script = ''; + if($arr['after_save_script']){ + $after_save_script = $arr['after_save_script']; + } + + $before_show_script = 'null'; + if($arr['before_show_script']){ + $before_show_script = $arr['before_show_script']; + } + $after_show_script = 'null'; + if($arr['after_show_script']){ + $after_show_script = $arr['after_show_script']; + } + if ($k2->selfurl) { + $add_url = "'".$_SERVER['REQUEST_URI']."/temp/ajax/event/parent'"; + } else { + $add_url = "'".$_SERVER['REQUEST_URI']."&temp=ajax&event=parent'"; + } + + $sel2 = ''; + if ($k2->post('elsef') == '') { + $sel2 = " $(function(){ + $('.select2').select2(); + });"; + } + $parent=''; + $sq=''; + if($arr['parent']<>''){ + $parent = $arr['parent']; + $sq = $arr['sql']; + } + + + + $load='Loading...'; + $script = " + + function uploadFileAjax$table(id){ + var input = $('#'+id); + var fd = new FormData; + + fd.append('f', input.prop('files')[0]) + fd.append('input', id); + fd.append('path', input.attr('atr-path')); + //console.log(fd) + var file=$('.f'+id+':eq(1)').html()+'
        не вдалось завантажити файл!!!'; + $('.f'+id+':eq(1)').html('$load'); + + $.ajax({ + url: '/?comp=k2form&temp=ajax&event=uploadfileajax&mode=admin', + type: 'post', + data: fd, + cache:false, + contentType: false, + processData: false, + success: function(rez){ + rez = JSON.parse(rez) + if(rez.re==1){ + $('#fileext').val(rez.fileext); + $('#md5_file').val(rez.md5_file); + $('#typefileid').val(rez.typefileid); + $('#datecreate').val(rez.datecreate); + + $('.f'+id+':eq(1)').html(rez.input); + }else{ + $('.f'+id+':eq(1)').html(file); + } + + } + }); + } + + $sel2 + + $( function() { + var dialog$table, form, + + ".$this->getFields($arr)." + + tips = $( '.validateTips' ); + + function updateTips( t ) { + tips + .text( t ) + .addClass( 'ui-state-highlight' ); + setTimeout(function() { + tips.removeClass( 'ui-state-highlight', 1500 ); + }, 500 ); + } + + function checkLength( o, n, min, max ) { + + if ( o.val().length > max || o.val().length < min ) { + o.addClass( 'ui-state-error' ); + updateTips( n ); + return false; + } else { + return true; + } + } + + function checkSelectLength( o, n) { + var id = o.attr('id'); + + var texts = $('#'+id+' :selected').html(); + + if ( o.val() === null || texts.indexOf('---------------') + 1 || texts == '' ) { + o.addClass( 'ui-state-error' ); + updateTips( n ); + return false; + } else { + return true; + } + } + + function checkRegexp( o, regexp, n ) { + var regex = new RegExp(regexp); + if ( !( regex.test( o.val() ) ) ) { + o.addClass( 'ui-state-error' ); + updateTips( n ); + return false; + } else { + return true; + } + } + + function reverse_date (str) { + return str.split('.').reverse().join('.'); + } + + function reverse_datetime (str1) { + var str = str1.split(' '); + var rez = reverse_date(str[0]); + var strsum = rez + ' ' + str[1]; + return strsum; + } + + + function addData$table() { + var valid = true; + allFields.removeClass( 'ui-state-error' ); + + if ( valid ) { + add_data = {}; + + add_data.table = '$table'; + + add_data.fields = {}; + + + + $( 'div#$this->form_id$table input' ).each(function( index ) { + + + if($(this).prop('required')){ + valid = valid && checkLength( $(this), 'Заповніть поле', 1, 150 ); + + } + + var minlength = $(this).attr('minlength'); + var maxlength = $(this).attr('maxlength'); + + + if (typeof minlength !== typeof undefined && minlength !== false) { + valid = valid && checkLength( $(this), 'Довжина значення повинна бути від ' + minlength + ' до ' + maxlength + ' символів', minlength, maxlength); + } + + if (typeof maxlength !== typeof undefined && maxlength !== false) { + valid = valid && checkLength( $(this), 'Довжина значення повинна бути від ' + minlength + ' до ' + maxlength + ' символів', minlength, maxlength); + } + + var regexp = $(this).attr('regexp'); + if (typeof regexp !== typeof undefined && regexp !== false) { + valid = valid && checkRegexp( $(this), regexp, 'Поле заповнене не вірно'); + } + + if( $( this ).hasClass('book')||$( this ).hasClass('select2-offscreen')||$( this ).hasClass('select2-input')||($( this ).is(':radio')&&(!$(this).is(':checked')))){ + + } else { + var key = $( this ).attr('id'); + var value = $( this ).val(); + if ( $( this ).hasClass('datepick') ) { + if($(this).prop('required')){ + valid = valid && checkLength( $(this), 'Заповніть поле', 6, 150 ); + } + var value = reverse_date(value); + //console.log(value); + } + if ( $( this ).hasClass('datepick') || $( this ).hasClass('timepick') || $( this ).hasClass('datetimepick') ) { + if(value == ''){ + value = '0000-00-00'; + } else { + if ( $( this ).hasClass('datetimepick') ) { + if($(this).prop('required')){ + valid = valid && checkLength( $(this), 'Заповніть поле', 6, 150 ); + } + var value = reverse_datetime(value); + //console.log(value); + } + } + } + if ($( this ).is(':radio')) { + //var val = ''; + var key = $( this ).attr('name'); + if( $(this).is(':checked') ){ + var val = $(this).val(); + console.log(key+val); + } + console.log(key+val); + } + var type = $( this ).attr('type'); + + if(type == 'checkbox'){ + if ( $( this ).prop( 'checked' ) ){ + var value = 1; + } else { + var value = 0; + } + + } + + add_data.fields[key] = value; + + console.log(add_data); + } + + }); + + + $( 'div#$this->form_id$table textarea' ).each(function( index ) { + if($(this).prop('required')){ + valid = valid && checkLength( $(this), 'Заповніть поле - Вид аналізування', 1, 1500 ); + } + if( $( this ).hasClass('book')||$( this ).hasClass('select2-offscreen')||$( this ).hasClass('select2-input')){ + + } else { + var key = $( this ).attr('id'); + var value = $( this ).val(); + + var type = $( this ).attr('type'); + + + add_data.fields[key] = value; + } + }); + + $('div#$this->form_id$table select.select2').each(function( index ) { + if($(this).prop('required')){ + valid = valid && checkSelectLength( $(this), 'Заповніть поле', 1, 1500 ); + } + if( $( this ).hasClass('book')){ + + } else { + var key = $( this ).attr('id'); + var value = $( this ).val(); + + if($( this ).hasClass('multi')){ + // console.log('edit15'); + // console.log(value); + //var value = JSON.stringify(value); + if(value){ + var value = value.join(','); + } + } + + add_data.fields[key] = value; + } + + }) + + //console.log(valid); + //console.log(JSON.stringify(add_data)); + if ( valid ) { + dialog$table.dialog( 'close' ); + $.ajax({ + url: '/?comp=k2form&temp=ajax&event=add&mode=admin', + type: 'POST', + data: { add_json: JSON.stringify(add_data), sess:'$sess' }, + success: function(res){ + + try { + + var result = JSON.parse(res); + + } catch (error) { + + $('#err').html(error); + + alert_dialog$table.dialog( 'open' ); + alert_dialog$table.dialog( {height:200, width:300} ); + + } + //console.log(result.id) + child = '$parent' + if(child!==''){ + chForm( child, result.id, \" $sq \", 400) + } + + if(result.err.indexOf('SQLSTATE') + 1) { + var err = result.err.substring(27,520); + }else{ + var err = result.err; + } + + if (err !== ''){ + $('#err').html(err); + + alert_dialog$table.dialog( 'open' ); + alert_dialog$table.dialog( {height:200, width:300} ); + } + + //console.log(err); + //dialog$table.dialog( 'close' ); + $('#$table').jqGrid().trigger('reloadGrid'); + + } + }); + } + + + } + + + return valid; + } + + + + function uploadFile$table(path){ + var input = document.getElementById('actimg'); + + var formdata = false; + if (window.FormData) { + formdata = new FormData(); + } + var i = 0, len = input.files.length, close, img, reader, file, text, total_size = 0; + + file = input.files[0]; + console.log(file); + + var filename = file.name; + + filearr = filename.split('.'); + console.log(filearr); + var ext = filearr[1]; + console.log(ext); + if ( (ext == 'png') || (ext == 'jpg') || (ext == 'jpeg') || (ext == 'PNG') || (ext == 'JPG') || (ext == 'JPEG') ) { + startUpload(file, len, path); + } else { + + } + + } + + + + function startUpload$table(file, len, path){ + console.log(file); + if ( window.FileReader ) { + if(len==1){ + reader = new FileReader(); + reader.onloadend = function (e) { + TransferCompleteCallback(e.target.result); + }; + } + var formdata = false; + if (window.FormData) { + formdata = new FormData(); + } + formdata.append('files[]', file); + formdata.append('path', path); + + $.ajax({ + + url: '/?comp=k2form&temp=ajax&event=upload&mode=admin', + type: 'POST', + data: formdata, + processData: false, + contentType: false, // this is important!!! + success: function (res, xhr){ + console.log(formdata); + } + }); + } + } + + function editData$table() { + + var valid = true; + allFields.removeClass( 'ui-state-error' ); + + if ( valid ) { + add_data = {}; + + add_data.table = '$table'; + + add_data.fields = {}; + + $( 'div#$this->form_id$table input' ).each(function( index ) { + +// if($(this).prop('required')){ +// valid = valid && checkLength( $(this), this, 1, 150 ); +// } + + var minlength = $(this).attr('minlength'); + var maxlength = $(this).attr('maxlength'); + + + if (typeof minlength !== typeof undefined && minlength !== false) { + valid = valid && checkLength( $(this), 'Довжина значення повинна бути від ' + minlength + ' до ' + maxlength + ' символів', minlength, maxlength); + } + + if (typeof maxlength !== typeof undefined && maxlength !== false) { + valid = valid && checkLength( $(this), 'Довжина значення повинна бути від ' + minlength + ' до ' + maxlength + ' символів', minlength, maxlength); + } + + var regexp = $(this).attr('regexp'); + if (typeof regexp !== typeof undefined && regexp !== false) { + valid = valid && checkRegexp( $(this), regexp, 'Поле заповнене не вірно'); + } + + if( $( this ).hasClass('book')||$( this ).hasClass('select2-offscreen')||$( this ).hasClass('select2-input')||($( this ).is(':radio')&&(!$(this).is(':checked')))){ + + } else { + var key = $( this ).attr('id'); + var value = $( this ).val(); + if ( $( this ).hasClass('datepick') ) { +// if($(this).prop('required')){ +// valid = valid && checkLength( $(this), 'Заповніть поле', 6, 150 ); +// } + var value = reverse_date(value); + } + if ( $( this ).hasClass('datepick') || $( this ).hasClass('timepick') || $( this ).hasClass('datetimepick') ) { + if(value == ''){ + value = '0000-00-00'; + + } else { + if ( $( this ).hasClass('datetimepick') ) { +// if($(this).prop('required')){ +// valid = valid && checkLength( $(this), 'Заповніть поле', 6, 150 ); +// } + var value = reverse_datetime(value); + //console.log(value); + } + } + } + var type = $( this ).attr('type'); + + if(type == 'file'){ + + if (this.files[0] === undefined || this.files[0] === null) { + console.log(this); + } else { + var upload_dir = $( this ).attr('atr-path'); + var value = upload_dir + this.files[0].name; + uploadFile(upload_dir); + } + } + if(type == 'radio'){ + var val = ''; + var key = $( this ).attr('name'); + + + if( $('input[name=\''+key+'\']').is(':checked') ){ + var val = $('input[name=\''+key+'\']').val(); + + } + //console.log(val); + } + if(type == 'checkbox'){ + if ( $( this ).prop( 'checked' ) ){ + var value = 1; + } else { + var value = 0; + } + } + add_data.fields[key] = value; + } + }); + + $( 'div#$this->form_id$table textarea' ).each(function( index ) { + if($(this).prop('required')){ + valid = valid && checkLength( $(this), 'Заповніть поле - Вид аналізування', 1, 1500 ); + + } + if( $( this ).hasClass('book')||$( this ).hasClass('select2-offscreen')||$( this ).hasClass('select2-input')){ + + } else { + var key = $( this ).attr('id'); + var value = $( this ).val(); + + var type = $( this ).attr('type'); + + + add_data.fields[key] = value; + } + }); + + $('div#$this->form_id$table select.select2').each(function( index ) { +// if($(this).prop('required')){ +// valid = valid && checkSelectLength( $(this), 'Заповніть поле', 1, 1500 ); +// } + if( $( this ).hasClass('book')){ + + } else { + var key = $( this ).attr('id'); + var imp = $( this ).attr('imp'); + var value = $( this ).val(); + if(imp == '1'){ + var value = $( '#'+key+' :selected').html(); + + } + + if($( this ).hasClass('multi')){ + //console.log('edit14'); + //console.log(value); + //var value = JSON.stringify(value); + if(value){ + var value = value.join(','); + } + } + //console.log(key+value); + add_data.fields[key] = value; + } + }) + console.log(add_data); + + if ( valid ) { + dialog$table.dialog( 'close' ); + $.ajax({ + url: '/?comp=k2form&temp=ajax&event=edit&mode=admin', + type: 'POST', + data: { edit_json: JSON.stringify(add_data), sess:'$sess'}, + success: function(res){ + try { + var result = JSON.parse(res); + + } catch (error) { + $('#err').html(error); + alert_dialog$table.dialog( 'open' ); + alert_dialog$table.dialog( {height:200, width:300} ); + } + if(result.err.indexOf('SQLSTATE') + 1) { + var err = result.err.substring(27,120); + }else{ + var err = result.err; + } + + if (err !== ''){ + $('#err').html(err); + + alert_dialog$table.dialog( 'open' ); + alert_dialog$table.dialog( {height:200, width:300} ); + } + //console.log(err); + //dialog$table.dialog( 'close' ); + $('#$table').jqGrid().trigger('reloadGrid'); + } + }); + } + } + return valid; + } + + $( '#dialog$table' ).dialog({ + autoOpen: false, + height: '375', + width: '450', + //position: { my: 'center center', at: 'center center' }, + show: { + effect: 'blind', + duration: 100 + }, + hide: { + effect: 'blind', + duration: 100 + }, + close: function() { + $( '#dialog$table' ).dialog( 'close' ); + }, + resize: function( event, ui ) { + //console.log(ui.size.width); + var inp_wdth = ui.size.width - 70; + $('.search').width(inp_wdth); + $('.search_ul').width(inp_wdth - 38); + $('.search_li').width(inp_wdth - 61); + } + + }); + $( '.opener' ).unbind().on( 'click', function() { + $( '#dialog$table' ).dialog( 'open' ); + var pos = $( this ).offset(); + //$( '#dialog$table' ).offset(pos); + //console.log($( this ).offset()); + + }); + + jQuery( '.datepick' ).datepicker({ + showOtherMonths: true, + /*selectOtherMonths: true,*/ + showAnim: 'clip', + dateFormat: 'dd.mm.yy', + /*minDate: 1,*/ + maxDate: '31.12.2050', + /*changeMonth: true,*/ + /*changeYear: true */ + showOn: 'button', + inline: true, + language: 'ua', + changeYear: true, + changeMonth: true, + //buttonImage: 'images/calendar.gif', + //buttonImageOnly: true, + //buttonText: 'Оберіть дату' + }); + $.datepicker.regional['ua'] = { + monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень', + 'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'], + monthNamesShort: ['Січ.','Лют.','Бер.','Кві.','Тра.','Черв.', + 'Лип.','Серп.','Вер.','Жовт.','Лист.','Груд.'], + dayNames: ['Неділя','Понеділок','Вівторок','Середа','Четвер','П`ятниця','Субота'], + dayNamesShort: ['Нед.','Пон.','Вівт.','Сер.','Четв.','П`ятн.','Суб.'], + dayNamesMin: ['Н','П','В','С','Ч','П','С'], + firstDay: 1, + }; + $.datepicker.setDefaults($.datepicker.regional['{lang}']); + + + jQuery( function() { + $('.timepick').timepicker({ 'timeFormat': 'H:m' }); + } ); + + jQuery( function() { + $('.datetimepick').datetimepicker({ + format:'Y.m.d H:i', + }); + } ); + + dialog$table = $( '#$this->form_id$table' ).dialog({ + autoOpen: false, + height: $this->form_height, + width: $this->form_width, + modal: $this->form_ismodal, + + close: function() { + form[ 0 ].reset(); + allFields.removeClass( 'ui-state-error' ); + dialog$table.remove(); + $( '#dialog$table' ).dialog( 'close' ); + } + }); + + alert_dialog$table = $( '#alert_dialog$table' ).dialog({ + autoOpen: false, + height: 75, + width: 250, + modal: $this->form_ismodal, + close: function() { + form[ 0 ].reset(); + allFields.removeClass( 'ui-state-error' ); + dialog$table.remove(); + } + }); + + form = dialog$table.find( 'form' ).on( 'submit', function( event ) { + event.preventDefault(); + }); + + $( '#$this->call_add_id$table' ).button().on( 'click', function() { + if ($('#$table').length > 0) { + var param = $('#$table').getGridParam(); + //console.log('#$this->call_add_id$table') + //console.log(param); + if (param !== undefined) { + asd = param.url.split('&'); + for (i = 0; i < asd.length; i++) { + var str = asd[i]; + if(str.indexOf('rowid') + 1) { + var row = asd[i].split('='); + var rowid = row[1]; + } + + } + //console.log(rowid); + } + + } + + + dialog$table.dialog( 'open' ); + dialog$table.dialog( + { + + 'buttons' : + { + 'save' : { + class: 'fm-button ui-state-default ui-corner-all save-btn', + icon: 'ui-icon-heart', + text: '{save}', + click: function() { + addData$table(); + //dialog.dialog('destroy'); + $after_save_script + }, + + }, + 'cancel' : { + class: 'fm-button ui-state-default ui-corner-all', + text: '{cancel}', + click: function() { + dialog$table.dialog( 'close' ); + }, + }, + } + }); + $( '.tbl$table' ).each(function( index ) { + var col = $(this).attr('col'); + var row = $(this).attr('row'); + + $('table#formtable$table tr:eq('+row+') td:eq('+col+')').html(this); + + }); + + $( 'div#$this->form_id$table td' ).each(function( index ) { + var colspan = $(this).children().attr('colspan'); + $(this).attr('colspan', colspan); + if ($(this).hasClass('brd_btm')) { + console.log($(this)) + } + }); + $( 'div.brd_btm' ).each(function( index ) { + + $(this).closest('tr').addClass('brd_btmtr'); + + }); + + $('.masterid').val(rowid); + dialog$table.keypress(function(e) { + if (e.keyCode == $.ui.keyCode.ENTER) { + var el = $('.opener'); + if (!el.is(':focus')){ + $('.save-btn').click(); + } + } + }); + $after_show_script + }); + + //редактирование + $( '#$this->call_edit_id"."$table' ).button().on( 'click', function() { + var check = $before_show_script; + if (check == 0) { + console.log(check); + return; + } + var selr = $('#$table').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#$table').jqGrid('getRowData', selr); + var param = $('#$table').getGridParam(); + if (param !== undefined) { + asd = param.url.split('&'); + for (i = 0; i < asd.length; i++) { + var str = asd[i]; + if(str.indexOf('rowid') + 1) { + var row = asd[i].split('='); + var rowid = row[1]; + } + + } + //console.log(rowid); + } + + if($.isEmptyObject(ret)){ + alert_dialog$table.dialog( 'open' ); + }else{ + dialog$table.dialog( 'open' ); + dialog$table.dialog({'buttons' : + { + 'save' : { + class: 'fm-button ui-state-default ui-corner-all save-btn', + text: '{save}', + click: function() { + editData$table(); + $after_save_script + }, + }, + 'cancel' : { + class: 'fm-button ui-state-default ui-corner-all', + text: '{cancel}', + click: function() { + dialog$table.dialog( 'close' ); + }, + }, + } + }); + $( '.tbl$table' ).each(function( index ) { + var col = $(this).attr('col'); + var row = $(this).attr('row'); + $('table#formtable$table tr:eq('+row+') td:eq('+col+')').html(this); + + }); + + $( 'div#$this->form_id$table td' ).each(function( index ) { + var colspan = $(this).children().attr('colspan'); + $(this).attr('colspan', colspan); + }); + $( 'div.brd_btm' ).each(function( index ) { + + $(this).closest('tr').addClass('brd_btmtr'); + + + }); + $( 'div#$this->form_id$table input' ).each(function( index ) { + var key = $( this ).attr('id'); + if( $( this ).hasClass('is_change') || $( this ).is(':file')){ + //console.log(this); + } else { + $( this ).val(ret[key]); + } + + //console.log(key+ret[key]); + }); + + + $( 'div#$this->form_id$table textarea' ).each(function( index ) { + var key = $( this ).attr('id'); + if( $( this ).hasClass('is_change')){ + + } else { + $( this ).val(ret[key]); + } + + }); + + $( 'div#$this->form_id$table input[type=\'file\']' ).each(function( index ) { + //$( this ).val(123); + }); + $( 'div#$this->form_id$table input[type=\'radio\']' ).each(function( index ) { + var key = $( this ).attr('name'); + //console.log(ret[key]); + $('input[name=\''+key+'\'][value=\''+ret[key]+'\']').prop('checked',true); + + }); + $( 'div#$this->form_id$table input[type=\'checkbox\']' ).each(function( index ) { + var key = $( this ).attr('id'); + var is_check = $( this ).val(); + if (is_check == 1){ + $( this ).attr('checked', true); + } + }); + $('select.select2').each(function( index ) { + var key = $( this ).attr('id'); + var elem = $('.'+key).val(); + var arg = $( this ).attr('arg'); + if(arg !== 'sel'){ + $('#'+key+' :contains(\''+elem+'\')').first().attr('selected', 'selected'); + $('#'+key+' [value=\''+ret[key]+'\']').attr('selected', 'selected'); + if (ret[key] == undefined){ + var vlue = $('#'+key+'').val(); + //$('#'+key+'').trigger('change'); + $('#'+key+'').select2('val', vlue); + if (elem == '') { + $('#'+key+'').select2('val', elem); + } + } else { + //$('#'+key+'').val(''+ret[key]+'').trigger('change'); + $('#'+key+'').select2('val', ret[key]); + } + + } + if($( this ).hasClass('multi')){ + console.log('werwer12'); + console.log(ret[key]); + selarr = ret[key].split(','); + console.log(selarr); + //var arr = $.map(ret[key], function(el) { return el }); + //var selarr = JSON.parse(selarr); + //console.log(typeof selarr); + $( this ).select2('val', selarr).trigger('change'); + } + + }); + $('.masterid').val(rowid); + dialog$table.keypress(function(e) { + if (e.keyCode == $.ui.keyCode.ENTER) { + var el = $('.opener'); + if (!el.is(':focus')){ + //$('.save-btn').click(); + } + } + }); + } + $after_show_script + }); + }); + function autocomplet(arg, ident, alias, rel, min_length = 0) { + + var keyword = $('#from_id'+ident).val(); + if(rel !== ''){ + var relation = $('#'+rel).val(); + var linkname = rel; + } + //console.log(arg+ident+alias+rel); + if (keyword.length > min_length) { + $.ajax({ + url: '".$k2->domain()."'+'/?comp=k2autocomplite&temp=ajax&event=search&mode=admin', + type: 'POST', + data: {keyword:keyword, sql: arg, alias:alias, linkname:linkname, relation:relation}, + success:function(data){ + $('#search_id'+ident).show(); + $('#search_id'+ident).html(data); + } + }); + } else { + $('#search_id'+ident).hide(); + } + var blocksPerRow = 1; + + $('.book').unbind().on('keydown', function(e){ + + var thisIndex = $('.hovers').index(); + var newIndex = 0; + if(e.keyCode === 38) { + // up + newIndex = thisIndex - blocksPerRow; + } + else if(e.keyCode === 40) { + // down + newIndex = thisIndex + blocksPerRow; + } + else if(e.keyCode === 13) { + $( '.hovers' ).click(); + return false; + } + //newIndex = newIndex; + if(newIndex !== null) { + $('.cross').eq(newIndex).addClass('hovers').siblings().removeClass('hovers'); + } + }); + + } + + function showAll(checkid, from_id, sql, name, alias_name, relation){ + if($('#'+checkid+'').is(':checked')){ + $('#'+from_id+'').val('***'); + autocomplet(sql, name, alias_name, relation); + $('#dialog$table').attr(''); + } else { + $('#'+from_id+'').val(''); + autocomplet(sql, name, alias_name, relation); + } + + } + + function set_item(item, id, ident, alias, name) { + if(alias !== ''){ + ident = alias; + } + var funconchange = $('#'+name).attr('onchange'); + eval(funconchange); + console.log(item+id+ident+alias+name); + $('#from_id'+ident).val(item); + $('#search_id'+ident).hide(); + $('#search_id'+ident).html(' '); + //console.log(alias); + $('#'+ident+' [value=\''+id+'\']').attr('selected', 'selected'); + $('#'+ident+' ').val(id); + $('.'+alias+'').val(item); + $('#from_id'+ident).val(''); + $('#from_id'+ident).hide(); + $( '#dialog$table' ).dialog( 'close' ); + } + + + function chForm( child, id, sql, width){ + + + + $.ajax({ + type: 'POST', + url: '/?comp=k2form&temp=ajax&event=form&mode=admin', + data: { child:child, sql:sql, id:id, width:width}, + cache: false, + success: function(res){ + $('div.'+child).html(res); + + //console.log(item); + } + }); + + } + + function chSel(parent, child, sql, width){ + var id = $('select[name=\"'+parent+'\"]').val(); + + var child_arr = child.split(', '); + var sql_arr = sql.split('|'); + child_arr.forEach(function(item, i, child_arr) { + if(child_arr.length==sql_arr.length){ + sql=sql_arr[i] + } + if (id == '') { + var sql_full = sql.split(' where'); + sql = sql_full[0]; + } + $.ajax({ + type: 'POST', + url: '/?comp=k2form&temp=ajax&event=select&mode=admin', + data: {parent:parent, child:item, sql:sql, id:id, width:width}, + cache: false, + success: function(res){ + $('div.'+item).html(res); + //console.log(item); + } + }); + + }); + + + } + + function chRadio(el, parent, child, sql, width){ + var id = el.val(); + var child_arr = child.split(', '); + var sql_arr = sql.split('|'); + child_arr.forEach(function(item, i, child_arr) { + if(child_arr.length==sql_arr.length){ + sql=sql_arr[i] + } + if (id == '') { + var sql_full = sql.split(' where'); + sql = sql_full[0]; + } + $.ajax({ + type: 'POST', + url: '/?comp=k2form&temp=ajax&event=select&mode=admin', + data: {parent:parent, child:item, sql:sql, id:id, width:width}, + cache: false, + success: function(res){ + $('div.'+item).html(res); + //console.log(item); + } + }); + + }); + + + } + + function childField(parent, child, sql, width){ + var id = $('select[name=\"'+parent+'\"]').val(); + + $.ajax({ + type: 'POST', + url: '/?comp=k2form&temp=ajax&event=select&mode=admin', + data: {parent:parent, child:child, sql:sql, id:id, width:width}, + cache: false, + success: function(res){ + + $('div.'+child).html(res); + + } + }); + } + + function setChild(child){ + var parents = $('#'+child).attr('parent-fields'); + + var arr_parents = parents.split(','); + + var funcname = $('#'+child).attr('parent-funcname'); + parents_obj = {}; + for (var i = 0; i < arr_parents.length; i++) { + var key = arr_parents[i].trim(); + var value = $('#'+key).val(); + parents_obj[key] = value; + } + parentSet(parents_obj, child, funcname); + } + + function parentSet(parents, child, funcname) { + //console.log(parents); + $.ajax({ + url: $add_url, + type: 'POST', + data: {parents_json:JSON.stringify(parents), funcname:funcname}, + success: function(res){ + //console.log(res); + $('#'+child).val(res); + } + }); + } + + + function beforeShowForm(fieldid, funcname) { + //console.log(parents); + $.ajax({ + url: $add_url, + type: 'POST', + data: {fieldid:fieldid, funcname:funcname}, + success: function(res){ + //console.log(res); + $('#'+fieldid).val(res); + } + }); + } + + function checkDuble(viewel, selel){ + + var eq1 = $('#'+selel).val(); + var eq2 = $('#'+viewel).val(); + if(eq1 == eq2){ + setTimeout(function(){ $('#'+selel).val(null).trigger('change'); }, 300); + } + + } + + function cleanBook (arg) { + $('.'+arg).val(''); + $('#'+arg).val(''); + } + function fillField(arg, elem){ + + let data = arg.select2('data'); + + selstr = ''; + for (let i = 0; i < data.length; i++) { + console.log( data[i].text ); + selstr = selstr + ' ' + data[i].text + ';'; + } + $('#'+elem).val(selstr); + } + + function initAutocomplete() { + + //var input = document.getElementById('mesto'); + //var searchBox = new google.maps.places.SearchBox(input); + autocomplete = new google.maps.places.Autocomplete( + /// @type {!HTMLInputElement} + (document.getElementById('mesto')), + {componentRestrictions: {country: 'ua'}} + ); + autocomplete.addListener('place_changed', function() { + var place = autocomplete.getPlace(); + // var latitude = place.geometry.location.lat(); + // var longitude = place.geometry.location.lng(); + // document.getElementById('lat').value = latitude; + // document.getElementById('lng').value = longitude; + }); + + + + } + "; + //$k2->site->addJavaScriptEnd($this->form_id, $script); + $rez = "
        "; + $rez .= " + ".$this->addFields($arr)." + +
        + "; + + + if (isset($this->owner->events['after_show_form'])){ + foreach ($this->owner->events['after_show_form'] as $el) { + $obj = $el['obj']; + $func = $el['func']; + $arg = $el['myvar']; + call_user_func([$obj,$func], ["params" => $arg]); + } + } + + $rez = str_replace('{cancel}', $this->Translate("{lnCancel}"), $rez); + $rez = str_replace('{save}', $this->Translate("{lnSave}"), $rez); + $rez = str_replace('{choose}', $this->Translate("{lnChoose}"), $rez); + $rez = str_replace('{book}', $this->Translate("{lnBook}"), $rez); + $rez = str_replace('{lang}', $k2->lng, $rez); + // $rez.=''; + //return $rez; + exit ($rez); + + + } + + + + + /** + * Формирование формы на основании массива + * @global type $k2 + * @param type $arr + * @return type + */ + function addFields($arr) + { + global $k2; + $rez = ""; + + $this->sets=$arr; + + $top = 0; + $table = $arr['table']; + + $rez .= ""; + + $rez .= ""; + } else if($value['type_field'] == 'date'){ + $rez .= "
        ".$this->datePick($input_arr)."
        ".$comments."
        "; + } else if($value['type_field'] == 'time'){ + $rez .= "
        ".$this->timePick($input_arr)."
        ".$comments."
        "; + }else if($value['type_field'] == 'textarea'){ + $rez .= "
        ".$this->textArea($value, $width, $def_value, $disabled, $required)."
        "; + }else if($value['type_field'] == 'file'){ + $upload_dir = ''; + if($value['upload_dir']){ + $upload_dir = $value['upload_dir']; + } + $rez .= "
        ".$this->textFile($value, $width, $def_value, $disabled, $required, $upload_dir)."
        "; + }else if($value['type_field'] == 'file_ajax'){ + $upload_dir = ''; + if($value['upload_dir']){ + $upload_dir = $value['upload_dir']; + } + $rez .= "
        ".$this->textFileAjax($value, $width, $def_value, $disabled, $required, $upload_dir)."
        "; + }else if($value['type_field'] == 'radio'){ + $sql = $value['sql_form']; + $rez .= "
        ".$this->textRadio($value, $width, $def_value, $disabled, $required, $sql, $depend, $depend_sql)."
        "; + }else { + if($value['alias_form']){ + $value['field']=$value['alias_form']; + } + $rez .= " +
        + +
        ".$comments."
        +
        + + "; + } + + + } + //$rez .= '
        '; + $counter++; + } + + + $rez .= " + "; + $rez .= " + + "; + $rez .= "
        +
        +
        "; + + return $rez; + } + + /** + * вывод поля radio + * @global type $k2 + * @param type $el + * @param type $width + * @param type $def_value + * @param type $disabled + * @param type $required + * @param type $sql + * @return string + */ + function textRadio($el, $width, $def_value, $disabled, $required, $sql, $depend = '', $depend_sql = '') + { + global $k2; + if($depend !== ''){ + $onchange = 'chRadio($(this), \''.$el['alias_form'].'\', \''.$depend.'\', \''.$depend_sql.'\', \''.$width.'\')'; + } + $r = $k2->sql->sel($sql,[]); + $i = 1; + foreach ($r['data'] as $key => $value) { + $checked = ''; + if ($i == 1){ + $checked = 'checked'; + } + $rez .= ' '.$value['v'].'

        '; + $i++; + } + + return $rez; + } + + /** + * Вывод поля select + * @global type $k2 + * @param type $valid + * @param type $name + * @param type $sql + * @param type $width + * @return type + */ + function listTypeAcc($list_arr){ + global $k2; + $table = $list_arr['table']; + $name = $list_arr['name']; + $width = $list_arr['width']; + $sql = $list_arr['sql']; + $alias_name = $list_arr['alias_name']; + $field = $list_arr['field']; + $relation = $list_arr['relation']; + $is_book = $list_arr['is_book']; + $search_length = $list_arr['search_length']; + $class = $list_arr['class']; + $depend = $list_arr['depend']; + $depend_sql = $list_arr['depend_sql']; + $arg = $list_arr['arg']; + $imp = $list_arr['imp']; + $additems = $list_arr['additems']; + $child = $list_arr['child']; + $child_fields = $list_arr['child_fields']; + $parent_fields = $parent_arr['child_fields']; + $parent_funcname = $list_arr['parent_funcname']; + $onchange2 = $list_arr['onchange']; + $valid = $list_arr['valid']; + $multi = $list_arr['multi']; + $required = $list_arr['required']; + $onchange = $list_arr['onchange']; + + $rez = " + + "; + + + if($is_book !== true){ + $hidden = 'hidden'; + + $onchange = ''; + if($depend !== ''){ + $onchange = 'chSel(\''.$name.'\', \''.$depend.'\', \''.$depend_sql.'\', \''.$width.'\')'; + } + + /* if($child == true && $k2->get('arg') == 'add'){ + $sql = ''; + }*/ + + if ($onchange2 !== ''){ + $onchange = $onchange2.'; '.$onchange; + } + + $rez .= ""; + $sel = $k2->ins_comp('k2select2'); + $rez .= '
        '; + $rez .= $sel->sel( + ['name'=>$name, + 'sql'=>$sql, + 'value'=>$valid, + 'onchange'=>$onchange, + 'required'=>$required, + 'width'=>$width, + 'imp'=>$imp, + 'arg'=> $arg, + 'multi'=> $multi, + 'enabled'=>!$child, + 'add_class'=>$class, + 'search_input'=>1, + 'additems'=>$additems, + 'child_fields'=>$child_fields + ] + ); + $rez .= '
        '; + } else { + $hidden = ''; + $rez .= " + + "; + $rez .= "
        + + + + +
        "; + $rez .= "
        +
        + "; + if ($search_length < 2) { + $rez .= ""; + } + + $rez .= "
        +
        + +
        +
        "; + } + + return $rez; + } + /** + * select из формы + * @global type $k2 + * @param type $parent + * @param type $child + * @param type $sql + * @param type $id + * @return type + */ + function childSelectForm( $child, $sql, $id, $width) + { + global $k2; + $sel = $k2->ins_comp('k2select2'); + $rez .= $sel->sel( + ['name' => $child, + 'sql' => $sql, + 'width' => $width, + 'value' => $id, + 'search_input' => 1, + ] + ); + $rez .= ""; + return $rez; + } + + /** + * Дочерний select + * @global type $k2 + * @param type $parent + * @param type $child + * @param type $sql + * @param type $id + * @return type + */ + function childSelect($parent, $child, $sql, $id, $width) + { + global $k2; + + + $sql = str_replace('{mid}', '"{mid}"', $sql); + $sql = str_replace('{mid}', "$id", $sql); + $sel = $k2->ins_comp('k2select2'); + $rez .= $sel->sel( + ['name' => $child, + 'sql' => $sql, + 'width' => $width, + //'value' => $valid, + //'onchange' => 'chSel(\''.$name.'\')', + 'search_input' => 1, + 'additems'=> [''=>'---------------',] + ] + ); + $rez .= ""; + return $rez; + } + + /** + * Вывод поля datetime + * @global type $k2 + * @param type $id + * @param type $width + * @param type $def_value + * @param type $disabled + * @return type + */ + function dateTimePick($input_arr){ + global $k2; + $required = $list_arr['required']; + $rez .= ""; + return $rez; + } + + /** + * Вывод поля date + * @global type $k2 + * @param type $id + * @param type $width + * @return type + */ + function datePick($input_arr){ + global $k2; + $required = $list_arr['required']; + $rez .= ""; + + return $rez; + } + + + /** + * Вывод поля time + * @global type $k2 + * @param type $id + * @param type $width + * @return type + */ + function timePick($input_arr){ + global $k2; + $required = $list_arr['required']; + $rez .= ""; + + return $rez; + } + + + function textArea($el, $width, $def_value, $disabled, $required){ + global $k2; + + //$rez .= ""; + + $rows=5; + //$col=110; + + $col = $width/5; + + if (isset($el['editoptions'])){ + if (isset($el['editoptions']['rows'])) + $rows=$el['editoptions']['rows']; + + if (isset($el['editoptions']['cols'])) + $col=$el['editoptions']['cols']; + } + + $rez .= ""; + + return $rez; + } + + function textFile($el, $width, $def_value, $disabled, $required, $upload_dir){ + global $k2; + + $rez .= "
        "; + + return $rez; + } + function textFileAjax($el, $width, $def_value, $disabled, $required, $upload_dir){ + global $k2; + $field=$el['field']; + $rez .= "
        "; + + return $rez; + } + /** + * загрузка фото + * @global type $k2 + */ + function uploadFile($path='') + { + global $k2, $trans; + $rez = ''; + + //$path = 'public/img/dp2/'; + + $path = $k2->post('path'); + + $filename = $_FILES["files"]["name"][0]; + + $file = $_FILES["files"]["tmp_name"]; + + $file_name = $_FILES["files"]['tmp_name'][0]; + + //print_r($_FILES); + $uploadComplete = move_uploaded_file($_FILES["files"]["tmp_name"][0], $path.$filename); + + $rez = $uploadComplete; + echo $rez; + //echo 'd'; + + } + /** + * загрузка файлов ajax + * @global type $k2 + */ + function uploadFileAjax($path='') + { + global $k2, $k2proj; + $rez=$k2->post('id'); + $a=array(); + $r = $k2->sql->sel("SELECT ext FROM vdExt"); + foreach($r['data'] as $item){ + array_push($a, $item['ext']); + } + $path=$k2->post('path'); + $upload = $k2->ins_comp('k2upload'); + $upload->allowed=$a; + $upload->size_arr = [['width'=>650, 'path'=>'public/img/'.$k2proj.$path.'{addpath}']]; + $upload->projfolder=$k2proj.$path; + $date=date("Y/m/d"); + $file=$upload->uploadFiles($_FILES["f"], 'title', $date); + $f = $k2->sql->sel("SELECT typefileid FROM vdTypeFile WHERE nametypefile='".$file['extension']."' LIMIT 1"); + $typefileid='0ef061f15906986b024e1ac0833152c2'; + if($f['data'][0]){ + $typefileid=$f['data'][0]['typefileid']; + } + if($file<>''){ + $name=$_FILES["f"]["name"]; + $input=''; + + $rez = array('typefileid'=>$typefileid, + 'filename'=>$file['name'].'.'.$file['extension'], + 'fileext'=>$file['extension'], + 'md5_file'=>$file['namehash'], + 'input'=>$input, + 'datecreate'=>$date, + 're'=>1 + ); + }else{ + $rez = array('re'=>0); + } + + $rez = json_encode($rez); + + return $rez; + + } + function openNewForm($table, $parent, $sql){ + global $k2, $k2proj, $root; + $table=$root.$table.'.yml'; + $arr = $this->loadResYMLFull($table, false); + + + + $arr3 = [ + 'form_id' => $arr['table'].'123', + 'table' => $arr['table'], + 'typeid' => $arr['typeid'], + 'form_width'=>$arr['form_width'], + 'form_height'=>$arr['form_height'], + 'caption'=>$arr['caption'], + 'fields' => $arr['fields'], + 'masterid' => $arr['masterid'], + 'parent' => $parent, + 'sql' => $sql, + 'btn_text' => '', + 'btn_class' => 'btn btn-primary', + ]; + + $arr3['perm'] = ['add'=>true]; + + + $rez .= $this->showForm($arr3, 1); + return $rez; + } + + function content() + { + global $k2; + + if ($this->owner->name<>$k2->get('name')){ + return ; + } + + $rez = ''; + + + + $event = $k2->get('event'); + + switch ($event) + { + case "add": + $add_json = $k2->post('add_json'); + //$arr = $k2->post('arr'); + $sess = $k2->post('sess'); + $sess_data = $k2->session[$sess]; + $rez = $this->addData($add_json, $sess_data); + //unset($k2->session[$sess]); + break; + case "edit": + //$arr = $k2->post('arr'); + $edit_json = $k2->post('edit_json'); + $sess = $k2->post('sess'); + $sess_data = $k2->session[$sess]; + $rez = $this->editData($edit_json, $sess_data); + //unset($k2->session[$sess]); + break; + case "data": + $rez = $this->getForm($arr); + break; + case "data_add": + $rez = $this->getForm($k2->post('arr')); + break; + case "form": + $sql = $k2->post('sql'); + $id = $k2->post('id'); + + $child = $k2->post('child'); + $width = $k2->post('width'); + $rez = $this->childSelectForm( $child, $sql, "$id", $width); + break; + case "select": + $sql = $k2->post('sql'); + $id = $k2->post('id'); + $parent = $k2->post('parent'); + $child = $k2->post('child'); + $width = $k2->post('width'); + $rez = $this->childSelect($parent, $child, $sql, "$id", $width); + break; + case "upload": + $rez = $this->uploadFile(); + break; + case "uploadfileajax": + $rez = $this->uploadFileAjax(); + break; + default: + $rez = $this->getForm(); + } + + + return $rez; + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2grid.php b/k2shop/k2shop/app/components/k2grid.php new file mode 100644 index 0000000..02edb01 --- /dev/null +++ b/k2shop/k2shop/app/components/k2grid.php @@ -0,0 +1,420 @@ + $value) { + + if (isset($value['type_field']) && ($value['type_field']=='DropDown')){ // Выпадающий список + $column = new GridDropDownColumn(); + + // Заполняем значение + if (isset($value['values'])){ + foreach ($value['values'] as $keydown => $valuedown) { + $column->AddItem(trim($valuedown), trim($keydown)); + } + } + + }elseif (isset($value['type_field']) && ($value['type_field']=='DateTime')){ // Поле дато и время + + + $column = new GridDateTimeColumn(); + //$column->DataField = "orderDate"; + //$column->HeaderText = "Order date"; + $column->FormatString = "d.m.Y"; // "M d, Y" + + $column->Picker = new KoolDatePicker(); + $column->Picker->scriptFolder = $k2->kool->KoolControlsFolder . "/KoolCalendar"; + $column->Picker->styleFolder = /*"sunset"*/ $k2->kool->style_calendar(); + $column->Picker->DateFormat = "d.m.Y "; + + }else{ + $column = new GridBoundColumn(); + } + + + $column->HeaderText = $value['caption']; + $column->DataField = $value['field']; + + // Только для чтения + if (isset($value['readonly'])){ + $column->ReadOnly = $value['readonly']; + } + + // Выравнивание + if (isset($value['align'])){ + $column->Align = $value['align']; + } + + + // Ширина столбца + if (isset($value['width'])){ + $column->Width = $value['width']; + }else{ + $column->Width = '100px'; + } + + + // Группировка + if (count($group)>0){ + + + foreach ($group as $keygr => $valuegr) { + + + if (trim($keygr)==$value['field']){ + + $column->Group = true; + + //$column->GroupSettings->InfoTemplate = "Reports To: {".$valuegr."}"; + $column->GroupSettings->HeaderText = $valuegr; + } + + } + + } + + + $matertable->AddColumn($column); + } + + } + + + // Выводит таблицу + function simpleTable($arr){ + + global $k2; + + ob_start(); + + + //$is_ajsx_show=(!isset($arr['ajaxshow'])) or ($arr['ajaxshow']<>true); + + if (isset($arr['master'])){ + $this->koolajax = $arr['master']->koolajax; + $this->master = $arr['master']; + }else{ + + //if ($is_ajsx_show){ + require_once $k2->kool->KoolControlsFolderAbs."/KoolAjax/koolajax.php"; + $this->koolajax = $koolajax; + $this->koolajax->scriptFolder = $k2->kool->KoolControlsFolder."/KoolAjax"; + //} + + } + + + if (isset($arr['table_caption'])){ + $this->table_caption=trim($arr['table_caption']); + } + + + + require_once $k2->kool->KoolControlsFolderAbs."/KoolGrid/koolgrid.php"; + + require_once $k2->kool->KoolControlsFolderAbs."/KoolGrid/ext/datasources/PDODataSource.php"; + + require_once $k2->kool->KoolControlsFolderAbs . "/KoolUploader/kooluploader.php"; + require_once $k2->kool->KoolControlsFolderAbs . "/KoolCalendar/koolcalendar.php"; + + $ds = new PDODataSource($k2->db); + $this->ds = $ds; + + $ds->SelectCommand = $arr['select']; + $ds->UpdateCommand = $arr['update']; + $ds->DeleteCommand = $arr['delete']; + $ds->InsertCommand = $arr['insert']; + //$ds->SetCharSet('utf8'); + + $name='grid'; + if (isset($arr['name'])){ + $name = trim($arr['name']); + } + + + $grid = new KoolGrid($name); + $this->grid = $grid; + $grid->scriptFolder = $k2->kool->KoolControlsFolder."/KoolGrid"; + + + if (isset($arr['style'])){ + $grid->styleFolder= trim($arr['style']); + }else{ + $grid->styleFolder= $k2->kool->style_grid(); + } + + + $grid->AjaxEnabled = true; + $grid->DataSource = $ds; + $grid->MasterTable->Pager = new GridPrevNextAndNumericPager(); + //$grid->MasterTable->Pager->Positon = "top"; + + + if (isset($arr['width'])){ + $grid->Width = $arr['width']; + }else{ + $grid->Width = "100%"; + } + + + $grid->ColumnWrap = true; + $grid->AllowSorting = true; + $grid->AllowResizing = true; + $grid->RowAlternative = true; + + + $page_rows=5; + if ($k2->get('page_rows')<>''){ + $page_rows=$k2->get('page_rows'); + $_SESSION['page_rows']=$page_rows; + }elseif($k2->sess('page_rows')<>''){ + $page_rows=$k2->sess('page_rows'); + } + + // Количество строк на странице + if (isset($arr['PageSize'])){ + $grid->PageSize = $arr['PageSize']; + }else{ + $grid->PageSize = $page_rows; + } + + // Фильтрация + if (isset($arr['filtering'])){ + $grid->AllowFiltering = $arr['filtering']; + }else{ + $grid->AllowFiltering = false; + } + + + // Прокрутка + if (isset($arr['scroll'])){ + $grid->AllowScrolling = $arr['scroll']; + }else{ + $grid->AllowScrolling = true; + } + + + // Размеры области + if (isset($arr['master_width'])){ + $grid->MasterTable->ColumnWidth = $arr['master_width']; + } + + if (isset($arr['master_height'])){ + $grid->MasterTable->Height = $arr['master_height']; + } + + + // Скрываем таблицу при редактировавнии + $grid->MasterTable->InsertSettings->InputFocus = "BlurGrid"; //"HideGrid"; + $grid->MasterTable->EditSettings->InputFocus = "BlurGrid"; //"HideGrid"; + if (isset($arr['input_focus'])){ + $grid->MasterTable->InsertSettings->InputFocus = $arr['input_focus']; //"HideGrid"; + $grid->MasterTable->EditSettings->InputFocus = $arr['input_focus']; //"HideGrid"; + } + + + // Количество столбцов при редактировании + $grid->MasterTable->InsertSettings->ColumnNumber = 2; + $grid->MasterTable->EditSettings->ColumnNumber = 2; + if (isset($arr['column_number'])){ + $grid->MasterTable->InsertSettings->ColumnNumber = $arr['column_number']; + $grid->MasterTable->EditSettings->ColumnNumber = $arr['column_number']; + } + + + + $type_edit_grid="Inline"; + if ($k2->get('type_edit_grid')<>''){ + $type_edit_grid=$k2->get('type_edit_grid'); + $_SESSION['type_edit_grid']=$type_edit_grid; + }elseif($k2->sess('type_edit_grid')<>''){ + $type_edit_grid=$k2->sess('type_edit_grid'); + } + + + // Вид формы редактирования + $grid->MasterTable->InsertSettings->Mode = $type_edit_grid; + $grid->MasterTable->EditSettings->Mode = $type_edit_grid; + if (isset($arr['form_mode'])){ + $grid->MasterTable->InsertSettings->Mode = $arr['form_mode']; + $grid->MasterTable->EditSettings->Mode = $arr['form_mode']; + } + + + + + + $grid->MasterTable->AllowSelecting = true; + $grid->MasterTable->AllowHovering = true; + + $grid->MasterTable->ShowFunctionPanel = true; + + $grid->DisableAutoGenerateDataFields = false; + $grid->KeepGridRefresh = true; + + + // Выбор галочками строк - пока отключаю +// $grid->AutoGenerateRowSelectColumn = false; + + + // Группировка + if (isset($arr['grouping']) && $arr['grouping']){ + + $grid->AllowGrouping = true; + $grid->MasterTable->ShowGroupPanel = true; + } + + + $group=array(); + if (isset($arr['group'])){ + $group=$arr['group']; + } + + + $this->showFields($grid->MasterTable, $arr['fields'], $group); + + + if (isset($arr['ReadOnly']) and $arr['ReadOnly']){ + $readonly=true; + }else{ + $readonly=false; + } + + + + + + if (!$readonly){ + $column = new GridEditDeleteColumn(); + $column->Align = "center"; + $column->Width='30px'; + + $grid->MasterTable->AddColumn($column); + + + }else{ + //$grid->MasterTable->ShowGroupPanel = false; + $grid->MasterTable->ShowFunctionPanel = false; + } + + $grid->AllowEditing = !$readonly; + $grid->AllowDeleting = !$readonly; + + + // Для выборпа Master-detile + if (isset($arr['ismasterdetile']) and !isset($arr['master'])){ + $grid->ClientSettings->ClientEvents["OnRowSelect"] = "Handle_OnRowSelect"; + } + + + $grid->Process(); + + + + + // Выводим, если указано, что нужно выводить + if (!isset($arr['master']) and !isset($arr['ismasterdetile']) ){ + ?> + +
        + koolajax->Render(); + //} + ?> + Render();?> +
        + + +
        + koolajax->Render(); + //} + ?> + + + + + '.$this->master->table_caption.''; + echo $this->master->grid->Render(); + echo '
        '.$this->table_caption.'
        '; + echo $grid->Render(); + ?> + +
        + + $res_p ) { + $src_h = $img_info[1]; + $src_w = $img_info[1]*$res_p; + $src_x = ($img_info[0] >= $src_w) ? floor(($img_info[0] - $src_w) / 2) : $src_w; + } else { + $src_w = $img_info[0]; + $src_h = $img_info[0]/$res_p; + $src_y = ($img_info[1] >= $src_h) ? floor(($img_info[1] - $src_h) / 2) : $src_h; + } + } else { + if ( $ini_p > $res_p ) { + $dst_w = $width; + $dst_h = $aspect_ratio ? floor($dst_w/$img_info[0]*$img_info[1]) : $height; + $dst_y = $aspect_ratio ? floor(($height-$dst_h)/2) : 0; + } else { + $dst_h = $height; + $dst_w = $aspect_ratio ? floor($dst_h/$img_info[1]*$img_info[0]) : $width; + $dst_x = $aspect_ratio ? floor(($width-$dst_w)/2) : 0; + } + $src_w = $img_info[0]; + $src_h = $img_info[1]; + } + + $isrc = $icfunc($ini_path); + $idest = imagecreatetruecolor($width, $height); + if ( ($format == 'png' || $format == 'gif') && $output_format == $format ) { + imagealphablending($idest, false); + imagesavealpha($idest,true); + imagefill($idest, 0, 0, IMG_COLOR_TRANSPARENT); + imagealphablending($isrc, true); + $quality = 0; + } else { + imagefill($idest, 0, 0, $rgb); + } + imagecopyresampled($idest, $isrc, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); + $res = $iresfunc($idest, $dest_path, $quality); + + imagedestroy($isrc); + imagedestroy($idest); + + return $res; + } + + + function resize($ini_path, $dest_path, $size){ + /*$params = array( + 'width' => 32, + 'height' => 32, + 'aspect_ratio' => true, + 'rgb' => 'fxffffff', + 'crop' => false + ); + + $this->img_resize($ini_path, $dest_path, $params);*/ + + $params = array( + 'constraint' => array('width' => $size, 'height' => $size) + ); + $this->img_resize($ini_path, $dest_path, $params); + + } + + // Изменяет размер изображения к заданному значению + function resizeto($ini_path, $dest_path, $width, $height){ + + $params = array(); + + if ($width<>0){ + //array_push($params, array('width' => $width)); + $params['width']=$width; + } + + if ($height<>0){ + //array_push($params, array('height' => $height)); + $params['height']=$height; + } + + /*$params = array( + 'constraint' => array('width' => $width, 'height' => $height) + );*/ + $this->img_resize($ini_path, $dest_path, $params); + } + + + function resize_32($ini_path, $dest_path) { + $this->resize($ini_path, $dest_path, 32); + } + + function resize_64($ini_path, $dest_path) { + $this->resize($ini_path, $dest_path, 64); + } + + + function resize_128($ini_path, $dest_path) { + $this->resize($ini_path, $dest_path, 128); + } + + function resize_256($ini_path, $dest_path) { + $this->resize($ini_path, $dest_path, 256); + } + + + function png2jpg($originalFile, $outputFile, $quality) { + $image = imagecreatefrompng($originalFile); + imagejpeg($image, $outputFile, $quality); + imagedestroy($image); + } + + // Масштабирует изображение, если нужно + function scale_image($thumb){ + + //echo 'Исходный файл: '.$_SERVER['DOCUMENT_ROOT']."/".$thumb."\n"; + $rez=$thumb; + + if (trim($thumb)<>'') { + $src=$_SERVER['DOCUMENT_ROOT']."/".$thumb; + + if (file_exists($src)){ + + $path_parts = pathinfo($src); + + $dir=$path_parts['dirname']; + $name=$path_parts['basename']; + $ext=$path_parts['extension']; + + + + + // Сохраняем в jpg + if ($ext<>'jpg'){ + + $src2=str_replace('.'.$ext,'.jpg',$src); + + $this->png2jpg($src, $src2, 70); + + $src=$src2; + + } + + $ext='jpg'; + + + + + $name_file=basename($src, ".".$ext); + + $rez="imob/".$name_file.'_32x32.'.$ext; + + // 32x32 + $nameico=$_SERVER['DOCUMENT_ROOT']."/".$rez; + if (!file_exists($nameico)){ + $this->resize_32($src,$nameico); + } + + + // 64x64 + $nameico=$_SERVER['DOCUMENT_ROOT']."/"."imob/".$name_file.'_64x64.'.$ext; + if (!file_exists($nameico)){ + $this->resize_64($src,$nameico); + } + + + // 128x128 + $nameico=$_SERVER['DOCUMENT_ROOT']."/"."imob/".$name_file.'_128x128.'.$ext; + if (!file_exists($nameico)){ + $this->resize_128($src,$nameico); + } + + // 256x256 + $nameico=$_SERVER['DOCUMENT_ROOT']."/"."imob/".$name_file.'_256x256.'.$ext; + if (!file_exists($nameico)){ + $this->resize_256($src,$nameico); + } + + + //echo "Имя файла: ".$name_file."\n"; + //$nameico=; + }else{ + $rez=''; + } + + + }else{ + $rez=''; + } + + return $rez; + } + + + +} + diff --git a/k2shop/k2shop/app/components/k2ini_settings.php b/k2shop/k2shop/app/components/k2ini_settings.php new file mode 100644 index 0000000..4a293ed --- /dev/null +++ b/k2shop/k2shop/app/components/k2ini_settings.php @@ -0,0 +1,265 @@ +rootdir.'\k2shop\k2shop\libs\detectDevice\class.DetectDevice.php'); + + require_once $device_file; + + $this->comp = new DetectDevice(); + + $this->userAgent = $this->comp->getUserAgent(); + + $this->device = $this->comp->getDeviceType().'-'.$this->comp->getUserAgent(); + + } + + + + /** + * Проверка наличия настроек + * @global type $k2 + * @param type $device + * @param type $div + * @param type $username + * @return type + */ + function ckeckSettings($device, $div='', $username){ + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>'']; + + $r=$k2->sql->sel( + 'SELECT count(iniid) AS cnt FROM k2ini + WHERE (username=:username) AND (device=:device) AND (object=:object)', + [ + 'username'=>$username, + 'device'=>$device, + 'object'=>$div + ] + ); + + if (trim($r['err'])<>''){ + $rez['err']=$r['err']; + }else{ + $rez['rez']=$r['data'][0]['cnt']; + } + return $rez; + } + + /** + * Обновление настроек + * @global type $k2 + * @param type $device + * @param type $div + * @param type $params + * @return string + */ + function updateSettings($device, $div='', $params=''){ + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>'']; + + $r = $k2->sql->upd( + "UPDATE k2ini + SET + settings=:settings + WHERE username=:username AND object=:object AND device=:device", + [ + 'settings' => $params, + 'username' => '{login}', + 'object' => $div, + 'device' => $device + ] + ); + + if($r['err']!==''){ + $rez['err'] = $r['err']; + $k2->log->err($rez['err'], false); + return $rez; + } + + return $rez; + } + + + /** + * Сохранение настроек + * @global type $k2 + * @param type $device + * @param type $div + * @param type $params + * @return string + */ + function saveSettings($device, $div='', $params='') + { + global $k2; + + $rez = $rez = ['rez'=>'', 'err'=>'']; + + $r = $k2->sql->ins_arr( + ['table' => 'k2ini', + 'fields' => [ + 'iniid'=>$this->getID(), + 'roleid'=>$k2->auth->roleid, + 'username'=>$k2->auth->login, + 'device'=>$device, + 'settings'=>$params, + 'object'=>$div + ] + ] + ); + if($r['err']!==''){ + $rez['err'] = $r['err']; + $k2->log->err($rez['err'], false); + return $rez; + } + + return $rez; + } + + + /** + * Настройки + * @global type $k2 + * @param type $device + * @param type $div + * @param type $params + * @return type + */ + function setSettings($div='', $params='') + { + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>'']; + + $username = $k2->auth->login; + $device = $this->device; + + + $check_settings = $this->ckeckSettings($device, $div, $username); + + if ($check_settings['rez'] == 1){ + $this->updateSettings($device, $div, $params); + } else { + $this->saveSettings($device, $div, $params); + } + + $rez = $check_settings['rez']; + + return $rez; + } + + /** + * Получение настроек + * @global type $k2 + * @param type $div + * @return type + */ + function getSettings($div) + { + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>'']; + + $username = $k2->auth->login; + $device = $this->device; + + $r=$k2->sql->sel( + 'SELECT settings FROM k2ini + WHERE (username=:username) AND (device=:device) AND (object=:object)', + [ + 'username'=>$username, + 'device'=>$device, + 'object'=>$div + ] + ); + + if (trim($r['err'])<>''){ + $rez['err'] = $r['err']; + $k2->log->err($rez['err'], false); + }else{ + $rez['rez'] = $r['data'][0]; + } + + return $rez; + } + + /** + * Удаление настроек + * @global type $k2 + * @param type $div + * @return type + */ + function delSettings($div) + { + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>'']; + + $username = $k2->auth->login; + $device = $this->device; + + if($div !== ''){ + $r = $k2->sql->del( + "DELETE FROM k2ini + WHERE (username=:username) AND (device=:device) AND (object=:object)", + [ + 'username'=>$username, + 'device'=>$device, + 'object'=>$div + ] + ); + if (trim($err['err'])<>''){ + $rez['err']='Помилка видалення налаштувань. '.$r['err']; + $k2->log->err($rez['err'], false); + return $rez; + } + } + + return $rez; + } + + + + function content() + { + global $k2; + $rez=''; + $event = $k2->get('event'); + + switch ($event) + { + case "saveSets": + $div = $k2->post('div'); + $params = $k2->post('params'); + $rez = $this->setSettings($div, $params); + break; + case "delSets": + $div = $k2->post('div'); + $rez = $this->delSettings($div); + break; + default: + $rez = ''; + } + + return $rez; + + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2jqgrid.php b/k2shop/k2shop/app/components/k2jqgrid.php new file mode 100644 index 0000000..7156218 --- /dev/null +++ b/k2shop/k2shop/app/components/k2jqgrid.php @@ -0,0 +1,31 @@ +rootdir./*$phpgrid_path*/$k2->site->libs['jquery.min.js']."inc/jqgrid_dist.php"); + +class k2jqgrid extends jqgrid{ + + public $typeid=1; // Тип Id. 0 - цифровой, 1 - хешевской (установил 0 - для совмстимости со старыми значениями) + + + function __construct($db_conf = null) + { + parent::__construct($db_conf); + + } + + +} diff --git a/k2shop/k2shop/app/components/k2maps.php b/k2shop/k2shop/app/components/k2maps.php new file mode 100644 index 0000000..63c6cc8 --- /dev/null +++ b/k2shop/k2shop/app/components/k2maps.php @@ -0,0 +1,590 @@ +addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + + + public function setApi($arrMapsId = []) + { + global $k2; + + $rez .= ' + + '; + + return $rez; + } + + + public function showMapByAddress($arr = []) + { + global $k2; + $this->setParam($arr); + + $css = ' + #map'.$this->addid.' { + height: '.$this->height.'px; + /*width: '.$this->width.'%;*/ + padding: '.$this->padding.'px; + margin: '.$this->margin.'px; + }'; + + $k2->site->addCSS_Script('mapcss'.$this->addid, $css); + + + $rez .= ' +
        + '; + $rez .=' + '; + + + $rez = str_replace('{address}', $this->address, $rez); + $rez = str_replace('{addid}', $this->addid, $rez); + + return $rez; + } + + public function showMap($arr=[]) + { + global $k2; + + $this->setParam($arr); + + $css = ' + #map { + height: '.$this->height.'px; + /*width: '.$this->width.'%;*/ + padding: '.$this->padding.'px; + margin: '.$this->margin.'px; + }'; + + $k2->site->addCSS_Script('mapcss', $css); + + + $rez .= ' + +
        + '; + + $rez .= ' + '; + return $rez; + } + + + + public function showClusterMap($arr=[], $points = '') + { + global $k2; + $this->setParam($arr); + + $css = ' + #map { + height: '.$this->height.'px; + /*width: '.$this->width.'%;*/ + padding: '.$this->padding.'px; + margin: '.$this->margin.'px; + }'; + + $k2->site->addCSS_Script('mapcss', $css); + + + $rez .= ' + +
        + '; + ob_start(); + ?> + + + + + url, $rez); + $rez = str_replace('{lat}', $this->lat, $rez); + $rez = str_replace('{lng}', $this->lng, $rez); + $rez = str_replace('{from}', $this->from, $rez); + $rez = str_replace('{to}', $this->to, $rez); + $rez = str_replace('{apikey}', $this->apikey, $rez); + + ob_clean(); + + return $rez; + } + + + + public function showDirection($arr=[]) + { + global $k2; + + $this->setParam($arr); + + $css = ' + #map { + height: '.$this->height.'px; + /*width: '.$this->width.'%;*/ + padding: '.$this->padding.'px; + margin: '.$this->margin.'px; + }'; + + $k2->site->addCSS_Script('mapcss', $css); + + + $rez .= ' + +
        + '; + ob_start(); + ?> + + + + lat, $rez); + $rez = str_replace('{lng}', $this->lng, $rez); + $rez = str_replace('{from}', $this->from, $rez); + $rez = str_replace('{to}', $this->to, $rez); + $rez = str_replace('{apikey}', $this->apikey, $rez); + + ob_clean(); + + return $rez; + } + /*Получение координат*/ + public function getCoordinates($arr=[]) + { + global $k2; + $this->setParam($arr); + + $css = ' + #map { + height: '.$this->height.'px; + /*width: '.$this->width.'%;*/ + padding: '.$this->padding.'px; + margin: '.$this->margin.'px; + }'; + + $k2->site->addCSS_Script('mapcss', $css); + + + $rez .= ' + +
        + '; + ob_start(); + ?> + + + + + lat, $rez); + $rez = str_replace("'{lng}'", $this->lng, $rez); + $rez = str_replace('{from}', $this->from, $rez); + $rez = str_replace('{to}', $this->to, $rez); + $rez = str_replace('{apikey}', $this->apikey, $rez); + + ob_clean(); + + return $rez; + } + + + + function content(){ + global $k2; + $rez = $this->showMap(); + return $rez; + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2menu.php b/k2shop/k2shop/app/components/k2menu.php new file mode 100644 index 0000000..dc542ce --- /dev/null +++ b/k2shop/k2shop/app/components/k2menu.php @@ -0,0 +1,1309 @@ +{content}'; //
        {addMenuItem}
        + public $content='
      • {name}
      • '; // Контент + + public $selelect=''; // Выбранный элемент + public $unselelect='class="b-nav-list-text"'; // Не выбранный элемент + + public $selelectdrop=''; // Выбранный элемент + public $unselelectdrop=''; // Не выбранный элемент + + public $order='ord'; // Поля по которым делпается сортировка + + + public $submenu='
          {content_submenu}
        '; + public $content_submenu='
      • {name}{submenu}
      • ';// Контент + + // Форма удаления пункта меню + public $deleteForm = ' +
        +

        Удалить пункт меню

        +
        + + + + Отмена +
        + '; + + // Форма редактирования пункта меню + public $menuitemedit = ' +
        +

        Редактировать пункт меню:

        + +

        Название пункта меню:

        + + +

        Заголовок h1:

        + + +

        Полное описание (контент):

        + + + +

        Заголовок:

        + +

        Описание:

        + +

        Ключевые слова:

        + +

        Код вставки:

        + + + + +
        + + Отмена +
        '; + + // Форма добавления нового пункта меню + public $menuitemadd = ' + +
        +

        Добавить пункт меню:

        + +

        Название пункта меню:

        + + +

        Заголовок h1:

        + + +

        Полное описание (контент):

        + + + +

        Заголовок страницы:

        + +

        Описание страницы:

        + +

        Ключевые слова:

        + +

        Код вставки:

        + + + + +
        + + Отмена +
        + + '; + public $menu_page_content = '{page_css} {content_h1} {content_toShow} {progrtext} {page_js}'; + + public $curmenuid = ''; + public $path_img = '/public/img/'; + // Получение меню из базы данных + function getMenu(){ + + global $k2; + + $cont = $k2->ins_comp('k2cont'); + $sql = "SELECT k2menuid, menu_name, ident, comment, active FROM k2menu WHERE (ident like '%[".$this->getTemplateName()."]%' )"; + //$sql = "SELECT k2menuid, menu_name, ident, comment, active FROM k2menu WHERE (ident like '%[".$this->getTemplateName()."]%' AND projid ='".$cont->currentProjectID."' AND siteid = '".$cont->currentSiteID."')"; + //echo $sql; + $s=''; + + // Выводим строки + foreach ($k2->db->query($sql) as $row) { + $s = $row['k2menuid']; + break; + } + + return $s; + + } + + public function escapequpted($content){ + + return str_replace('"','\"', $content); + } + + // Выводит шаблон + function getTempl($arr, $templ, $sub='' ){ + global $k2; + + $rez=$templ; + + + $rez=str_replace('{name}', $arr['caption'], $rez); + $rez=str_replace('{class}', $arr['class'], $rez); + + // Выводит стиль в зависимости от того текущий элемент это или нет + + if($k2->get('menu-item_id')){ + if (($k2->get('menu-item_id')==$arr['k2menuitemid']) || ($k2->get('menu-item_id')==$arr['k2menuitemid_tr'])){ + $rez=str_replace('{selectclass}', $this->selelect, $rez); + $rez=str_replace('{act}', 'menu-active', $rez); + } else { + $rez=str_replace('{selectclass}', $this->unselelect, $rez); + $rez=str_replace('{act}', '', $rez); + } + } + + if($k2->get('p')){ + if (($k2->get('p')==$arr['command'])){ + + $rez = str_replace('{selectclass}', $this->selelect, $rez); + $rez = str_replace('{act}', 'menu-active', $rez); + } else { + $rez = str_replace('{selectclass}', $this->unselelect, $rez); + $rez = str_replace('{act}', '', $rez); + } + } + + // Вставляем url + if($sub <> ''){ + //$rez = str_replace('{url}','javascript:void(0)',$rez); + } + if (trim($arr['url'])<>''){ + //$rez = str_replace('{url}', $k2->surl->SefURL_FromURL(trim($arr['url']).'&menu-item_id='.$arr['k2menuitemid']), $rez); + $rez = str_replace('{url}', $k2->surl->SefURL_FromURL(trim($arr['url'])), $rez); + $rez = str_replace('{target}', 'target="_blank"', $rez); + } + elseif (trim($arr['command'])<>''){ + $rez = str_replace('{url}', $k2->surl->SefURL_FromURL('/?p='.$arr['command']), $rez); + $rez = str_replace('{target}', '', $rez); + } + else{ + if($arr['k2menuitemid_tr'] <> NULL) { + $rez = str_replace('{url}', $k2->surl->SefURL_FromURL('/?p=show_menu_item&menu-item_id='.$arr['k2menuitemid_tr']), $rez); + } else { + $rez = str_replace('{url}', $k2->surl->SefURL_FromURL('/?p=show_menu_item&menu-item_id='.$arr['k2menuitemid']), $rez); + } + + } + //Вставляем субменю + + if($sub <> ''){ + $rez = str_replace('{submenu}', $this->submenu, $rez); + $rez = str_replace('{content_submenu}', $sub, $rez); + $rez = str_replace('{dropdown}', 'dropdown', $rez); + $rez = str_replace('{add_class}', 'dropdown-toggle display-7', $rez); + $rez = str_replace('{add_attr}', 'data-toggle="dropdown-submenu" aria-expanded="false"', $rez); + }else{ + $rez = str_replace('{content_submenu}', '', $rez); + $rez = str_replace('{dropdown}', '', $rez); + $rez = str_replace('{add_class}', '', $rez); + $rez = str_replace('{add_attr}', '', $rez); + } + + + + return $rez; + + } + + + function getArrLinks($mainmenuid) + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; + + $r = $k2->sql->sel("SELECT m.k2menuid, m.k2menuitemid, m.parentid, m.caption AS menuitemname + + FROM k2menuitems m + WHERE m.k2menuid = '".$mainmenuid."' AND m.active = 1 AND m.langid='".$k2->lng."' + ORDER BY m.ord + ",[]); + $arr_cat = []; + + if($r['err'] !== ''){ + $k2->log->err('Ошибка: '.$r['err']); + $rez['err'] = $err['err']; + return $rez; + } + //преобразовываем полученнный массив + foreach ($r['data'] as $row){ + if(empty($arr_cat[$row['parentid']])) { + $arr_cat[$row['parentid']] = []; + } + $arr_cat[$row['parentid']][] = $row; + } + $rez['rez'] = $r['data']; + //$struct = $this->view_cats($arr_cat); + return $arr_cat; + } + + // Получение элементов меню из базы данных + function getMenuItems($menuid){ + global $k2; + + $cont = $k2->ins_comp('k2cont'); + + //проверка на видимость пункта меню пользователем + $and = " AND (c.is_admin='0' OR c.is_admin IS NOT NULL)"; + if($k2->auth->isAdmin()) { + $and = ""; + } + + //$k2->lng = 'ru'; + $sql = "SELECT c.k2menuid, c.k2menuitemid, c.parentid, c.active, c.hint, c.class, + c.command, c.url, c.ord, c.caption AS menuitemname, c.descript, c.title, c.keywords, + c_tr.k2menuitemid AS k2menuitemid_tr, c_tr.caption AS menuitemname_tr, + IFNULL(c_tr.caption,c.caption) as caption + + FROM k2menuitems c + + LEFT JOIN k2menuitems c_tr + ON (c.k2menuitemid = c_tr.lgparentid) + AND (c_tr.langid='".$k2->lng."') + + WHERE((c.lgparentid is null) OR (c.lgparentid='0')) AND (c.active = '1') AND (c.parentid='0' OR c.parentid='') AND (c.k2menuid = '".$menuid."') $and "; + + if ($k2->lng !== 'ru') { + $sql = "SELECT c.k2menuid, c.k2menuitemid, c.parentid, c.active, c.hint, c.class, + c.command, c.url, c.ord, c.caption AS menuitemname, c.descript, c.title, c.keywords, + c_tr.k2menuitemid AS k2menuitemid_tr, c_tr.caption AS menuitemname_tr, + IFNULL(c_tr.caption,c.caption) as caption + + FROM k2menuitems c + + LEFT JOIN k2menuitems c_tr + ON (c.k2menuitemid = c_tr.lgparentid) + AND (c_tr.langid='".$k2->lng."') + + + + WHERE(1=1) AND (c.active = '1') AND (c.parentid='0' OR c.parentid='') AND (c.k2menuid = '".$menuid."') AND (c.langid = '".$k2->lng."') $and "; + } + if (trim($this->order)<>''){ + $sql .= ' order by '.$this->order.' '; + } + + + $s = ''; + //$this->transMenu(); + // Выводим строки + + try { + foreach ($k2->db->query($sql) as $row) { + //Формируем Submenu + $sub = $this->getSubmenu($row['k2menuitemid']); + $s .= $this->getTempl($row, $this->content, $sub); + } + } catch(PDOException $e) { + echo "Can't geet Menu: $sql\n"; + echo $e->getMessage(); + } + return $s; + + } + + + function transMenu() + { + global $k2; + + $sql = " + SELECT c.k2menuid, c.k2menuitemid, c.parentid, c.active, c.hint, + c.command, c.url, c.ord, c.caption, c.descript, c.title, c.keywords, c.content, + c.projid, c.siteid, c.langid, c.h1, c.script, c.lgparentid, c.home_page, c.class, c.is_admin + + FROM k2menuitems c + + WHERE (c.langid= 'ru') + "; + foreach ($k2->db->query($sql) as $row) { + if ($this->checkTransMenu($row['command'], 'en') == 0) { + $this->insTransMenu($row, 'en'); + } + if ($this->checkTransMenu($row['command'], 'es') == 0) { + $this->insTransMenu($row, 'es'); + } + if ($this->checkTransMenu($row['command'], 'ar') == 0) { + $this->insTransMenu($row, 'ar'); + } + + } + + } + function checkTransMenu($command, $langid) + { + global $k2; + $sql="select count(k2menuid) as cnt from k2menuitems where command = '$command' and langid = '$langid' "; + + foreach ($k2->db->query($sql) as $row) { + $rez = $row['cnt']; + } + return $rez; + } + + function insTransMenu($row, $langid) + { + global $k2; + + + $k2menuitemid = rand(1,9).$this->getID(); + $menuId = $row['k2menuid']; + $caption = $row['caption']; + $projid = $row['projid']; + $siteid = $row['siteid']; + $active = $row['active']; + $title = $row['title']; + $descript = $row['descript']; + $keywords = $row['keywords']; + $content = $row['content']; + $h1 = $row['h1']; + $script = $row['script']; + $command = $row['command']; + $parentid = $row['parentid']; + $lgparentid = $row['k2menuitemid']; + $url = $row['url']; + $ord = $row['ord']; + $is_admin = $row['is_admin']; + + $sqlQuery = 'INSERT INTO k2menuitems (k2menuitemid, k2menuid, caption, url, is_admin, ord, active, projid, siteid, langid, title, descript, keywords, content, h1, script, parentid, command, lgparentid) + VALUES ("'.$k2menuitemid.'", "'.$menuId.'", "'.$caption.'", "'.$url.'", "'.$is_admin.'", "'.$ord.'", '.$active.', "'.$projid.'", "'.$siteid.'", "'.$langid.'", "'.$title.'", "'.$descript.'", "'.$keywords.'", "'.$this->escapequpted(htmlspecialchars_decode($content)).'", "'.$h1.'", "'.$script.'", "'.$parentid.'", "'.$command.'","'.$lgparentid.'")'; + //echo $command; + + try { + $res=$k2->db->exec($sqlQuery); + + + } catch(PDOException $e) { + echo "Can't insert Default Menu Item (createMenuItem): $sqlQuery\n"; + echo $e->getMessage(); + } + } + + // Получение элементов SUBMENU из базы данных + function getSubmenu($menuid){ + + global $k2; + + $cont = $k2->ins_comp('k2cont'); + + + + $sql = "SELECT c.k2menuid, c.k2menuitemid, c.parentid, c.active, c.hint, + c.command, c.url, c.ord, c.caption AS menuitemname, c.descript, c.title, c.keywords, + c_tr.k2menuitemid AS k2menuitemid_tr, c_tr.caption AS menuitemname_tr, + IFNULL(c_tr.caption,c.caption) as caption + FROM k2menuitems c + + LEFT JOIN k2menuitems c_tr + ON (c_tr.lgparentid<>'0') + and (c_tr.lgparentid<>null) + and (c.k2menuitemid = c_tr.lgparentid) + AND (c_tr.langid='".$k2->lng."') + + WHERE((c.lgparentid is null) OR (c.lgparentid='0')) AND (c.active = '1') AND (c.parentid= '".$menuid."') "; + if ($k2->lng !== 'ru') { + $sql = "SELECT c.k2menuid, c.k2menuitemid, c.parentid, c.active, c.hint, + c.command, c.url, c.ord, c.caption AS menuitemname, c.descript, c.title, c.keywords, + c_tr.k2menuitemid AS k2menuitemid_tr, c_tr.caption AS menuitemname_tr, + IFNULL(c_tr.caption,c.caption) as caption + FROM k2menuitems c + + LEFT JOIN k2menuitems c_tr + ON (c_tr.lgparentid<>'0') + and (c_tr.lgparentid<>null) + and (c.k2menuitemid = c_tr.lgparentid) + AND (c_tr.langid='".$k2->lng."') + + WHERE(1=1) AND (c.active = '1') AND (c.parentid= '".$menuid."') "; + } + //echo 'sql='.$sql; + + if (trim($this->order)<>''){ + $sql .= ' order by '.$this->order.' '; + } + + $result= $k2->sql->sel($sql); + + $s = ''; + + if(!empty($result['data'])){ + // Выводим строки + + foreach ($result['data'] as $row) { + //Формируем Submenu + //if($row['k2menuitemid']==null){ + $sub = $this->getSubmenu($row['k2menuitemid']); + $s .= $this->getTempl($row, $this->content_submenu, $sub); + //} + } + } + + return $s; + + } + + + function getContent($isshow=false){ + + $rez = ''; + $menuid = $this->getMenu(); + //$k2->site->curmenuid = $menuid; + if (trim($menuid)<>''){ + $rez .= $mitem=$this->getMenuItems($menuid); + } + + + return $rez; + } + + + /** + * Внешний вид кнопки добавления нового пункта меню + * @return type string + */ + function editLinks(){ + + global $k2; + + $ico=$k2->ico->add_menuItem(); + + $popup = $k2->ins_comp('k2popup'); + $popup->popUpID = 'menuitemadd'; + $popup->popupContent = $this->menuitemadd; // Указываем какую форму сунуть в окно. + + return " + Добавить пункт меню + ".$popup->content(); + } + + /** + * Внешний вид кнопки "Редактировать пункт меню". + * @param type $itemID integer - ID пункта меню + * @return type string + */ + function updateMenuItemButton(){ + global $k2; + + $ico=$k2->ico->edit_inc(); + + $itemID = $k2->get('menu-item_id'); + + $popup = $k2->ins_comp('k2popup'); + $popup->popUpID = 'menuitemedit'; + $popup->popupContent = $this->menuitemedit; // Указываем какую форму сунуть в окно. + + if( ($itemID <> '') ) { //|| ($_SERVER['REQUEST_URI'] == '/') + + $menuItemArray = $this->getMenuItemDatabyId($itemID); + $btn = "Редактировать пункт".$popup->content(); + + //var_dump($menuItemArray); + if (!empty($menuItemArray) ) { + $btn = str_replace('{caption}', $menuItemArray[0]['caption'], $btn); + $btn = str_replace('{header}', $menuItemArray[0]['h1'], $btn); + $btn = str_replace('{pageTitle}', $menuItemArray[0]['title'], $btn); + $btn = str_replace('{pageDescription}', $menuItemArray[0]['descript'], $btn); + $btn = str_replace('{pageKeywords}', $menuItemArray[0]['keywords'], $btn); + $btn = str_replace('{full_content}', $menuItemArray[0]['content'], $btn); + $btn = str_replace('{pageScript}', $menuItemArray[0]['script'], $btn); + } + + return $btn; + } else { + return ''; + } + + } + + /** + * Внешний вид кнопки "Удалить пункт меню". + * @param type $itemID integer - ID пункта меню + * @return type string + */ + function deleteMenuItemButton(){ + + global $k2; + + $itemID = $k2->get('menu-item_id'); + $ico=$k2->ico->del_news(); + + $popup = $k2->ins_comp('k2popup'); + + $popup->popUpID = 'deletemenuitem'; + $popup->popupContent = $this->deleteForm; // Указываем какую форму сунуть в окно. + + if( ($itemID) && ($_SERVER['REQUEST_URI'] <> '/')){ + return "Удалить пункт".$popup->content(); + } else { + return ''; + } + + + } + + + // Кнопки для администрирования + function admButtons(&$html){ + + global $k2; + + if (($k2->auth->isAdmin()) and ($k2->auth->isDesignMode())){ + $btn=$this->editLinks().$this->updateMenuItemButton().$this->deleteMenuItemButton(); + + }else{ + $btn = ''; + } + + $html=str_replace('{addMenuItem}', $btn, $html); + + } + + /** + * Проверяет существует ли дефолтное меню с идентификатором [k2menu] + * для текущего проекта/сайта/домена + * + * @return type mixed integer (ID меню) / boolean - false (меню не существует) + */ + public function isDefaultMenuExist() { + global $k2; + + $rez = false; + $langId = 'ru'; // имеет ли смысл $k2->lngadmin или $k2->lng + + $cont = $k2->ins_comp('k2cont'); + + if(!$cont->currentProjectID) { + $sqlQuery = 'SELECT k2menuid AS menuId + FROM k2menu + WHERE ident like "%[k2menu]%" AND projid ="" AND siteid ="" AND langid ="'.$langId.'"'; + } else { + + $sqlQuery = 'SELECT k2menuid AS menuId + FROM k2menu + WHERE ident like "%[k2menu]%" AND projid ="'.$cont->currentProjectID.'" AND siteid ="'.$cont->currentSiteID.'" AND langid ="'.$langId.'"'; + } + + foreach ($k2->db->query($sqlQuery) as $menu) { + $rez = $menu['menuId']; + break; + } + + return $rez; + + } + + /** + * Проверяет существует ли пункт меню "Главная" в меню с ID = $menuId. + * @param type $menuId - ID меню + * @return type mixed boolean/integer. Если существует - отдает ID, если нет - false + */ + public function isMainMenuItemExist($menuId) { + global $k2; + + $rez = false; + $langId = 'ru'; + + $cont = $k2->ins_comp('k2cont'); + + if(!$cont->currentProjectID) { + $sqlQuery = "SELECT k2menuitemid AS menuItemId + FROM k2menuitems + WHERE k2menuid='".$menuId."' AND home_page ='1' AND projid ='' AND siteid ='' AND langid ='".$langId."'"; + } else { + $sqlQuery = "SELECT k2menuitemid AS menuItemId + FROM k2menuitems + WHERE k2menuid='".$menuId."' AND home_page ='1' AND projid ='".$cont->currentProjectID."' AND siteid ='".$cont->currentSiteID."' AND langid ='".$langId."'"; + } + + foreach ($k2->db->query($sqlQuery) as $menuItem) { + $rez = $menuItem['menuItemId']; + break; + } + + return $rez; + + } + + /** + * Создает пункт "Главная" для дефолтного меню + * @param type $menuId - integer - ID меню. + */ + public function createMainMenuItem($menuId) { + global $k2; + + $cont = $k2->ins_comp('k2cont'); + + $langID = 'ru'; + + $sqlQuery = 'INSERT INTO k2menuitems (k2menuid, caption, active, url, projid, siteid, langid, home_page) + VALUES ('.$menuId.', "'.self::MAIN_MENU_ITEM_CAPTION.'","'.self::MAIN_MENU_ITEM_STATUS_ACTIVE.'", "/","'.$cont->currentProjectID.'","'.$cont->currentSiteID.'", "'.$langID.'",'.self::HOME_PAGE_STATUS_ACTIVE.' )'; + + try { + //$res=$k2->db->exec($sqlQuery); + + + } catch(PDOException $e) { + echo "Can't insert Default Menu Item (createMainMenuItem): $sqlQuery\n"; + echo $e->getMessage(); + } + + } + + /** + * Создает новый пункт в меню с ID = $menuId, беря данные из $_POST + * @param type $menuId - ID меню в котором создается пункт + */ + public function createMenuItem($menuId) { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + $cont = $k2->ins_comp('k2cont'); + + + $active = self::MAIN_MENU_ITEM_STATUS_ACTIVE; + $projid = $cont->currentProjectID; + $siteid = $cont->currentSiteID; + //$langid = 'ru'; // Добавляем только пункт меню для языка по умолчанию + $langid = $k2->lng; + + $content = $k2->post('content'); + + + + +// $sqlQuery = 'INSERT INTO k2menuitems (k2menuitemid, k2menuid, caption, active, projid, siteid, langid, title, descript, keywords, content, h1, script, parentid, command, lgparentid) +// VALUES ("'.$k2menuitemid.'", "'.$menuId.'", "'.$caption.'", '.$active.', "'.$projid.'", "'.$siteid.'", "'.$langid.'", "'.$title.'", "'.$descript.'", "'.$keywords.'", "'.$this->escapequpted(htmlspecialchars_decode($content)).'", "'.$h1.'", "'.$script.'", 0, "'.$command.'","0")'; +// +// try { +// $res=$k2->db->exec($sqlQuery); +// +// +// } catch(PDOException $e) { +// echo "Can't insert Default Menu Item (createMenuItem): $sqlQuery\n"; +// echo $e->getMessage(); +// } + + $arr_form = $k2->post('arr_form'); + $cont_arr = []; + foreach ($arr_form as $key => $value) { + $cont_arr[$value['name']] = $value['value']; + if ($value['name'] == 'ordnum') { + $cont_arr['ord'] = $value['value']; + unset($cont_arr['ordnum']); + } + } + unset($cont_arr['full_content']); + + $command = $k2->sys->rus2translit($cont_arr['caption']); + $command = str_replace(' ', '-', $command); + $command = mb_strtolower($command, 'UTF-8'); + $k2menuitemid = rand(1,9).$this->getID(); + + + //массив заменяемых символов + $arr = [' ','%','-',':',"'",',','+','(',')']; + + $command = str_replace($arr, '', trim($command)); + + $cont_arr['k2menuitemid'] = $k2menuitemid; + $cont_arr['k2menuid'] = $menuId; + $cont_arr['active'] = $active; + $cont_arr['projid'] = $projid; + $cont_arr['siteid'] = $siteid; + $cont_arr['langid'] = $langid; + $cont_arr['command'] = $command; + $cont_arr['lgparentid'] = 0; + $cont_arr['content'] = $this->escapequpted(htmlspecialchars_decode($content)); + + if ($k2->post('image')) { + $cont_arr['image'] = $this->path_img.$k2->post('image'); + } + if ($k2->post('image_min')) { + $cont_arr['image_min'] = $this->path_img.$k2->post('image_min'); + } + //unset($cont_arr['ordnum']); + $r = $k2->sql->ins_arr( + ['table' => 'k2menuitems', + 'fields' => $cont_arr + ] + ); + if($r['err']!==''){ + $k2->log->err('Ошибка: '.$r['err']); + $rez['err'] = $r['err']; + } + return $k2->db->lastInsertId(); + } + + public function updateMenuItemContent($menuItemId) { + global $k2; + + $content = $k2->post('full_content'); + + $sqlQuery = "UPDATE k2menuitems SET content='".$content."' WHERE k2menuitemid='".$menuItemId."';"; + + try { + $res=$k2->db->exec($sqlQuery); + + + } catch(PDOException $e) { + echo "Can't update menu item: $sqlQuery\n"; + echo $e->getMessage(); + } + } + + /** + * Обновляет в таблице k2menuitems информацию о пункте меню с $menuItemId + * @param type $menuItemId ID пункта меню для обновления + */ + public function updateMenuItem($menuItemId) { + global $k2; + + $cont = $k2->ins_comp('k2cont'); + + $caption = $k2->post('caption'); + $active = self::MAIN_MENU_ITEM_STATUS_ACTIVE; + $projid = $cont->currentProjectID; + $siteid = $cont->currentSiteID; + $langid = $k2->lng; + $title = $k2->post('title'); + $descript = $k2->post('description'); + $keywords = $k2->post('keywords'); + $content = $k2->post('full_content'); + $h1 = $k2->post('h1'); + $script= $k2->post('script'); + + + $sqlQuery = 'UPDATE k2menuitems SET caption ="'.$caption.'", active='.$active.', projid="'.$projid.'", siteid="'.$siteid.'", langid="'.$langid.'", title="'.$title.'", descript="'.$descript.'", keywords="'.$keywords.'", content="'.$content.'", h1="'.$h1.'", script="'.$script.'" WHERE k2menuitemid='.$menuItemId; + + try { + $res=$k2->db->exec($sqlQuery); + + + } catch(PDOException $e) { + echo "Can't update menu item: $sqlQuery\n"; + echo $e->getMessage(); + } + } + + /** + * Получает ID меню для указанного ID пункта меню. + * @param type $itemID - ID пункта меню. + * @return type integer. ID меню к которому принадлежит пункт + */ + public function getMenuIDbyItemID($itemID){ + global $k2; + + $sqlQlery = "SELECT k2menuid AS menuID FROM k2menuitems WHERE (k2menuitemid ='".$itemID."')"; + + foreach ($k2->db->query($sqlQuery) as $menuItemData) { + $menuID = $menuItemData['menuID']; + } + + return $menuID; + } + + /** + * Получает ID меню по его идентификатору + * @param type $menuIdent - идентификатор меню + * @return type integer. ID меню + */ + + public function getMenuIDbyIdent($menuIdent = '') { + global $k2; + + $rez = ''; + + $menuIdent = $k2->get('menu_ident'); + + $currentLang = $k2->lng; + $cont = $k2->ins_comp('k2cont'); + + if ($menuIdent <> '') { + $sqlQuery = 'SELECT k2menuid AS menuId + FROM k2menu + WHERE ident like "%['.$menuIdent.']%" AND projid ='.$cont->currentProjectID.' AND siteid ='.$cont->currentSiteID; + + foreach ($k2->db->query($sqlQuery) as $menu) { + $rez = $menu['menuId']; + break; + } + } + + return $rez; + + } + + /** + * Создает главное меню для сайта с привязкой к проекту, сайту, языку + */ + public function createDefaultMenu() { + global $k2; + + $cont = $k2->ins_comp('k2cont'); + + + // По умолчанию русский язык + $langID = 'ru'; // имеет ли смысл $k2->lngadmin или $k2->lng + $mainMenuName = self::MAIN_MENU_NAME; + + + $sqlQuery = 'INSERT INTO k2menu (menu_name, ident, active, projid, siteid, langid) + VALUES ("'.$mainMenuName.'", "'.self::MAIN_MENU_IDENT.'","'.self::MAIN_MENU_STATUS_ACTIVE.'","'.$cont->currentProjectID.'","'.$cont->currentSiteID.'", "'.$langID.'" )'; + + try { + $res=$k2->db->exec($sqlQuery); + + + } catch(PDOException $e) { + echo "Can't insert Default Menu (createDefaultMenu): $sqlQuery\n"; + echo $e->getMessage(); + } + + //Создаем пункт меню "Главная" + $this->createMainMenuItem( $k2->db->lastInsertId() ); + + } + + /** + * Получает все данные о пункте меню по его ID + * @param type $itemID - ID пункта меню + * @return array. Массив данных о пункте меню из БД + */ + public function getMenuItemDatabyId($itemID) { + global $k2; + + $whereCondition = " WHERE (k2menuitemid='$itemID') "; + + $cont = $k2->ins_comp('k2cont'); + $currentLang = $k2->lng; + + $menuDataArray = []; + + $sqlQuery = "SELECT caption, title, descript, keywords, content, h1, script FROM k2menuitems" + .$whereCondition." AND projid='".$cont->currentProjectID."' AND siteid='".$cont->currentSiteID."' AND langid='".$currentLang."' LIMIT 1"; + + //var_dump($sqlQuery); + if ($itemID <> '') { + foreach ($k2->db->query($sqlQuery) as $menuData) { + array_push($menuDataArray, $menuData); + } + } + return $menuDataArray; + + } + + /** + * Отдает ID родительского языка для указанного ID пункта меню + * @param type $menuItemID - ID пункта меню + * @return type string + */ + public function getLgParidByMenuItemId($menuItemID) { + global $k2; + + $sqlQuery = "SELECT lgparentid AS lgparentid FROM k2menuitems WHERE (k2menuitemid='".$menuItemID."')"; + + foreach ($k2->db->query($sqlQuery) as $menuItemData) { + $rez = $menuItemData['lgparentid']; + } + + return $rez; + } + + /** + * Удаляет из БД информацию о пункте меню по его ID и все переводы + * @param type $menuItemID ID пункта меню для удаления + */ + function deleteMenuItem($menuItemID) { + global $k2; + + $LgparentID = $this->getLgParidByMenuItemId($menuItemID); + + // Если удаление происходит в основном языке (по умолчанию русский) + if ($LgparentID == 0) { + + // Удалили элемент, на котором была нажата иконка удаления + //$delItemSql = 'DELETE FROM k2menuitems WHERE k2menuitemid ='.$menuItemID; + + $delItemSql = "UPDATE k2menuitems SET active='".self::MENU_ITEM_STATIS_PASSIVE."' WHERE k2menuitemid='".$menuItemID."'"; + + try { + $res=$k2->db->exec($delItemSql); + + + } catch(PDOException $e) { + echo "Can't Delete Item: $delItemSql\n"; + echo $e->getMessage(); + } + + // Удалить все переводы (элементы у которых lgparentid = ID удаляемого элемента) + //$delparenItemSql = 'DELETE FROM k2menuitems WHERE lgparentid ='.$menuItemID; + $delparenItemSql = "UPDATE k2menuitems SET active='".self::MENU_ITEM_STATIS_PASSIVE."' WHERE lgparentid='".$menuItemID."'"; + + try { + $res=$k2->db->exec($delparenItemSql); + + + } catch(PDOException $e) { + echo "Can't Delete Item: $delparenItemSql\n"; + echo $e->getMessage(); + } + + } else { // Удаление элемента на одном из языков + + // Удалили элемент, на котором была нажата иконка удаления + $delItemSql = "UPDATE k2menuitems SET active='".self::MENU_ITEM_STATIS_PASSIVE."' WHERE k2menuitemid ='".$menuItemID."'"; + + try { + $res=$k2->db->exec($delItemSql); + + + } catch(PDOException $e) { + echo "Can't Delete Item: $delItemSql\n"; + echo $e->getMessage(); + } + + // Удалить все другие переводы (с таким же lgparentid) + $delparenItemSql = "UPDATE k2menuitems SET active='".self::MENU_ITEM_STATIS_PASSIVE."' WHERE lgparentid='".$LgparentID."'"; + + try { + $res=$k2->db->exec($delparenItemSql); + + + } catch(PDOException $e) { + echo "Can't Delete Item: $delparenItemSql\n"; + echo $e->getMessage(); + } + + // Удалить родительский элемент на языке по умолчанию + $delTranslatedItemsSql = "UPDATE k2menuitems SET active='".self::MENU_ITEM_STATIS_PASSIVE."' WHERE k2menuitemid='".$LgparentID."'"; + + + try { + $res = $k2->db->exec($delTranslatedItemsSql); + } catch(PDOException $e) { + echo "Can't Delete Item: $delTranslatedItemsSql\n"; + echo $e->getMessage(); + } + } + + } + + function selMenuCont($menuid) + { + global $k2; + $arr = []; + + foreach($k2->site->getDecodedTags('conts') as $key => $value) { + $content = $k2->site->getPortfolio($value); + $tagArr = [$key, $content]; + array_push($arr, $tagArr); + } + return $k2->site->arrReplace($arr, $html); + + } + + /** + * Получение контента пункта меню + * @global type $k2 + * @param type $itemID + * @param type $command + * @return type + */ + public function getMenuContent($itemID = '', $command = '') { + global $k2; + + $rez = $this->menu_page_content; + $MenuItemDataArray = []; + $MenuItemDataArrayTr = []; + $curLanguage = $k2->lng; + + $sqlQuery = "SELECT h1, k2menuitemid, content, progrtext, page_js, page_css, langid, lgparentid, descript, caption, command, title, keywords, k2menuid FROM k2menuitems WHERE (k2menuitemid='".$itemID."') LIMIT 1"; + + if ($command !== '') { + $sqlQuery = "SELECT h1, k2menuitemid, content, progrtext, page_js, page_css, langid, lgparentid, descript, caption, command, title, keywords, k2menuid FROM k2menuitems WHERE command=:command AND langid=:langid LIMIT 1"; + } + //$sql = "SELECT k2menuitemid, title, descript, keywords, content, command, parentid, h1, script FROM k2menuitems WHERE command=:command"; + $r = $k2->sql->sel($sqlQuery,['command'=>$command, 'langid'=>$curLanguage]); + // Нашли элемент по $itemID и загнали инфор о нем в массив + + foreach ($r['data'] as $menuItemData) { + array_push($MenuItemDataArray, $menuItemData); + } + + + $page_data = $MenuItemDataArray[0]; + $mainmenuid = $menuItemData['k2menuid']; + $curmenuid = $menuItemData['k2menuitemid']; + //print_r($MenuItemDataArray); + // Если ID языка элемента не совпадает с текущим языком (язык переключен) + if ($page_data['langid'] <> $curLanguage ) { + + // Если показываем элемент на языке по умолчанию + if($page_data['lgparentid'] == '0') { + // Ищем элемент у которого lgparentid равен $itemID и язык совпадает с текущим + $sql = "SELECT k2menuitemid FROM k2menuitems WHERE lgparentid ='".$itemID."' AND langid ='".$curLanguage."'"; + if ($command !== '') { + $sql = "SELECT k2menuitemid FROM k2menuitems WHERE lgparentid ='".$page_data['k2menuitemid']."' AND langid ='".$curLanguage."'"; + } + } else { + + if ($curLanguage == 'ru') { + $sql = "SELECT k2menuitemid FROM k2menuitems WHERE k2menuitemid='".$page_data['lgparentid']."'"; + } else { + // Ищем элемент у которого lgparentid совпадает с lgparentid элемента, но язык такой же как текущий + $sql = "SELECT k2menuitemid FROM k2menuitems WHERE lgparentid ='".$page_data['lgparentid']."' AND langid ='".$curLanguage."'"; + } + + } + + foreach ($k2->db->query($sql) as $menuItemData) { + $newItemId = $menuItemData['k2menuitemid']; + } + $sqlQuery = "SELECT h1, content, langid, progrtext, page_js, page_css, lgparentid, descript, title, keywords, k2menuid FROM k2menuitems WHERE (k2menuitemid='".$newItemId."') LIMIT 1"; + + foreach ($k2->db->query($sqlQuery) as $menuItemData) { + array_push($MenuItemDataArrayTr, $menuItemData); + } + $page_data = $MenuItemDataArrayTr[0]; +// $newlink = $k2->getUrl('/?p=show_menu_item&menu-item_id='.$newItemId.' '); +// if ($command !== '') { +// $newlink = $k2->getUrl('/?p='.$command.' '); +// } + + //header ('Location: '.$newlink); + $caption = $k2->sys->mb_ucfirst($page_data['caption']); + + if ($page_data['title'] !== '' && $page_data['title'] !== null ) { + $k2->site->title = $page_data['title']; + } + if ($page_data['keywords'] !== '' && $page_data['keywords'] !== null) { + $k2->site->keywords = $page_data['keywords']; + } + + if ($page_data['descript'] !== '' && $page_data['descript'] !== null ) { + $k2->site->description = $page_data['descript']; + } + $curmenuid = $newItemId; + if ($k2->site->ish1) { + $rez = str_replace('{content_h1}', '

        '.$page_data['h1'].'

        ', $rez); + } else { + $rez = str_replace('{content_h1}', '', $rez); + } + + $rez = str_replace('{content_toShow}', html_entity_decode($page_data['content']), $rez); + $rez = str_replace('{caption}', $page_data['h1'], $rez); + $k2->site->pathway->add('/p/'.$page_data['command'], ''.$caption.''); + } else { + $caption = $k2->sys->mb_ucfirst($page_data['caption']); + + + if ($page_data['title'] !== '' && $page_data['title'] !== null ) { + $k2->site->title = $page_data['title']; + } + if ($page_data['keywords'] !== '' && $page_data['keywords'] !== null) { + $k2->site->keywords = $page_data['keywords']; + } + + if ($page_data['descript'] !== '' && $page_data['descript'] !== null ) { + $k2->site->description = $page_data['descript']; + } + + + $k2->site->pathway->add('/p/'.$page_data['command'], ''.$caption.''); + if ($k2->site->ish1) { + $rez = str_replace('{content_h1}', '

        '.$page_data['h1'].'

        ', $rez); + } else { + $rez = str_replace('{content_h1}', '', $rez); + } + + $rez = str_replace('{content_toShow}', html_entity_decode($page_data['content']), $rez); + $rez = str_replace('{caption}', $page_data['h1'], $rez); + } + if ($page_data['page_css']) { + $rez = str_replace('{page_css}', '', $rez); + } + if ($page_data['page_js']) { + $rez = str_replace('{page_js}', '', $rez); + } + if ($page_data['progrtext']) { + $rez = str_replace('{progrtext}', $page_data['progrtext'], $rez); + } + + $rez = str_replace('{page_css}', '', $rez); + $rez = str_replace('{page_js}', '', $rez); + $rez = str_replace('{progrtext}', '', $rez); + + //$this->selMenuCont($curmenuid); + $k2->site->mainmenuid = $mainmenuid; + $k2->site->curmenuid = $curmenuid; + return $rez; + + } + + /** + * новый проект + * @global type $k2 + */ + public function createNewProj() + { + global $k2; + $sqlQuery = 'INSERT INTO k2proj (projname, proj_active) + VALUES ("default", "1" )'; + + try { + $res=$k2->db->exec($sqlQuery); + } catch(PDOException $e) { + echo "Can't insert Default Menu (createNewProj): $sqlQuery\n"; + echo $e->getMessage(); + } + + $this->createNewSite( $k2->db->lastInsertId() ); + } + + /** + * новый сайт + * @global type $k2 + * @param type $projid + */ + public function createNewSite($projid) + { + global $k2; + $sqlQuery = 'INSERT INTO k2sites (site_alias, projid, domainname, langid, site_active) + VALUES ("localhost", "'.$projid.'", "localhost", "ru", "1")'; + + try { + $res=$k2->db->exec($sqlQuery); + } catch(PDOException $e) { + echo "Can't insert (createNewSite): $sqlQuery\n"; + echo $e->getMessage(); + } + $this->createDefLang(); + $this->createDegTempl(); + $this->createDefaultMenu(); + + } + + /** + * вставка def шаблона + * @global type $k2 + */ + public function createDegTempl() + { + global $k2; + $sqlQuery = 'INSERT INTO k2temp (siteid, templatename, temp_active) + VALUES ("1", "default", "1")'; + + try { + $res=$k2->db->exec($sqlQuery); + } catch(PDOException $e) { + echo "Can't insert (createNewSite): $sqlQuery\n"; + echo $e->getMessage(); + } + + } + + /** + * вставка def языка + * @global type $k2 + */ + public function createDefLang() + { + global $k2; + $sqlQuery = 'INSERT INTO k2lang (langid, langname, lang_active) + VALUES ("ru", "Русский", "1")'; + + try { + $res=$k2->db->exec($sqlQuery); + } catch(PDOException $e) { + echo "Can't insert (createNewSite): $sqlQuery\n"; + echo $e->getMessage(); + } + + } + + + + /** + * Проводит все операции по удалению, редактированию и добавлению пунктов меню + */ + private function executeOpers() { + global $k2; + + $oper = $k2->post('oper'); + $menuItemID = $k2->get('menu-item_id'); + + if($oper && $menuItemID){ + switch ($oper) { + case 'delete': + $this->deleteMenuItem($menuItemID); + $k2->goBack('/#'); // Идем на страницу того же пункта меню + break; + case 'update': + $this->updateMenuItem($menuItemID); + $k2->goBack('#'); // Идем на главную + break; + } + } else if ($oper) { + switch ($oper) { + case 'create': + $menuId = $this->getMenuIDbyIdent(); + $newMenuItemID = $this->createMenuItem($menuId); + $k2->goBack('/?menu-item_id='.$newMenuItemID.'#'); // Идем на только что созданную страницу + break; + } + } + } + + // Получает контент + function content(){ + global $k2; + + if ($this->isshow){ + $cont = $this->getContent(false); + $rez = str_replace('{content}', $cont, $this->template); + $rez = str_replace('{submenu}', '', $rez); + $rez = str_replace('{selectdropclass}', $this->unselelectdrop, $rez); + + + if ($k2->get('cab')){ + $rez=str_replace('{act}', 'menu-active', $rez); + } + + $this->admButtons($rez); + $this->executeOpers(); + + + return $rez; + } + + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2menu2.php b/k2shop/k2shop/app/components/k2menu2.php new file mode 100644 index 0000000..b69b1ac --- /dev/null +++ b/k2shop/k2shop/app/components/k2menu2.php @@ -0,0 +1,434 @@ +'; // Конец меню + + public $begin_gr_menu='
          '; // Начало меню. Обычно
            + + + public $item_menu_begin='
          • + + + {caption} + + {num} + + '; // Пункт меню + + public $active_item_menu_begin=' +
          • + + {caption} + + {num} + + '; // Активность меню + + + public $item_menu_end='
          • '; + public $active_item_menu_end=''; + + + public $item_menu_2='
          • {caption}
          • '; + public $item_menu_active_2='
          • {caption}
          • '; + + + + public $end_gr_menu=''; // Конец меню. Обычно
          + + public $add_url=''; // Добавление к URL + + + public $is_get_right=true; // Извлекать ли права + + + + // Возвращает caption (с учетом старой и новой структуры) + function getCaption($menu){ + if (isset($menu['caption'])){ + $rez=$menu['caption']; + }else{ + $rez=$menu[1]; + } + + return $rez; + } + + // Возвращает URL (с учетом старой и новой структуры) + function getURL($menu){ + global $k2; + $rez=''; + + if (isset($menu['url'])){ + $rez=$menu['url']; + }else{ + if (isset($menu[2])){ + $rez=$menu[2]; + } + } + + return $rez; + } + + // Возвращает iconclass, если он есть + function getIconClass($menu){ + + $rez='fa fa-circle-o'; + + if (isset($menu['iconclass'])){ + $rez=$menu['iconclass']; + } + + return $rez; + } + + + // Проверяет есть ли право чтения меню у данного пользователя + function isReadPermissionItem($menu){ + global $k2; + $rez = false; + + if ($k2->auth->isSuperAdmin()) return true; + + if (isset($menu['name'])){ + $name = $menu['name']; + }else{ + $name = $menu[0]; + } + //print_r($k2->secur->k2admin_menus_prava); + if (isset($k2->secur->k2admin_menus_prava[$name])){ + $rez = trim($k2->secur->k2admin_menus_prava[$name]['r']) == '1'; + } + + + return $rez; + } + + // Возвращает меню + function getMenuItem($arr){ + global $k2; + + $rez = $this->begin_gr_menu; + + foreach ($arr as $menu) { + + if ($k2->site->is_get_right && !$this::isReadPermissionItem($menu)){ + continue; + } + + if ($this->isCurrentMenu($menu)){ + $tmp=$this->item_menu_active_2; + + $h1=$this->getCaption($menu); + $h1=str_replace('
          ',' ',$h1); + $k2->site->setH1($h1); + + $k2->site->pathway->clear(); + $k2->site->pathway->add('#', $h1); + }else{ + $tmp=$this->item_menu_2; + } + + $tmp=str_replace('{caption}', $this->getCaption($menu), $tmp); + $tmp=str_replace('{url}', $k2->getUrl($this->getURL($menu).$this->add_url), $tmp); + + $tmp=str_replace('{iconclass}', $this->getIconClass($menu), $tmp); // Класс, выводящий иконку (можно заполнять) + $tmp=str_replace('{num}', '', $tmp); // Номер справа от пункта (можно заполнять) + + $rez.=$tmp; + + } + + + $rez.=$this->end_gr_menu; + + //var_dump($arr); + + return $rez; + } + + + + + /****************************************************************************** + * Генерация меню на основании массива + * Пример структуры меню: + *
        • + + Dashboard + + + + + +
        • + +
        • + + + Layout Options + + 4 + + + +
        • + + * + **************************************************************************************/ + function generateMenu($arr){ + global $k2; + + $rez = $this->head_menu; + + + foreach ($arr as $menu) { + + if ($k2->site->is_get_right && !$this::isReadPermissionCat($menu)){ + continue; + } + + if ($this->isCurrentCat($menu)){ + $tmp=$this->active_item_menu_begin; + }else{ + $tmp=$this->item_menu_begin; + } + + $tmp=str_replace('{caption}', $this->getCatCaption($menu), $tmp); + $tmp=str_replace('{url}', $menu['category']['url'], $tmp); + + $tmp=str_replace('{iconclass}', $this->getIconCatClass($menu), $tmp); // Класс, выводящий иконку (можно заполнять) + $tmp=str_replace('{num}', '', $tmp); // Номер справа от пункта (можно заполнять) + + $rez.=$tmp; + + if (count($menu['elements'])>0){ + $rez.=$this->getMenuItem($menu['elements']); + } + + + $rez.$this->item_menu_end; + } + + $rez.=$this->end_menu; + + //var_dump($arr); + + return $rez; + } + + + // Проверяет есть ли право чтения меню у данного пользователя + function isReadPermissionCat($menu){ + global $k2; + $rez = false; + + if ($k2->auth->isSuperAdmin()) return true; + + + if (isset($menu['category']['name'])){ + $name = $menu['category']['name']; + }else{ + $name = $menu['category'][0]; + } + + if (isset($k2->secur->k2admin_menus_prava[$name])){ + $rez = trim($k2->secur->k2admin_menus_prava[$name]['r'])=='1'; + } + + + return $rez; + } + + + + + // Определяет является ли меню текуще выбранным + function isCurrentCat($arr){ + global $k2; + $rez=false; + + //foreach ($arr as $menu) { + if ($this->isCurrentMenuArr($arr['elements'])){ + $rez=true; + //break; + } + //} + + return $rez; + } + + + // Определяет является пункт текущим выбранным + function isCurrentMenuArr($arr){ + global $k2; + $rez=false; + + foreach ($arr as $menu) { + if (count($menu)>0){ + + $str1=$this->getURL($menu); + $str2=$k2->get('adm'); + if (trim($str2)==''){ + $str2=$k2->get('comp'); + } + + $str_t=$k2->get('t'); + if (trim($str_t)==''){ + $str_t=$k2->get('v'); + } + + $pos=stripos( $str1, $str2 ); + $len1=strlen($str1); + $len2=$pos+strlen($str2); + + if ( ($pos !== false) /*&& ($len1==$len2)*/ ){ + + // Анализируем еще таблицы + if ((trim($str_t)!='')){ + $pos=stripos( $str1, $str_t ); + if ($pos !== false){ + $rez=true; + break; + } + + }else{ + $rez=true; + break; + } + } + } + } + + return $rez; + } + + + // Определяет является url текущим пунктом меню + function isCurrentMenu($menu){ + global $k2; + $rez=false; + + $str1=$this->getURL($menu); + $str2=$k2->get('adm'); + if (trim($str2)==''){ + $str2=$k2->get('comp'); + } + + $str_t=$k2->get('t'); + //if (trim($str_t)==''){ + $str_v=$k2->get('v'); + //} + $str_r=$k2->get('r'); + $str_c=$k2->get('c'); + + //echo $str_c; + + $pos=stripos( $str1, $str2 ); + + $len1=strlen($str1); + $len2=$pos+strlen($str2); + + if ( ($pos !== false) ){ + + if (trim($str_t)!=''){ + $pos=stripos( $str1, 't='.$str_t ); + if ($pos !== false){ + + if (trim($str_c)==''){ + $rez=true; + }else{ + $rez=stripos( $str1, 'c='.$str_c )!=false; + } + + + } + + }elseif(trim($str_v)!=''){ + $pos=stripos( $str1, 'v='.$str_v ); + if ($pos !== false){ + $rez=true; + } + + }elseif(trim($str_r)!=''){ + $pos=stripos( $str1, 'r='.$str_r ); + if ($pos !== false){ + $rez=true; + } + + }else{ + $rez=true; + } + + } + + return $rez; + } + + + // Извлекает права + // $menu_ident - идентиикатор меню, по которому анализируем какие права у пользователя + function getRight($menu_ident){ + //$is_get_right + } + + // Возвращает iconclass, если он есть + function getIconCatClass($menu){ + + $rez='fa fa-folder'; + + if (isset($menu['category']['iconclass'])){ + $rez=$menu['category']['iconclass']; + } + + return $rez; + } + + + // Возвращает caption (с учетом старой и новой структуры) + function getCatCaption($menu){ + if (isset($menu['category']['caption'])){ + $rez=$menu['category']['caption']; + }else{ + $rez=$menu['category'][2]; + } + + return $rez; + } + + + // Вывод контента + function content(){ + global $k2; + $rez=''; + + + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/components/k2menusimple.php b/k2shop/k2shop/app/components/k2menusimple.php new file mode 100644 index 0000000..525d5e4 --- /dev/null +++ b/k2shop/k2shop/app/components/k2menusimple.php @@ -0,0 +1,94 @@ +{menu}
        "; // Группа меню + public $active_tag=" class='active'"; // Тег активного пункта + public $temp_item="
      • {caption}
      • "; + + + public $menu; // Массив меню + + // Инициализация массива меню + function iniMenu($arr){ + global $k2; + $this->menu = $arr; + } + + + // Возвращает является пункт активным + function isActive($url){ + $rez=false; + + if (trim($_SERVER['REQUEST_URI'])==($url)){ + $rez = true; + } + + return $rez; + } + + + // Вывод на экран меню + function showMenu($arr=''){ + global $k2; + if ($arr<>''){ + $this->iniMenu($arr); + }else{ + $arr = $this->menu; + } + + $rez = $this->temp_group; + + $menus=""; + foreach ($arr as $item) { + + $mi = $this->temp_item; + + $mi = str_replace('{url}', $k2->surl->SefURL_FromURL($item['url']), $mi); + $mi = str_replace('{caption}', $item['caption'], $mi); + + $act=''; + if ($this->isActive($item['url'])){ + $act=$this->active_tag; + } + + $mi = str_replace('{active}', $act, $mi); + + $menus .= $mi; + } + + + $rez = str_replace('{menu}', $menus, $rez); + + + + /* + + + */ + + return $rez; + + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2notification.php b/k2shop/k2shop/app/components/k2notification.php new file mode 100644 index 0000000..add92c4 --- /dev/null +++ b/k2shop/k2shop/app/components/k2notification.php @@ -0,0 +1,108 @@ +addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + $k2->site->addCSS('font-awesome.min.css',"//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"); + $k2->site->addCSS('jquery-ui.css',"//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"); + + $k2->site->addJS('jquery.min.js',"/k2shop/k2shop/libs/phpgrid/phpgrid-full-v2.0/lib/js/jquery.min.js"); + //$k2->site->addCSS('jqx.ui-redmond.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.ui-redmond.css"); + $k2->site->addCSS('jqx.base.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.base.css"); + + $k2->site->addJS('jqxcore.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcore.js"); + $k2->site->addJS('jqxbuttons.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxbuttons.js"); + $k2->site->addJS('jqxcheckbox.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcheckbox.js"); + $k2->site->addJS('jqxradiobutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxradiobutton.js"); + $k2->site->addJS('jqxswitchbutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxswitchbutton.js"); + $k2->site->addJS('jqxwindow.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxwindow.js"); + $k2->site->addJS('jqxscrollbar.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxscrollbar.js"); + $k2->site->addJS('jqxpanel.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxpanel.js"); + $k2->site->addJS('jqxnotification.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxnotification.js"); + + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + + + public function showNotif($arr = []) + { + global $k2; + + $this->setParam($arr); + + $script = ' $(document).ready(function () { + $("#messageNotification").jqxNotification({ + width: 250, + position: "top-right", + opacity: 0.9, + autoOpen: false, + animationOpenDelay: 800, + autoClose: true, + autoCloseDelay: 3000, + template: "'.$this->template.'" + }); + + $("#openMessageNotification").jqxButton({ width: 230, height: 30 }); + $("#openMessageNotification").click(function () { + $("#messageNotification").jqxNotification("open"); + }); + }); + '; + + $k2->site->addJavaScript('notification', $script); + + $rez = '
        +
        +
        + +
        +
        + + '; + return $rez; + } + + + + + function content(){ + global $k2; + $this->addToHead(); + $rez = $this->showNotif(); + return $rez; + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2pageroll.php b/k2shop/k2shop/app/components/k2pageroll.php new file mode 100644 index 0000000..80d17ce --- /dev/null +++ b/k2shop/k2shop/app/components/k2pageroll.php @@ -0,0 +1,180 @@ + + + {pages} + + '; // Шаблон для группы + + public $temp_el='{caption}'; // Template for items (Шаблон для элементов) + public $temp_act='{caption}'; // The pattern of the active element (Шаблон активного элемента) + public $temp_empty='...'; // The pattern of the empty element (Шаблон пустого элемента) + + public $mainurl=''; // Address, which is put in front page (Адрес, который ставится перед странице) + + public $is_ajax = false; + public $setpage_func = ''; + + public $max_kol = 0; // Maximum number of items (Максимальное количество элементов) + public $kol_page = 21; // Number of items per page (Количество элементов на странице) + + // Get the previous page (Получение предыдущей страницы) + function getPrior(){ + global $k2; + + $rez=$this->getCurPage(); + + if (($rez-1)>=1){ + $rez=$rez-1; + } + + return $rez; + } + + // Preparation of the next page (Получение следующей страницы) + function getNext(){ + global $k2; + + $rez=$this->getCurPage(); + + if (($rez+1)<=$this->getMaxPages()){ + $rez=$rez+1; + } + + return $rez; + + } + // Preparation of the first page (Получение первой страницы) + function getFirst(){ + global $k2; + $rez=1; + + return $rez; + + } + // Preparation of the end page (Получение последней страницы) + function getEnd(){ + global $k2; + + $rez=$this->getMaxPages(); + + return $rez; + + } + + // Returns the current page (Возвращает текущую страницу) + function getCurPage(){ + global $k2; + + $rez=$k2->get('page'); + + if ($rez==''){ + $rez=1; + } + + return $rez; + + } + + // Returns the top of the page for the SQL query (Возвращает начало страницы для SQL запроса) + function getPos(){ + return ($this->getCurPage()-1)*$this->kol_page; + } + + + // Calculation of the maximum number of pages (Подсчет максимального количества страниц) + function getMaxPages(){ + global $k2; + return ceil(($this->max_kol/$this->kol_page)); + } + + // Output of bread crumbs (Вывод хлебной крошки) + function getPages(){ + global $k2; + $rez=$this->temp_group; + + // Fill the main tag (Заполняем главные теги) + $rez=str_replace('{prior}', $k2->surl->SefURL_FromURL($this->mainurl.'&page='.$this->getPrior()), $rez); + $rez=str_replace('{next}', $k2->surl->SefURL_FromURL($this->mainurl.'&page='.$this->getNext()), $rez); + $rez=str_replace('{first}', $k2->surl->SefURL_FromURL($this->mainurl.'&page='.$this->getFirst()), $rez); + $rez=str_replace('{endpage}', $k2->surl->SefURL_FromURL($this->mainurl.'&page='.$this->getEnd()), $rez); + + $kolpages=$this->getMaxPages(); + + if ($kolpages<=1){ + return ''; + } + + $pagestr=''; + $cur=$this->getCurPage(); + for ($i = 1; $i <= $kolpages; $i++) { + if($kolpages>5){ + if ($i==$cur){ + $el = $this->temp_act; + }else if($i==1 or $i==$kolpages or $i==$cur+1 or $i==$cur-1 or $i==2 or $i==$kolpages-1){ + $el = $this->temp_el; + }else if( $i==$cur+2 or $i==$cur-2){ + $el = $this->temp_empty; + }else{ + $el =''; + } + //$el = $this->temp_empty; + if ($this->is_ajax){ + $el = str_replace('{onclick}', $this->setpage_func.'('.$i.')', $el); + $el = str_replace('{url}', 'javascript:void(0)', $el); + } else { + $el = str_replace('{onclick}', '', $el); + $el = str_replace('{url}', $k2->surl->SefURL_FromURL($this->mainurl.'&page='.$i), $el); + } + + $el = str_replace('{caption}', $i, $el); + }else{ + if ($i==$cur){ + $el = $this->temp_act; + }else{ + $el = $this->temp_el; + } + if ($this->is_ajax){ + $el = str_replace('{onclick}', $this->setpage_func.'('.$i.')', $el); + $el = str_replace('{url}', 'javascript:void(0)', $el); + } else { + $el = str_replace('{onclick}', '', $el); + $el = str_replace('{url}', $k2->surl->SefURL_FromURL($this->mainurl.'&page='.$i), $el); + } + + $el = str_replace('{caption}', $i, $el); + } + $pagestr .= $el; + + } + + $rez = str_replace('{pages}', $pagestr, $rez); + + + return $rez; + } + + + // Returns content (Возвращает контент) + function content(){ + $rez=$this->getPages(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2phpgrid.php b/k2shop/k2shop/app/components/k2phpgrid.php new file mode 100644 index 0000000..3d3e412 --- /dev/null +++ b/k2shop/k2shop/app/components/k2phpgrid.php @@ -0,0 +1,39 @@ + +inc('phpgrid_obj'); + + +class k2phpgrid extends phpgrid_obj{ + + public $events = []; + + + // Displays table (Выводит таблицу) + function simpleTable($arr, $is_render=true){ + + $events = $this->events; + + $rez=$this->render($arr, $is_render, $events); + + return $rez; + } + + + + + +} + diff --git a/k2shop/k2shop/app/components/k2popup.php b/k2shop/k2shop/app/components/k2popup.php new file mode 100644 index 0000000..815d5d8 --- /dev/null +++ b/k2shop/k2shop/app/components/k2popup.php @@ -0,0 +1,205 @@ + + /* Базовые стили слоя затемнения и модального окна */ + .overlay { + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1000; + display: none; + /* фон затемнения */ + background-color: rgba(0, 0, 0, 0.65); + position: fixed; /* фиксированное поцизионирование */ + cursor: default; /* тип курсара */ + } + /* активируем слой затемнения */ + .overlay:target { + display: block; + } + /* стили модального окна */ + .popup { + /*top: 5% !important;*/ + right: 0; + left: 50%; + font-size: 14px; + z-index: 1940; + margin: 0; + /*width: 85%;*/ + min-width: 220px; + max-width: 100%; + overflow: scroll; + max-height: 600px; + + /* фиксированное позиционирование, окно стабильно при прокрутке */ + position: fixed; + padding: 15px; + border: 1px solid #383838; + background: #fefefe; + /* скругление углов */ + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + border-radius: 4px; + font: 14px/18px "Tahoma", Arial, sans-serif; + /* внешняя тень */ + -webkit-box-shadow: 0 15px 20px rgba(0,0,0,.22),0 19px 60px rgba(0,0,0,.3); + -moz-box-shadow: 0 15px 20px rgba(0,0,0,.22),0 19px 60px rgba(0,0,0,.3); + -ms-box-shadow: 0 15px 20px rgba(0,0,0,.22),0 19px 60px rgba(0,0,0,.3); + box-shadow: 0 15px 20px rgba(0,0,0,.22),0 19px 60px rgba(0,0,0,.3); + -webkit-transform: translate(-50%, -500%); + -ms-transform: translate(-50%, -500%); + -o-transform: translate(-50%, -500%); + transform: translate(-50%, -500%); + -webkit-transition: -webkit-transform 0.6s ease-out; + -moz-transition: -moz-transform 0.6s ease-out; + -o-transition: -o-transform 0.6s ease-out; + transition: transform 0.6s ease-out; + } + /* активируем модальный блок */ + .overlay:target+.popup { + -webkit-transform: translate(-50%, 0); + -ms-transform: translate(-50%, 0); + -o-transform: translate(-50%, 0); + transform: translate(-50%, 0); + top: 10%; + } + /* формируем кнопку закрытия */ + .close1 { + opacity: 1; + top: 20px; + right: 20px; + width: 20px; + height: 20px; + position: absolute; + padding: 0; + border: 2px solid #ccc; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + -ms-border-radius: 15px; + -o-border-radius: 15px; + border-radius: 15px; + background-color: rgba(61, 61, 61, 0.8); + -webkit-box-shadow: 0px 0px 10px #000; + -moz-box-shadow: 0px 0px 10px #000; + box-shadow: 0px 0px 10px #000; + text-align: center; + text-decoration: none; + font-weight: bold; + font-size: 14px; + -webkit-transition: all ease .8s; + -moz-transition: all ease .8s; + -ms-transition: all ease .8s; + -o-transition: all ease .8s; + transition: all ease .8s; + } + .close1:before { + color: rgba(255, 255, 255, 0.9); + content: "X"; + text-shadow: 0 -1px rgba(0, 0, 0, 0.9); + font-size: 14px; + } + .close1:hover { + background-color: rgba(252, 20, 0, 0.8); + opacity: 1; + } + /* изображения внутри окна */ + .popup img { + width: 100%; + height: auto; + } + /* миниатюры слева/справа */ + .pic-left, + .pic-right { + width: 25%; + height: auto; + } + .pic-left { + float: left; + margin: 5px 15px 5px 0; + } + .pic-right { + float: right; + margin: 5px 0 5px 15px; + } + .popup h2 { /* заголовок 2 */ + margin: 0; + color: #008000; + padding: 5px 0px 10px; + text-align: left; + text-shadow: 1px 1px 3px #adadad; + font-weight: 500; + font-size: 1.4em; + font-family: "Tahoma", Arial, sans-serif; + line-height: 1.3; + } + /* параграфы */ + .popup p {margin: 0; padding: 5px 0} + + + + + '; + /** + * Показывает всплывающее окно с указанным контентом + * @global type $k2 + * @return type + */ + function showPopup() { + + global $k2; + + // Выводим всплывающее окно + $rez = $this->popUp; + + // Присваеваем ID + $rez=str_replace('{popupId}', $this->popUpID, $rez); + + // Выводим в окне нужную форму + $rez=str_replace('{Form}', $this->popupContent, $rez); + + return $rez; + } + + function content() { + + global $k2; + + /*if (!$rez = $k2->auth->isAdmin()) { + die('У Вас нет прав редактировать данный текст!!!'); + + }*/ + + $rez = $this->showPopup(); + + return $rez; + } + + function show() { + echo $this->content(); + } + +} diff --git a/k2shop/k2shop/app/components/k2popup_menu.php b/k2shop/k2shop/app/components/k2popup_menu.php new file mode 100644 index 0000000..678d0ab --- /dev/null +++ b/k2shop/k2shop/app/components/k2popup_menu.php @@ -0,0 +1,131 @@ +addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + + $k2->site->addJS('jquery.ui.position.min.js',"//cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.6.2/jquery.ui.position.min.js"); + $k2->site->addJS('jquery.contextMenu.min.js',"//cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.6.2/jquery.contextMenu.min.js"); + + $k2->site->addCSS('jquery.contextMenu.css',"//cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.6.2/jquery.contextMenu.css"); + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + if (!empty($this->items)){ + $this->item = ''; + $cnt_sep = 1; + foreach ($this->items as $value) { + + $sep = substr($value['command'], 0, 3); + + if($sep == 'sep'){ + $this->item .= $this->insSeparator($cnt_sep); + $cnt_sep++; + } else { + $this->item .= $this->insItem($value); + } + } + } + } + + /** + * Вставка разделителя + * @param type $cnt_sep + * @return string + */ + public function insSeparator($cnt_sep) + { + $rez = "'sep".$cnt_sep."': '---------', "; + return $rez; + } + + /** + * Вставка пункта меню + * @param type $value + * @return type + */ + public function insItem($value) + { + $rez = " + '".$value['command']."':{ + name: '".$value['name']."', + icon: '".$value['icon']."', + callback: function(itemKey, opt, rootMenu, originalEvent) {".$value['callback']."}, + disabled: ".$value['disabled']." + }, "; + //перевод + $rez=str_replace('{lnSaveSettings}', $this->Translate("{lnSaveSettings}"), $rez); + $rez=str_replace('{lnResetSettings}', $this->Translate("{lnResetSettings}"), $rez); + $rez=str_replace('{lnLookSql}', $this->Translate("{lnLookSql}"), $rez); + $rez=str_replace('{lnRefreshFilter}', $this->Translate("{lnRefreshFilter}"), $rez); + return $rez; + } + + + /** + * + * @global type $k2 + * @param type $arr + * @return string + */ + public function showContMenu($arr) + { + global $k2; + $this->setParam($arr); + + $script = " + $(function(){ + $this->script_before; + $.contextMenu({ + selector: '$this->selector', + trigger: 'right', + callback: $this->callback_func, + items: { + $this->item + } + }); + }) + "; + + $k2->site->addJavaScript($this->selector, $script); + + $rez = ""; + return $rez; + } + + function content(){ + global $k2; + $rez = $this->showContMenu(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2portfolio.php b/k2shop/k2shop/app/components/k2portfolio.php new file mode 100644 index 0000000..981740e --- /dev/null +++ b/k2shop/k2shop/app/components/k2portfolio.php @@ -0,0 +1,419 @@ +{head}'; + + public $portf_desc = '

        {desc}

        '; + + public $rowWrapper = ' + + + '; + + public $itemWrapper = ' +
        + + {alt} + + +

        Исходное изображение

        +
        + + +
        + + '; + + + + + public $lazy = ''; + + + public $fancymain_tpl = ' +
        +
        +
        + + +
        + +

        + Портфолио +

        + +
        +
        + +
        +
        +
        +
        + '; + + public $fancyone_tpl = ' +
        + + + +

        {title}

        +
        + +
        + + '; + + + /** + * Генерирует код для портфолио + * + * @return type string + */ + public function generateFancyPortfolio() { + global $k2; + + + $items = ''; + + + $imgNameArray = $this->getFancyImg(); + + + $rez.= $this->rowWrapper; + foreach ($imgNameArray as $value) { + + $items.= $this->itemWrapper; + + $path = $value['portf_path']; + + $items = str_replace('{filename}', $value['portf_path'], $items); + + $items = str_replace('{alt}', $value['portf_alt'], $items); + $items = str_replace('{title}', $value['portf_name'], $items); + + } + + $rez = str_replace('{portfolioItems}', $items, $rez); + $items = ''; + + + + return $rez; + + } + + + public function getFancyImg() { + global $k2; + + $rez=''; + $img_arr = []; + + $sql="select portf_path, portf_alt, portf_name from k2portfolio order by portf_sort desc"; + + foreach ($k2->db->query($sql) as $row) { + + array_push($img_arr, $row); + } + return $img_arr; + } + + + /** + * Генерирует код для портфолио + * + * @return type string + */ + public function generatePortfolio() { + global $k2; + + $rez = $this->header.$this->portf_desc.$this->lazy; + $items = ''; + + $totalItemsQty = $this->getItemsQty(); + + // Получаем массив названий файлов из папки с превьюхами + $imgNameArray = scandir(self::THUMBNAILS_URL); + $imgNameArray = array_reverse(array_splice($imgNameArray, 2, $totalItemsQty)); + + $imgNameArray = $this->getImg(); + + $rowNumber = $this-> getRowQty($totalItemsQty); + $rowValue = $this->getRowValue(); + + $imgKey = 0; + + for($i = 1; $i <= $rowNumber; $i++) { + $rez.= $this->rowWrapper; + for($j = 1; $j <= $this->getInRowItemsQty(); $j++) { + if(isset($imgNameArray[$imgKey])){ + $path = $this->getImgAtr($imgNameArray[$imgKey]); + $items.= $this->itemWrapper; + $items = str_replace('{lnk}', 'lnk'.$i.$j, $items); + $items = str_replace('{filename}', $imgNameArray[$imgKey], $items); + $items = str_replace('{rowValue}', $rowValue, $items); + $items = str_replace('{alt}', $path[0]['portf_alt'], $items); + $items = str_replace('{title}', $path[0]['portf_name'], $items); + $imgKey++; + } + } + $rez = str_replace('{portfolioItems}', $items, $rez); + $items = ''; + + } + str_replace('{head}', 'Примеры работ по визуализации интерьеров и экстерьеров', $rez); + return $rez; + + } + + /** + * Генерирует код портфолио для админки + * + * @return type string + */ + public function generateAdminPortfolio() { + global $k2; + + $rez = $this->header.$this->lazy; + $items = ''; + + $totalItemsQty = $this->getItemsQty(); + + // Получаем массив названий файлов из папки с превьюхами + $imgNameArray = scandir(self::THUMBNAILS_URL); + $imgNameArray = array_reverse(array_splice($imgNameArray, 2, $totalItemsQty) ); + + $imgNameArray = $this->getImg(); + + //var_dump($imgNameArray); + +// +// foreach ($imgNameArray as $value) { +// $sql1 = "insert into k2portfolio (portf_path, langid) +// values ('".self::SOURCE_URL.$value."', 'ru') "; +// $k2->db->exec($sql1); +// } + + $rowNumber = $this->getRowQty($totalItemsQty); + $rowValue = $this->getRowValue(); + + + + $imgKey = 0; + + for($i = 1; $i <= $rowNumber; $i++) { + $rez.= $this->rowWrapper; + for($j = 1; $j <= $this->getInRowItemsQty(); $j++) { + if(isset($imgNameArray[$imgKey])){ + $path = $this->getImgAtr($imgNameArray[$imgKey]); + $items.= $this->itemWrapper; + $items = str_replace('{filename}', $imgNameArray[$imgKey], $items); + $items = str_replace('{rowValue}', $rowValue, $items); + $items = str_replace('{alt}', $path[0]['portf_alt'], $items); + $items = str_replace('{title}', $path[0]['portf_name'], $items); + $imgKey++; + + } + } + + $rez = str_replace('{portfolioItems}', $items, $rez); + $items = ''; + + } + return $rez; + + } + + /** + * Проверяет задано ли количество элементов в ряду в теге. Если нет - + * возвращает дефолтное значение. + * + * @return type integer количество элементов в ряду + */ + public function getInRowItemsQty(){ + + $itemsInRowQty = $this->portfolioRowItemsQty; + + if($itemsInRowQty == '') { + + $itemsInRowQty = self::DEFAULT_ITEMS_IN_ROW; + }; + + return $itemsInRowQty; + } + + /** + * Получает цифру значение для формирования правильной бутстрап сетки + * + * @return type + */ + public function getRowValue(){ + + $rowValue = self::TOTAL_GRID_ELEMENTS_QTY / $this->getInRowItemsQty(); + + return $rowValue; + } + + /** + * Определяет количество строк необходимое для показа $itemsQty элементов + * + * @param type integer $itemsQty количество элементов + * @return type integer количество срок + */ + public function getRowQty($itemsQty){ + + return ceil($itemsQty / $this->getInRowItemsQty()); + } + + /** + * Получаем параметры изображений + * @global type $k2 + * @param type $filename + * @return array + */ + public function getImgAtr($filename) { + global $k2; + $data_arr = []; + + $sql = "select * from k2portfolio where portf_path like '%".$filename."%'"; + foreach ($k2->db->query($sql) as $row) { + array_push($data_arr, $row); + } + + return $data_arr; + } + + + public function getImg() { + global $k2; + + $rez=''; + $img_arr = []; + + + if ($this->portfolioType=='') { + $where = ''; + } else { + $where = 'where portf_typeid ='.$this->portfolioType; + } + + + $sql="select portf_path from k2portfolio $where order by portf_id desc, portf_sort"; + + foreach ($k2->db->query($sql) as $row) { + $rez = $row["portf_path"]; + $rez = substr($rez, -53); + array_push($img_arr, $rez); + } + return $img_arr; + } + + + public function getTitle() { + global $k2; + + $rez=''; + $img_arr = []; + + + if ($this->portfolioType=='') { + $where = ''; + } else { + $where = 'where portf_typeid ='.$this->portfolioType; + } + + + $sql="select portf_typename, portf_desc from k2portf_type $where limit 1"; + + foreach ($k2->db->query($sql) as $row) { + //$rez = $row["portf_typename"]; + + array_push($img_arr, $row); + } + return $img_arr; + } + + + /** + * Подсчитывает количество файлов портфолио в папке миниатюр + * + * @return type integer количество файлов в папке + */ + public function getItemsQty(){ + + return count(scandir(self::THUMBNAILS_URL))-2; + } + + // Возвращаем контент + function content(){ + global $k2; + $rez = $this->generatePortfolio(); // Выводим портфолио +// if($k2->lng=='ru'){ +// if ($this->portfolioType == 1) { +// $rez = str_replace('{head}', 'Примеры работ по визуализации интерьеров и экстерьеров', $rez); +// } else { +// $rez = str_replace('{head}', 'Примеры работ', $rez); +// } +// +// } elseif ($k2->lng=='en') { +// $rez = str_replace('{head}', 'Examples of works on visualization of interiors and exteriors', $rez); +// } elseif ($k2->lng=='ua') { +// $rez = str_replace('{head}', 'Приклади робіт по візуалізації інтер\'єрів та екстер\'єрів', $rez); +// } + $portf_arr = $this->getTitle(); + $rez = str_replace('{head}', $portf_arr[0]['portf_typename'], $rez); + + $rez = str_replace('{desc}', $portf_arr[0]['portf_desc'], $rez); + + return $rez; + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2progress_bar.php b/k2shop/k2shop/app/components/k2progress_bar.php new file mode 100644 index 0000000..4b77c65 --- /dev/null +++ b/k2shop/k2shop/app/components/k2progress_bar.php @@ -0,0 +1,181 @@ +addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + + $k2->site->addCSS('jqx.base.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.base.css"); + $k2->site->addJS('jqxcore.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcore.js"); + $k2->site->addJS('jqxbuttons.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxbuttons.js"); + $k2->site->addJS('jqxprogressbar.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxprogressbar.js"); + $k2->site->addJS('jqxcheckbox.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcheckbox.js"); + $k2->site->addJS('jqxradiobutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxradiobutton.js"); + $k2->site->addJS('jqxswitchbutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxswitchbutton.js"); + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + + // progress bar + public function progress($arr) + { + global $k2; + $this->setParam($arr); + $script = "#$this->prg_id{ + height: ".$this->height."px; + width: ".$this->width."px; + + } + "; + + $k2->site->addCSS_Script($this->prg_id, $script); + $rez = ""; + return $rez; + } + + // progress bar + public function progressBar($arr) + { + global $k2; + $this->setParam($arr); + $script = " + + function $this->start_func (arg) { + + if(typeof(arg) !== 'undefined'){ + var prg_interval = arg; + } else { + var prg_interval = $this->prg_interval; + + } + var renderText = function (text, value) + { + if (value < 55) + { + return \"\" + text + \"\"; + } + return \"\" + text + \"\"; + } + + var renderText2 = function (text, value) + { + var full_vallue = $this->full_vallue; + + var zal = full_vallue - (value*full_vallue)/100; + + var rest = Math.round(full_vallue - (value*full_vallue)/100, 1) + 'хв.'; + console.log(zal); + if (zal < 1){ + rest = Math.round(zal*60, 1)+ 'сек.' ; + console.log(rest); + } + + if (value < 95) + { + return \" Залишилось \" + rest +\"\"; + } + return \" Залишилось \" + rest +\"\"; + } + + $('#$this->prg_id').jqxProgressBar({ + animationDuration: 0, + showText: '".$this->showtext."', + renderText: renderText2, + colorRanges: [{ stop: 100, color: '#bb814a' }], + template: '".$this->prg_tmp."', + width: ".$this->width.", + height: ".$this->height.", + value: ".$this->value." + }); + + var values = {}; + var addInterval = function (id, intervalStep) + { + values[id] = {value: ".$this->value."}; + //console.log(values[id].value); + values[id].interval = setInterval(function () + { + values[id].value++; + if (values[id].value == ".$this->value.") + { + + clearInterval(values[id].interval); + ".$this->script." + } + $('#' + id).val(values[id].value); + }, intervalStep); + } + {prg_interval} + $('#$this->prg_id').on('complete', function (event) { + values['$this->prg_id'] = {value: 0}; + ".$this->script." + }); + {destroy} + } + "; + + + if($this->destroy){ + $script = str_replace('{destroy}', '$("#'.$this->prg_id.'").jqxProgressBar("destroy");', $script); + } else { + $script = str_replace('{destroy}', '', $script); + } + + + if($this->prg_interval !== 0){ + $script = str_replace('{prg_interval}', "addInterval('$this->prg_id', prg_interval);", $script); + } else { + $script = str_replace('{prg_interval}', '', $script); + } + + $k2->site->addJavaScript($this->prg_id, $script); + $rez = "
        +

        ".$this->caption."

        +
        +
        "; + return $rez; + } + + function content(){ + global $k2; + $rez = $this->progress(); + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2rating.php b/k2shop/k2shop/app/components/k2rating.php new file mode 100644 index 0000000..2cc283a --- /dev/null +++ b/k2shop/k2shop/app/components/k2rating.php @@ -0,0 +1,96 @@ +addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + + //$k2->site->addCSS('jqx.ui-redmond.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.ui-redmond.css"); + $k2->site->addCSS('jqx.base.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.base.css"); + + $k2->site->addJS('jqxcore.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcore.js"); + $k2->site->addJS('jqxbuttons.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxbuttons.js"); + $k2->site->addJS('jqxcheckbox.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcheckbox.js"); + $k2->site->addJS('jqxradiobutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxradiobutton.js"); + $k2->site->addJS('jqxswitchbutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxswitchbutton.js"); + $k2->site->addJS('jqxwindow.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxwindow.js"); + $k2->site->addJS('jqxscrollbar.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxscrollbar.js"); + $k2->site->addJS('jqxpanel.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxpanel.js"); + $k2->site->addJS('jqxrating.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxrating.js"); + + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + + + public function showRating($arr = []) + { + global $k2; + + $this->setParam($arr); + + $script = ' $(document).ready(function () { + // Create jqxRating + $("#jqxRating'.$this->rateid.'").jqxRating({ width: 100, height: 30, theme: "classic"}); + $("#jqxRating'.$this->rateid.'").on("change", function (event) { + $("#rate'.$this->rateid.'").find("span").remove(); + $("#rate'.$this->rateid.'").append("" + event.value + " 0) { + {funcname} + } + }); + }); + '; + + //$k2->site->addJavaScript('rate', $script); + if ($arr['funcname']) { + $script = str_replace('{funcname}', $arr['funcname'], $script); + } else { + $script = str_replace('{funcname}', '', $script); + } + + $rez .= '
        +
        +
        +
        Rating:
        +
        +
        + '; + $rez .= ""; + return $rez; + } + + + + + function content(){ + global $k2; + $rez = $this->showNotif(); + return $rez; + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2report.php b/k2shop/k2shop/app/components/k2report.php new file mode 100644 index 0000000..1c40a07 --- /dev/null +++ b/k2shop/k2shop/app/components/k2report.php @@ -0,0 +1,18 @@ + + {panel_content} + "; + + public $jfunc_script=" + $(document).ready(function () { + $('#{divname}').jqxPanel({ width: '{width}', height: '{height}', autoUpdate: true}); + }); + "; + + + function addToHead(){ + global $k2; + + $k2->site->addCSS('jqx.base.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.base.css"); + + //$k2->site->addJS('jquery-1.11.1.min.js',"/k2shop/k2shop/libs/jqwidgets/scripts/jquery-1.11.1.min.js"); + //$k2->site->addJS('demos.js',"/k2shop/k2shop/libs/jqwidgets/scripts/demos.js"); + + + $k2->site->addJS('jqxcore.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcore.js"); + $k2->site->addJS('jqxscrollbar.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxscrollbar.js"); + $k2->site->addJS('jqxbuttons.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxbuttons.js"); + $k2->site->addJS('jqxpanel.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxpanel.js"); + + } + + + // Возвращает название дива + function getDivName(){ + $rez="jqxPanelWidget_".$this->name; + return $rez; + } + + + // Генерирует код функций + function generate_jfunc(){ + global $k2; + + $script=$this->jfunc_script; + + $script=str_replace('{width}', $this->width, $script); + $script=str_replace('{height}', $this->height, $script); + + $script=str_replace('{divname}', $this::getDivName(), $script); + + $k2->site->addJavaScript('k2scroll_panel'.$this->name, $script); + + } + + + // Возвращает панель + // $arr - массив параметров + // width - ширина + // height - высота + function getPanel($arr=[]){ + global $k2; + + if (isset($arr['width'])){ + $this->width=$arr['width']; + } + + if (isset($arr['height'])){ + $this->height=$arr['height']; + } + + + $this::generate_jfunc(); + $rez=$this->template; + + $rez=str_replace('{divname}', $this::getDivName(), $rez); + + return $rez; + } + + + function content(){ + global $k2; + $rez=$this::getPanel(); + return $rez; + } + + + +} diff --git a/k2shop/k2shop/app/components/k2select2.php b/k2shop/k2shop/app/components/k2select2.php new file mode 100644 index 0000000..4b0a6fb --- /dev/null +++ b/k2shop/k2shop/app/components/k2select2.php @@ -0,0 +1,220 @@ +site->addCSS('select2.min.css', "//cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.min.css"); + $k2->site->addJSEnd('select2.min.js', "//cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.min.js"); + + $k2->site->addHead('select2', " + "); + + $k2->site->addHead('select3', " + "); + } + + + // Returns a list of values (Возвращает список значений) + function getList($param = []) { + global $k2; + $rez = ''; + if ($this->db['db']) { + $r = $this->db['db']->query($param['sql']); + } else { + $r = $k2->db->query($param['sql']); + } + if (isset($param['sql']) && $param['sql']<>''){ + foreach ($r as $value) { + + $sel = ''; + if (isset($param['value'])) { + $keyfield = $value[$param['keyfield']]; + if ($param['value'] == $keyfield && strlen($param['value']) == strlen($keyfield)) { + $sel = ' selected '; + } + } + + $rez .= ""; + } + } + + + return $rez; + } + + // Returns the field-list (Возвращает поле-список) + // $param - array (массив) + // name - name fields (название поля на фоме) + // sql - SQL-query (SQL-запрос) + // keyfield - the name of the key field (название поля ключей) + // valuefield - the name of the values of the field (название поля значений) + // value - value (значение) + // enabled - shut off (отключить) + // multi - multiple choice (множественный выбор) + // search_input - search field (поле поиска) + // 'additems'=>array('-1'=>'New item') - additional list items are not included in sql (дополнительные пункты списка, не входящие в sql) + function sel($param = []) { + global $k2; + + $name = ''; + if (isset($param['name'])) { + $name = $param['name']; + } + + $id = $name; + if (isset($param['id'])) { + $id = $param['id']; + } + + $onchange = ''; + if (isset($param['onchange'])) { + $onchange = $param['onchange']; + } +// $onclick = ''; +// if (isset($param['onclick'])) { +// $onclick = $param['onclick']; +// } + $add_class = ''; + if (isset($param['add_class'])) { + $add_class = $param['add_class']; + } + $arg = ''; + if (isset($param['arg'])) { + $arg = $param['arg']; + } + + $child_fields = ''; + if (isset($param['child_fields'])) { + $child_fields = $param['child_fields']; + } + + $imp = ''; + if (isset($param['imp'])) { + $imp = $param['imp']; + } + + $width = ''; + if (isset($param['width'])) { + $width = $param['width']; + } + + $required = ''; + if (isset($param['required']) && $param['required'] == true) { + $required = 'required'; + } + + $multi = ''; + if ($param['multi']) { + $multi = "multiple=\"multiple\" "; + } + +// $rez .= ""; + + $rez .= ""; + + + + + + return $rez; + } + + // Returns a list of (Возвращает список) + function content() { + $rez = "Select2!!!"; + + return $rez; + } + + // It displays the menu on the screen (Выводит меню на экран) + function show() { + echo $this->content(); + } + +} diff --git a/k2shop/k2shop/app/components/k2sheduler.php b/k2shop/k2shop/app/components/k2sheduler.php new file mode 100644 index 0000000..b90eb01 --- /dev/null +++ b/k2shop/k2shop/app/components/k2sheduler.php @@ -0,0 +1,422 @@ + + content{ + background-color: white; + } + table { + border-collapse: collapse; + overflow: hidden; + table-layout: fixed; + width: 500px; + margin: 20px; + } + + tr { + position: relative; + background: #FFF; + } + + td, th { + position: relative; + padding: 5px; + width: 75px; + height: 20px; + border: 1px solid #000; + } + + .planning-spot { + position: absolute; + top: 0; + left: 0; + height: 20px; + width: 90px; + border-radius: 10px; + margin: 5px; + text-align: center; + z-index: 1; + cursor: pointer; + color: #FFF; + width: 290px; + background: #3CF; + } + + .no-planning { + /*background: #CCC;*/ + } + .resize { + top: 0px; + width: 30px; + height: 100%; + //float: left; + background-color: grey; + //border: #002DA4 thin solid; + border-radius: 5px; + text-align: center; + //border-right-color: red; + position: relative; + } + + .ui-state-highlight { + width: 130px; height: 50px; margin: 10px; + } + + td.drop { + position: relative; + width: 50px; + } + .delblock{ + color: white; + float: right + } + .legend{ + border: 1px solid #abacab; + display: inline; + padding: 2px; + width: 25px; + height: 25px; + } + .freetime{ + padding: 2px 8px; + } + .blocktime{ + border-radius: 2px; + padding: 0px 8px; + background-color: #abacab; + } + .ordertime{ + border-radius: 2px; + padding: 0px 8px; + background-color: #ffb400; + } + .pasttime{ + background-color: #c9c9c9; + width: 20px; + height: 20px; + } + .tableFixHead { overflow-y: auto; height: 900px; } + .tableFixHead thead th { position: sticky; top: 0; } + + /* Just common table stuff. Really. */ + table { border-collapse: collapse; width: 100%; } + + th { background:#fff; z-index:999; } + + a.calendlink{ + /*text-decoration:none;*/ + color: white; + } + .service{ + background-color:#ffb400; + top: 0px; + border-radius: 5px; + text-align: left; + position: relative; + } + + '; + public $year_list=" +
        + +
        + "; + // Сохраняет параметры, как свойства + function saveVar($arr){ + global $k2; + + $this->ini_arr=$arr; + + // Устанавливаем название + if (isset($arr['name'])){ + $this->name=$arr['name']; + } + + } + + /** + * выбор месяца + * @global type $k2 + * @global type $trans + * @return string + */ + function monthSel() + { + global $k2, $trans; + + $months = []; + for ($i = 0; $i < 12; $i++) { + $timestamp = mktime(0, 0, 0, date('n') - $i, 1); + $months[date('n', $timestamp)] = date('F', $timestamp); + } + $options = ''; + foreach ($months as $num => $name) { + if ($k2->get('month') !== '' && $k2->get('month') == $num) { + $options .= ""; + } else { + $options .= ""; + } + + } + $rez = " +
        + +
        + "; + + return $rez; + } + // Выводит поле с датой + function showSheduler($arr){ + global $k2; + $this->saveVar($arr); + + + return $rez; + } + + + public function renderJS($arr_serv) + { + global $k2, $trans; + + $json_serv = json_encode($arr_serv, true); + + ob_start(); + ?> + + getServise($month, $year); + + $rez .= ' +

        Календарь транспортника

        +
        +
        +
        + + {month} +
        +
        + + {year} +
        + + +
        +
        + + + '; + + //$rez = ''; + $rez .= $this->style; + //$rez .= $this->table_tpl; + + + //$rez .= "
        "; + + if ($month == '') { + $month = date('m'); + } + + if ($year == '') { + $year = date('Y'); + } + $rows = cal_days_in_month(CAL_GREGORIAN, $month, $year); + $rez .= '
        '; + $rez .= ''; + $rez .= ''; + $rez .= ''; + foreach ($this->hours_arr as $key => $value) { + $col = $key+2; + $rez .= ''; + } + + + $rez .= ''; + for ($tr = 1; $tr <= $rows; $tr++){ + $rez .= ''; + $days = ['Вс','Пн','Вт','Ср','Чт','Пт','Сб']; + $weekday = date("w", strtotime($year.'-'.$month.'-'.$tr)); + $day = $tr.', '.$days[$weekday].' '; + $rez .= ''; + $rez .= ''; + + + + + + foreach ($this->hours_arr as $key => $value) { + $col = $key+2; + $block = ''; + if ($tr == 3 && $value == '09:00') { + //$block = '
        Блокировка

        '; + } + + $value = str_replace(':', '_', $value); + + $rez .= + ' + '; + $value = str_replace('_00', '_30', $value); + $rez .= + ' + '; + } + $rez .= ''; + } + + + + $rez .= '
        Дата/ВремяТип авто'.$value.'
        '.$day.'Стандарт + '.$block.' + + +
        '; + + $rez .= '
        +
        + +
        +
        + Легенда +
        +
        '; + $rez .= '
        + +
        +
        + + Свободный час + +
        +
        +
        + + Заблокированный час + +
        +
        +
        + Заказ + +
        +
        +
        + + Прошедшие дни, часы + +
        +
        '; + + + + + + + $rez = str_replace('{month}', $this->monthSel(), $rez); + $rez = str_replace('{year}', $this->showYear(), $rez); + + + + $rez .= $this->renderJS($arr_serv); + return $rez; + } + + // Выводит поле вввода + function content(){ + $rez=$this->showSheduler(); + + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2slider.php b/k2shop/k2shop/app/components/k2slider.php new file mode 100644 index 0000000..4eff96d --- /dev/null +++ b/k2shop/k2shop/app/components/k2slider.php @@ -0,0 +1,314 @@ + +
        +
        +
        + +
        +
        +
        + '; + + public $sliderIndicator = '
      • '; // Внешний вид индикатора слайда + public $activeIndicatorClass = 'class="active"'; // Класс активного индикатора слайда + public $activeSlideClass = 'active'; // Класс активного слайда + public $imageAdditionalClass = 'girl'; // Дополнительный класс активного слайда + + // Шаблон одного слайда + public $sliderItem = '
        +
        + {slideContent} + {slideButton} +
        +
        + {slideImage} +
        +
        '; + + // Шаблон для изображения слайда + public $slideImage = ''; + + // Шаблон кнопки в слайде + public $slideButton = ''; + + // Шаблон левой управляющей стрелки слайдера + public $leftSliderControl = ''; + // Шаблон правой управляющей стрелки слайдера + public $rightSliderControl = ''; + + public function generateSliderId($length = self::SLIDER_ID_LENGTH){ + + $chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789'; + $numChars = strlen($chars); + $string = ''; + for ($i = 0; $i < $length; $i++) { + + $string .= substr($chars, rand(1, $numChars) - 1, 1); + } + + return $string; + } + + + /** + * Парсит имя слайдера, полученное из тега {slider} для определения идентификатора + * и шаблона. + * @param type $sliderName + * @return type array - [0]- dbIdentificator (идентификатор) [1] - template (шаблон) + */ + public function sliderDataParcer($sliderName){ + + $sliderInitData = explode("-", $sliderName); + + return $sliderInitData; + } + + + /** + * Задает параметры слайдера и возвращает их в виде массива + * @return type array + */ + public function getSliderParams(){ + global $k2; + +// $sliderName = $this->sliderName; +// $sliderInitData = []; +// +// // Если имя слайдера не указано, задаем значения по умолчанию +// if($sliderName == '') { +// $sliderInitData['dbIdentificator'] = 'main_slider'; // Идентификатор слайдера для получения данных из БД +// $sliderInitData['template'] = 'slider'; // Шаблон слайдера в папке k2shop/usr/cfg/k2slider-slider.php +// } else { +// // Получаем параметры слайдера из тега {slider} +// $sliderInitData['dbIdentificator'] = $this->sliderDataParcer($sliderName)[0]; +// $sliderInitData['template'] = $this->sliderDataParcer($sliderName)[1]; +// } + + $sliderName = $this->sliderName; + $sliderInitData = []; + + // Если имя слайдера не указано, задаем значения по умолчанию + if($sliderName == '') { + $sliderInitData['dbIdentificator'] = 'main_slider'; // Идентификатор слайдера для получения данных из БД + $sliderInitData['template'] = 'slider'; // Шаблон слайдера в папке k2shop/usr/cfg/k2slider-slider.php + } else { + // Получаем параметры слайдера из тега {slider} + $sliderInitData['dbIdentificator'] = $this->sliderDataParcer($sliderName)[0]; + $sliderInitData['template'] = $this->sliderDataParcer($sliderName)[1]; + } + + return $sliderInitData; + } + + + /** + * Получает всю информацию о слайдере из БД по его идентификатору. + * @return array - массив данных о слайдах для слайдера с указанным именем + */ + public function getSlides($sliderDbIdentificator='') { + global $k2; + if($sliderDbIdentificator==''){ + $sliderDbIdentificator = $this->getSliderParams()['dbIdentificator']; // Получаем идентификатор слайдера для запроса к БД + } + $sliderData = []; // Массив с данными слайдов для нужного слайдера + + $sqlQuery = 'SELECT s.image, s.content, s.link, s.sort_order + FROM k2slider AS s + WHERE slider_name ="'.$sliderDbIdentificator.' " + ORDER BY s.sort_order'; + + + foreach ($k2->db->query($sqlQuery) as $row) { + array_push($sliderData, $row); + } + + return $sliderData; + } + + + /** + * Формирует секцию индикаторов для переключения слайдов + * @param type $slidesArray - массив с данными о слайдах + * @return type string - HTML код внешнего вида индикаторов слайдера + */ + public function getSliderIndicatiors($slidesArray){ + global $k2; + + $rez = ''; + + $slidesNumber = count($slidesArray); // Получаем количество слайдов для заданного слайдера + + for( $i = 0; $i <= $slidesNumber-1; $i++) { + + if( $i == 0 ) { + $rez .= $this->sliderIndicator; + $rez = str_replace('{slideNum}', $i, $rez); + $rez = str_replace('{indicatorClass}', $this->activeIndicatorClass, $rez); + } else { + $rez .= $this->sliderIndicator; + $rez = str_replace('{slideNum}', $i, $rez); + $rez = str_replace('{indicatorClass}', '', $rez); + } + + } + + return $rez; + + } + + + /** + * Генерирует слайды из БД + * @param type $slidesArray - массив информации о слайдах + * @return type string HTML код слайдов + */ + public function getSliderItems($slidesArray) { + global $k2; + + $rez=''; + + foreach ($slidesArray as $key => $slide) { + + if( $key == 0 ) { + $rez.= $this->sliderItem; + $rez = str_replace('{activeSlide}', $this->activeSlideClass, $rez); + $rez = str_replace('{slideContent}', $slide['content'], $rez); + $rez = str_replace('{slideButton}', $this->slideButton, $rez); + $rez = str_replace('{buttonLink}', $slide['link'], $rez); + $rez = str_replace('{slideImage}', $this->slideImage, $rez); + $rez = str_replace('{imageSrc}', $slide['image'], $rez); + $rez = str_replace('{imageAdditionalClass}', $this->imageAdditionalClass, $rez); + + } else { + $rez.= $this->sliderItem; + $rez = str_replace('{activeSlide}','' , $rez); + $rez = str_replace('{slideContent}', $slide['content'], $rez); + $rez = str_replace('{slideButton}', $this->slideButton, $rez); + $rez = str_replace('{buttonLink}', $slide['link'], $rez); + $rez = str_replace('{slideImage}', $this->slideImage, $rez); + $rez = str_replace('{imageSrc}', $slide['image'], $rez); + $rez = str_replace('{imageAdditionalClass}', $this->imageAdditionalClass, $rez); + } + } + return $rez; + } + + + /** + * Генерирует управляющие стрелки слайдера + * @return string код управляющих стрелок слайдера + */ + public function getSliderControls() { + global $k2; + + $rez = $this->leftSliderControl.$this->rightSliderControl; + + return $rez; + } + + + /** + * Переназначает свойства, отвечающие за внешний вид слайдера из шаблона, если таковой имеется в папке + */ + public function sliderTemplateInit() { + global $k2; + + $sliderTemplate = $this->getSliderParams()['template']; + + $templateFileName = 'k2slider-'.$sliderTemplate.'.php'; // Формируем название файла шаблона + $templateFileUrl = $k2->rootdir.'/k2shop/usr/'.$k2->curtemplate.'/cfg/'.$templateFileName; // Формируем URL местонахождение файла + + if (file_exists($templateFileUrl)) { + + return $templateFileUrl; + } else { + return false; + } + } + + + /** + * Формирует и отдает HTML код слайдера + * @return type string HTML код слайдера + */ + public function getSliderContent(){ + global $k2; + + $this->sliderTemplateInit(); + + $rez = $this->sliderContent; + + + // Выводим слайдер только на главной странице, если showOnlyOnMainPage = true + if( $this->showOnlyOnMainPage ) { + + if( !(($_SERVER['REQUEST_URI'] == '/') || ($_SERVER['REQUEST_URI'] == '/index.php')) ) { + $rez = ''; + } + + } + + $slidesArray = $this->getSlides(); + + $rez = str_replace('{sliderIndicators}', $this->getSliderIndicatiors($slidesArray), $rez); + $rez = str_replace('{sliderItems}', $this->getSliderItems($slidesArray), $rez); + $rez = str_replace('{sliderControls}', $this->getSliderControls(), $rez); + $rez = str_replace('{sliderId}', $this->generateSliderId(), $rez); + + return $rez; + } + + // Возвращаем контент + function content(){ + if( $this->sliderTemplateInit() ) { + // Подключаем указанный шаблон + require_once $this->sliderTemplateInit(); + } + + $rez = $this->getSliderContent(); // Выводим слайдер + + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2social.php b/k2shop/k2shop/app/components/k2social.php new file mode 100644 index 0000000..2ef5bd1 --- /dev/null +++ b/k2shop/k2shop/app/components/k2social.php @@ -0,0 +1,20 @@ + +
        + {panel1}
        +
        + {panel2}
        +
        + + + "; + + public $temp_hor=" +
        +
        + {panel1}
        +
        + {panel2}
        +
        + "; + + public $jfunc_script_vert=" + $(document).ready(function () { + $('#{divname}').jqxSplitter({ width: '{width}', height: {height}, panels: [{ size: {panel_size} }] }); + }); + + "; + + public $jfunc_script_hor=" + $(document).ready(function () { + $('#{divname}').jqxSplitter({ width: {width}, height: {height}, orientation: 'horizontal', panels: [{ size: {panel_size} }, { size: {panel_size2} }] }); + }); + + "; + + public $jfunc_script_resize=" + $('#{divname}').on('resize', function (event) { + {objs} + + }); + "; + + + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + $this->addToHead(); + } + + + // Регистрирует необходимые библиотеки + function addToHead(){ + global $k2; + + $k2->site->addCSS('jqx.base.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.base.css"); + + $k2->site->addJS('jqxcore.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcore.js"); + $k2->site->addJS('jqxsplitter.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxsplitter.js"); + $k2->site->addJS('jqxbuttons.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxbuttons.js"); + $k2->site->addJS('jqxscrollbar.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxscrollbar.js"); + $k2->site->addJS('jqxpanel.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxpanel.js"); + } + + // Возвращает название дива + function getDivName(){ + $rez="jqxSplitter_".$this->name; + return $rez; + } + + + // Изменение размеров объектов + function resizeObjs($arr){ + global $k2; + $rez=''; + + if (isset($arr['resize_objs'])){ + $rez = $this->jfunc_script_resize; + $objs_script=''; + + foreach ($arr['resize_objs'] as $key) { + if (!empty($key)){ + + // По умолчанию - изменяем при изменении ширину + $objtmp="$('#{objdiv}').setGridWidth(event.args.panels[{panel}].size, true);"; + + // В зависимости от направления панелей меняем высоту или ширину + if (isset($arr['orient'])){ + if ($arr['orient']=='hor'){ + $objtmp="$('#{objdiv}').setGridHeight(event.args.panels[{panel}].size, true);"; + + // $('.splitter-panel2').height(){step} + + } + } + + + $objtmp=str_replace('{objdiv}', $key['obj']->getDivName(), $objtmp); + + if (isset($key['panel'])){ + $objtmp=str_replace('{panel}', $key['panel'], $objtmp); + }else{ + $objtmp=str_replace('{panel}', '0', $objtmp); + } + + $objs_script.=$objtmp."\n"; + } + } + + $rez=str_replace('{objs}', $objs_script, $rez); + } + + return $rez; + } + + + + + // Генерирует код функций + function generate_jfunc($arr=[]){ + global $k2; + + $script=$this->jfunc_script_vert; + if (isset($arr['orient'])){ + if ($arr['orient']=='hor'){ + $script=$this->jfunc_script_hor; + } + } + + $script2 = $this::resizeObjs($arr); + + $script=str_replace('{divname}', $this::getDivName(), $script); + + $script2=str_replace('{divname}', $this::getDivName(), $script2); + + + $script=str_replace('{width}', $this->width, $script); + $script=str_replace('{height}', $this->height, $script); + $script=str_replace('{panel_size}', $this->panel_size, $script); + $script=str_replace('{panel_size2}', $this->panel_size2, $script); + + + $k2->site->addJavaScriptEnd('k2splitter_vertsplitter2'.$this->getDivName(), $script2); + $k2->site->addJavaScript('k2splitter_vertsplitter'.$this->getDivName(), $script); + + +// $onload_script=" +// /*$('#{divname}').jqxSplitter({ height: '250px', width: '450px' });*/ +// alert('kkk'); +// "; + + // $('#{divname}').trigger('resize',[]); + + // $('#{divname}').trigger('resize'); + // jQuery('#{divname}').trigger('resize'); +// alert('kkk'); + + +// $onload_script=str_replace('{divname}', $this::getDivName(), $onload_script); + +// $k2->site->addJavaScriptEnd('k2splitter_vertsplitter_onload'.$this->getDivName(), $onload_script); + + + } + + + // Вертикальный сплиттер с двумя областями слева и справа + // $arr - массив параметров + // 'width' - ширина + // 'height' - высота + // 'panel_size' - размер панели + // 'panel_size' - размер панели 2 + // 'orient' - ориентация: vert - вертикальная, hor - горизонтальная + // 'resize_objs' - объекты размеры которых нужно изменять при изменении resize + function Splitter($arr=[]){ + global $k2; + + + if (isset($arr['name'])){ + $this->name=$arr['name']; + } + + // Объекты размеры которых изменяются + if (isset($arr['resize_objs'])){ + $this->resize_objs=$arr['resize_objs']; + } + + if (isset($arr['width'])){ + $this->width=$arr['width']; + } + + if (isset($arr['height'])){ + $this->height=$arr['height']; + } + + if (isset($arr['panel_size'])){ + $this->panel_size=$arr['panel_size']; + } + + if (isset($arr['panel_size2'])){ + $this->panel_size=$arr['panel_size2']; + } + + $rez=$this->temp_vert; + if (isset($arr['orient'])){ + if ($arr['orient']=='hor'){ + $rez=$this->temp_hor; + } + } + + + + $this->generate_jfunc($arr); + + $rez=str_replace('{divname}', $this::getDivName(), $rez); + + if (isset($arr['panel1'])){ + $rez=str_replace('{panel1}', $arr['panel1'], $rez); + } + + if (isset($arr['panel2'])){ + $rez=str_replace('{panel2}', $arr['panel2'], $rez); + } + + + return $rez; + } + + + + function content(){ + global $k2; + $rez=$this::Splitter(); + + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/components/k2sql.php b/k2shop/k2shop/app/components/k2sql.php new file mode 100644 index 0000000..1b1ac33 --- /dev/null +++ b/k2shop/k2shop/app/components/k2sql.php @@ -0,0 +1,271 @@ +auth->login) { + // $k2->addLog('Login-'.$k2->auth->login.' | SQL-('.$sql.') ', 'SQL.log'); + // } + try { + $this::setParams($val); + if ($this->db['db']) { + $stmt = $this->db['db']->prepare($sql); + } else { + $stmt = $k2->db->prepare($sql); + } + $stmt->execute($val); + + $rez['data'] = $stmt->fetchAll(); + + } catch(PDOException $e) { + $rez['err']='ERROR Sel: '.$e->getMessage().'
        SQL: '.$sql."\n"/*.' Data: '.$k2->dump($val)*/; + echo 'ERROR Sel: '.$e->getMessage().'
        SQL: '.$sql."\n"/*.' Data: '.$k2->dump($val)*/; + $k2->log->errDB($rez['err'], false); + } + + return $rez; + } + + + // Вставка + function ins($sql, $val=[]){ + global $k2; + $rez = $this::runSQL($sql, $val, 'ins'); + return $rez; + } + + + // Вставка данных через массив + // $params - массив с данными для вставки + // 'table' - название таблицы + // 'fields' - названия полей и их значение + function ins_arr($params){ + global $k2; + + $sql='INSERT INTO {table} ({fields}) VALUES ({values});'; + + $sql=str_replace('{table}', $params['table'], $sql); + + $fld=''; + $val=''; + + foreach ($params['fields'] as $k => $v){ + if ($fld<>'') $fld.=','; + if ($val<>'') $val.=','; + + $fld.=trim($k); + $val.=':'.trim($k); + + } + + $sql = str_replace('{fields}', $fld, $sql); + $sql = str_replace('{values}', $val, $sql); + + $rez = $this::ins($sql, $params['fields']); + + return $rez; + } + + // Изменение + function upd($sql, $val=[]){ + global $k2; + $rez=$this->runSQL($sql, $val, 'upd'); + return $rez; + } + + + + // Изменение данных через массив + // $params - массив с данными для вставки + // 'table' - название таблицы + // 'fields' - названия полей и их значение + // 'where' - поля и значения в where + function upd_arr($params){ + global $k2; + + $sql='UPDATE {table} SET {sets} WHERE {where};'; + + $sql=str_replace('{table}', $params['table'], $sql); + + $sets=''; + foreach ($params['fields'] as $k => $v){ + if ($sets<>'') $sets.=','; + $sets.=trim($k).'=:'.trim($k); + } + + $sql=str_replace('{sets}', $sets, $sql); + + $where=''; + foreach ($params['where'] as $k => $v){ + if ($where<>'') $where.=' and '; + $where.='('.trim($k).'=:'.trim($k).')'; + } + + $sql=str_replace('{where}', $where, $sql); + + $updarr = array_merge($params['fields'], $params['where']); + + $rez=$this::upd($sql, $updarr); + + return $rez; + } + + // Удаление + function del($sql, $val=[]){ + global $k2; + $rez = $this->runSQL($sql, $val, 'del'); + return $rez; + } + + + + // Установка значений параметров + function setParams(&$val){ + global $k2; + + // Прохожусь по параметрам ставлю значение + foreach ($val as &$v){ + // Генерируем id для {id} + if (trim($v) == '{id}'){ + $v=$this->getID(); + }elseif (trim($v) == '{userid}'){ + $v=$k2->auth->userid; + }elseif (trim($v) == '{login}'){ + $v=$k2->auth->login; + }elseif (trim($v) == '{now}'){ + $v=date("Y-m-d H:i:s");; + }elseif (trim($v) == '{date}'){ + $v=date("Y-m-d");; + } + } + } + + + + + // Выполнение произвольного SQL + // Параметры такие же, как в других ф-циях. + // Добавляется дополнительный параметр: + // $op - тип операции del, ins, upd + // + // Возврат функции - это массив + // count - количество затронутых записей + // err - ошибка + // + // $val - параметры подстановки имеет формат НазваниеПоля=>Значение + // В значении принимаются маски: + // {id} - генерирует ID + function runSQL($sql, $val=[], $op=''){ + global $k2; + $rez=['count' => 0, 'err' => '']; + // if ($k2->auth->login) { + // $k2->addLog('Login-'.$k2->auth->login.' | SQL-('.$sql.') ', 'SQL.log'); + // } + $this->setParams($val); + + try{ + $stmt = $k2->db->prepare($sql); + if ($this->db['db']) { + $stmt = $this->db['db']->prepare($sql); + } else { + $stmt = $k2->db->prepare($sql); + } + $stmt->execute($val); + + //echo 'sql='.$sql."
        "; + //var_dump($val); + $rez['count']=$stmt->rowCount(); + //$rez['sql']=$sql; + } catch(PDOException $e) { + $rez['err']="Error $op: " . $e->getMessage().'SQL: '.$sql.' Data: '.$k2->dump($val); + echo $rez['err']; + $k2->log->errDB($rez['err'], false); + } + + return $rez; + } + + + /** + * Выполнение хранимой процедуры + * @global type $k2 + * @param type $sql + * @param type $val + * @return string + */ + function runProc($sql, $val=[]) + { + global $k2; + + $rez = $this->sel($sql, $val, $op='proc'); + return $rez; + } + + + /** + * Выполнение хранимой функции + * @global type $k2 + * @param type $sql + * @param type $val + * @return string + */ + function runFunc($sql, $val=[]) + { + global $k2; + + $rez = $this->sel($sql, $val, $op='func'); + return $rez; + } + + + // Выполнение скрипта SQL + function runScript($sql){ + global $k2; + $rez=''; + + // Разбиваем на отдельные SQL-запросы + $sqlarr = explode(';',$sql); + + foreach($sqlarr as $s) { + $s = trim($s); + if (trim($s)<>''){ + $rez_arr = $this->runSQL($s); + $rez .= $rez_arr['err']; + } + } + + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/components/k2stimul_report.php b/k2shop/k2shop/app/components/k2stimul_report.php new file mode 100644 index 0000000..f5eac81 --- /dev/null +++ b/k2shop/k2shop/app/components/k2stimul_report.php @@ -0,0 +1,359 @@ +site->addCSS('stimulsoft.viewer.office2013.css', $this->stimul_path."css/stimulsoft.viewer.office2013.darkgrayteal.css"); + $k2->site->addCSS('stimulsoft.designer.office2013.lightgray.teal.css', $this->stimul_path."css/stimulsoft.designer.office2013.darkgrayteal.css"); + + $k2->site->addJS('stimulsoft.reports.js', $this->stimul_path."scripts/stimulsoft.reports.js"); + $k2->site->addJS('stimulsoft.viewer.js', $this->stimul_path."scripts/stimulsoft.viewer.js"); + + require_once $k2->rootdir.$this->stimul_path.'stimulsoft/helper.php'; + + + $script='Stimulsoft.Base.StiLicense.key = "6vJhGtLLLz2GNviWmUTrhSqnOItdDwjBylQzQcAOiHnnwieDXKHDEXjfH5jxP60YKBtrCd2/CZ90/FINMESGwc92ho" + + "GQJp4M/YiL/v6jwRBptIkVRBxj6Vro/STsiehiYTj5gJQkXW3Jhx2Ce7jM4DBu5e8NlMXRNZl8QEu70xuR2VZo92xM" + + "j62ycrrtJosoY9rqR2nML2xkYo7U5/BK21vtdeKgN/jxz2bONqRkxAKWPnVyGc/Nw3t4COAKpTWYf8g3ynWQjg/24s" + + "AhO67YLUw/rts8KK1A7j5kkk7YLcMe/vq5EW6mJMChJE3gpy7DB3EhkS4GAAxqbpHsXsDaIjKGF5AaW4KLqXWgxBRb" + + "iyxgRTsgvOiYT7fgDxIr3c9sYv5ppbzS7rk1neb874qAZAikPKv4K6vi3/4mwuv57YjsmGS88NzvlQlJqETBlvgZv2" + + "QOS17MjQRJcEeUHTWzM3blquU+AD5MEbeISIwImuZqEtegu2m5Guv+sy4HX9b1RgL8/mnoXPjCUJxpKH/sZuBX+xLF" + + "oZo2dVPiT4wtjGmutoVgrFuXbtLkgyYd1rzK";'; + + $k2->site->addJavaScript('stimul_key', $script); + + + } + + + function initReport(){ + global $k2; + + ob_start(); + + + $handler="/k2shop/k2shop/app/components/k2stimul_report_handler.php?".$_SERVER['QUERY_STRING']; + + $options = StiHelper::createOptions(); + $options->handler = $handler; + $options->timeout = 30; + + + StiHelper::initialize($options); + $opts = ob_get_contents(); + ob_end_clean(); + + $k2->site->addHeadText('stimul_init', $opts); + } + + function view($filename=''){ + global $k2; + + + $this->initReport(); + + $script=' + var options = new Stimulsoft.Viewer.StiViewerOptions(); + options.appearance.fullScreenMode = true; + options.toolbar.showSendEmailButton = true; + options.toolbar.showEditorButton = true; + options.appearance.htmlRenderMode = Stimulsoft.Report.Export.StiHtmlExportMode.Table; + + var designer = new Stimulsoft.Viewer.StiViewer(options, "StiViewer", false); + Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile("/k2shop/k2shop/libs/stimulsoft/Localization/ru.xml"); + Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile("/k2shop/k2shop/libs/stimulsoft/Localization/en.xml"); + Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile("/k2shop/k2shop/libs/stimulsoft/Localization/{lang}.xml"); + + // Process SQL data source + designer.onBeginProcessData = function (event, callback) { + '.$this->get_handler().' + } + + designer.onGetReportData = function (event) { + '.$this->get_handler().' + } + + // Assign the onReportExport event function + designer.onEndExportReport = function (event) { + + var data = event.data; +// $.ajax({ +// url: location.href + "&op=save&temp=ajax", +// type: "POST", +// data: {data:data}, +// success: function(result){ +// console.log(result); +// } +// }); + } + + + + // Save report template on the server side + designer.onSaveReport = function (event) { + '.$this->get_handler().' + } + + // Load and design report + var report = new Stimulsoft.Report.StiReport(); + report.loadFile("'.$filename.'"); + designer.report = report; + + function saveReportDocument(e) { + + + report.render(); + var settings = new Stimulsoft.Report.Export.StiPdfExportSettings(); + var service = new Stimulsoft.Report.Export.StiPdfExportService(); + + + + var stream = new Stimulsoft.System.IO.MemoryStream(); + + + + service.exportTo(report, stream, settings); + + + + var data = stream.toArray(); + + console.log(data); + + //Object.saveAs(data, "SimpleList.pdf", "application/pdf"); + + } + + //добавление кнопок + function addButton(){ + var userButton = designer.jsObject.SmallButton("userButton", "Save", "emptyImage"); + userButton.image.src = "https://www.stimulsoft.com/favicon.png"; + userButton.action = function (e) { saveReportDocument(e); } + + var toolbarTable = designer.jsObject.controls.toolbar.firstChild.firstChild; + var buttonsTable = toolbarTable.rows[0].firstChild.firstChild; + var userButtonCell = buttonsTable.rows[0].insertCell(0); + userButtonCell.className = "stiJsViewerClearAllStyles"; + userButtonCell.appendChild(userButton); + } + + function onLoad() { + designer.renderHtml("designerContent"); + addButton(); + + designer.jsObject.postInteractionOld = designer.jsObject.postInteraction; + //console.log(designer); + + designer.onSaveReport; + designer.jsObject.postInteraction = function (params) { + + var report = designer.report; + console.log(report.onGetSubReport); + + //console.log(params); + if (params.action == "Variables") { + var report = designer.report; + console.log(report); + //Here you can write your code + } + designer.jsObject.postInteractionOld(params); + } + } + + + '; + + + $script= str_replace('{lang}', $this->lang, $script); + + $k2->site->addJavaScript('stimul', $script); + + $rez='
        '; + + + return $rez; + } + + + function get_handler(){ + global $k2; + + ob_start(); + StiHelper::createHandler(); + $rez = ob_get_contents(); + ob_end_clean(); + + return $rez; + } + + + + + function design($filename=''){ + global $k2; + + if (!$k2->auth->isSuperAdmin()){ + die('Доступ заборонено!'); + } + + + $this->initReport(); + + $k2->site->addJS('stimulsoft.designer.js', $this->stimul_path."scripts/stimulsoft.designer.js"); + + $script='var options = new Stimulsoft.Designer.StiDesignerOptions(); + options.appearance.fullScreenMode = true; + options.toolbar.showSendEmailButton = true; + + var designer = new Stimulsoft.Designer.StiDesigner(options, "StiDesigner", false); + Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile("/k2shop/k2shop/libs/stimulsoft/Localization/ru.xml"); + Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile("/k2shop/k2shop/libs/stimulsoft/Localization/en.xml"); + Stimulsoft.Base.Localization.StiLocalization.setLocalizationFile("/k2shop/k2shop/libs/stimulsoft/Localization/{lang}.xml"); + + // Process SQL data source + designer.onBeginProcessData = function (event, callback) { + '.$this->get_handler().' + } + + // Save report template on the server side + designer.onSaveReport = function (event) { + '.$this->get_handler().' + } + + // Load and design report + var report = new Stimulsoft.Report.StiReport(); + report.loadFile("'.$filename.'"); + designer.report = report; + + function onLoad() { + designer.renderHtml("designerContent"); + } + '; + + + $script= str_replace('{lang}', $this->lang, $script); + + $k2->site->addJavaScript('stimul', $script); + + $rez='
        '; + + return $rez; + } + + + function savereport($filename=''){ + global $k2; + + if (!$k2->auth->isSuperAdmin()){ + //die('Доступ заборонено!'); + } + + + $this->initReport(); + + //$k2->site->addJS('stimulsoft.designer.js', $this->stimul_path."scripts/stimulsoft.designer.js"); + + $script='function onLoad() { + // Load and show report + var report = new Stimulsoft.Report.StiReport(); + report.loadFile("'.$filename.'"); + + // Process SQL data source + report.onBeginProcessData = function (event, callback) { + '.$this->get_handler().' + } + + + + var pdfSettings = new Stimulsoft.Report.Export.StiPdfExportSettings(); + var pdfService = new Stimulsoft.Report.Export.StiPdfExportService(); + var stream = new Stimulsoft.System.IO.MemoryStream(); + report.renderAsync(function () { + pdfService.exportToAsync(function () { + var data = stream.toArray(); + + var blob = new Blob([new Uint8Array(data)], { type: "application/pdf" }); + //console.log(blob) + + var formData = new FormData(); + formData.append("file", blob, "{doc}_report.pdf"); + $.ajax({ + url: "/?adm=k2dp2_savereport&mode=admin&temp=ajax&id={id}&doc={doc}", + type: "POST", + data: formData, + processData: false, + contentType: false, + success: function(response) { + $("#linkfile").attr("href", response); + $("#linkfile").show(); + // Success message + // alert("Report saved successfully."); + window.close(); + }, + error: function(xhr, status, error) { + // Error message + alert("Error saving report: " + error); + } + }); + // if (window.navigator && window.navigator.msSaveOrOpenBlob) { + // var fileName = (report.reportAlias == null || report.reportAlias.trim().length == 0) ? report.reportName : report.reportAlias; + // window.navigator.msSaveOrOpenBlob(blob, fileName + ".pdf"); + // } + // else { + // var fileUrl = URL.createObjectURL(blob); + // window.open(fileUrl); + // } + }, report, stream, pdfSettings); + }, false); + } + '; + + + + + $script= str_replace('{lang}', $this->lang, $script); + $script= str_replace('{id}', $k2->get('id'), $script); + $script= str_replace('{doc}', $k2->get('doc'), $script); + + $k2->site->addJavaScript('stimul', $script); + $rez = ''; + //$rez = '
        '; + return $rez; + } + + + + + + +} diff --git a/k2shop/k2shop/app/components/k2stimul_report_handler.php b/k2shop/k2shop/app/components/k2stimul_report_handler.php new file mode 100644 index 0000000..60bde9b --- /dev/null +++ b/k2shop/k2shop/app/components/k2stimul_report_handler.php @@ -0,0 +1,148 @@ +registerErrorHandlers(); + + + +$handler->onBeginProcessData = function ($event) { + global $k2; + + // Current database type: 'XML', 'JSON', 'MySQL', 'MS SQL', 'PostgreSQL', 'Firebird', 'Oracle' + $database = $event->database; + // Current connection name + $connection = $event->connection; + // Current data source name + $dataSource = $event->dataSource; + // Connection string for the current data source + $connectionString = $event->connectionString; + // SQL query string for the current data source + $queryString = $event->queryString; + + //$k2->log->debug('conn='.$connection); + + if (($connection == "k2") or (trim($connection) == "")) + //$event->connectionString = 'Server=192.168.20.167; Database=dpk_2018;UserId=dpk_2018; Pwd=2fIKhMzV163yjl9s;'; + $event->connectionString = 'Server='.$k2->host.'; Database='.$k2->dbname.';UserId='.$k2->user.'; Pwd='.$k2->pass.';'; + + // Server=192.168.20.167;Database=dpk_2018;UserId=dpk_2018;Pwd=2fIKhMzV163yjl9s;Port=3306; + + $event->parameters["mainfirmid"] = $k2->site->mainfirmid; + + foreach ($_GET as $k=>$v){ + if (isset($v)){ + $event->parameters[$k] = $k2->get($k); + } + } + + + + return StiResult::success(); +}; + +/*$handler->onBeginProcessData = function ($event) { + $database = $event->database; + $connectionString = $event->connectionString; + $queryString = $event->queryString; + return StiResult::success(); +};*/ + +$handler->onPrintReport = function ($event) { + return StiResult::success(); +}; + +$handler->onBeginExportReport = function ($event) { + $settings = $event->settings; + $format = $event->format; + return StiResult::success(); +}; + +$handler->onEndExportReport = function ($event) { + $format = $event->format; // Export format + $data = $event->data; // Base64 export data + $fileName = $event->fileName; // Report file name + + //return StiResult::success(); + return StiResult::success("Export OK. Message from server side."); + //return StiResult::error("Export ERROR. Message from server side."); +}; + +$handler->onEmailReport = function ($event) { + $event->settings->from = "******@gmail.com"; + $event->settings->host = "smtp.gmail.com"; + $event->settings->login = "******"; + $event->settings->password = "******"; +}; + +$handler->onDesignReport = function ($event) { + return StiResult::success(); +}; + +$handler->onCreateReport = function ($event) { + $fileName = $event->fileName; + return StiResult::success(); +}; + +$handler->onSaveReport = function ($event) { + global $k2; + + $report = $event->report; // Report object + $reportJson = $event->reportJson; // Report JSON + $fileName = $event->fileName; // Report file name + + $fullfile=$k2->rootdir.$k2->getBlankName($fileName); + + file_put_contents(/*$k2->rootdir.'/var/reports/'.$fileName.".mrt"*/ $fullfile, $reportJson); + + //return StiResult::success(); + return StiResult::success("Save Report OK: ".$fileName); + //return StiResult::error("Save Report ERROR. Message from server side."); +}; + +$handler->onSaveAsReport = function ($event) { + return StiResult::success(); +}; + +$handler->process(); + + diff --git a/k2shop/k2shop/app/components/k2tele.php b/k2shop/k2shop/app/components/k2tele.php new file mode 100644 index 0000000..18c8ab6 --- /dev/null +++ b/k2shop/k2shop/app/components/k2tele.php @@ -0,0 +1,371 @@ +site->addCSS('kendo.common.min.css',"/k2shop/k2shop/libs/telerik/wrappers/php/content/css/web/kendo.common.min.css"); + $k2->site->addCSS('kendo.rtl.min.css',"/k2shop/k2shop/libs/telerik/wrappers/php/content/css/web/kendo.rtl.min.css"); + $k2->site->addCSS('kendo.default.min.css',"/k2shop/k2shop/libs/telerik/wrappers/php/content/css/web/kendo.default.min.css"); + $k2->site->addCSS('kendo.default.mobile.min.css',"/k2shop/k2shop/libs/telerik/wrappers/php/content/css/web/kendo.default.mobile.min.css"); + $k2->site->addCSS('kendo.dataviz.min.css',"/k2shop/k2shop/libs/telerik/wrappers/php/content/css/dataviz/kendo.dataviz.min.css"); + $k2->site->addCSS('kendo.dataviz.default.min.css',"/k2shop/k2shop/libs/telerik/wrappers/php/content/css/dataviz/kendo.dataviz.default.min.css"); + //$k2->site->addCSS('examples-offline.css',"/k2shop/k2shop/libs/telerik/wrappers/php/content/css/dataviz/examples-offline.css"); + + $k2->site->addJS('jquery.min.js',"/k2shop/k2shop/libs/telerik/wrappers/php/content/js/jquery.min.js"); + $k2->site->addJS('kendo.all.min.js',"/k2shop/k2shop/libs/telerik/wrappers/php/content/js/kendo.all.min.js"); + $k2->site->addJS('kendo.timezones.min.js',"/k2shop/k2shop/libs/telerik/wrappers/php/content/js/kendo.timezones.min.js"); + $k2->site->addJS('console.js',"/k2shop/k2shop/libs/telerik/wrappers/php/content/js/console.js"); + $k2->site->addJS('prettify.js',"/k2shop/k2shop/libs/telerik/wrappers/php/content/js/prettify.js"); + $k2->site->addJS('jszip.min.js',"/k2shop/k2shop/libs/telerik/wrappers/php/content/js/jszip.min.js"); + + + } + + + + // Загрузка данных файла + function loadDataFile(){ + global $k2; + $rez=''; + + $this->data_file=$this->loadTextData('K:\web\vdoc\vdoc\data\dp2_vdoc\test.json'); + + + + + + /*$rez=' +
        + + '; + + return $rez;*/ + + } + + + // Электронная таблица + function spreedscheet(){ + global $k2; + $rez=''; + + $spreadsheet = new \Kendo\UI\Spreadsheet('spreadsheet'); + + $spreadsheet->attr('style', 'width: 100%; height: 800px'); + + + //$spreadsheet- + + /*!!!$excel = new \Kendo\UI\SpreadsheetExcel(); + $excel->fileName('ExportData.xlsx') + ->proxyURL('http://localhost/?comp=k2tele&type=save') + ->forceProxy('http://localhost/?comp=k2tele&type=save'); + + $spreadsheet->excel($excel); + + $pdf = new \Kendo\UI\SpreadsheetPdf(); + $pdf->fileName('Kendo UI Spreadsheet Export.pdf') + ->proxyURL('http://localhost/?comp=k2tele&type=save') + ->forceProxy('http://localhost/?comp=k2tele&type=save'); + $spreadsheet->pdf($pdf);*/ + + + + + + + + //$toolbar = new \Kendo\UI\SpreadsheetToolbar($item); + //$toolbar->addItem([enable=>'enable']); + + + /*$toolbar = new \Kendo\UI\ToolBar('#container'); + $toolbar->addItem( + + //regular button + array("type" => "button", "text" => "Button"), + + //toggle button + array("type" => "button", "text" => "Toggle Button", "togglable" => true), + + //split button + array( + "type" => "splitButton", + "text" => "Insert", + "menuButtons" => array( + array("text" => "Insert above", "icon" => "insert-n"), + array("text" => "Insert between", "icon" => "insert-m"), + array("text" => "Insert below", "icon" => "insert-s") + ) + ), + + //button group + array( + "type" => "buttonGroup", + "buttons" => array( + array("spriteCssClass" => "k-tool-icon k-justifyLeft", "text" => "Left", "togglable" => true, "group" => "text-align"), + array("spriteCssClass" => "k-tool-icon k-justifyCenter", "text" => "Center", "togglable" => true, "group" => "text-align"), + array("spriteCssClass" => "k-tool-icon k-justifyRight", "text" => "Right", "togglable" => true, "group" => "text-align") + ) + ), + + //separator + array("type" => "separator"), + + //custom template + array("template" => "", "overflow" => "never") + );*/ + + // The 'onClick' JavaScript function will handle the 'click' event of the toolbar + //$toolbar->click('onClick'); + + /*echo $toolbar->render(); + ?> + */ + + + // Вывод панели инструментов + /*$spreadsheet->toolbar($toolbar); */ +// $spreadsheet->sheetsbar(true); + + + + +//$pdf = new \Kendo\UI\SpreadsheetPdf(); +//$pdf->fileName('Kendo UI Spreadsheet Export.pdf') +// ->proxyURL('http://localhost/?comp=k2tele&type=save_pdf'); + +//$spreadsheet->pdf($pdf); + + + //$item = new \Kendo\UI\ToolBarItem(); + //$first = new \Kendo\UI\ToolBarItemButton(); + //$second = new \Kendo\UI\ToolBarItemButton(); + //$item->addButton($first, $second); + + + //$toolbar = new \Kendo\UI\SpreadsheetToolbar($item); + + //$toolbar->insert(false); + //$toolbar->home(true); + //$toolbar->data(false); + + //$toolbarItem = new \Kendo\UI\GridToolbarItem(); + + //$toolbarItem->text('Test'); + + + + //$spreadsheet->toolbar($toolbar); + + + //$spreadsheet->excelImport(''); + + + /*$spreadsheet->additional_jquery_code = 'var spreadsheet = $("#spreadsheet").data("kendoSpreadsheet"); + $(".download").click(function () { + $("#download-data").val(JSON.stringify(spreadsheet.toJSON())); + }); + + + + ';*/ + + + /*$rez.=' +
        +
        +
          +
        • + + +
        • +
        +
        +
        ';*/ + + + /*$rez.="";*/ + + + + $rez.='
        +
        +
        +

        Export

        +
        + + +    +
        +
        +
        +

        Загрузить

        + +
        +
        +
        '; + + + $rez.=$spreadsheet->render(); + + $rez.=$this->loadDataFile(); + + + $rez.=''; + + + + + return $rez; + } + + + + function content() { + global $k2; + +if ($_SERVER['REQUEST_METHOD'] == 'POST') { + $type = $_GET['type']; + //if ($type == 'save') { + $fileName = $_POST['fileName']; + $contentType = $_POST['contentType']; + $base64 = $_POST['base64']; + + $data = base64_decode($base64); + +// header('Content-Type:' . $contentType); +// header('Content-Length:' . strlen($data)); +// header('Content-Disposition: attachment; filename=' . $fileName); + + //echo 'filename='.$_POST['fileName']."
        \n"; + //echo 'contentType='.$_POST['contentType']."
        \n"; + + //var_dump($_POST['data']); + + //echo $_POST['extension']."\n"; + + $this->saveTextData($_POST['data'], 'K:\web\vdoc\vdoc\data\dp2_vdoc\test.json'); + + echo "Сохранение прошло успешно.
        \n"; + + //$rez=$data; + exit; + //} + + //exit; +} + + + + $rez.=$this->spreedscheet(); + + //$rez.='Telerik_components...'; + + + return $rez; + } + + function show() { + echo $this->content(); + } + +} diff --git a/k2shop/k2shop/app/components/k2tree.php b/k2shop/k2shop/app/components/k2tree.php new file mode 100644 index 0000000..76086bb --- /dev/null +++ b/k2shop/k2shop/app/components/k2tree.php @@ -0,0 +1,142 @@ +inc('phpgrid_obj'); + + +class k2tree extends phpgrid_obj{ + + public $table_name=''; // Название таблицы + public $id=''; // Первичное поле + public $parentid=''; // Поле с сылкой на предыдущий элемент. 0 - элемент в корне + public $name=''; // Поле с названием + + + // Установка значений + function set($arr){ + /*if (isset($arr['table_name'])){ + $this->table_name=$arr['table_name']; + }*/ + + if (isset($arr['id'])){ + $this->id=$arr['id']; + } + + if (isset($arr['parentid'])){ + $this->parentid=$arr['parentid']; + } + + if (isset($arr['name'])){ + $this->name=$arr['name']; + } + + /*$this->sets=$arr;*/ + + + + // Установка параметров + $grid=array(); + + if (isset($arr['caption'])){ + $grid["caption"]=$arr['caption']; + } + + + $grid["autowidth"] = true; + if (isset($arr['autowidth'])){ + $grid["autowidth"]=$arr['autowidth']; + } + + $grid["height"] = 'auto'; + if (isset($arr['height'])){ + $grid["height"]=$arr['height']; + } + + $grid["treeGrid"]=true; + if (isset($arr['treeGrid'])){ + $grid["treeGrid"]=$arr['treeGrid']; + } + + + + $grid["treeConfig"] = ['id'=>$this->id, 'parent'=>$this->parentid, 'loaded'=>false, 'expanded'=>false, 'column'=>$this->name]; + + $this->comp->set_options($grid); + + if (trim($this->comp->select_command=='')){ + $this->comp->select_command = "select ".$this->id.",".$this->parentid.",".$this->name." from ".$this->table." "; + } + + + + $this->comp->table = $this->table; + + + } + + + function setActions(){ + $this->sets['is_clone']=false; // Клонирование для дерева не используется + parent::setActions(); + + } + + + + + + + + // Дерево + function getTree($arr, $is_render=true){ + global $k2; + + /*$rez=''; + + $this->sets=$arr; + + $this->iniGrid(); + $this->addToHead(); // Adding scripts and styles in the header (Добавляем скрипты и стили в заголовок) + $this->setsTable(); + $this->set($arr); + $this->setActions(); + + $cols = $this->showFields(); + $this->comp->set_columns($cols); + + + + // generate grid output, with unique grid name as 'list1' + if ($is_render){ + $out = $this->comp->render($this->getDivName()); + }else{ + $out = ''; + } + + $rez=$this->temp; + + $rez=str_replace('{divname}', $this->getDivName(), $rez); + $rez=str_replace('{tableout}', $out, $rez); + $rez=str_replace('{sumscript}', $this->getSumScrupt(), $rez);*/ + + $rez=$this->render($arr, $is_render); + + return $rez; + + } + + + +} diff --git a/k2shop/k2shop/app/components/k2tree_frame.php b/k2shop/k2shop/app/components/k2tree_frame.php new file mode 100644 index 0000000..ddac394 --- /dev/null +++ b/k2shop/k2shop/app/components/k2tree_frame.php @@ -0,0 +1,252 @@ +params=$params; + + $this->name='TreeTable'; + if (isset($params['name'])){ + $this->name=$params['name']; + } + + if (isset($params['tree'])){ + $tree_rez=$this->tree($params); + } + + + if (isset($params['table'])){ + $table_rez=$this->table_files($params); + } + + $rez=$this->simpleSplitter($params); + + $scroll = $k2->ins_comp2('k2scroll_panel', $this); + $scroll->name='scr'.$this->name; + + $str_scroll = $scroll->content(); + $str_scroll=str_replace('{panel_content}', $tree_rez, $str_scroll); + + + $rez=str_replace('{panel1}', $str_scroll, $rez); + $rez=str_replace('{panel2}', $table_rez, $rez); + + return $rez; + } + + + // Выводит простейший сплиттер + function simpleSplitter($params){ + global $k2; + + $resize_arr=[ + ['obj'=>$this->comp_tree, 'panel'=>'0'], + ['obj'=>$this->comp_table, 'panel'=>'1'] + ]; + + if (isset($params) && isset($params['resize_objs'])){ + $resize_arr=array_merge ($params['resize_objs'], $resize_arr); + } + + + $splitter = $k2->ins_comp('k2splitter'); + $splitter->name='spl'.$this->name; + $rez = $splitter->Splitter([ + 'resize_objs'=>$resize_arr + ]); + + return $rez; + } + + + // Поля по умолчанию для дерева + function defTreeFields($field_inp=[]){ + global $k2; + + if(!$k2->auth->isSuperAdmin()){ + $is_right = false; + } else { + $is_right = true; + } + + $fields=[ ['field' => $this->params['tree']['id'], + 'caption' => 'ID', + 'width' => '120', + 'readonly' => false, + 'align' => 'left', + 'hidden' =>true, + //'viewform'=>true, + 'hidedlg' => !$is_right, + ], + + + ['field' => $this->params['tree']['name'], + 'caption' => $this->params['tree']['caption'], + 'width' => '400', + 'readonly' => false, + 'align' => 'left', + 'autowidth'=>true + ], + + ['field' => 'r', + 'caption' => '', + 'width' => '40', + 'readonly' => true, + 'sortable' => false, + 'search' => false, + 'align' => 'center', + 'autowidth'=>true + ], + + ['field' => $this->params['tree']['parentid'], + 'caption' => 'ID попереднього елементу', + 'width' => '150', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + + ]; + + if (isset($field_inp)){ + $fields=array_merge($fields, $field_inp); + } + + return $fields; + } + + + function addButton($add_buttons=[]) + { + global $k2; + + $buttons = $add_buttons; + + return $buttons; + } + + + // Возвращает дерево + function tree($params){ + global $k2; + + if (!isset($params['tree']['divtable'])){ + $fields = $this->defTreeFields($params['tree']['fields']); + }else{ + $fields = $params['tree']['fields']; + } + + if (isset($params['tree']['addtool_button'])){ + $buttons = $this->addButton($params['tree']['addtool_button']); + }else{ + $buttons = []; + } + + if (isset($params['tree']['popup_menu'])){ + $popup_menu = $params['tree']['popup_menu']; + }else{ + $popup_menu = []; + } + + //print_r($buttons); + + $this->comp_tree = $k2->ins_comp('k2tree'); + $this->comp_tree->name='tr'.$this->name.'Dir'; + $arr_tree= ['id' => $params['tree']['id'], + 'parentid'=>$params['tree']['parentid'], + 'name'=>$params['tree']['name'], + 'typeid'=>1, + + 'select' => $params['tree']['select'], + + // Детально + 'detile' => $params['table']['table'], + 'table' => $params['tree']['tablename'], + 'divtable' => $params['tree']['divtable'], + + 'sortname' => $params['tree']['sortname'], + 'sortorder' => $params['tree']['sortorder'], + + 'grid_onload' => $params['tree']['grid_onload'], + 'shrinkToFit' =>true, + + 'caption'=>$params['tree']['caption'], + 'is_add'=>true,//$params['tree']['is_add'], + 'is_edit'=>true,//$params['tree']['is_edit'], + + 'fields' => $fields, + 'addtool_button' => $buttons, + 'popup_menu' => $popup_menu + ]; + + + + $rez=$this->comp_tree->getTree($arr_tree); + + return $rez; + } + + + // Возвращает таблицу + function table_files($params){ + global $k2; + + $arr = $params['table']; + + $this->comp_table=$k2->ins_comp2('k2phpgrid', $this); + $this->comp_table->name='gr'.$this->name.'Elements'; + + + $rez.=$this->comp_table->simpleTable($arr); + + + if (isset($params['bootom_buttons'])){ + $rez.='
        '.$params['bootom_buttons']; + } + + + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/components/k2turbosms.php b/k2shop/k2shop/app/components/k2turbosms.php new file mode 100644 index 0000000..1d119df --- /dev/null +++ b/k2shop/k2shop/app/components/k2turbosms.php @@ -0,0 +1,111 @@ +'; + try { + + // Підключаємося до серверу + $client = new SoapClient('http://turbosms.in.ua/api/wsdl.html'); + + // Можна переглянути список доступних функцій серверу + //print_r($client->__getFunctions()); + + // Дані авторизації + $auth = [ + 'login' => 'Zernoua', + 'password' => 'zerno2018' + ]; + + // Авторизуємося на сервері + $result = $client->Auth($auth); + + // Результат авторизації + //echo $result->AuthResult . PHP_EOL; + + // Отримуємо кількість доступних кредитів + $result = $client->GetCreditBalance(); + //echo $result->GetCreditBalanceResult . PHP_EOL; + + // Текст повідомлення ОБОВ'ЯЗКОВО відправляти в кодуванні UTF-8 + //$text = 'Це повідомлення буде доставлено на вказаний номер'; + + // Відправляємо повідомлення на один номер. + // Підпис відправника може містити англійські букви і цифри. Максимальна довжина - 11 символів. + // Номер вказується в повному форматі, включно з плюсом і кодом країни + $sms = [ + 'sender' => 'zerno.ua', + 'destination' => $phone, + 'text' => $text + ]; + $result = $client->SendSMS($sms); + + // Відправляємо повідомлення на декілька номерів. + // Номери розділено комами без пробілів. +// $sms = [ +// 'sender' => 'Rassilka', +// 'destination' => '+380XXXXXXXX1,+380XXXXXXXX2,+380XXXXXXXX3', +// 'text' => $text +// ]; +// $result = $client->SendSMS($sms); + + // Виводимо результат відправлення. + //echo $result->SendSMSResult->ResultArray[0]; + + // ID першого повідомлення + //echo $result->SendSMSResult->ResultArray[1]; + $smsid = $result->SendSMSResult->ResultArray[1]; + // ID другого повідомлення + //echo $result->SendSMSResult->ResultArray[2]; + + //print_r($result->SendSMSResult->ResultArray); + + // Відправляємо повідомлення з WAPPush посиланням + // Посилання має включати http:// +// $sms = [ +// 'sender' => 'Rassilka', +// 'destination' => '+380XXXXXXXXX', +// 'text' => $text, +// 'wappush' => 'http://super-site.com' +// ]; +// $result = $client->SendSMS($sms); + + // Запитуємо статус конкретного повідомлення по ID + $sms = ['MessageId' => $smsid]; + $status = $client->GetMessageStatus($sms); + //echo $status->GetMessageStatusResult . PHP_EOL; + + } catch(Exception $e) { + echo 'Ошибка: ' . $e->getMessage() . PHP_EOL; + } + //echo ''; + } + + function content(){ + global $k2; + $rez = $this->turboSMS(); + return $rez; + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/k2upload.php b/k2shop/k2shop/app/components/k2upload.php new file mode 100644 index 0000000..aaccf8e --- /dev/null +++ b/k2shop/k2shop/app/components/k2upload.php @@ -0,0 +1,837 @@ +650, 'path'=>'public/img/letknow/tb{addpath}'], + ['width'=>350, 'path'=>'public/img/letknow/ts{addpath}'], + ['width'=>650, 'path'=>'uploads/images/tb/'], + ['width'=>350, 'path'=>'uploads/images/ts/'] + ]; + public $watermark = 'public/img/letknow/data/12.png'; //путь к водяному знаку + public $projfolder = 'letknow'; + public $allow_size = 3; + public $arr_simbol_change = ['%',':',"'",'"',',','+','(',')','|','/','?','>','<','-']; + + public $filepath; + public $btn_text = 'Завантажити файл'; + public $upload_tpl = ' +
        + + Выберите нужный формат!!! +
        + + + + '; + public $function_after = 'console.log(1)'; + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + $this->addToHead(); + } + + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; +// $k2->site->addCSS('style.css',"/k2shop/k2shop/libs/jQuery-File-Upload/css/style.css"); +// +// $k2->site->addJSEnd('jquery.knob.js',"/k2shop/k2shop/libs/jQuery-File-Upload/js/jquery.knob.js"); +// $k2->site->addJSEnd('jquery.ui.widget.js',"/k2shop/k2shop/libs/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"); +// $k2->site->addJSEnd('jquery.iframe-transport.js',"/k2shop/k2shop/libs/jQuery-File-Upload/js/jquery.iframe-transport.js"); +// $k2->site->addJSEnd('jquery.fileupload.js',"/k2shop/k2shop/libs/jQuery-File-Upload/js/jquery.fileupload.js"); +// $k2->site->addJSEnd('script.js',"/k2shop/k2shop/libs/jQuery-File-Upload/js/script.js"); + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + public function uploadjQuery($arr){ + global $k2; + $rez = ''; + $this->setParam($arr); + + + +// $script = " +// $(function () { +// $('#fileupload').fileupload({ +// dataType: 'json', +// done: function (e, data) { +// $.each(data.result.files, function (index, file) { +// $('

        ').text(file.name).appendTo(document.body); +// }); +// } +// }); +// }); +// "; +// $k2->site->addJavaScriptEnd('k2upload'.$this->upl_id, $script); +// $rez .= '

        +//
        +// Drop Here +// +// Browse +// +//
        +// +//
          +// +//
        +// +//
        '; + +// if(isset($_FILES)){ +// $this->startUpload(); +// } + + return $rez; + } + + // function startUpload() +// { +// $allowed = array('png', 'jpg', 'gif','zip'); +// +// if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){ +// +// $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION); +// +// if(!in_array(strtolower($extension), $allowed)){ +// echo '{"status":"error"}'; +// exit; +// } +// +// if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){ +// echo '{"status":"success"}'; +// exit; +// } +// } +// +// echo '{"status":"error"}'; +// exit; +// } + + /** + * загрузка фото + * @global type $k2 + * @global type $trans + */ + function uploadIcon ($path = '', $maxDim = 100) + { + global $k2; + $rez = ''; + + $path = 'public/img/'; + + $filename = $_FILES["files"]["name"][0]; + + $file = $_FILES["files"]["tmp_name"]; + + $rez = $path.$filename; + + $file_name = $_FILES["files"]['tmp_name'][0]; + list($width, $height, $type, $attr) = getimagesize( $file_name ); + if ( $width > $maxDim || $height > $maxDim ) { + $target_filename = $file_name; + $ratio = $width/$height; + if( $ratio > 1) { + $new_width = $maxDim; + $new_height = $maxDim/$ratio; + } else { + $new_width = $maxDim*$ratio; + $new_height = $maxDim; + } + $src = imagecreatefromstring( file_get_contents( $file_name ) ); + $dst = imagecreatetruecolor( $new_width, $new_height ); + imagecopyresampled( $dst, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height ); + imagedestroy( $src ); + imagepng( $dst, $target_filename ); // adjust format as needed + imagedestroy( $dst ); + } + $uploadComplete = move_uploaded_file($_FILES["files"]["tmp_name"][0], $path.$filename); + return $rez; + } + + + function file_upload_max_size() { + static $max_size = -1; + + if ($max_size < 0) { + // Start with post_max_size. + $post_max_size = $this->parse_size(ini_get('post_max_size')); + if ($post_max_size > 0) { + $max_size = $post_max_size; + } + + // If upload_max_size is less, then reduce. Except if upload_max_size is + // zero, which indicates no limit. + $upload_max = $this->parse_size(ini_get('upload_max_filesize')); + if ($upload_max > 0 && $upload_max < $max_size) { + $max_size = $upload_max; + } + } + return $max_size; + } + + function parse_size($size) { + $unit = preg_replace('/[^bkmgtpezy]/i', '', $size); // Remove the non-unit characters from the size. + $size = preg_replace('/[^0-9\.]/', '', $size); // Remove the non-numeric characters from the size. + if ($unit) { + // Find the position of the unit in the ordered string which is the power of magnitude to multiply a kilobyte by. + return round($size * pow(1024, stripos('bkmgtpezy', $unit[0]))); + } + else { + return round($size); + } + } + + /** + * загрузка фото + * @global type $k2 + * @global type $trans + */ + function uploadPhotos ($maxDim = 100, $folder = '') + { + global $k2; + $rez = ''; + //print_r($_FILES); + $path = 'public/img/'.$folder; + $k2->sys->forceDir($path); + $filename = $_FILES["files"]["name"][0]; + + $file = $_FILES["files"]["tmp_name"]; + + $file_name = $_FILES["files"]['tmp_name'][0]; + list($width, $height, $type, $attr) = getimagesize( $file_name ); + if ( $width > $maxDim || $height > $maxDim ) { + $target_filename = $file_name; + $ratio = $width/$height; + if( $ratio > 1) { + $new_width = $maxDim; + $new_height = $maxDim/$ratio; + } else { + $new_width = $maxDim*$ratio; + $new_height = $maxDim; + } + $src = imagecreatefromstring( file_get_contents( $file_name ) ); + $dst = imagecreatetruecolor( $new_width, $new_height ); + imagecopyresampled( $dst, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height ); + imagedestroy( $src ); + imagepng( $dst, $target_filename ); // adjust format as needed + imagedestroy( $dst ); + } + $uploadComplete = move_uploaded_file($_FILES["files"]["tmp_name"][0], $path.$filename); + if ($uploadComplete) { + $rez = $path.$filename; + } + return $rez; + } + + function uploadWindow($ajax_path = '') + { + global $k2; + + + + $jqx = $k2->ins_comp2('k2window', $this); + $arr_win = [ + 'caption'=>'Загрузка изображения', + 'main_div'=>'container', + 'wnd_id'=>'uploadwindow', + 'is_modal'=>true, + 'height'=>150, + 'width'=>450, + 'left'=>450, + 'top'=>225, + 'is_modal'=>true, + 'button'=>false, + 'wnd_body'=>" +
        + + + +
        + +
        Выберите нужный формат для изображения!!!
        + +
        + + + + + +
        + + + +
        + + +
        + " + ]; + $rez .= $jqx->showWindow($arr_win); + $rez .= ''; + $rez = $this->Translate($rez); + return $rez; + } + + /** + * загрузка файла + * @global type $k2 + * @global type $root + * @param type $data + * @param type $title + * @return string + */ + function uploadPhoto ($data, $title = '', $datecreate = '') + { + global $k2, $root; + + $rez = []; + + + //установка параметров + //$this->setParam($arr); + $data["name"]=mb_strtolower($data["name"]); + $data["name"]=str_replace("/", "_", $data["name"]); + $data["name"]=str_replace("#", "_", $data["name"]); + //каталог с изображениями за пределами корня сайта + $path = getParentDir($root).'/res/img/'; + + $filename = $k2->sys->rus2translit($title).'_'.$data["name"]; + + //удаление лишних символов; + $filename = str_replace($this->arr_simbol_change, '', $filename); + + $file = $data["tmp_name"]; + + $extension = pathinfo($data["name"], PATHINFO_EXTENSION); + + //проверка на допустимость расширения + if(!in_array(strtolower($extension), $this->allowed)){ + $rez = ['Данное разрешение не допустимо',0]; + return $rez; + } + + // проверка на размер + if ($data["size"] > 1024 * $this->allow_size * 1024) { + $rez = ["Размер файла превышает ".$this->allow_size." мегабайта",0]; + //$rez = "Размер файла превышает ".$this->allow_size." мегабайта"; + return $rez; + } + + // Проверяем загружен ли файл + if (is_uploaded_file($file)) { + list($width, $height, $type, $attr) = getimagesize( $file ); + + //коэф соотношения размеров картинки + $img_coef = $width/$height; + + //формирование структуры папок на основании даты создания (год/месяц/день) + $addpath = $k2->sys->generateUploadDir($datecreate).'/'; + + // + $mpath = $path.$this->projfolder.$addpath; + + $k2->sys->forceDir($mpath); + // $qwe = $k2->sys->forceDir($bpath); + // $qwe = $k2->sys->forceDir($spath); + + $uploadComplete = move_uploaded_file($file, $mpath.$filename); + $img = $this->getImgName($mpath.$filename); + + + + foreach ($this->size_arr as $path => $value) { + $newwidth = $value['width']; + $newpath = $value['path']; + $newpath = str_replace('{addpath}', $addpath, $newpath); + $k2->sys->forceDir($newpath); + $newheight = $newwidth/$img_coef; + $resize = $this->getResizeImage($img, $newwidth, $newheight, $newpath); + if ($this->is_mark) { + $mark = $this->addWatermark($newpath.$filename, $filename, $newpath); + } + } + + //$resize = $this->getResizeImage($img, $newwidth, $newheight, $newpath); + + //$rez = $filename; + $rez = [$filename,1]; + + } else { + //$rez = "Ошибка загрузки файла"; + $rez = ["Ошибка загрузки файла",0]; + return $rez; + } + + return $rez; + } + /** + * загрузка файла + * @global type $k2 + * @global type $root + * @param type $data + * @param type $title + * @return string + */ + function uploadFiles($data, $title = '', $datecreate = '') + { + global $k2, $root; + + $rez = ''; + + + //установка параметров + //$this->setParam($arr); + $data["name"]=mb_strtolower($data["name"]); + $data["name"]=str_replace("/", "_", $data["name"]); + $data["name"]=str_replace("#", "_", $data["name"]); + //каталог с изображениями за пределами корня сайта + $path = getParentDir($root).'/res/img/'; + + $filename = $k2->sys->rus2translit($title).'_'.$data["name"]; + + //удаление лишних символов; + $filename = str_replace($this->arr_simbol_change, '', $filename); + + $file = $data["tmp_name"]; + + $extension = pathinfo($data["name"], PATHINFO_EXTENSION); + + //проверка на допустимость расширения + if(!in_array(strtolower($extension), $this->allowed)){ + //$rez = 'Данное разрешение не допустимо'; + + return $rez; + } + + // проверка на размер + if ($data["size"] > 1024 * $this->allow_size * 1024) { + $rez = "Размер файла превышает ".$this->allow_size." мегабайта"; + return $rez; + } + + // Проверяем загружен ли файл + if (is_uploaded_file($file)) { + + $addpath = $k2->sys->generateUploadDir($datecreate).'/'; + if($k2->get('t')<>''){ + $addpath='/'.$k2->get('t').'/'.$addpath; + } + $mpath = $path.$this->projfolder.$addpath; + + $k2->sys->forceDir($mpath); + + $uploadComplete = move_uploaded_file($file, $mpath.$filename); + $path_parts = pathinfo($mpath.$filename); + //формат файла + $path_parts['extension']; + //название файла + $path_parts['filename']; + //название хеш + $name=$this->getID(); + $data['name']=$path_parts['filename']; + $data['namehash']=$name; + $data['extension']=$path_parts['extension']; + foreach ($this->size_arr as $path => $value) { + $newpath=$k2->rootdir.'/'.$value['path']; + $newpath = str_replace('{addpath}', $addpath, $newpath); + $k2->sys->forceDir($newpath); + + $uploadC = copy($mpath.$filename, $newpath.$name); + } + $rez = $data; + + } else { + $rez = ""; + return $rez; + } + + return $rez; + } + + + + + /** + * обрезка изображений + * @global type $k2 + * @param type $img + * @param type $width + * @param type $height + * @param type $path + * @return type + */ + function getResizeImage($img, $width = 720, $height = 960, $path = '/public/img/letknow/') + { + global $k2; + + $resize = $k2->ins_comp('k2image_resize'); + + $imagePathMassive = explode('/', $img); + + $imageFileName = $imagePathMassive[count($imagePathMassive) - 1]; + + //$imgExt = substr($imageFileName, -3); // Получаем расширение файла + + $imgExt = strtolower(pathinfo($img, PATHINFO_EXTENSION)); + + $imageName = substr($imageFileName, 0, -4); // Получаем имя файла + if ($imgExt == 'jpeg') { + $imageName = substr($imageFileName, 0, -5); // Получаем имя файла + } + + //$imageName = basename($img, ".".$imgExt).PHP_EOL; + + $img_new = $k2->rootdir.'/'.$path.$imageName.'.'.mb_strtolower($imgExt); // Получаем путь к новому файлу + + if (!file_exists($img_new)){ + + $resize -> resizeto($img, $img_new, $width, $height); + } + + return $img_resized = str_replace($k2->rootdir,'',$img_new); + } + + /** + * получение имени файла + * @global type $k2 + * @param type $imgname + * @return type + */ + function getImgName($imgname) + { + global $k2; + + if (trim($imgname) == '') { + $img = '/img/nophoto.png'; + } else { + $img = $imgname; + } + + return $img; + + } + + /** + * + * @global type $k2 + * @param type $path + * @return type + */ + function simpleUpload( $path) + { + global $k2; + $rez = ''; + $filename = $_FILES["files"]["name"][0]; + $file = $_FILES["files"]["tmp_name"]; + $file_name = $_FILES["files"]['tmp_name'][0]; + $uploadComplete = move_uploaded_file($_FILES["files"]["tmp_name"][0], $path.$filename); + $rez = $uploadComplete; + return $rez; + } + + /** + * накладка водяного знака + * @param type $img + * @param type $filename + * @param type $newpath + * @return string + */ + function addWatermark($img, $filename, $newpath){ + + // получаем полезные данные о картинке и водяном знаке + $image_info = getimagesize($img); + $watermark_info = getimagesize($this->watermark); + + // определяем MIME-тип изображения, для выбора соответствующей функции + $format = strtolower(substr($image_info['mime'], + strpos($image_info['mime'], '/') + 1)); + + // определяем названия функция для создания и сохранения картинки + $im_cr_func = "imagecreatefrom" . $format; + $im_save_func = "image" . $format; + + // загружаем изображение в php + $img = $im_cr_func($img); + + // загружаем в php наш водяной знак + $watermark = imagecreatefrompng($this->watermark); + + // определяем координаты левого верхнего угла водяного знака + $pos_x = ($image_info[0] - $watermark_info[0]) / 2; + $pos_y = ($image_info[1] - $watermark_info[1]) / 2; + + // помещаем водяной знак на изображение + imagecopy($img, $watermark, $pos_x, $pos_y, 0, 0, $watermark_info[0], + $watermark_info[1]); + + // сохраняем изображение с уникальным именем + $newimg_path = $newpath . $filename; + $im_save_func($img, $newimg_path); + + return $newimg_path; + } + + + /** + * pageJs + * js на странице + * @return void + */ + public function pageJs() + { + ob_start(); + ?> + + function_after, $rez); + + ob_clean(); + return $rez; + } + + function uploadFile() + { + global $k2; + $rez = ''; + $path = 'public/files/'; + $k2->sys->forceDir($path); + $filename = $_FILES["files"]["name"][0]; + $file = $_FILES["files"]["tmp_name"]; + $file_name = $_FILES["files"]['tmp_name'][0]; + $uploadComplete = move_uploaded_file($_FILES["files"]["tmp_name"][0], $path.'/'.$filename); + + $rez = trim($path.$filename); + return $rez; + } + + + + /** + * showPage + * формирует страницу + * @return void + */ + public function showPage($arr = []) + { + global $k2; + $event = $k2->get('event'); + $this->setParam($arr); + switch ($event) + { + case "upload": + $rez=$this->uploadFile(); + break; + default: + $rez = $this->upload_tpl; + $rez = str_replace('{btn_text}', $this->btn_text, $rez); + $prg = $k2->ins_comp2('k2progress_bar', $this); + $arr_prg = [ + 'prg_id'=>'bars', + ]; + $bar .= $prg->progress($arr_prg); + $rez = str_replace('{bar}', $bar, $rez); + $rez .= $this->pageJs(); + } + return $rez; + } + + function content() + { + $rez = $this->showPage(); + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/components/k2window.php b/k2shop/k2shop/app/components/k2window.php new file mode 100644 index 0000000..a08de18 --- /dev/null +++ b/k2shop/k2shop/app/components/k2window.php @@ -0,0 +1,265 @@ +Да"; + public $buttons_tpl = ''; + public $buttons_notpl = ""; + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + $this->addToHead(); + } + + + // Регистрирует необходимые библиотеки + public function addToHead(){ + global $k2; + + //$k2->site->addCSS('jqx.ui-redmond.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.ui-redmond.css"); + $k2->site->addCSS('jqx.base.css',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/styles/jqx.base.css"); + + $k2->site->addJS('jqxcore.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcore.js"); + $k2->site->addJS('jqxbuttons.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxbuttons.js"); + $k2->site->addJS('jqxcheckbox.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcheckbox.js"); + $k2->site->addJS('jqxradiobutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxradiobutton.js"); + $k2->site->addJS('jqxswitchbutton.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxswitchbutton.js"); + $k2->site->addJS('jqxwindow.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxwindow.js"); + //$k2->site->addJS('jqxform.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxform.js"); + $k2->site->addJS('jqxscrollbar.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxscrollbar.js"); + $k2->site->addJS('jqxpanel.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxpanel.js"); + $k2->site->addJS('jqxloader.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxloader.js"); + $k2->site->addJS('jqxtooltip.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxtooltip.js"); + $k2->site->addJS('jqxcombobox.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcombobox.js"); + $k2->site->addJS('jqxinput.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxinput.js"); + $k2->site->addJS('jqxlistbox.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxlistbox.js"); + $k2->site->addJS('jqxdropdownlist.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxdropdownlist.js"); + $k2->site->addJS('jqxtabs.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxtabs.js"); + $k2->site->addJS('jqxdatetimeinput.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxdatetimeinput.js"); + $k2->site->addJS('jqxcalendar.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxcalendar.js"); + $k2->site->addJS('jqxtooltip.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/jqxtooltip.js"); + + $k2->site->addJS('globalize.js',"/k2shop/k2shop/libs/jqwidgets/jqwidgets/globalization/globalize.js"); + //$k2->site->addCSS('w3.css', '//www.w3schools.com/lib/w3.css'); + } + + //устанавливаем параметры + public function setParam($arr) + { + foreach ($arr as $key => $value){ + if (isset($value)){ + $this->$key = $value; + } + } + } + public function showWindow($arr){ + global $k2; + $this->setParam($arr); + $script = " + + function addEventListeners$this->wnd_id() { + $('#$this->btn_id').click(function () { + createElements$this->wnd_id(); + $('#$this->wnd_id').jqxWindow('open'); + }); + } + function createElements$this->wnd_id() { + //Создание нового окна + var width = $(window).width(); + var height = $(window).height(); + var mainDemoContainer = $('.$this->main_div'); + var offset = mainDemoContainer.offset(); + $('#$this->wnd_id').jqxWindow({ + {position} + maxHeight: height, + maxWidth: width, + minHeight: 30, + minWidth: 20, + height: $this->height, + width: $this->width, + resizable: true, + isModal:'$this->is_modal', + modalOpacity: 0.3, + {button} + + }); + } + + "; + + $position = ''; + if ($this->position) { + $position = "position: { x: offset.left + $this->left, y: offset.top + $this->top},"; + } + + $button = ''; + if ($this->button) { + $button = "okButton: $('#ok$this->wnd_id'), + cancelButton: $('#cancel$this->wnd_id'), + initContent: function () { + $('#ok$this->wnd_id').jqxButton({ width: '65px' }); + $('#cancel$this->wnd_id').jqxButton({ width: '65px' }); + } "; + } + + $script = str_replace('{position}', $position, $script); + $script = str_replace('{button}', $button, $script); + + //$k2->site->addJavaScript($this->wnd_id, $script); + + $rez .= ""; + $rez .= " +
        +
        +
        + ".$this->caption." +
        +
        +
        + ".$this->wnd_body." +
        +
        +
        + "; + + return $rez; + } + + + + public function showModal($arr) + { + global $k2; + $this->setParam($arr); + $k2->site->addCSS('w3.css', '/public/css/w3.css'); +$script = " + + .select2-container{width:310px;padding: 5px;} + #closeMod{ + z-index:1000; + } + "; + + $k2->site->addCSS_Script($this->wnd_id, $script); + + $rez = " +
        +
        +
        + ".$this->header." +
        + × +
        +
        + ".$this->wnd_body." +
        +
        +
        +
        +
        +
        + "; + return $rez; + + } + + public function showBootsWind($arr) + { + global $k2; + $this->setParam($arr); + + $script = " + function ".$this->wnd_id."(elem) { + // Get the modal + var modal = document.getElementById('".$this->wnd_id."'); + + modal.style.display = 'block'; + + $('#myBtn1".$this->wnd_id."').click(function(){ + modal.style.display = 'none'; + }) + + $('#myBtn2".$this->wnd_id."').click(function(){ + modal.style.display = 'none'; + }) + console.log(elem); + + window.onclick = function(event) { + if (event.target == modal) { + modal.style.display = 'none'; + } + } + } + "; + + $k2->site->addJavaScript($this->wnd_id, $script); + + + $rez .= " + + "; + + if ($this->button) { + if($this->buttons_tpl == ''){ + $rez = str_replace('{buttons}', $this->buttons_oktpl.$this->buttons_notpl, $rez); + } else { + $rez = str_replace('{buttons}', $this->buttons_tpl, $rez); + } + + } else { + $rez = str_replace('{buttons}', '', $rez); + } + + + $rez = str_replace('{wnd_id}', $this->wnd_id, $rez); + return $rez; + } + + function content(){ + global $k2; + //$rez = $this->showModal(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/components/lng/k2form/en.csv b/k2shop/k2shop/app/components/lng/k2form/en.csv new file mode 100644 index 0000000..7d8896e --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2form/en.csv @@ -0,0 +1,5 @@ +name| value +lnChoose| Please select a record! +lnBook| Directory +lnCancel| Cancel +lnSave| Save \ No newline at end of file diff --git a/k2shop/k2shop/app/components/lng/k2form/ru.csv b/k2shop/k2shop/app/components/lng/k2form/ru.csv new file mode 100644 index 0000000..a5ad785 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2form/ru.csv @@ -0,0 +1,5 @@ +name| value +lnChoose| Пожалуйста, выберите запись! +lnBook| Справочник +lnCancel| Отмена +lnSave| Сохранить \ No newline at end of file diff --git a/k2shop/k2shop/app/components/lng/k2form/ua.csv b/k2shop/k2shop/app/components/lng/k2form/ua.csv new file mode 100644 index 0000000..69f2128 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2form/ua.csv @@ -0,0 +1,5 @@ +name| value +lnChoose| Будь ласка, виберіть запис! +lnBook| Довідник +lnCancel| Відміна +lnSave| Зберегти \ No newline at end of file diff --git a/k2shop/k2shop/app/components/lng/k2menu/en.csv b/k2shop/k2shop/app/components/lng/k2menu/en.csv new file mode 100644 index 0000000..9159207 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2menu/en.csv @@ -0,0 +1,17 @@ +name| value +lnOrders| Orders +lnTotalInfo| Total Information +lnChangePassw| Change Password +lnExit| Exit +lnCabinet| Cabinet +lnDrivers| Drivers +lnCars| Cars +lnTarifs| Tarifs +lnPlaning| Planing +lnTransfers| Transfers +lnEmployees| Employees +lnDiscounts| Discounts +lnMutualSettlements| Mutual Settlements +lnWorkingConditions| Working Conditions +lnAccounting| Accounting +lnDeposits| Deposits \ No newline at end of file diff --git a/k2shop/k2shop/app/components/lng/k2menu/ru.csv b/k2shop/k2shop/app/components/lng/k2menu/ru.csv new file mode 100644 index 0000000..afdf40e --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2menu/ru.csv @@ -0,0 +1,17 @@ +name|value +lnOrders| Заказы +lnTotalInfo| Общие данные +lnChangePassw| Поменять пароль +lnExit| Выход +lnCabinet| Кабинет +lnDrivers| Водители +lnCars| Автомобили +lnTarifs| Тарифы +lnPlaning| Планинг +lnTransfers| Трансферы +lnEmployees| Сотрудники +lnDiscounts| Скидки +lnMutualSettlements| Взаиморасчёты +lnWorkingConditions| Условия работы +lnAccounting| Бухгалтерия +lnDeposits| Депозиты diff --git a/k2shop/k2shop/app/components/lng/k2messages/en.csv b/k2shop/k2shop/app/components/lng/k2messages/en.csv new file mode 100644 index 0000000..6598a73 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2messages/en.csv @@ -0,0 +1,2 @@ +name| value +lnReedMessage| Please read message diff --git a/k2shop/k2shop/app/components/lng/k2messages/ru.csv b/k2shop/k2shop/app/components/lng/k2messages/ru.csv new file mode 100644 index 0000000..30834f0 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2messages/ru.csv @@ -0,0 +1,2 @@ +name|value +lnReedMessage| Пожалуйста прочитайте сообщение \ No newline at end of file diff --git a/k2shop/k2shop/app/components/lng/k2messages/ua.csv b/k2shop/k2shop/app/components/lng/k2messages/ua.csv new file mode 100644 index 0000000..49f5701 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2messages/ua.csv @@ -0,0 +1,2 @@ +name| value +lnReedMessage| Будь ласка прочитайте повідомлення \ No newline at end of file diff --git a/k2shop/k2shop/app/components/lng/k2popup_menu/en.csv b/k2shop/k2shop/app/components/lng/k2popup_menu/en.csv new file mode 100644 index 0000000..b4f2420 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2popup_menu/en.csv @@ -0,0 +1,5 @@ +name| value +lnSaveSettings| Save settings +lnResetSettings| Reset settings +lnRefreshFilter| Refresh filter +lnLookSql| Look SQL \ No newline at end of file diff --git a/k2shop/k2shop/app/components/lng/k2popup_menu/ru.csv b/k2shop/k2shop/app/components/lng/k2popup_menu/ru.csv new file mode 100644 index 0000000..d24701b --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2popup_menu/ru.csv @@ -0,0 +1,6 @@ +name|value +lnSaveSettings| Сохранить настройки +lnResetSettings| Сбросить настройки +lnRefreshFilter| Сбросить фильтр +lnLookSql| Просмотреть SQL + diff --git a/k2shop/k2shop/app/components/lng/k2popup_menu/ua.csv b/k2shop/k2shop/app/components/lng/k2popup_menu/ua.csv new file mode 100644 index 0000000..de12e55 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/k2popup_menu/ua.csv @@ -0,0 +1,5 @@ +name|value +lnSaveSettings| Зберегти налаштування +lnResetSettings| Скинути налаштування +lnRefreshFilter| Скинути фильтр +lnLookSql| Продивитись SQL \ No newline at end of file diff --git a/k2shop/k2shop/app/components/lng/phpgrid_obj/en.csv b/k2shop/k2shop/app/components/lng/phpgrid_obj/en.csv new file mode 100644 index 0000000..8718ae6 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/phpgrid_obj/en.csv @@ -0,0 +1,3 @@ +name| value +lnResetSettings| Reset settings +lnSaveSettings| Save settings diff --git a/k2shop/k2shop/app/components/lng/phpgrid_obj/ru.csv b/k2shop/k2shop/app/components/lng/phpgrid_obj/ru.csv new file mode 100644 index 0000000..12fa5e0 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/phpgrid_obj/ru.csv @@ -0,0 +1,3 @@ +name| value +lnResetSettings| Настройки удалены +lnSaveSettings| Настройки сохранены diff --git a/k2shop/k2shop/app/components/lng/phpgrid_obj/ua.csv b/k2shop/k2shop/app/components/lng/phpgrid_obj/ua.csv new file mode 100644 index 0000000..adb6d18 --- /dev/null +++ b/k2shop/k2shop/app/components/lng/phpgrid_obj/ua.csv @@ -0,0 +1,3 @@ +name| value +lnResetSettings| Налаштування видалені +lnSaveSettings| Налаштування збережені \ No newline at end of file diff --git a/k2shop/k2shop/app/components/phpgrid_obj.php b/k2shop/k2shop/app/components/phpgrid_obj.php new file mode 100644 index 0000000..c33f06e --- /dev/null +++ b/k2shop/k2shop/app/components/phpgrid_obj.php @@ -0,0 +1,2888 @@ +inc('k2jqgrid'); + + +// Стандартные иконки: https://api.jqueryui.com/resources/icons-list.html + + +class phpgrid_obj extends k2obj{ + + public $phpgrid_path='/k2shop/k2shop/libs/phpgrid/phpgrid-full-v2.0/lib/'; // Path to PHPGrid (Путь к PHPGrid) + public $comp; // Component table (Компонента таблицы) + + protected $sets; // Components Settings (Настройки компоненты) + protected $form; // Форма + //protected $name; // Имя + + + public $ext_image=array('png', 'jpg', 'jpeg', 'jfif', 'gif'); + public $ext_file=array('doc', 'xls', 'docx', 'xlsx', 'pdf'); + + public $def_page_rows=50; // Количество строк по умолчанию + + public $typeid=1; // Тип Id. 0 - цифровой, 1 - хешевской + + public $k2popup_menu; + + public $limit=''; // Ограничение вывода строк + public $hide_toolbar=false; // Скрыть панель инструментов + public $hide_pager=false; // Скрыть переключение страниц + + public $grid_theme = 'redmond'; + //public $custom_form = false; + + + + //public $before_show_form = []; + + //public $before_ins = []; + + + /** + * События. + * + * Пример структуры массива: + * 'before_show_form' => [ ['myfunc1' => ['obj'=>$this, 'func'=>'myfunc1', params=[]]], + * ['myfunc2' => ['obj'=>$xxxx, 'func'=>'myfunc2', params=[]]] ] + * .... + * + * Элементы событий: + * before_show_form - событие перед открыем формы + * + * before_ins - перед вставкой + * before_upd - перед изменением + * before_del - перед удалением + * + * after_ins - после вставки + * after_upd - после изменения + * after_del - после удаления + * + * on_validate - проверка данных + * + * + * + * + */ + private $events = []; + + + + + public $autowidth = true; + + public $shrinkToFit = false; + + public $response = true; + + public $temp=" + +
        + + {tableout} + +
        + + + ";*/ + + + $k2->site->addHead('link_tinymce', $script); + + + } + + + + // Setting buttons (Установка кнопок) + function setActions(){ + // Editing options (Параметры редактирования) + $add=!empty($this->owner) ? $this->owner->isIns() : false; + $edit=!empty($this->owner) ? $this->owner->isWrite() : false; + $clone=!empty($this->owner) ? $this->owner->isCopy() : false; + $delete=!empty($this->owner) ? $this->owner->isDel() : false; + + + + if (isset($this->sets['is_edit'])){ + $add=$this->sets['is_edit']; + $edit=$this->sets['is_edit']; + /*$clone=$this->sets['is_edit'];*/ + $delete=$this->sets['is_edit']; + } + + + + // Enable / disable removal (Разрешение/запрет удаления) + if (isset($this->sets['is_del'])){ + $delete=$this->sets['is_del']; + } + + // Permission / prohibition of copying (Разрешение/запрет копирования) + if (isset($this->sets['is_clone'])){ + $clone=$this->sets['is_clone']; + } + + // Enable / disable uploads (Разрешение/запрет добавления) + if (isset($this->sets['is_add'])){ + $add=$this->sets['is_add']; + } + + + + // Show button to hide / show columns (Выводить кнопку скрытия/показа столбцов) + $isshow=!empty($this->owner) ? $this->owner->isSetTable() : true; + if (isset($this->sets['is_show'])){ + $isshow=$this->sets['is_show']; + } + + + // Export / import data (Экспорт/импорт информации) + $export_excel=!empty($this->owner) ? $this->owner->isExp() : false; + $export_pdf=$export_excel; + $export_csv=$export_excel; + if (isset($this->sets['is_export'])){ + $export_excel=$this->sets['is_export']; + $export_pdf=$this->sets['is_export']; + $export_csv=$this->sets['is_export']; + } + + + // Filter button (Кнопка фильтра) + $filter=true; + $showhidecolumns=true; + if (isset($this->sets['filter'])){ + $filter=$this->sets['filter']; + $showhidecolumns=$this->sets['filter']; + } + + + if($this->sets['custom_form']==true){ + $add = false; + $edit = false; + + } + + $view=false; + if (isset($this->sets['view'])){ + $view=$this->sets['view']; + } + + + if (isset($this->sets['showhidecolumns'])){ + $showhidecolumns=$this->sets['showhidecolumns']; + } + + + // Действия, которые могут быть: + // $this->actions["search"] = ""; + // $this->actions["add"] = true; + // $this->actions["edit"] = true; + // $this->actions["delete"] = true; + // $this->actions["view"] = true; + // $this->actions["refresh"] = true; + // $this->actions["autofilter"] = true; + // $this->actions["rowactions"] = true; + // $this->actions["clone"] = false; + // $this->actions["bulkedit"] = false; + // $this->actions["export"] = false; + // $this->actions["export_csv"] = false; + // $this->actions["export_pdf"] = false; + // $this->actions["export_excel"] = false; + // $this->actions["showhidecolumns"] = false; + // $this->actions["inlineadd"] = $this->actions["inline"]= false; + $this->comp->set_actions(array( + "add"=>$add, // allow/disallow add + "edit"=>$edit, // allow/disallow edit + "clone"=>$clone, + "delete"=>$delete, // allow/disallow delete + "rowactions"=>$isshow, // show/hide row wise edit/del/save option + "export_excel"=>$export_excel, // export excel button + "export_pdf"=>$export_pdf, // export pdf button + "export_csv"=>$export_csv, // export csv button + "autofilter" => $filter, // show/hide autofilter for search + "showhidecolumns" => $showhidecolumns, // show/hide autofilter for search + "search" => "advance", // show single/multi field search condition (e.g. simple or advance), + "view"=>$view + ) + ); + } + + + + // Setting the table (Настройки таблицы) + function setsTable(){ + global $k2; + + $opt = []; + + + foreach ($this->sets['fields'] as $key => $res) { + if (!isset($res["field"])){ + $this->sets['fields'][$key]["field"]=trim($key); + } + } + + + // Вывод панели инструментов + $opt["toolbar"] = "top"; // top, both + if (isset($this->sets['toolbar'])){ + $opt["toolbar"] = $this->sets['toolbar']; + } + + /*$opt["toppager"] = false; + if (isset($this->sets['toppager'])){ + $opt["toppager"] = $this->sets['toppager']; + } */ + + + // Установка типа хеша + $this->comp->typeid=$this->typeid; + + // Установка ключевого поля + if (isset($this->sets['typeid'])){ + $this->comp->typeid=$this->sets['typeid']; + } + + + /*if (isset($this->sets['keyfield'])){ + $this->comp->keyfield=$this->sets['keyfield']; + } + + if (($this->comp->typeid==1)and($this->comp->keyfield=='')){ + + $err='Необходимо заполнить ключевое поле! ('.$this->sets['table'].')'; + $k2->mess_java($err); + }*/ + + //response table in window + if (isset($this->sets['response'])){ + $this->response = $this->sets['response']; + } + + // Строка сумм + $opt["footerrow"] = false; + if (isset($this->sets['footer'])){ + $opt["footerrow"] = $this->sets['footer']; + $opt["reloadedit"] = $this->sets['footer']; // Resetting after entering data (Перезагрузка после внесения данных) + } + + // Количество строк на одной + $opt["rowNum"] = $this->def_page_rows; + if (isset($this->sets['rows'])){ + $opt["rowNum"] = $this->sets['rows']; + } + + // Множественный выбор + if (isset($this->sets['multiselect'])){ + $opt["multiselect"] = $this->sets['multiselect']; // by default sort grid by this field + } + + // Номерация строк + if (isset($this->sets['rownumbers'])){ + $opt["rownumbers"] = $this->sets['rownumbers']; // by default sort grid by this field + } + + // Пол, по которому сортируется + if (isset($this->sets['sortname'])){ + $opt["sortname"] = $this->sets['sortname']; // by default sort grid by this field + } + + // Направление сортировки + if (isset($this->sets['sortorder'])){ + $opt["sortorder"] = $this->sets['sortorder']; // ASC or DESC + } + + // Заголовок таблицы + if (isset($this->sets['caption'])){ + $opt["caption"] = $this->sets['caption']; + } + + + if (isset($this->sets["sortable"])){ + $opt["sortable"] = $this->sets["sortable"]; + } + + // Ширина таблицы + $opt["width"] = "1200"; + if (isset($this->sets['width'])){ + $opt["width"] = $this->sets['width']; + } + + + // Прокрутка строк + $opt["scrollrows"]=true; + + $opt["rowList"]=[10,30,50,100,500,1000,'All']; + if (isset($this->sets['row_list'])){ + $opt["rowList"] = $this->sets['row_list']; + } + + + + // Автоматическая ширина стобцов + $opt["autowidth"] = $this->autowidth; // expand grid to screen width + if (isset($this->sets['autowidth'])){ + $opt["autowidth"] = $this->sets['autowidth']; + } + + + // Автоматическое изменение ширины таблицы при изменении ширины окна + if (isset($this->sets['autoresize'])){ + $opt["autoresize"] = $this->sets['autoresize']; + } + + // Автоматическая ширина стобцов + if (isset($this->sets['resizable'])){ + $opt["resizable"] = $this->sets['resizable']; + } + + // Автоматическая ширина стобцов + //if (isset($this->sets['responsive'])){ + // $opt["responsive"]['autohide'] = $this->sets["responsive"]['autohide']; + //} + + // Ограничение количества строк + if (isset($this->sets['limit'])){ + $this->limit = $this->sets['limit']; + $opt["limit"] = $this->limit; + } + + // Скрыть панель инсрументов + if (isset($this->sets['hide_toolbar'])){ + $this->hide_toolbar = $this->sets['hide_toolbar']; + $opt["hide_toolbar"] = $this->hide_toolbar; + } + + // Скрыть переключение страниц + if (isset($this->sets['hide_pager'])){ + $this->hide_pager = $this->sets['hide_pager']; + $opt["hide_pager"] = $this->hide_pager; + } + + // Вместить столбцы в ширину таблицы + $opt["shrinkToFit"] = $this->shrinkToFit; // expand grid to screen width + if (isset($this->sets['shrinkToFit'])){ + $opt["shrinkToFit"] = $this->sets['shrinkToFit']; + } + + + // Установка высоты таблицы + $opt["height"] = "1200"; + if (isset($this->sets['height'])){ + $opt["height"] = $this->sets['height']; + } + + + + // Надпись внизу формы добавления + if (isset($this->sets['bottominfo'])){ + $opt["add_options"]["bottominfo"] = $this->sets['bottominfo']; + } + + // Добавление события на клик правой кнопкой + if (isset($this->sets['onRightClickRow'])){ + $opt["onRightClickRow"] = $this->sets['onRightClickRow']; + } + + // Добавление события на клик правой кнопкой + if (isset($this->sets['onSelectAll'])){ + $opt["onSelectAll"] = $this->sets['onSelectAll']; + } + + + // Добавление события на клик по строке + if (isset($this->sets['onSelectClickRow'])){ + $opt["onSelectClickRow"] = $this->sets['onSelectClickRow']; + } + + // Добавление события на клик правой кнопкой + if (isset($this->sets['beforeSelectRow'])){ + $opt["beforeSelectRow"] = $this->sets['beforeSelectRow']; + } + + // Добавление события на клик правой кнопкой + if (isset($this->sets['onCellSelect'])){ + $opt["onCellSelect"] = $this->sets['onCellSelect']; + } + + + // Добавление события на клик по строке + if (isset($this->sets['ondblClickRow'])){ + $opt["ondblClickRow"] = $this->sets['ondblClickRow']; + } + + // Добавление события на клик по строке + if (isset($this->sets['onSelectRow'])){ + $opt["onSelectRow"] = $this->sets['onSelectRow']; + } + + // export XLS file + // export to excel parameters + $opt["export"] = ["filename"=>"my-file", + "heading"=> (isset($this->sets['caption'])? $this->sets['caption'] : ''), + "orientation"=>"landscape", + "range"=>"filtered", + "paper"=>"a4"]; + + // The width of the form editing and adding (Ширина формы редактирования и добавления) + $opt["add_options"] = ['width'=>'800']; + $opt["edit_options"] = ['width'=>'800']; + $opt["view_options"] = ['width'=>'800']; + if (isset($this->sets['form_width'])){ + $opt["add_options"] = ['width'=>$this->sets['form_width']]; + $opt["edit_options"] = ['width'=>$this->sets['form_width']]; + } + + + $opt["form"]["nav"] = false; // The navigation bar on the elements (Панель навигации по элементам) + $opt["form"]["position"] = "center"; + + + // Detailed table (Детальная таблица) + if (isset($this->sets['detile'])){ + $opt["detail_grid_id"] = $this->sets['detile']; + $opt["edit_options"]["afterSubmit"] = "function(){ jQuery('#".$this->sets['detile']."').trigger('reloadGrid', [{current:true}]); return [true,'']; jQuery('#".$this->getDivName()."').setSelection(jQuery('#".$this->getDivName()."').jqGrid('getGridParam','selrow')); }"; + $opt["add_options"]["afterComplete"] = "function (response, postdata) { r = JSON.parse(response.responseText); $('#".$this->getDivName()."').setSelection(r.id); console.log(postdata) }"; + + // The fields that are transmitted in the dependent table (Поля, которы передаются в зависимую таблицу) + if (isset($this->sets['subgridparams'])){ + $opt["subgridparams"] = $this->sets['subgridparams']; + } + } + + if($this->sets['custom_form']==true){ + + if(!isset($this->sets['addtool_button'])){ + $this->sets['addtool_button']=[]; + } + + $sess_hash = $this->getID(); + + //=================== +// if ($k2->auth->roleid == 1100){ +// $this->sets['is_edit'] = false; +// } + + + $add = !empty($this->owner) ? $this->owner->isIns() : false; + $edit = !empty($this->owner) ? $this->owner->isWrite() : false; + $del_m = !empty($this->owner) ? $this->owner->isDel() : false; + if (isset($this->sets['is_edit'])){ + $add = $this->sets['is_edit']; + $edit = $this->sets['is_edit']; + /*$clone=$this->sets['is_edit'];*/ + $delete = $this->sets['is_edit']; + } + + + + //$this->sets['compn'] = $k2->get('adm'); + + $this->sets['perm'] = ['add'=>$add, 'edit'=>$edit]; + + $this->sets['owner'] = $this->owner; + + + $k2->session[$sess_hash.'arr_sets'] = json_encode($this->sets); + + //print_r($this->sets); + if ($edit) { + $btn_edit = [ + 'caption' => '', + 'title' => 'Редагувати', + 'id' => 'edit'.$this->getDivName(), + 'icon' => 'ui-icon-pencil', + 'action' => $this->getDivName().'buildFormEdit("'.$this->getDivName().'", "'.$sess_hash."arr_sets".'");'//временно + ]; + + array_push($this->sets['addtool_button'], $btn_edit); + } + + if ($add) { + $btn_add = [ + 'caption' => '', + 'title' => 'Додати', + 'id' => 'add'.$this->getDivName(), + 'icon' => 'ui-icon-plus', + 'action' => $this->getDivName().'buildFormAdd("'.$this->getDivName().'", "'.$sess_hash."arr_sets".'");'//временно + ]; + array_push($this->sets['addtool_button'], $btn_add); + } + +// if ($del_m) { +// $btn_del_m = [ +// 'caption' => '', +// 'title' => 'Видалити', +// 'id' => 'del'.$this->getDivName(), +// 'icon' => 'ui-icon-pencil', +// 'action' => 'buildFormDelM("'.$this->getDivName().'", "'.$sess_hash."arr_sets".'");'//временно +// ]; +// +// array_push($this->sets['addtool_button'], $btn_del_m); +// +// $btn_show_del = [ +// 'caption' => '', +// 'title' => 'Показати видалені', +// 'id' => 'showdel'.$this->getDivName(), +// 'icon' => 'ui-icon-zoomout', +// 'action' => 'buildFormDelM("'.$this->getDivName().'", "'.$sess_hash."arr_sets".'");'//временно +// ]; +// array_push($this->sets['addtool_button'], $btn_show_del); +// $btn_hide_del = [ +// 'caption' => '', +// 'title' => 'Сховати видалені', +// 'id' => 'hidedel'.$this->getDivName(), +// 'icon' => 'ui-icon-zoomout', +// 'action' => 'buildFormDelM("'.$this->getDivName().'", "'.$sess_hash."arr_sets".'");'//временно +// ]; +// array_push($this->sets['addtool_button'], $btn_hide_del); +// } + + } + + + // Дополнительные кнопки + if (isset($this->sets['addtool_button'])){ + foreach ($this->sets['addtool_button'] as $arr_el){ + $this->addToolButton($arr_el); + } + } + // Дополнительные кнопки + //if (isset($this->sets['popup_menu'])){ + $this->iniMenu($this->sets['popup_menu']); + //} + + $form_script = ''; + if($this->sets["form_script"]!==''){ + $form_script = $this->sets["form_script"]; + } + + // Отключаю кнопку просмотра записи (освобождаю место для более важных кнопок...) + //$this->comp->navgrid["param"]["view"]=false; + + + //установка кастомной ширины полей в форме + if(!isset($this->sets['custom_form'])){ +// $opt["add_options"]["beforeInitData"] .= "function(formid) { "; +// $opt["edit_options"]["beforeInitData"] .= "function(formid) { "; +// +// $opt["add_options"]["afterShowForm"] .= "function(formid) {"; +// $opt["edit_options"]["afterShowForm"] .= "function(formid) {"; +// +// foreach ($this->sets['fields'] as $value) { +// +// $width = $value['width']; +// if(isset($value['width_form'])){ +// $width = $value['width_form']; +// } +// +// $opt["add_options"]["beforeInitData"] .= "$form_script $('#".$this->getDivName()."').jqGrid('setColProp','".$value['field']."',{editoptions: { dataInit: function(elem) { $(elem).width($width);}}}); "; +// $opt["edit_options"]["beforeInitData"] .= "$form_script $('#".$this->getDivName()."').jqGrid('setColProp','".$value['field']."',{editoptions: { dataInit: function(elem) { $(elem).width($width);}}}); "; +// $opt["add_options"]["afterShowForm"] .= "$form_script $('#".$this->getDivName()."').jqGrid('setColProp','".$value['field']."',{editoptions: { dataInit: function(elem) { $(elem).width($width);}}}); "; +// $opt["edit_options"]["afterShowForm"] .= "$form_script $('#".$this->getDivName()."').jqGrid('setColProp','".$value['field']."',{editoptions: { dataInit: function(elem) { $(elem).width($width);}}}); "; +// } +// +// $opt["add_options"]["beforeInitData"] .= " }"; +// $opt["edit_options"]["beforeInitData"] .= " }"; +// $opt["add_options"]["afterShowForm"] .= " }"; +// $opt["edit_options"]["afterShowForm"] .= " }"; + } + + + + if(isset($this->sets['readonly_form'])){ + + $opt["add_options"]["beforeInitData"] .= "function(formid) {"; + $opt["edit_options"]["beforeInitData"] .= "function(formid) {"; + + $opt["add_options"]["afterShowForm"] .= "function(formid) { $form_script "; + $opt["edit_options"]["afterShowForm"] .= "function(formid) { $form_script "; + + foreach ($this->sets['readonly_form'] as $value) { + + $opt["add_options"]["beforeInitData"] .= " $('#".$this->getDivName()."').jqGrid('setColProp','$value',{hidden:false, editable:true}); "; + $opt["edit_options"]["beforeInitData"] .= " $('#".$this->getDivName()."').jqGrid('setColProp','$value',{hidden:false, editable:true}); "; + + + foreach ($this->sets['fields'] as $key => $res) { + if (isset($res["hidden"])&&$res["hidden"]==true){ + $hidd = 'true'; + } else { + $hidd = 'false'; + } + + + + + if($res["field"] == $value){ + for ($i = 0; $i < count($this->sets['fields']); $i++){ + $form_hide = ''; + if($res["hidden_form"]==true){ + $form_hide = "$('tr#tr_$value').hide();"; + } + + + + $opt["add_options"]["afterShowForm"] .= " $form_hide var param = $('#".$this->getDivName()."').getGridParam(); + var name = param.colModel[$i]['name']; + + if (name == '$value'){ + var hidd = param.colModel[$i]['hidden']; + console.log(hidd); + $('#".$this->getDivName()."').jqGrid('setColProp','$value',{hidden:$hidd, editable:false}); + } "; + $opt["edit_options"]["afterShowForm"] .= " $form_hide var param = $('#".$this->getDivName()."').getGridParam(); + var name = param.colModel[$i]['name']; + + if (name == '$value'){ + var hidd = param.colModel[$i]['hidden']; + console.log(hidd); + $('#".$this->getDivName()."').jqGrid('setColProp','$value',{hidden:$hidd, editable:false}); + } "; + } + } + } + } + + $opt["add_options"]["beforeInitData"] .= " }"; + $opt["edit_options"]["beforeInitData"] .= " }"; + + $opt["add_options"]["afterShowForm"] .= " }"; + $opt["edit_options"]["afterShowForm"] .= " }"; + } + //$this->iniDialog($this->sets); + + $this->comp->set_options($opt); + } + + + + // Adding functions to be invoked at runtime (Добавление функций, которые будут вызываться во время выполнения) + function addInsFunc(&$obj, $funcname){ + array_push($this->ins_func, array('obj'=>$obj, 'funcname'=>$funcname)); + } + + + // Adding functions to be invoked at runtime (Добавление функций, которые будут вызываться во время изменения) + function addUpdFunc(&$obj, $funcname){ + array_push($this->upd_func, array('obj'=>$obj, 'funcname'=>$funcname)); + } + + // Adding functions that will be called during the uninstallation (Добавление функций, которые будут вызываться во время удвления) + function addDelFunc(&$obj, $funcname){ + array_push($this->del_func, array('obj'=>$obj, 'funcname'=>$funcname)); + } + + + // Gets the script for the button (Возвращает скрипт для кнопки) + // Стандартные иконки: https://api.jqueryui.com/resources/icons-list.html + function getScriptToolButton($btnArr){ + $cl=$this->getDivName(); + + $pos_btn='first'; + if (isset($btnArr['position'])){ + $pos_btn=$btnArr['position']; + } + + + $rez.=" + "; + + + return $rez; + } + + + + // Получить название div для таблицы + function getDivName(){ + global $k2; + + $rez=$this->sets['table']; + + // Пока убрано, т.е. не понятно, т.к. возможно из-за этого не работает master-detile + if (isset($this->sets['divtable'])){ + $rez=$this->sets['divtable']; + } + + return $rez; + + } + + + + // Setting links (Установка параметров ссылки) + function collink($key, $value, &$col){ + $col["link"] = /*$value["link"]*/'#'; + $col["linkoptions"] = "target='_blank'"; + if (isset($value["target"])){ + $col["linkoptions"] = "target='".$value["target"]."'"; + } + if (isset($value["link"])){ + $col["link"] = $value["link"]; + } + } + + // Setting the date column (Установка параметров столбца даты) + function coldate($key, $value, &$col){ + $col["formatter"] = "date"; + $col["editoptions"]["size"] = 20; + $col["editrules"] = array("required"=>false); + $col["formatoptions"] = array("srcformat"=>'Y-m-d',"newformat"=>'d.m.Y'); + } + + // Setting time (Установка параметров времени) + function coltime($key, $value, &$col){ + $col["formatter"] = "datetime"; + $col["editoptions"]["size"] = 20; + $col["editrules"] = array(/*"required"=>true,*/ "edithidden"=>true); + $col["searchoptions"]["sopt"] = array("cn"); + $col["formatoptions"]["srcformat"] = 'H:i:s'; + $col["formatoptions"]["newformat"] = 'H:i'; + $col["formatoptions"]["opts"] = array("timeOnly" => true, "timeFormat"=>"hh:mm:ss tt"); + } + + + // Displays schedule (Выводит график) + function colbar($key, $value, &$col){ + $col["default"] = "
        "; + } + + // Conclusion buttons, depending on the conditions (Вывод кнопок, в зависимости от условия) + function colcondition($key, $value, &$col){ + global $k2; + + // The first button (Перввая кнопка) + $url1='#'; + if (isset($value['cond']) && ($value['cond']['url1'])){ + $url1=/*$k2->surl->SefURL_FromURL(*/$value['cond']['url1']; + } + + $caption1='Buy'; + if (isset($value['cond']) && ($value['cond']['caption1'])){ + $caption1=$value['cond']['caption1']; + } + + $style1="style='text-decoration:none; white-space:none; border:1px solid gray; padding:2px; position:relative; width:25px; color:red"; + if (isset($value['cond']) && ($value['cond']['style1'])){ + $style1=$value['cond']['style1']; + } + + // The second button (Вторая кнопка) + $url2='#'; + if (isset($value['cond']) && ($value['cond']['url2'])){ + $url2=/*$k2->surl->SefURL_FromURL(*/$value['cond']['url2']; + } + + $caption2='Cancel'; + if (isset($value['cond']) && ($value['cond']['caption2'])){ + $caption2=$value['cond']['caption2']; + } + + $style2="style='text-decoration:none; white-space:none; border:1px solid gray; padding:0px; position:relative; width:25px; color:green"; + if (isset($value['cond']) && ($value['cond']['style2'])){ + $style2=$value['cond']['style2']; + } + + + $target1='_blank'; + if (isset($value['cond']['target1'])){ + $target1=$value['cond']['target1']; + } + + $target2='_blank'; + if (isset($value['cond']['target2'])){ + $target2=$value['cond']['target2']; + } + + // Добавление класса кнопкам + $buttonClass=''; + if (isset($value['cond']['class'])){ + $buttonClass=$value['cond']['class']; + } + + //Добавление события кнопке + $buttonClick=''; + if (isset($value['cond']['oneclick'])){ + $buttonClick=$value['cond']['oneclick']; + } + + $buttons_buy = "$caption1"; + $buttons_try = "$caption2"; + $col["condition"] = array(' '.$value['cond']['exp'].' ', $buttons_buy, $buttons_try); + + } + + + // Set the color of the column parameters (Установка параметров столбца цвета) + function colcolor($key, $value, &$col){ + $col["editoptions"]["class"] = "jscolor"; + $col["editoptions"]["dataInit"] = "function(o){setTimeout(function(o){ var picker = new jscolor($('.jscolor')[0]); },200);}"; + } + + // Setting the date and time (Установка параметров даты и времени) + function coldatetime($key, $value, &$col){ + //$col["formoptions"] = ["rowpos"=>"3", "colpos"=>"2"]; + $col["editrules"] = ["required"=>true, "edithidden"=>true]; + $col["formatter"] = "datetime"; + $col["formatoptions"] = ["srcformat"=>'Y-m-d H:i:s',"newformat"=>'d.m.Y H:i',"opts" => array("timeFormat"=>"HH:mm")]; + $col["show"] = ["list"=>true, "add"=>true, "edit"=>true, "view"=>true]; + $col["searchoptions"]["sopt"] = ["cn"]; + } + + // Setting multiline textbox column (Установка параметров столбца много-строчное текстовое поле) + function coltextarea($key, $value, &$col){ + $col["edittype"] = "textarea"; + $col["width"] = "600"; + + if (isset($value["width"])){ + $col["width"] = $value["width"]; + } + + $col["editoptions"] = array("rows"=>3, "cols"=>40); + } + + // Setting the parameters of the column tinymce (Установка параметров столбца tinymce) + function coltinymce($key, $value, &$col){ + $col["edittype"] = "textarea"; + $col["editoptions"]["rows"] = 2; + $col["editoptions"]["cols"] = 50; + $col["formoptions"] = array("rowpos"=>"3", "colpos"=>"1"); + $col["editoptions"]["dataInit"] = "function(el){ setTimeout(function(){ link_tinymce(el); },200); }"; + } + + // Setting column options wysiwyg (Установка параметров столбца wysiwyg) + function colwysiwyg($key, $value, &$col){ + $col["edittype"] = "textarea"; + $col["formatter"] = "wysiwyg"; + $col["editoptions"]["rows"] = 2; + $col["editoptions"]["cols"] = 50; + //$col["formoptions"] = array("rowpos"=>"3", "colpos"=>"1"); + } + + // Setting column options file (Установка параметров столбца file) + function colfile($key, $value, &$col){ + $col["edittype"] = "file"; + + $col["upload_dir"] = "image"; // download directory (каталог загрузки) + if (isset($value["upload_dir"])){ + $col["upload_dir"] = $value["upload_dir"]; + } + $col["editrules"] = array("ifexist"=>"rename"); // "rename", "override" can also be set + $col["show"] = array("list"=>false,"edit"=>true,"add"=>true); // only show in add/edit dialog + } + + // Installation file settings column (a column to display in the table file) (Установка параметров столбца file (столбец для отображения файла в таблице)) + function colfile_show($key, $value){ + global $k2, $phpgridimg; + + + $col = []; + + $phpgridimg=$value; + + $col["title"] = "Image"; + if (isset($value['caption'])){ + $col["title"] = $value['caption']; + } + + $virtual_field = $value['field'].'_add'; + $col["name"] = $virtual_field; + + + $col["width"] = "200"; + if (isset($value["width"])){ + $col["width"] = $value["width"]; + } + + $col["editable"] = true; + + + // display none if nothing is uploaded, otherwise make link. + $col["on_data_display"] = ["display_icon",""]; + + function display_icon($data) + { + global $k2, $phpgridimg; + + + // get upload folder url for display in grid -- change it as per your upload path + $upload_url = explode("/",$_SERVER["REQUEST_URI"]); + array_pop($upload_url); + $upload_url = implode("/",$upload_url)."/"; + + $file = $data[$phpgridimg["field"]]; + $filefiz = $k2->rootdir.'/'. $data[$phpgridimg["field"]]; + + $arr = explode(".",$file); + $ext = $arr[count($arr)-1]; + + if ((strtolower($ext) == "doc" || strtolower($ext) == "xls" || strtolower($ext) == "docx" || strtolower($ext) == "xlsx")&&$phpgridimg['type_field']=='file'){ + if (strpos($file, '://')>0){ + return "Скачать файл"; + }else{ + return "Скачать файл"; + } + } + else if ((strtolower($ext) == "png" || strtolower($ext) == "jpg" || strtolower($ext) == "jpeg" || strtolower($ext) == "jpg" || strtolower($ext) == "jfif" || strtolower($ext) == "gif")or($phpgridimg['type_field']=='image')){ + + $imgparam=''; + $mystyle=''; + if (isset($phpgridimg['params'])){ + // Высота изображения + if (isset($phpgridimg['params']['height'])){ + $imgparam.=' height="'.$phpgridimg['params']['height'].'"'; + } + + // Ширина изображения + if (isset($phpgridimg['params']['width'])){ + $imgparam.=' width="'.$phpgridimg['params']['width'].'"'; + } + + // Центрование изображения + if (isset($phpgridimg['params']['align'])){ + $mystyle="style='text-align:".$phpgridimg['params']['align']."'"; + } + + + } + + if (strpos($file, '://')>0){ + return "
        "; // height=100 + }else{ + return "
        "; // height=100 + } + } + else + return $file; + + + } + + // only show in listing & image in edit + $col["show"] = array("list"=>true,"edit"=>false,"add"=>false,"view"=>true); + + // display image in edit dialog + $col["editoptions"]["dataInit"] = "function(o){jQuery(o).parent().html(o.value);}"; + + return $col; + + } + + + // Проверяет допустимость файла + // $arr - массив допустимых расширений + // $ext - расширение + function isAllowExt($arr, $ext){ + $rez=false; + + foreach ($arr as $value){ + if ( mb_strtolower(trim($value))==mb_strtolower(trim($ext)) ){ + $rez=true; + break; + } + } + + return $rez; + } + + // Проверяет допустимость файла + function isAllowExtFile($ext){ + return $this->isAllowExt($this->ext_file, $ext); + } + + // Проверяет допустимость файла + function isAllowExtImage($ext){ + return $this->isAllowExt($this->ext_image, $ext); + } + + // Выводит перечень расширений + // $arr - перечень расширений + function getExtList($arr){ + return implode(', ', $arr); + } + + function getExtFileList(){ + return $this->getExtList($this->ext_file); + } + + // Проверяет допустимость файла + function getExtImageList(){ + return $this->getExtList($this->ext_image); + } + + + // События, возникающие при загрузки файлов + function file_event(){ + $e["on_insert"] = array("add_invoice", null, true); + $e["on_update"] = array("update_invoice", null, true); + $e["on_delete"] = array("delete_upload", null, true); + + + // callback for add + function add_invoice($data) + { + global $phpgridimg, $mythis; + $upload_file_path = $data["params"][$phpgridimg["field"]]; + + // if file is uploaded + if ($upload_file_path) + { + // your custom upload code goes here e.g. File DB insertion + $f = pathinfo(realpath($upload_file_path)); + + $ext = pathinfo(realpath($upload_file_path), PATHINFO_EXTENSION); + if ( !$mythis->isAllowExtImage($ext) /*$ext <> "pdf" && $ext <> "gif" && $ext <> "jpg" && $ext <> "txt" && $ext <> "doc" && $ext <> "bmp" && $ext <> "png"*/) + { + unlink(realpath($upload_file_path)); + phpgrid_error("Only ".$mythis->getExtImageList()." files are allowed!"); + } + + } + } + + // callback for update + function update_invoice($data) + { + global $phpgridimg; + $upload_file_path = $data["params"][$phpgridimg["field"]]; + $file_content = file_get_contents($upload_file_path); + // your custom upload code goes here e.g. File DB insertion + } + + function delete_upload($data) + { + //!!!$rs = mysql_fetch_assoc(mysql_query("SELECT note FROM invheader WHERE id = {$data[id]}")); + //!!!unlink(realpath($rs["imagefilename"])); + } + + return $e; + } + + // Setting column options checkbox (Установка параметров столбца checkbox) + function colcheckbox($key, $value, &$col){ + $col["edittype"] = "checkbox"; + $col["formatter"] = "checkbox"; + $col["editoptions"]["value"] = "1:0"; + } + + + // Setting column options checkbox (Установка параметров столбца checkbox) + function colDropDown($key, $value, &$col){ + $col["edittype"] = "select"; // render as select + + $str = $this->comp->get_dropdown_values($value["sql"]); + $col["editoptions"]["value"] = $str; + + // to enable multiselect option + $col["editoptions"]["multiple"] = false; + if (isset($value['multy'])){ + $col["editoptions"]["multiple"] = $value['multy']; + } + + $col["editoptions"]["dataInit"] = "function(){ setTimeout(function(){ link_select2('{$col["name"]}'); },200); }"; + + $col["stype"] = "select"; // enable dropdown search + $col["formatter"] = "select"; // display label, not value + $col["searchoptions"] = array("value" => ":;".$str); + $col["searchoptions"]["dataInit"] = "function(){ setTimeout(function(){ link_select2('gs_{$col["name"]}'); },200); }"; + } + + + + + + + // Initialize the number of lines per page (Инициализация количества строк на странице) + function iniRows(){ + global $k2; + + $page_rows=$this->def_page_rows; + if (isset($this->sets['rows'])){ + $page_rows=$this->sets['rows']; + } + + if ($k2->get('page_rows')<>''){ + $page_rows=$k2->get('page_rows'); + $_SESSION['page_rows']=$page_rows; + }elseif($k2->sess('page_rows')<>''){ + $page_rows=$k2->sess('page_rows'); + } + + $this->sets['rows']=$page_rows; + } + + + function check_rights(&$data) + { + global $k2, $masteridname; + + } + + + + + /** + * Перед добалением + * @global type $k2 + * @global type $masteridname + * @param type $data + */ + function add_client(&$data) + { + global $k2, $masteridname; + + if ($this->comp->typeid==0){ + $id = intval($k2->get("rowid")); + }else{ + $id = $k2->get("rowid"); + } + + if (trim($masteridname)<>''){ + $data["params"][$masteridname] = $id; + } + + if($this->sets['on_add']){ + eval($this->sets['on_add']); + } + + if (isset($this->events['before_ins'])){ + foreach ($this->events['before_ins'] as $el) { + $obj = $el['obj']; + $func = $el['func']; + call_user_func([$obj,$func], ["params" => &$data]); + } + } + + + } + + /** + * После добавления + * @global type $k2 + * @global type $masteridname + * @param type $data + */ + function after_insert(&$data) + { + global $k2, $masteridname; + + //$this->check_rights(); + + if ($this->comp->typeid==0){ + $id = intval($k2->get("rowid")); + }else{ + $id = $k2->get("rowid"); + } + + if (trim($masteridname)<>''){ + $data["params"][$masteridname] = $id; + } + + if($this->sets['on_after_ins']){ + eval($this->sets['on_after_ins']); + } + //print_r($this->events['after_ins']); + if (isset($this->events['after_ins'])){ + + foreach ($this->events['after_ins'] as $el) { + $obj = $el['obj']; + $func = $el['func']; + call_user_func([$obj,$func], ["params" => &$data,"addpar" => $el['params']]); + } + } + + } + + + /** + * Перед редактированием + * @global type $k2 + * @global type $masteridname + * @param type $data + */ + function update_client(&$data) + { + global $k2, $masteridname; + + if ($this->comp->typeid==0){ + $id = intval($k2->get("rowid")); + }else{ + $id = $k2->get("rowid"); + } + + if (trim($masteridname)<>''){ + $data["params"][$masteridname] = $id; + } + + if($this->sets['on_upd']){ + eval($this->sets['on_upd']); + } + + if (isset($this->events['before_upd'])){ + foreach ($this->events['before_upd'] as $el) { + $obj = $el['obj']; + $func = $el['func']; + call_user_func([$obj,$func], ["params" => &$data]); + } + } + //!!!! Вызывет ошибку в VDoc!!! call_user_method($value['funcname'], $value['obj'], $data); + + } + + /** + * После редактирования + * @global type $k2 + * @global type $masteridname + * @param type $data + */ + function after_update(&$data) + { + global $k2, $masteridname; + + //$this->check_rights(); + + if ($this->comp->typeid==0){ + $id = intval($k2->get("rowid")); + }else{ + $id = $k2->get("rowid"); + } + + if (trim($masteridname)<>''){ + $data["params"][$masteridname] = $id; + } + +// if($this->sets['on_after_ins']){ +// eval($this->sets['on_after_ins']); +// } + + if (isset($this->events['after_upd'])){ + foreach ($this->events['after_upd'] as $el) { + $obj = $el['obj']; + $func = $el['func']; + call_user_func([$obj,$func], ["params" => &$data,"addpar" => $el['params']]); + } + } + + } + + /** + * Перед удалением + * @global type $k2 + * @global type $masteridname + * @param type $data + */ + function delete_client(&$data) + { + global $k2, $masteridname; + + if ($this->comp->typeid==0){ + $id = intval($k2->get("rowid")); + }else{ + $id = $k2->get("rowid"); + } + + if (trim($masteridname)<>''){ + $data["params"][$masteridname] = $id; + } + +// if($this->sets['on_upd']){ +// eval($this->sets['on_upd']); +// } + + if (isset($this->events['before_del'])){ + foreach ($this->events['before_del'] as $el) { + $obj = $el['obj']; + $func = $el['func']; + call_user_func([$obj,$func], ["params" => &$data]); + } + } + //!!!! Вызывет ошибку в VDoc!!! call_user_method($value['funcname'], $value['obj'], $data); + + } + + /** + * После удаления + * @global type $k2 + * @global type $masteridname + * @param type $data + */ + function after_delete(&$data) + { + global $k2, $masteridname; + + //$this->check_rights(); + + if ($this->comp->typeid==0){ + $id = intval($k2->get("rowid")); + }else{ + $id = $k2->get("rowid"); + } + + if (trim($masteridname)<>''){ + $data["params"][$masteridname] = $id; + } + +// if($this->sets['on_after_ins']){ +// eval($this->sets['on_after_ins']); +// } + + if (isset($this->events['after_del'])){ + foreach ($this->events['after_del'] as $el) { + $obj = $el['obj']; + $func = $el['func']; + call_user_func([$obj,$func], ["params" => &$data]); + } + } + + } + + function clone_client(&$data) + { + global $k2, $masteridname; + + //$this->check_rights(); + + if ($this->comp->typeid==0){ + $id = intval($k2->get("rowid")); + }else{ + $id = $k2->get("rowid"); + } + +// if (trim($masteridname)<>''){ +// $data["params"][$masteridname] = $id; +// } + + if($this->sets['on_clone']){ + eval($this->sets['on_clone']); + } + + } + + + + + // Calculation of (Расчет сумм) + function sum_render(&$data){ + + if (isset($this->sets['sum'])){ + + $g = $this->comp; + + $rows = $_GET["jqgrid_page"] * $_GET["rows"]; + + + + $swhere = ' '.$this->sets['where']." ".$_SESSION["jqgrid_"./*$g->table*/$this->getDivName()."_filter"]; + + + $vh=strripos($swhere, 'WHERE'); + if ( (trim($swhere)<>'') and ($vh==0) ){ + $swhere=" WHERE (1=1) ".$swhere; + } + + + if ($this->comp->typeid==0){ + $id = intval($_GET["rowid"]); + }else{ + $id = $_GET["rowid"]; + } + + + $swhere = str_replace('{masterid}', $id, $swhere); + + + $sum=array(); + $s=''; + + + foreach ($this->sets['sum'] as $keysum => $valuesum) { + $sum[$keysum]='0'; + + if ($s<>'') $s.=','; + + $s.="$valuesum($keysum) as $keysum"; + } + + // Amounts received request (Получение запроса сумм) + if ($s<>''){ + $result = $g->execute_query("SELECT $s FROM (".$this->sets['select']." $swhere ) AS tmp "); + + $rs = $result->GetRows(); + $sum=$rs[0]; + } + + foreach($data["params"] as &$d) + { + foreach ($this->sets['sum'] as $keysum => $valuesum) { + $d[$keysum.'_totalsum']=$sum[$keysum]; + } + } + + } + } + +// function ini_settings(&$data) +// { +// $this->sets['caption'] = 'wwww'; +// } + + function setRights(&$arr) + { +// $g = $this->comp; +// $g->select_command = $arr['select']; +// $arr['where'] = ''; +// $g->select_command.=$arr['where']; + } + + + // Gets the script for the withdrawal of amounts (Возвращает скрипт для вывода сумм) + function getSumScrupt(){ + global $k2; + + $path = $_SERVER['REQUEST_URI']; + + if ($k2->selfurl) { + $add_url = "'".$path."/temp/ajax/event/data/arg/add/file/".$this->getDivName()."'"; + $edit_url = "'".$path."/temp/ajax/event/data/arg/edit/file/".$this->getDivName()."'"; + } else { + $add_url = "'".$path."&temp=ajax&event=data&arg=add'"; + $edit_url = "'".$path."&temp=ajax&event=data&arg=edit'"; + } + + $rez = "function "./*$this->sets['table']*/$this->getDivName()."_grid_onload() + { + var grid = $('#"./*$this->sets['table']*/$this->getDivName()."'); + + {totalsum} + {grid_onload} + + var ids = jQuery('#".$this->getDivName()."').jqGrid('getDataIDs'); + console.log(ids.length); + height = (ids.length+1)*25; + console.log(height); + + {setheight} + + + + grid.jqGrid('footerData','set', {{totalarr}}); + }; + + // + function setHeight".$this->getDivName()."(height){ + console.log(".$this->getDivName().") + jQuery('#".$this->getDivName()."').jqGrid('setGridHeight', height); + } + + function saveSettings(div){ + + var settings = {}; + + settings.wnd_width = $(window).width(); + settings.wnd_height = $(window).height(); + + if ($('.jqx-splitter').length > 0) { + settings.splitter_panel1 = $('.splitter-panel1').width(); + settings.splitter_panel2 = $('.splitter-panel2').width(); + } + + + settings.grid_par = $('#'+div+'').getGridParam(); + + + + var params = JSON.stringify(settings); + + console.log(params); + $.ajax({ + url: '?comp=k2ini_settings&temp=ajax&event=saveSets', + type: 'POST', + data: {div:div, params:params}, + success: function(res){ + console.log(res); + alert('Налаштування збережені!!!'); + } + }); + } + + function resetSettings(div){ + $.ajax({ + url: '?comp=k2ini_settings&temp=ajax&event=delSets', + type: 'POST', + data: {div:div}, + success: function(res){ + console.log(res); + alert('Налаштування видалені!!!'); + } + }); + } + + function ".$this->getDivName()."buildFormAdd(sel, sess){ + $.ajax({ + url: $add_url, + + type: 'POST', + data: {masterid:{masterid}, sess:sess}, + success: function(res){ + $( 'body' ).append( '
        ' ); + $( '#formse'+sel ).html( res ); + $('#add-data'+sel).click(); + } + }); + } + function ".$this->getDivName()."buildFormEdit(sel, sess){ + $.ajax({ + url: $edit_url, + type: 'POST', + data: {sess:sess}, + success: function(res){ + $( 'body' ).append( '
        ' ); + $( '#formse'+sel ).html( res ); + $('#edit-data'+sel).click(); + } + }); + } + function setColors(arg, val, bool){ + var ids = jQuery('#".$this->getDivName()."').jqGrid('getDataIDs'); + for (var x = 0; x < ids.length; x++) { + var i = x; + var row = $('#".$this->getDivName()."').getRowData(ids[x]); + var rowid = ids[x]; + if(row[arg] == '0') + { + jQuery('#".$this->getDivName()." tr.jqgrow:eq('+i+')').css('background','inherit').css({'background-color':'#f58c88'}); + } + } + } + function showDelete(arg){ + var ids = jQuery('#".$this->getDivName()."').jqGrid('getDataIDs'); + for (var x = 0; x < ids.length; x++) { + var i = x; + var row = $('#".$this->getDivName()."').getRowData(ids[x]); + var rowid = ids[x]; + if(row[arg] == '0') + { + jQuery('#".$this->getDivName()." tr.jqgrow:eq('+i+')').css('background','inherit').css({'background-color':'#f58c88'}); + } + } + } + +// $( document ).ready(function() { +// $('#hidedel').hide(); +// }) +// function showDel(){ +// $('#dp2_zajavka_obsteg').jqGrid('setGridParam',{url: '".$table_url.$this->add_url."&del=1'}).trigger('reloadGrid'); +// $('#showdel').hide(); +// $('#hidedel').show(); +// } +// function hideDel(){ +// $('#dp2_zajavka_obsteg').jqGrid('setGridParam',{url: '".$table_url.$this->add_url."'}).trigger('reloadGrid'); +// $('#hidedel').hide(); +// $('#showdel').show(); +// } + "; + + $str1=''; + $arr1=''; + + + $i=1; + if (isset($this->sets['sum'])){ + foreach ($this->sets['sum'] as $keysum => $valuesum) { + $str1.=$keysum.$i." = grid.jqGrid('getCol', '".$keysum."_totalsum')[0];\n"; + + if (trim($arr1)<>''){ + $arr1.=","; + } + + $arr1.="$keysum: "; + if (isset($this->sets['sumlabel'])){ + if (isset($this->sets['sumlabel'][$keysum])){ + $arr1.="'".$this->sets['sumlabel'][$keysum]."'".'+'; + } + } + $arr1.=$keysum.$i; + + $i++; + } + + } + //если не задан параметр height высота автомитически подстраивается по кол-во строк + if($this->sets['height']){ + $rez = str_replace('{setheight}', '', $rez); + } else { + $rez = str_replace('{setheight}', 'setTimeout(setHeight'.$this->getDivName().', 500, height);', $rez); + } + + $rez = str_replace('{totalsum}', $str1, $rez); + $rez = str_replace('{totalarr}', $arr1, $rez); + if($this->sets['grid_onload']){ + $rez=str_replace('{grid_onload}', $this->sets['grid_onload'], $rez); + } else { + $rez=str_replace('{grid_onload}', '', $rez); + } + + $rez=str_replace('{save_settings}', '', $rez); + + if($_GET['rowid']){ + $rez=str_replace('{masterid}', $_GET['rowid'], $rez); + } else { + $rez=str_replace('{masterid}', '1', $rez); + } + + $rez = str_replace('{lnSaveSettings}', $this->Translate("{lnSaveSettings}"), $rez); + $rez = str_replace('{lnResetSettings}', $this->Translate("{lnResetSettings}"), $rez); + + return $rez; + + } + + + + // Formatting of column (Формирование столбца) + function new_col($key, $value){ + global $k2; + // you can customize your own columns ... + $col = array(); + $col["title"] = $value['caption']; + $col["name"] = $value['field']; + + + // If the name does not match the database alias (Если название в базе не совпадает с алиасом) + $col["dbname"] = $col["name"]; + if (isset($value["alias"])){ + $col["dbname"] = $value["alias"]; + } + + + // Options settings (Параметры настроек) + $col["editoptions"]=array(); + + // Column Width (Ширина столбца) + $col["width"] = "40"; + if (isset($value["width"])){ + $col["width"] = $value["width"]; + } + + // Alignment (Выравнивание) + $col["align"] = "left"; + if (isset($value["align"])){ + $col["align"] = $value["align"]; + } + + // Can I edit (Можно ли редактировать) + $col["editable"] = true; + if (isset($value["readonly"])){ + $col["editable"] = !$value["readonly"]; + } + + + // Can I edit (Параметры формы) + $col["formoptions"] = []; + if (isset($value["formoptions"])){ + $col["formoptions"] = $value["formoptions"]; + } + + + //Is field required? + $col["editrules"] = array("required"=>false); + + if (isset($value["required"]) && $value["required"] == 'true'){ + $col["editrules"] = array("required"=>true); + } + + // Autoincrement (Автоинкремент) + $col["autoid"] = false; + if (isset($value["autoid"])){ + $col["autoid"] = $value["autoid"]; + } + + // Password (Пароль) + if (isset($value["password"]) && $value["password"]){ + $col["edittype"] = "password"; + $col["formatter"] = "password"; + } + + + // Is the Show in the form of (Показывать ли поле на форме) + $col["viewable"] = true; + if (isset($value["viewform"])){ + $col["viewable"] = $value["viewform"]; + } + + + // Search for column (Искать по столбцу) + $col["search"] = true; + if($this->sets['is_filter']){ + $col["search"] = false; + } + if ($k2->post('cleanfilter')) { + $col["search"] = true; + } + if (isset($value["search"])){ + $col["search"] = $value["search"]; + } + + // Can I sort (Можно ли сортировать) + $col["sortable"] = true; + if (isset($value["sortable"])){ + $col["sortable"] = $value["sortable"]; + } + + + // Hide / show columns (Скрывать/показывать столбцы) + $col["hidden"] = false; + if (isset($value["hidden"])){ + $col["hidden"] = $value["hidden"]; + } + + // Hide from the dialog box (Скрыть из диалогового окна поле) + $col["hidedlg"] = false; + if (isset($value["hidedlg"])){ + $col["hidedlg"] = $value["hidedlg"]; + } + + + + // Hide / show columns (Скрывать/показывать столбцы для пользователей с правами) + //$col["hidden"] = false; + if (isset($value["show_for"])){ + + $users_str = $value["show_for"]; + + $users_arr = explode(",", $users_str); + + if (in_array($k2->auth->roleid, $users_arr)) { + $col["hidden"] = false; + } else { + $col["hidden"] = true; + $col["hidedlg"] = true; + } + + } + + + + + // Default value (Значение по умолчанию) + if (isset($value["def_value"])){ + $col["editoptions"]['defaultValue'] = $value["def_value"]; + } + +// if(isset($value["gen_id"])){ +// $col["editoptions"]['defaultValue'] = $this->getID(); +// $col["editoptions"]['readonly'] = false; +// } + + // Field type link (Тип поля ссылка) + if (isset($value["type_field"]) && ($value["type_field"]=='link')){ + $this->collink($key, $value, $col); + } + + // Date field (Поле даты) + if (isset($value["type_field"]) && ($value["type_field"]=='date')){ + $this->coldate($key, $value, $col); + } + + // Time field (Поле времени) + if (isset($value["type_field"]) && ($value["type_field"]=='time')){ + $this->coltime($key, $value, $col); + } + + // Chart field (Поле графика) + if (isset($value["type_field"]) && ($value["type_field"]=='bar')){ + $this->colbar($key, $value, $col); + } + + // Buttons, depending on conditions (Кнопки в зависимости от условия) + if (isset($value["type_field"]) && ($value["type_field"]=='condition')){ + $this->colcondition($key, $value, $col); + } + + // The color field (Поле цвета) + if (isset($value["type_field"]) && ($value["type_field"]=='color')){ + $this->colcolor($key, $value, $col); + } + + // Firld of dates and times (Поле даты и времени) + if (isset($value["type_field"]) && ($value["type_field"]=='datetime')){ + $this->coldatetime($key, $value, $col); + } + + // Field mode in a textarea (Поле в режиме textarea) + if (isset($value["type_field"]) && ($value["type_field"]=='textarea')){ + $this->coltextarea($key, $value, $col); + } + + // Field tinymce (Поле tinymce) + if (isset($value["type_field"]) && ($value["type_field"]=='tinymce')){ + $this->coltinymce($key, $value, $col); + } + + // Field in wysiwyg mode (Поле в режиме wysiwyg) + if (isset($value["type_field"]) && ($value["type_field"]=='wysiwyg')){ + $this->colwysiwyg($key, $value, $col); + } + + + // File operations (Файловые операции) + if (isset($value["type_field"]) && ($value["type_field"]=='file')){ + $this->colfile($key, $value, $col); + } + + if (isset($value["type_field"]) && ($value["type_field"]=='image')){ + $this->colfile($key, $value, $col); + } + + // Ticks (Галочки) + if (isset($value["type_field"]) && ($value["type_field"]=='checkbox')){ + $this->colcheckbox($key, $value, $col); + } + + // Drop-down lists (Выпадающие списки) + if (isset($value["type_field"]) && ($value["type_field"]=='DropDown')){ + $this->colDropDown($key, $value, $col); + } + + return $col; + } + + + + // It creates an array of column (Формирует массив столбцов) + function showFields(){ + global $k2; + + //Инициализация сохраненных настроек + $device = $k2->ins_comp('k2ini_settings'); + + //получаем массив с настройками для grid + $table_sets = $device->getSettings($this->sets['table']); + + $settings = $table_sets['rez']['settings']; + + if ($settings ) { + $arr_sets = json_decode($settings, true); + + $this->sets['width'] = $arr_sets['grid_par']['width']; + + $arr_field = $arr_sets['grid_par']['colModel']; + + $arr_width = []; + $arr_hidden = []; + + foreach ($arr_field as $key => $value) { + if(($value['index'])){ + array_push($arr_width, $value['width']); + array_push($arr_hidden, $value['hidden']); + } + } + + + //отключил временно восстановление настроек + $cnt = count($this->sets['fields']); + for ($i = 0; $i < $cnt; $i++){ + $this->sets['fields'][$i]['width'] = $arr_width[$i]; + $this->sets['fields'][$i]['hidden'] = $arr_hidden[$i]; + } + + } + + foreach ($this->sets['fields'] as $key => $value) { + $col = $this->new_col($key, $value); + $cols[] = $col; + + // Файловые операции (столбец для отображения) + if (isset($value["type_field"]) && ($value["type_field"]=='file' or $value["type_field"]=='image')){ + $col = $this->colfile_show($key, $value); + $cols[] = $col; + + $this->is_fileupload = true; + } + + } + + + + // Adding fields to the amounts (Добавлеие полей для сумм) + if (isset($this->sets['sum'])){ + foreach ($this->sets['sum'] as $keysum => $valuesum) { + $col = array(); + $col["hidden"] = true; + $col["hidedlg"] = true; + $col["align"] = "right"; + $col["name"] = $keysum.'_totalsum'; + $col["title"] = $col["name"]; + $cols[] = $col; + } + } + + + // Add a hidden column for a table is one-to-many (Добавляем скрытый столбец для таблицы один ко многим) + if ($this->sets['getmaster']){ + $col = array(); + $col["title"] = "MasterID"; + $col["name"] = $this->sets['masterid']; + $col["width"] = "10"; + $col["editable"] = false; + $col["hidden"] = true; + $cols[] = $col; + } + + + return $cols; + } + + + + + // Adding an array of buttons (Добавление массива кнопок) + function addToolButtons(){ + $rez=''; + foreach ($this->tool_buttons as $key => $value) { + $rez.=$this->getScriptToolButton($value); + } + + return $rez; + } + + + // Adding a button to the array of buttons (Добавление одной кнопки в массив кнопок) + // $caption - caption button (подпись к кнопке) + // $icon - icon class (класс иконки) + // $action - event name (название события) +// function addToolButton($caption, $id, $title, $icon, $action){ +// $arr_el=array('caption'=>$caption, 'id'=>$id, 'title'=>$title, 'icon'=>$icon, 'action'=>$action); +// array_push($this->tool_buttons, $arr_el); +// } + + // Adding a button to the array of buttons (Добавление одной кнопки в массив кнопок) + // $caption - caption button (подпись к кнопке) + // $icon - icon class (класс иконки) + // $action - event name (название события) + function addToolButton($arr_el){ + //$arr_el=array('caption'=>$caption, 'id'=>$id, 'title'=>$title, 'icon'=>$icon, 'action'=>$action); + array_push($this->tool_buttons, $arr_el); + } + + + + // Установка значений + function set($arr){ + $rez=''; + return $rez; + } + + + + function iniDialog($arr){ + global $k2; + $rez = ''; + //$dialog = $k2->ins_comp2('k2form', $this); + + //$rez .= $dialog->getForm($arr); + + return $rez; + } + + /** + * Инициализация popup menu + * @global type $k2 + * @param type $arr + * @return type + */ + function iniMenu($arr){ + global $k2; + $rez = ''; + + $popup_menu = $k2->ins_comp2('k2popup_menu', $this); + + //$arr['selector'] = '#'.$this->sets['table'].' tr.ui-row-ltr'; + $arr['selector'] = '.ui-jqgrid-titlebar'; + + $select = str_replace(["\r","\n",'"', ' '],"",$this->sets['select']); + $where = str_replace(["\r","\n",'"'],"",' '.$this->sets['where'].' '); + $order = ' ORDER by '.$this->sets['sortname'].' '.$this->sets['sortorder']; + + + $sql = $select.'\n\n'.$where.$order; + $sql = str_replace("LEFT", '\n\n'."LEFT",$sql); + $sql = str_replace("ON", '\n'."ON",$sql); + $sql = str_replace("FROM",'\n'." FROM",$sql); + + //Добавление кнопок по умолчанию + $add_arr = [ + [ + 'command'=>'sep', + ], + [ + 'command'=>'look_sql', + 'name'=>'{lnLookSql}', + 'icon'=>'fa-database', + 'callback'=>'console.log("'.$sql.'");$(".modal-body").text("'.$sql.'");$("#sqlModalBtn").click();', + 'disabled'=>'false' + ], + [ + 'command'=>'refresh', + 'name'=>'{lnRefreshFilter}', + 'icon'=>'fa-refresh', + 'callback'=>'$("#refresh_'.$this->sets['table'].'").click();', + 'disabled'=>'false' + ], + [ + 'command'=>'sep', + ], + [ + 'command'=>'save_set', + 'name'=>'{lnSaveSettings}', + 'icon'=>'fa-sliders', + 'callback'=>'saveSettings("'.$this->sets['table'].'") ', + 'disabled'=>'false' + ], + [ + 'command'=>'reset_set', + 'name'=>'{lnResetSettings}', + 'icon'=>'fa-bars', + 'callback'=>'resetSettings("'.$this->sets['table'].'") ', + 'disabled'=>'false' + ] + ]; + + + foreach ($add_arr as $value) { + if (isset($this->sets['popup_menu'])){ + array_push($arr['items'], $value); + } else { + if(!isset($arr['items'])){ + $arr['items'] = []; + } + array_push($arr['items'], $value); + } + } + + + + $rez .= $popup_menu->showContMenu($arr); + + + return $rez; + + } + + function groupHeaders() + { + + } + + + /** + * + * @global type $k2 + * @param type $arr + * @return string + */ + function showFilter($arr = []) + { + global $k2; + $rez .= '
        '; + $rez .= '
        '; + $rez .= '
        + +
        +

        Фільтр {search_string}

        +
        + + +
        +
        +
        '; + $rez .= '
        +
        +

        Головний фільтр

        + +
        + +
        + +
        + +
        '; + foreach ($arr as $key => $value) { + if($value['main_filter'] == true) { + $caption = str_replace('
        ', ' ', $value['caption']); + $caption = str_replace('
        ', ' ', $value['caption']); + $field = $value['field']; + if ($value['alias']) { + $field = $value['alias']; + } + $field = str_replace('.','~',$field); + if ((!$value['readonly'] || !$value['hidden']) && $value['hidden_filter'] !== true && $value['type_field'] != 'condition') { + $rez .= '
        '; + $rez .= ''; + if($value['type_field'] == 'date'){ + $rez .= ''; + } elseif($value['type_field'] == 'checkbox') { + $rez .= '
        '; + } else { + $rez .= ''; + } + $rez .= '
        '; + } + } + + } + $rez .= '
        '; + + $rez .= '
        +
        '; + + $rez .= '
        +
        +

        Додатковий фільтр

        + +
        + +
        + +
        + +
        '; + $rez .= '
        + + Очистити + +
        + +
        + + '; + $search_string = ''; + + foreach ($_POST as $key => $value) { + if ($value) { + $key = str_replace('~', '.', $key); + foreach ($arr as $k => $val) { + //print_r($key.'==='.$val['caption'].'+++'.$val['field'].'
        '); + if ($val['field'] == $key || $val['alias'] == $key){ + $search_string .= '
        Пошук здійснено по запиту: '.$val['caption'].'-'.$value.'
        '; + } + } + } + } + //print_r($_POST); + if ($k2->post('filterpost')){ + $rez = str_replace('{search_string}', $search_string, $rez); + } else { + $rez = str_replace('{search_string}', '', $rez); + } + return $rez; + } + + function render($arr, $is_render=true, $events=[]){ + global $k2, $masteridname, $global_grid_this; + $global_grid_this=$this; + $rez = ''; + $this->sets = $arr; + $divname = $this->getDivName(); + + if (!$arr['select']){ + //$arr['select']='select * from '.$arr['table']; + } + $log_arr = []; + if ($arr['is_filter'] == true){ + + $is_render = false; + if($k2->post('filterpost')){ + unset($k2->session[$divname]); + $andwhere = ''; + + foreach ($_POST as $key => $value) { + if($value == 'on'){ + $value = 1; + } + //$value = str_replace('"', "'", $value); + if($value && $key !== 'filterpost' && $key !== 'cleanfilter'){ + $value = str_replace("'", '’', $value); + $value = str_replace("/", '', $value); + $value = str_replace("\\", '', $value); + $andwhere .= ' AND ('.$key.'=\''.$value.'\' OR (Upper('.$key.') LIKE Upper(\'%'.$value.'%\')))'; + $log_arr[$key] = $value; + } + $andwhere = str_replace('~', '.', $andwhere); + + } + + $k2->log->addDBLog($k2->getCurURL(), 'Фільтрація', json_encode($log_arr, JSON_UNESCAPED_UNICODE)); + $arr['where'] = $arr['where'].$andwhere; + + //$arr['select'] = $arr['select'].$andwhere; + + $k2->session[$divname]['where'] = $arr['where']; + //print_r($arr['select']); + //print_r($arr['where']); + //$k2->session[$divname]['select'] = $arr['select']; + } + + } else { + unset($k2->session[$divname]); + } + if($k2->session[$divname]['where']){ + + //print_r($k2->session); + $arr['where'] = $k2->session[$divname]['where']; + + } + if($k2->session[$divname]['select']){ + //$arr['select'] = $k2->session[$divname]['select']; + } + + $this->sets = $arr; + + $this->events = $events; + //print_r($arr['where']); + //$arr['name'] = 'name_'.$arr['table']; + + // Принудительное определение названия объекта +// if (isset($arr['name'])){ +// $this->name=$arr['name']; +// } + + + + + // Инициализация объекта k2form, если используются кастомизированные формы + if (isset($arr['custom_form'])){ + $this->form = $k2->ins_comp2('k2form', $this); + + if ($k2->template->cur=='ajax'){ + + $event = $k2->get('event'); + switch ($event) + { + case "data": + $rez = $this->form->getForm($this->sets); + break; + case "parent": + $funcname = $k2->post('funcname'); + $par = json_decode($k2->post('parents_json'), true); + $rez = $this->owner->$funcname($par); + break; + default: + $rez=''; + } + return $rez; + } + + } + + + + +// if ($k2->auth->roleid == 1100){ +// $this->sets['is_edit'] = false; +// } + + //print_r($arr); + $this->iniRows(); + + $this->iniGrid(); // Initialize table (Инициализация таблицы) + $this->addToHead($arr['theme']); // Adding scripts and styles in the header (Добавляем скрипты и стили в заголовок) + $this->setsTable(); // Setting the table (Настройки таблицы) + $this->set($arr); + + $this->setActions(); // Buttons teams in the table (Кнопки команд в таблице) + + $g = $this->comp; + + $g->select_command = $arr['select']; + + //echo 'select='.$arr['select']; + + + if (isset($arr['where'])){ + //if(isset($arr['where2'])){ + // $g->select_command.=$arr['where2']; + //} else { + $g->select_command.=' '.$arr['where'].' '; + //} + } + + $g->table = $arr['table']; + + $masteridname=''; + + + // If the master - the master inserted id (Если Master - вставляем id мастера) + if ($arr['getmaster']){ + + if ($this->comp->typeid==0){ + $id = intval($_GET["rowid"]); + }else{ + $id = $_GET["rowid"]; + } + + + $g->select_command = str_replace('{masterid}', $id, $g->select_command); + } + + if (isset($arr['masterid'])){ + $masteridname = $arr['masterid']; + } + + + //$add_funcname=$this->getDivName().'_add_client'; + + + // Events (События) + $func_prerender="pre_render_".$this->getDivName(); + + $func_before_show_form="before_show_form".$this->getDivName(); + + $func_addclient="add_client".$this->getDivName(); + $func_after_insert="after_insert".$this->getDivName(); + + $func_onupdate="update_client".$this->getDivName(); + $func_after_update="after_update".$this->getDivName(); + + $func_ondelete="delete_client".$this->getDivName(); + $func_after_delete="after_delete".$this->getDivName(); + + $func_onvalidate="validate_client".$this->getDivName(); + + $func_onclone="clone_client".$this->getDivName(); + + + + + $e["on_data_display"] = [$func_prerender,"",true]; + + $e["before_show_form"] = [$func_before_show_form,"",true]; + + $e["on_insert"] = [$func_addclient, null, true]; + $e["on_after_insert"] = [$func_after_insert, null, true]; + + $e["on_update"] = [$func_onupdate, null, true]; + $e["on_after_update"] = [$func_after_update, null, true]; + + $e["on_delete"] = [$func_ondelete, null, true]; + $e["on_after_delete"] = [$func_after_delete, null, true]; + + $e["on_validate"] = [$func_onvalidate, null, true]; + + $e["on_clone"] = [$func_onclone,"",true]; + + $e["js_on_load_complete"] = $this->getDivName()."_grid_onload"; + + $g->set_events($e); + + + + // Update features (Функции обновления) + + eval('function '.$func_before_show_form.'(&$data) + { + global $global_grid_this; + + $global_grid_this->before_show_form($data); + }'); + + + eval('function '.$func_addclient.'(&$data) + { + global $global_grid_this; + + $global_grid_this->add_client($data); + }'); + + + eval('function '.$func_after_insert.'(&$data) + { + global $global_grid_this; + $global_grid_this->after_insert($data); + + }'); + + + eval('function '.$func_onupdate.'(&$data) + { + global $global_grid_this; + $global_grid_this->update_client($data); + + }'); + + + eval('function '.$func_after_update.'(&$data) + { + global $global_grid_this; + $global_grid_this->after_update($data); + + }'); + + eval('function '.$func_ondelete.'(&$data) + { + global $global_grid_this; + $global_grid_this->delete_client($data); + + }'); + + eval('function '.$func_after_delete.'(&$data) + { + global $global_grid_this; + $global_grid_this->after_delete($data); + + }'); + + eval('function '.$func_onvalidate.'(&$data) + { + global $global_grid_this; + $global_grid_this->validate_client($data); + + }'); + + + eval('function '.$func_onclone.'(&$data) + { + global $global_grid_this; + $global_grid_this->clone_client($data); + + }'); + + + // Sums the output function (Функция вывода сумм) + eval(' + function '.$func_prerender.'(&$data) + { + global $global_grid_this; + $global_grid_this->sum_render($data); + } + '); + + + + $cols = $this->showFields(); + + // pass the cooked columns to grid + $g->set_columns($cols); + + if ($this->is_fileupload){ + //28.02.2019 отключил т.к. при masterdetail ошибка + //$e = $this->file_event(); + //$g->set_events($e); + } + + + if(isset($arr['groupHeaders'])){ + $g->set_group_header( + [ + "useColSpanStyle" => true, + "groupHeaders" => $arr['groupHeaders'] + ] + ); + } + + + + + // generate grid output, with unique grid name as 'list1' + if ($is_render){ + $out = $arr['over_table']; + $out .= $g->render($this->getDivName()); + }else{ + $out = $this->showFilter($arr['fields']); + if($k2->post('filterpost') || $k2->get('grid_id')){ + $out .= $arr['over_table']; + $out .= $g->render($this->getDivName()); + } + } + + + if (isset($arr['grid_onload'])){ + //$rez .= '
        - Не активные'; + } + + $rez .= $this->temp; + + //$qwert = $arr['table']; + + $rez = str_replace('{divname}', $this->getDivName(), $rez); + $rez = str_replace('{tableout}', $out, $rez); + $rez = str_replace('{sumscript}', $this->getSumScrupt(), $rez); + + if ($arr['getmaster'] || $arr['height']) { + $rez = str_replace('{setheight}', '', $rez); + } else { + $rez = str_replace('{setheight}', 'setheight'.$this->getDivName().'()', $rez); + } + + if ($this->response == true) { + $rez = str_replace('{resizeGrid}', 'resizeGrid()', $rez); + } else { + $rez = str_replace('{resizeGrid}', '', $rez); + } + + if($this->sets['custom_form']==true){ + //$dialog = $k2->ins_comp2('k2form', $this->owner); + //$rez .= $dialog->getForm($arr); + } + + $rez.=$this->addToolButtons(); + + $rez .= ' + + '; + + return $rez; + + } + + + +} diff --git a/k2shop/k2shop/app/deleted/app/k2/k2adminpage/k2adminpage_koolphp.php b/k2shop/k2shop/app/deleted/app/k2/k2adminpage/k2adminpage_koolphp.php new file mode 100644 index 0000000..0fa0fd3 --- /dev/null +++ b/k2shop/k2shop/app/deleted/app/k2/k2adminpage/k2adminpage_koolphp.php @@ -0,0 +1,222 @@ + + + #wrap{ + position:relative; + width:100%; + overflow:hidden; + } + + #main{ + display: inline-block; + width:20%; + vertical-align: top; + } + + #side{ + display: inline-block; + width:70%; + vertical-align: top; + padding: 20px; + min-height:700px; + } + + + +
        +
        {adminmenu}
        +
        + +

        {h1}

        + + {pathway} + + + {admcommands} +
        +
        + + + '; + + + public $admincomp= ['k2edocadmin' => 'k2edocadmin', 'k2kartinadmin'=>'k2kartinadmin', 'k2siteadmin' => 'k2siteadmin' ,'k2obmennik' => 'k2obmennik', 'k2customoffice' => 'k2customoffice', 'k2adminfunc' => 'k2adminfunc', 'k2mantis' => 'k2mantis', + 'k2seo' => 'k2seo', 'k2shop' => 'k2shop', 'k2chatadmin' => 'k2chatadmin', 'k2transfer' => 'k2transfer', 'k2test' => 'k2test', 'k2cardscollection' => 'k2cardscollection', 'k2magadmin' => 'k2magadmin', 'k2configurator' => 'k2configurator', + 'k2boosteradmin'=>'k2boosteradmin', 'k2message'=>'k2message', 'k2vdocs'=>'k2vdocs']; + + public $menu = []; + + + // Иницилизация меню + function iniMenu(){ + + global $k2; + + foreach ($this->admincomp as $adm) { + $comp=$k2->ins_comp($adm); + $this->admincomp[$adm]=$comp; + $arr=$comp->getAdminMenu(); + + + if (isset($arr) and (count($arr)>0)) { + foreach ($arr as $key) { + array_push($this->menu, $key); + } + } + + } + + + } + + // Административное меню + function admMenu($menus){ + + global $k2; + + require_once nslashe($k2->kool->KoolControlsFolderAbs."/KoolSlideMenu/koolslidemenu.php"); + + $ksm = new KoolSlideMenu("ksm"); + $ksm->scriptFolder = $k2->kool->KoolControlsFolder."/KoolSlideMenu"; + + + // Вывод меню + foreach ($menus as $gmenu) { + + $ksm->addParent($gmenu['category'][0], $gmenu['category'][1], $gmenu['category'][2],false,false); + + foreach ($gmenu['elements'] as $menu) + { + $ksm->addChild($gmenu['category'][1], $menu[0], $menu[1], $k2->surl->SefURL_FromURL($menu[2])); + } + } + + + $ksm->singleExpand = true; + $ksm->width="200px"; + + $ksm->slidingSpeed=1000; // Открываем мгновенно + + $style_select = 'office2007'; + $ksm->styleFolder = $k2->kool->KoolControlsFolder."/KoolSlideMenu/styles/$style_select"; + + ob_start(); + + + ?> +
        + + +
        + Render();?> +
        + + +
        +
        + + + get('adm'); + + + // Перебираем команды всех административных компонент + foreach ($this->admincomp as $m) { + if (isset($m)){ + $rezm=$m->admCommands($comm); + + if ($rezm){ + break; + } + } + + } + + + $rez=ob_get_contents(); + ob_clean(); + + + return $rez; + } + + + // Возвращает контент админ-панели + function conte($menus){ + + $rez=$this->template; + + $admmenu=$this->admMenu($menus); + //$admcomm=$this->admCommands(); + + $rez=str_replace('{adminmenu}', $admmenu, $rez); + $rez=str_replace('{admcommands}', $admcomm, $rez); + + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/app/k2/k2adminpage/k2adminpage_lte.php b/k2shop/k2shop/app/deleted/app/k2/k2adminpage/k2adminpage_lte.php new file mode 100644 index 0000000..4817a22 --- /dev/null +++ b/k2shop/k2shop/app/deleted/app/k2/k2adminpage/k2adminpage_lte.php @@ -0,0 +1,294 @@ + +
        + +
        + + + + +
        + + + +
        +
        + +
        + + + + + +
        + + {admcommands} + +
        +
        + + + + + + +
        +
        +
        '; + + + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + $k2->site->addJS('jquery-2.2.3.min.js', '/k2shop/usr/admin/php/plugins/jQuery/jquery-2.2.3.min.js'); + $k2->site->addJS('jquery-ui.min.js', 'https://code.jquery.com/ui/1.11.4/jquery-ui.min.js'); + $k2->site->addJS('bootstrap.min.js', '/k2shop/usr/admin/php/bootstrap/js/bootstrap.min.js'); + $k2->site->addJS('raphael-min.js', 'https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js'); + $k2->site->addJS('morris.min.js', '/k2shop/usr/admin/php/plugins/morris/morris.min.js'); + $k2->site->addJS('jquery.sparkline.min.js', '/k2shop/usr/admin/php/plugins/sparkline/jquery.sparkline.min.js'); + $k2->site->addJS('jquery-jvectormap-1.2.2.min.js', '/k2shop/usr/admin/php/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js'); + $k2->site->addJS('jquery-jvectormap-world-mill-en.js', '/k2shop/usr/admin/php/plugins/jvectormap/jquery-jvectormap-world-mill-en.js'); + $k2->site->addJS('jquery.knob.js', '/k2shop/usr/admin/php/plugins/knob/jquery.knob.js'); + $k2->site->addJS('moment.min.js', '/https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js'); + $k2->site->addJS('daterangepicker.js', '/k2shop/usr/admin_lte/php/plugins/daterangepicker/daterangepicker.js'); + $k2->site->addJS('bootstrap-datepicker.js', '/k2shop/usr/admin/php/plugins/datepicker/bootstrap-datepicker.js'); + $k2->site->addJS('bootstrap3-wysihtml5.all.min.js', '/k2shop/usr/admin/php/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js'); + $k2->site->addJS('jquery.slimscroll.min.js', '/k2shop/usr/admin/php/plugins/slimScroll/jquery.slimscroll.min.js'); + $k2->site->addJS('fastclick.js', '/k2shop/usr/admin/php/plugins/fastclick/fastclick.js'); + $k2->site->addJS('app.min.js', '/k2shop/usr/admin/php/js/app.min.js'); + $k2->site->addJS('jscolor.js', '/k2shop/k2shop/libs/colorpicker/js/jscolor.js'); + } + + + + + // Административное меню + function admMenu($menus){ + + global $k2; + $rez=''; + //$this->iniMenu(); + + $category=$k2->get('category'); + $itemmenu=$k2->get('itemmenu'); + + //Создаем массив иконок + $icons = array("fa fa-bars", "fa fa-pencil", "fa fa-book", "fa fa-database", "fa fa-adjust", "fa fa-arrows", + "fa fa-bookmark", "fa fa-check-circle", "fa fa-check-square-o", "fa fa-cube"); + + // Вывод меню + foreach ($menus as $gmenu) { + if ($gmenu['category'][2]==$category){ + $treeview="active treeview"; + } + else { + $treeview='"treeview"'; + } + //Выбираем и подключаем к категориям меню иконки font-awesome + //Если иконка указана в файле категории меню (как k2siteadmin.php, k2adminfunc.php), берем ее из файла + if (isset($gmenu['category'][3])){ + $icon= $gmenu['category'][3]; + } + //если иконка не задана, берем ее из массива случайным образом + else { + $number = mt_rand(0, count($icons) - 1); + $icon = $icons[$number]; + } + + $rez.='
      • + + + '.$gmenu['category'][2].' + + + + '; + + foreach ($gmenu['elements'] as $menu) + { + if ($menu[1]==$itemmenu){ + $li='
      • '; + } + else { + $li='
      • '; + } + $rez.= ''; + } + $rez.='
      • '; + } + + return array ('rez'=>$rez, 'category'=>$category, 'itemmenu'=>$itemmenu); + + return $rez; + + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/app/k2/k2adminpage/k2adminpage_redblack.php b/k2shop/k2shop/app/deleted/app/k2/k2adminpage/k2adminpage_redblack.php new file mode 100644 index 0000000..327ad2e --- /dev/null +++ b/k2shop/k2shop/app/deleted/app/k2/k2adminpage/k2adminpage_redblack.php @@ -0,0 +1,246 @@ + + + #wrap{ + position:relative; + width:100%; + overflow:hidden; + } + + #main{ + display: inline-block; + width:20%; + vertical-align: top; + } + + #side{ + display: inline-block; + width:70%; + vertical-align: top; + padding: 20px; + min-height:700px; + } + h1 { + + font-size: 24px; + font-weight: 400; + + + } + + h1 a { + color: #c12c42; + font-size: 16px; + text-decoration: none; + } + + .accordion { + width: 100%; + max-width: 360px; + margin: 30px auto 20px; + background: #FFF; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + list-style-type: none + } + + .accordion .link { + cursor: pointer; + display: block; + padding: 15px 15px 15px 42px; + color: #4D4D4D; + font-size: 14px; + font-weight: 700; + border-bottom: 1px solid #CCC; + position: relative; + -webkit-transition: all 0.4s ease; + -o-transition: all 0.4s ease; + transition: all 0.4s ease; + } + + .accordion li:last-child .link { border-bottom: 0; } + + .accordion li i { + position: absolute; + top: 16px; + left: 12px; + font-size: 18px; + color: #595959; + -webkit-transition: all 0.4s ease; + -o-transition: all 0.4s ease; + transition: all 0.4s ease; + + } + + .accordion li i.fa-chevron-down { + right: 12px; + left: auto; + font-size: 16px; + } + + .accordion li.open .link { color: #b63b4d; } + + .accordion li.open i { color: #b63b4d; } + + .accordion li.open i.fa-chevron-down { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + } + + /** + * Submenu + -----------------------------*/ + + + .submenu { + display: none; + background: #444359; + font-size: 14px; + } + + .submenu li { border-bottom: 1px solid #4b4a5e; list-style-type: none} + + .submenu a { + display: block; + text-decoration: none; + color: #d9d9d9; + padding: 12px; + padding-left: 42px; + -webkit-transition: all 0.25s ease; + -o-transition: all 0.25s ease; + transition: all 0.25s ease; + } + + .submenu a:hover { + background: #b63b4d; + color: #FFF; + } + + + +
        +
        {adminmenu}
        +
        + +

        {h1}

        + + {pathway} + + {admcommands} +
        +
        '; + + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + $k2->site->addCSS('font-awesome.min.css', 'http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css'); + $k2->site->addCSS('bootstrap.min.css', 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css'); + $k2->site->addJS('jscolor.js', '/k2shop/k2shop/libs/colorpicker/js/jscolor.js'); + } + + + // Административное меню + function admMenu($menus){ + + global $k2; + + //$this->iniMenu(); + + //$namepath = $this->menu; + + if($k2->get('mainitem')){ + // $k2->site->pathway->add('/', 'Home'); + $k2->site->pathway->add('/', $k2->get('mainitem')); + $k2->site->pathway->add('#', $k2->get('itemmenu')); + } + $rez=' +
          '; + + + // Вывод меню + foreach ($menus as $gmenu) { + $rez.='
        • '; + } + $rez.='
        '; + + ob_start(); + + + ?> +
        + + +
        + Render();?> +
        + +
        + +
        + + + inc('k2games','secur'); + } + + // Обработка команд + function oper(){ + + global $k2; + $rez=''; + + $comm=$k2->get('comp'); + $c=$k2->get('c'); + + $s=$k2->getComp($comm); + if ($s[0]<>'k2games'){ + return; + } + + $comp=$k2->ins_comp($s[0], $s[1], true); + if ($comp<>''){ + $rez.=$comp->content(); + + return $rez; + } + } + + + + // Возвращаем контент + function content(){ + $rez=$this->oper(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_all.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_all.php new file mode 100644 index 0000000..91821bb --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_all.php @@ -0,0 +1,127 @@ +checkLogin($login, $password); + if($k2->auth->login){ + $go_game = '/?comp=k2games&c=hot'; + } else { + $go_game = '/?comp=k2games&c=reg'; + } + $login=$k2->auth->login; + + $rez .=$games->showHeader(); + $qiwi=$k2->ins_comp('k2pay', 'qiwi'); + $advcash=$k2->ins_comp('k2pay', 'advcash'); + $yandexmoney=$k2->ins_comp('k2pay', 'yandexmoney'); + $liqpay=$k2->ins_comp('k2pay', 'liqpay'); + $paypal=$k2->ins_comp('k2pay', 'paypal'); + $webmoney=$k2->ins_comp('k2pay', 'webmoney'); + $interkassa=$k2->ins_comp('k2pay', 'interkassa'); + $robokassa=$k2->ins_comp('k2pay', 'robokassa'); + $coinify=$k2->ins_comp('k2pay', 'coinify'); + $payeer=$k2->ins_comp('k2pay', 'payeer'); + $payza=$k2->ins_comp('k2pay', 'payza'); +// $date = 'eyJhY3Rpb24iOiJwYXkiLCJwYXltZW50X2lkIjoyODA2MjUxOTEsInN0YXR1cyI6InNhbmRib3giLCJ2ZXJzaW9uIjozLCJ0eXBlIjoiYnV5IiwicGF5dHlwZSI6ImNhcmQiLCJwdWJsaWNfa2V5IjoiaTEzODcyOTI1NzUwIiwiYWNxX2lkIjo0MTQ5NjMsIm9yZGVyX2lkIjoiMjAxNjExMDkxMDE4NTYzNjY4MjEiLCJsaXFwYXlfb3JkZXJfaWQiOiJZNVc1WVpZTjE0Nzg2Nzk1NTUyOTY4OTUiLCJkZXNjcmlwdGlvbiI6ItCi0LXRgdGCIiwic2VuZGVyX2ZpcnN0X25hbWUiOiJwbGF5ZXI3Iiwic2VuZGVyX2NhcmRfbWFzazIiOiI1MTY4NzQqMzgiLCJzZW5kZXJfY2FyZF9iYW5rIjoicGIiLCJzZW5kZXJfY2FyZF90eXBlIjoibWMiLCJzZW5kZXJfY2FyZF9jb3VudHJ5Ijo4MDQsImlwIjoiMjEzLjE2OS43My4xODUiLCJhbW91bnQiOjMuMCwiY3VycmVuY3kiOiJFVVIiLCJzZW5kZXJfY29tbWlzc2lvbiI6MC4wLCJyZWNlaXZlcl9jb21taXNzaW9uIjowLjA4LCJhZ2VudF9jb21taXNzaW9uIjowLjAsImFtb3VudF9kZWJpdCI6ODkuMDIsImFtb3VudF9jcmVkaXQiOjg5LjAyLCJjb21taXNzaW9uX2RlYml0IjowLjAsImNvbW1pc3Npb25fY3JlZGl0IjoyLjQ1LCJjdXJyZW5jeV9kZWJpdCI6IlVBSCIsImN1cnJlbmN5X2NyZWRpdCI6IlVBSCIsInNlbmRlcl9ib251cyI6MC4wLCJhbW91bnRfYm9udXMiOjAuMCwibXBpX2VjaSI6IjciLCJpc18zZHMiOmZhbHNlLCJjcmVhdGVfZGF0ZSI6MTQ3ODY3OTU1NTM0OCwiZW5kX2RhdGUiOjE0Nzg2Nzk1NTUzNDgsInRyYW5zYWN0aW9uX2lkIjoyODA2MjUxOTF9'; +// $private_key = 'HwdYXWN7sccpreeyEFQZ1f6G2r5z8mLGHlpQKSC2'; +// $data = base64_decode($date); +// $my2 = base64_encode( sha1( $private_key . $date . $private_key, 1 ) ); +// print_r($data); +// print_r($my2); + $rez .=" +
        + +
        +
        Casino Games
        +
        + +

        You can bet cash and RPs. All prizes will be instantly added to your account.

        + +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        Casino Games
        +

        You can bet cash and RPs. All prizes will be instantly added to your account.

        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        +
        + +
        +
        +
        + +
        +
        +
        + +
        + +
        "; + + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showGames(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_entry.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_entry.php new file mode 100644 index 0000000..9f2d2a1 --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_entry.php @@ -0,0 +1,56 @@ +post('login'); + $password = $k2->post('password'); + + + if($login){ + + $auth = $k2->ins_comp('k2auth', 'alt'); + + $auth->checkPassword($login, $password); + + header('Location: /?comp=k2games&c=all'); + + }else{ + + header('Location: /?comp=k2games&c=all'); + + } + + + $rez=""; + + + return $rez; + + } + + + + // Возвращаем контент + function content(){ + $rez=$this->showEntry(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_header.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_header.php new file mode 100644 index 0000000..6d68d24 --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_header.php @@ -0,0 +1,105 @@ +auth->login; + + + if($login){ + $rez.="
        Hi, {login}
        +
        + +
        + +
        +
        + + + + +"; + + $rez=str_replace('{ACCOUNT_BALANCE}', $games->userAccBal($login), $rez); + $rez=str_replace('{INVEST_BALANCE}', $games->userInvBal($login), $rez); + $rez=str_replace('{RP}', $games->userRP($login), $rez); + } else { + $rez.=" {auth} Registration +
        +
        +
          +
        • +
        • +
        • +
        • +
        +
        +
        + + + + +"; + + } + + + return $rez; + + } + + // Возвращаем контент + function content(){ + $rez=$this->showHeaders(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_hot.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_hot.php new file mode 100644 index 0000000..cab8f63 --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_hot.php @@ -0,0 +1,141 @@ +ins_comp('k2auth'); + $rez=""; + $games_id = 1; + $login=$k2->auth->login; + + $today = date("Y-m-d"); + + + $rez .=$games->showHeader(); + $rez .=" +
        + +
        +
        Head or Tail
        +
        +
        + +
        +
        +
        + Statistics + Plays Today: {Plays_Today} + Won Today: $ {Won_Today_Cash} / RP {Won_Today_RP} + Plays Total: {Plays_Total} + Won Total: $ {Won_Total_Cash} / RP {Won_Total_RP} +
        +
        +
        + Latest Winers + Date: {Win_Date} + Member: {Win_Member} + Won : {Last_win_cur} {Last_winval} + +
        +
        +
        + +
        Place you BET abd WIN Instantly 199% if your bet is right!
        +
        + +
        +
        +
        + +
        +
        +
        + +
        + + + + + + + +
        + + + +
        +
         
        +
         
        + + +
        +
        + +
        + + + +
        + +
        +
        +
        +
        +
        + Games +
        +
        +
        +
        +
        + + + "; + + $rez=str_replace('{Plays_Today}', $games->getPlayToday($games_id, $today), $rez); + $rez=str_replace('{Won_Today_Cash}', $games->getStat($games_id, 1, $today)['won_today'], $rez); + $rez=str_replace('{Won_Today_RP}', $games->getStat($games_id, 2, $today)['won_today'], $rez); + $rez=str_replace('{Plays_Total}', $games->getPlayTotal($games_id), $rez); + $rez=str_replace('{Won_Total_Cash}', $games->getWonTotal($games_id, 1), $rez); + $rez=str_replace('{Won_Total_RP}', $games->getWonTotal($games_id, 2) , $rez); + $rez=str_replace('{Win_Date}', $games->getWinStat($games_id)['latest_winday'], $rez); + $rez=str_replace('{Win_Member}', $games->getWinStat($games_id)['latest_winmember'], $rez); + $rez=str_replace('{Last_winval}', $games->getWinStat($games_id)['latest_winval'], $rez); + $rez=str_replace('{Last_win_cur}', $games->getWinStat($games_id)['cur_sign'], $rez); + + + return $rez; + + } + + // Возвращаем контент + function content(){ + $rez=$this->showHoT(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_hot_script.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_hot_script.php new file mode 100644 index 0000000..6311c87 --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_hot_script.php @@ -0,0 +1,163 @@ +get('login'); + $windate = date("m/d/y H:i:s"); + $games_id = '1'; + $amount = $k2->get('amnt'); + + $payment = $k2->get('payment'); + if($payment==1){ + $nameBal = 'ACCOUNT_BALANCE'; + }elseif ($payment==2) { + $nameBal = 'INVEST_BALANCE'; + }else { + $nameBal = 'RP'; + } + + if($nameBal=='RP'){ + + $cur_id=2; + } else { + + $cur_id=1; + } + + + $games_index = $this->checkSett($games_id)[0]; + + $max_prize = $this->checkSett($games_id)[3]; + + + + + $json_array = array('html'=>'','html2'=>'','js'=>''); //main data array + + // query for minimal value + + $min_val = 1; + // incode value + + $pay = ''; + if(isset($_GET['payment'])); @$pay = $_GET['payment'];// get payment + + $amnt = ''; + if (isset($_GET['amnt'])); @$amnt = $_GET['amnt']; // get amount + + $coin = ''; + if (isset($_GET['coin'])); @$coin = $_GET['coin']; // get user choise 1-head, 2-tail + if(!$amnt) $error = "Please place a bid"; + + sleep(1); + $error = ''; + $coin = (int)$coin; + + $randval = rand($min_val,199); + //if min_val == 100 then 100% lose. + + if($randval <= 100) $res = 1; else $res = 0; # 1 win \ 2 lose + + + $games_index = $this->checkSett($games_id)[0]; + + $max_prize = $this->checkSett($games_id)[3]; + + $totalToday = $games->totalRevenueToday($cur_id, $today); + + if ($amount>$max_prize) $res=0; + if($amount>($totalToday*$games_index)) $res=0; + if(!$res) { + if($coin==1) $coin=2; else $coin=1; + } + + + if ($error) $json_array['js'] = "emptyinput('".$error."');"; // alert('error: ".$amnt." + ".$coin."'); + + if (!$error) + { + $json_array['js'] = "showRes('".$res."','".$coin."');"; + + + if($games->checkPlayerToday($login, $cur_id, $today)!==$login){ + $games->greateNewPlayer($login, $amount, $cur_id, $games_id, $today); + + }else{ + $games->updateGamePlayer($login, $amount, $cur_id, $games_id, $today); + } + + + + $gameToday =$games->checkGameToday($games_id, $cur_id, $today); + + + if($gameToday!==$games_id){ + $games->greateGameToday($games_id, $cur_id, $amount, $today); + }else{ + $games->updateStat($amount, $cur_id, $today, $games_id, $today ); + } + + + if($res==1){ + $games->updateBal($login, $nameBal, $amount); + $games->updateStatWin($login, $amount, $windate, $games_id, $cur_id, $today); + $games->updatePayouts($login, $amount, $cur_id, $games_id, $today); + }else{ + $games->updateBal($login, $nameBal, -$amount); + $games->updatePayouts($login, -$amount, $cur_id, $games_id, $today); + } + + } + + die(json_encode($json_array)); + + return $rez; + //setcookie("res", $res); + // return main data array + + +} + + +function checkSett($games_id){ + global $k2; + $rez=[]; + $sql = "SELECT * FROM k2games_name WHERE games_id = ".$games_id." "; + foreach ($k2->db->query($sql) as $row) { + $rez= $row; + } + return $rez; + } + + function content(){ + $rez=$this->scriptHOT(); + return $rez; + } + + + +} diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_pay.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_pay.php new file mode 100644 index 0000000..b719d19 --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_pay.php @@ -0,0 +1,95 @@ +addLog("Платеж liqpay $raw_post_data", 'liqpay.log'); +//// $k2->addLog("Платеж liqpay $raw_post_array[1]", 'liqpay.log'); +// $k2->addLog("Платеж liqpay $dates", 'liqpay.log'); +// $k2->addLog("Платеж liqpay $status", 'liqpay.log'); + + $rez .=$games->showHeader(); + + + + + + + $rez .=" + +
        +
        +
        Cash Games
        +
        + +
        +
        + +
        +
        +
        +
        + + +
        +
        +
        + Games +
        +
        +
        + +
        +
        +
        + +
        "; + + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showGamePay(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_reg.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_reg.php new file mode 100644 index 0000000..8e6efe0 --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_reg.php @@ -0,0 +1,332 @@ +inc('k2games', 'secur'); + } + + + public $reg_form = " +
          +
        • +
        • +
        +
        +
        + +
        +
        Registration
        +
        + +
        +
        +
        +
        +
        +
        +
          +
        • + +

          + {info} + {err} +

          +
        • +
        • + + +
        • +
        • + + +
        • +
        • + + +
        • +
        • + + +
        • +
        • + + +
        • +
        • + + * Я даю свою згоду на отримання, збереження та обробку
          внесених мною персональних даних. +
        • +
        • + +
        • +
        +
        +
        +
        +
        +
        + +
        +
        +
        +
        + "; + + + // Вставляем запись в таблицу контактов + function insUser() + { + global $k2; + $rez = true; + + //Регистрация клиента + $auth_form = $k2->ins_comp('k2auth', 'regform'); + + $secur = $k2->ins_comp('k2games', 'secur'); + + try{ + $auth_form->insUser(['login' => $k2->post("login"), 'password' => $k2->post("passwd1"), 'email' => $k2->post("email"), 'phone' => $k2->post("phone_firm")], $secur->cli_roleid); + }catch(PDOException $e) { + echo "Error Insert User: $sql\n"; + echo $e->getMessage(); + } + return $rez; + } + + + // Обновление личных данных + function updUser() + { + + global $k2; + + // Изменяем текущего пользователя + $login = $k2->auth->login; + + // Изменяем пароль только в том случае, если он указан + $passwdfield = ''; + if ($k2->post("passwd1") != '' && $k2->post("passwd1") == $k2->post("passwd2")) { + $passwdfield = "password='" . md5(trim($k2->post("passwd1"))) . "', "; + } + + // Другие переменные + + $email = $k2->post("email"); + + $sql = "UPDATE wa_contact SET " . $passwdfield . " phone='', email='" . $email . "' WHERE login='" . $login . "'"; + + + try { + $k2->db->exec($sql); + //$k2->db->exec($sql1); + } catch (PDOException $e) { + echo "Ошибка вставки информации о контакте: $sql\n"; + echo $e->getMessage(); + } + + } + + + // Проверка заполненности полей + function check_fill() + { + global $k2; + + $this->err = ''; + $rez = true; + + if ($k2->post("login") <> '' or $k2->auth->isAuth()) { + + if (!$k2->auth->isAuth()) { + if ($k2->post("name") == '') { + $this->err .= '
        * Please fill in name.
        '; + $rez = false; + } + + } + + if ($k2->post("email") == '') { + $this->err .= '
        * Please fill in EMAIL.
        '; + $rez = false; + } + + if (!$k2->auth->isAuth()) { + if ($k2->post("login") == '') { + $this->err .= '
        * Please fill in LOGIN.
        '; + $rez = false; + } + } + + if (!$k2->auth->isAuth()) { + if ($k2->post("passwd1") == '') { + $this->err .= '
        * Please fill in PSSWORD.
        '; + $rez = false; + } + + if ($k2->post("passwd2") == '') { + $this->err .= '
        * Please fill in CONFIRM PASSWORD.
        '; + $rez = false; + } + } + + // Проверка одинаковости пароля + if ($k2->post("passwd2") <> $k2->post("passwd1")) { + $this->err .= '
        ** Passwords must match!
        '; + $rez = false; + } + + // Проверка существования логина + if (!$k2->auth->isAuth()) { + if ($k2->auth->isLoginExists($k2->post("login")) <> '') { + $this->err .= '
        ***This login is already in the database! Please try another!
        '; + $rez = false; + } + } + + + + + } else { + $rez = false; + } + + return $rez; + } + + // Збереження інформації + function save_step1() + { + global $k2; + $rez = ''; + + //if ($k2->post("save_step1")<>'') { + // Проверка заполненности полей + $check_fill = $this->check_fill(); + + // Сохранение информации + if ($check_fill) { + if ($k2->auth->isAuth()) { + $rez = $this->updUser(); + header('Location: /?comp=k2games&c=all'); + + } else { + $rez = $this->insUser(); + if ($rez) { + $auth = $k2->ins_comp('k2auth'); + $auth->checkPassword($k2->post("login"), $k2->post("passwd1")); + header('Location: /?comp=k2games&c=all'); + } + } + + } + //} + + return $rez; + + } + + // регистрации + function reg_pp() + { + global $k2; + + $insinfo = $this->save_step1(); + + $rez = $this->reg_form; + + $rez = str_replace('{info}', $insinfo, $rez); + $rez = str_replace('{err}', $this->err, $rez); + + $rez = str_replace('{name}', $k2->post("name"), $rez); + + $rez = str_replace('{email}', $k2->post("email"), $rez); + + $rez = str_replace('{login}', $k2->post("login"), $rez); + $rez = str_replace('{password}', $k2->post("passwd1"), $rez); + + $rez = str_replace('{disable_passwd}', '', $rez); + $rez = str_replace('{disable_fio}', '', $rez); + $rez = str_replace('{disable_inn}', '', $rez); + + + return $rez; + } + + + // Редактирование полей + function reg_pp_update() + { + global $k2, $games; + $rez = ''; + + if ($k2->post('step2_go')<>'') header("Location: /?comp=k2games&c=all"); + + $insinfo = $this->save_step1(); + + $rez = $this->reg_form; + + $usrinfo = $games->getRegInfo(); + + $rez = str_replace('{info}', $insinfo, $rez); + $rez = str_replace('{err}', $this->err, $rez); + + $rez = str_replace('{name}', $k2->myecho($usrinfo, 'name_firm'), $rez); + + $rez = str_replace('{email}', $k2->myecho($usrinfo, 'email'), $rez); + + $rez = str_replace('{login}', $k2->myecho($usrinfo, 'login'), $rez); + $rez = str_replace('{password}', '', $rez); // По умолчанию, пароль не переопределяем, поэтому, делаем поле пустым + + $rez = str_replace('{disable_passwd}', ' disabled="disabled" ', $rez); + $rez = str_replace('{disable_fio}', ' disabled="disabled" ', $rez); + $rez = str_replace('{disable_inn}', ' disabled="disabled" ', $rez); + + return $rez; + + } + + // Регистрация + function reg() + { + global $k2, $games; + + if ($k2->auth->isAuth()) + + $rez = $this->reg_pp_update(); + else + $rez = $this->reg_pp(); + + return $rez; + } + + // Возвращаем контент + function content() + { + $rez = $this->reg(); + return $rez; + } + + // Выводим контент + function show() + { + echo $this->content(); + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_secur.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_secur.php new file mode 100644 index 0000000..089674d --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_secur.php @@ -0,0 +1,616 @@ +auth->roleid==$this->cli_roleid; + return $rez; + } + + // Является ли текущий пользователь администратором + function isAdmin(){ + global $k2; + + $rez=$k2->auth->isAdmin(); + return $rez; + } + + + // Вернуть массив данных о пользователе + function getRegInfo(){ + + global $k2; + $rez = []; + $sql = "SELECT c.id, c.login, c.name + FROM wa_contact c + WHERE c.login = '".$k2->auth->login."'"; + + try { + foreach ($k2->db->query($sql) as $row) { + $rez = $row; + } + } catch (PDOException $e) { + echo "Ошибка выборки информации о пользователе: $sql\n"; + echo $e->getMessage(); + } + return $rez; + } + +/** + * + * @global type $k2 + * @param type $login + * @return type + */ + function userAccBal($login){ + global $k2; + $rez=array(); + + $sql="SELECT ACCOUNT_BALANCE FROM users where login='".$login."' "; + + foreach ($k2->db->query($sql) as $row) { + $rez= $row['ACCOUNT_BALANCE']; + $rez= round($rez, 2); + } + if(!$rez){ + $rez = 0; + } + return $rez; + + } + + /** + * Get gemes index for control settins(получение игрового коэф.) + * @global type $k2 + * @param type $games_id + * @return string + */ + function checkSett($games_id){ + global $k2; + $rez=[]; + $sql = "SELECT games_index FROM k2games_name WHERE games_id = ".$games_id." "; + foreach ($k2->db->query($sql) as $row) { + $rez= $row[0]; + } + return $rez; + } + +/** + * + * @global type $k2 + * @param type $login + * @return type + */ + function userInvBal($login){ + global $k2; + $rez=array(); + + $sql="SELECT INVEST_BALANCE FROM users where login='".$login."' "; + + foreach ($k2->db->query($sql) as $row) { + $rez= $row['INVEST_BALANCE']; + $rez= round($rez, 2); + } + if(!$rez){ + $rez = 0; + } + return $rez; + } + + +/** + * + * @global type $k2 + * @param type $login + * @return type + */ + function userRP($login){ + global $k2; + $rez=array(); + + $sql="SELECT RP FROM users where login='".$login."' "; + + foreach ($k2->db->query($sql) as $row) { + $rez= $row['RP']; + $rez= round($rez, 2); + } + if(!$rez){ + $rez = 0; + } + return $rez; + } + +/** + * Вывод шапки зтраницы + * @global type $k2 + * @return type + */ + function showHeader(){ + global $k2; + $rez=""; + + $header=$k2->ins_comp('k2games','header'); + + $rez.=$header->content(); + + return $rez; + } + + +/** + * Обновление баланса по результатам игры + * @global type $k2 + * @param type $login + * @param type $nameBal + * @param type $amount + */ + function updateBal($login, $nameBal, $amount){ + global $k2; + + + $sql="UPDATE users SET ".$nameBal."=".$nameBal."+".$amount." WHERE login='".$login."' "; + + $k2->db->exec($sql); + + + + } +/** + * + * @global type $k2 + * @param type $login + * @param type $password + * @return int + */ + function checkDBPassword($login, $password) + { + + global $k2; + + + $sql = "SELECT p.login, p.password FROM users p WHERE (p.login='$login')and(p.password='$password') limit 1"; + + $res = 0; + + foreach ($k2->db->query($sql) as $row) { + + $this->login = $row['login']; + $this->pass = $row['password']; + $res = 1; + } + + return $res; + } + + +/** + * + * @global type $k2 + * @param type $login + * @param type $password + * @return type + */ + function checkLogin($login, $password) + { + + global $k2; + + $sql = "SELECT p.login FROM users p WHERE (p.password='$password') and (p.login='$login') limit 1"; + + $res = 0; + + foreach ($k2->db->query($sql) as $row) { + + $res = $row['login']; + + } + + return $res; + } + + + /** + * + * @global type $k2 + * @param type $game + * @return type + */ + function getStat ($games_id, $cur_id, $today){ + global $k2; + $rez=""; + + $sql="SELECT SUM(won_today) AS won_today FROM k2games_stat WHERE games_id=".$games_id." AND cur_id=".$cur_id." AND game_date='".$today."' "; + + foreach ($k2->db->query($sql) as $row) { + $rez=$row; + } + if(!$rez){ + $rez = 0; + } + return $rez; + } + + + + /** + * + * @global type $k2 + * @param type $games_id + * @param type $cur_id + * @return type + */ + function getWonTotal ($games_id, $cur_id){ + global $k2; + $rez=[]; + + $sql="SELECT SUM(won_today) FROM k2games_stat WHERE cur_id=".$cur_id." ";; + + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + + } + return $rez; + } + + /** + * Получение статистики выиграша + * @global type $k2 + * @param type $games_id + * @return type + */ + function getWinStat ($games_id){ + global $k2; + $rez=[]; + + $sql="SELECT * + FROM k2games_stat c + + LEFT JOIN k2games_cur_type k + ON c.cur_id = k.cur_id + + WHERE c.games_id = ".$games_id." AND c.latest_winday = (SELECT MAX(latest_winday) FROM k2games_stat) "; + + foreach ($k2->db->query($sql) as $row) { + $rez=$row; + + } + return $rez; + } + + + + /** + * + * @global type $k2 + */ + function getPlaysTodayTotal($cur_id, $today){ + global $k2; + $rez=[]; + $sql="SELECT SUM(plays_today) FROM k2games_stat WHERE cur_id=".$cur_id." AND game_date='".$today."' "; + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + } + return $rez; + } + + /** + * + * @global type $k2 + * @return type + */ + function getBetsVolToday($cur_id, $today){ + global $k2; + $rez=[]; + $sql="SELECT SUM(bets_volume) FROM k2games_stat WHERE cur_id=".$cur_id." AND game_date='".$today."' "; + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + } + return $rez; + } + + /** + * + * @global type $k2 + * @return type + */ + function mostPopGame($cur_id, $today){ + global $k2; + + $sql="SELECT g.games_name + FROM k2games_name g + + LEFT JOIN k2games_stat m + ON g.games_id = m.games_id + + WHERE m.games_id = (SELECT games_id FROM k2games_stat WHERE m.plays_today = (SELECT MAX(plays_today)) AND cur_id=".$cur_id." AND game_date='".$today."') "; + + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + + } + if(!isset($rez)){ + $rez = 0; + } + return $rez; + } + + /** + * + * @global type $k2 + * @param type $cur_id + * @param type $today + * @return type + */ + function playMemToday($cur_id, $today){ + global $k2; + $rez=[]; + $sql="SELECT COUNT(play_id) FROM k2games_player_stat WHERE cur_id=".$cur_id." AND play_date='".$today."' "; + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + } + return $rez; + } + + /** + * + * @global type $k2 + * @param type $game_id + * @param type $today + * @return type + */ + function getPlayToday($games_id, $today){ + global $k2; + $rez=""; + $sql="SELECT SUM(num_plays) FROM k2games_player_stat WHERE games_id=".$games_id." AND play_date='".$today."' "; + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + } + if(!isset($rez)){ + $rez = 0; + } + return $rez; + + } + + /** + * + * @global type $k2 + * @param type $games_id + * @param type $cur_id + * @return type + */ + function getPlayTotal ($games_id){ + global $k2; + $rez=[]; + + $sql="SELECT SUM(num_plays) FROM k2games_player_stat WHERE games_id=".$games_id." "; + + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + + } + return $rez; + } + + /** + * + * @global type $k2 + * @param type $cur_id + * @param type $today + * @return type + */ + function bigPrizeToday($cur_id, $today){ + global $k2; + $rez=""; + $sql="SELECT MAX(bigest_prize_today) FROM k2games_stat WHERE cur_id=".$cur_id." AND game_date='".$today."' "; + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + } + return $rez; + } + + /** + * + * @global type $k2 + * @param type $cur_id + * @param type $today + * @return type + */ + function totalRevenueToday($cur_id, $today){ + global $k2; + $rez=""; + $sql="SELECT SUM(total_bets) AS total_bets, SUM(payouts) AS payouts FROM `k2games_player_stat` WHERE cur_id=".$cur_id." AND play_date='".$today."' "; + foreach ($k2->db->query($sql) as $row) { + $rez=$row['total_bets']-$row['payouts']; + } + return $rez; + } + + /** + * + * @global type $k2 + * @param type $login + * @return type + */ + function checkPlayerToday($login, $cur_id, $today){ + global $k2; + $rez=[]; + $sql="SELECT player FROM k2games_player_stat WHERE player='".$login."' AND cur_id=".$cur_id." AND play_date='".$today."' "; + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + } + return $rez; + } + + /** + * + * @global type $k2 + * @param type $today + * @return type + */ + function checkGameToday($games_id, $cur_id, $today){ + global $k2; + $rez=[]; + $sql="SELECT games_id FROM k2games_stat WHERE game_date='".$today."' AND games_id=".$games_id." AND cur_id=".$cur_id." "; + foreach ($k2->db->query($sql) as $row) { + $rez=$row[0]; + } + return $rez; + } + + /** + * + * @global type $k2 + * @param type $login + * @param type $amount + * @param type $cur_id + * @param type $games_id + */ + function greateNewPlayer($login, $amount, $cur_id, $games_id, $today){ + global $k2; + + $sql="INSERT INTO k2games_player_stat (player, num_plays, total_bets, games_id, play_date, cur_id) + VALUES ('".$login."', 1, ".$amount.", $games_id, '".$today."', $cur_id)"; + $k2->db->exec($sql); + } + + /** + * + * @global type $k2 + * @param type $games_id + * @param type $cur_id + * @param type $amount + * @param type $today + */ + function greateGameToday($games_id, $cur_id, $amount, $today){ + global $k2; + $sql="INSERT INTO k2games_stat (games_id, plays_today, bets_volume, cur_id, game_date) + VALUES (".$games_id.", 1, ".$amount.", ".$cur_id.", '".$today."') "; + $k2->db->exec($sql); + } + + + /** + * Обновление статистики после каждой игры + * @global type $k2 + * @param type $game + */ + function updateStat($amount, $cur_id, $today, $games_id, $today){ + global $k2; + + $sql="UPDATE k2games_stat + SET plays_today=plays_today+1, bets_volume=bets_volume+ ".$amount." + WHERE games_id='".$games_id."' AND cur_id=".$cur_id." AND game_date='".$today."' "; + + $k2->db->exec($sql); + } + + /** + * Обновление статистики в случае выиграша + * @global type $k2 + * @param type $login + * @param type $amount + * @param type $windate + * @param type $games_id + * @param type $cur_id + */ + function updateStatWin($login, $amount, $windate, $games_id, $cur_id, $today){ + global $k2; + + $sql1="SELECT bigest_prize_today FROM k2games_stat WHERE games_id='".$games_id."' AND cur_id=".$cur_id." AND game_date='".$today."' "; + foreach ($k2->db->query($sql1) as $row) { + $rez=$row[0]; + if($amount>$rez){ + $sql="UPDATE k2games_stat + SET won_today=won_today+".$amount.", latest_winmember='".$login."', latest_winval=".$amount.", latest_winday='".$windate."', bigest_prize_today=".$amount." + WHERE games_id='".$games_id."' AND cur_id=".$cur_id." AND game_date='".$today."' "; + }else{ + $sql="UPDATE k2games_stat + SET won_today=won_today+".$amount.", latest_winmember='".$login."', latest_winval=".$amount.", latest_winday='".$windate."' + WHERE games_id='".$games_id."' AND cur_id=".$cur_id." AND game_date='".$today."' "; + } + $k2->db->exec($sql); + } + } + /** + * Обновление статистики игроков + * @global type $k2 + * @param type $game + */ + function updateGamePlayer($login, $amount, $cur_id, $games_id, $today){ + global $k2; + + $sql="UPDATE k2games_player_stat + SET num_plays=num_plays+1, total_bets=total_bets+".$amount." + WHERE games_id='".$games_id."' + AND player = '".$login."' AND cur_id=".$cur_id." AND play_date='".$today."' "; + $k2->db->exec($sql); + } + + + + + /** + * + * @global type $k2 + * @param type $login + * @param type $amount + * @param type $windate + * @param type $games_id + * @param type $cur_id + */ + function updatePayouts($login, $amount, $cur_id, $games_id, $today){ + global $k2; + + $sql="UPDATE k2games_player_stat + SET payouts=payouts+$amount + WHERE games_id='".$games_id."' + AND player = '".$login."' AND cur_id=".$cur_id." AND play_date='".$today."'"; + $k2->db->exec($sql); + } + + /** + * + * @return string + */ + +} + +/** + * + * @global type $k2 + */ +function init_games(){ + global $k2; + + if (!isset($games)){ + $games=new k2games_secur(); + + $GLOBALS['games']=$games; + + $games->init(); + } +} + + + +// Инициализация +init_games(); + diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_statCash.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_statCash.php new file mode 100644 index 0000000..cca2372 --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_statCash.php @@ -0,0 +1,134 @@ +get('login'); +// $password=$k2->get('pass'); +// +// $login = $games->checkLogin($login, $password); +// +// +// $login="RCC"; + + $rez .=$games->showHeader(); + + + + + + $sql="SELECT n.games_name, SUM(num_plays) AS num_plays , player, SUM(total_bets) AS total_bets, SUM(payouts) AS payouts + FROM k2games_player_stat g + + LEFT JOIN k2games_name n + ON g.games_id = n.games_id + + WHERE g.games_id=".$games_id." AND cur_id=".$cur_id." GROUP BY player + "; + + $rez .=" + +
        +
        +
        Cash Games
        +
        +
        +
        + +
        +
        +
          +
        • Total Plays Today: {Plays_Today_Total}
        • +
        • Bets Volume Today: {Bets_Vol_Today}
        • +
        • Most Popular Game Today: {Most_Pop_Game}
        • +
        +
        +
        +
          +
        • Members Playing Today: {Play_Today}
        • +
        • Biggest Prize Today: $ {Big_Prize_Today} - {Most_Pop_Game}
        • +
        • Total Revenues Today: $ {Total_Revenue_Today}
        • +
        +
        +
        +
        +
        + + + + + + + + + + + + "; + foreach ($k2->db->query($sql) as $row){ + + $total_bets=$row['total_bets']; + $payouts=$row['payouts']; + $revenue = $total_bets-$payouts; + $rez.=" + + + + + + + "; + } + $rez.=" +
        GamesMemberN of playsTotal BetsPayoutsPortfolio Revenues
        ".$row['games_name']."".$row['player']."".$row['num_plays']."".$row['total_bets']."".$row['payouts']."".$revenue."
        +
        +
        +
        + Games +
        +
        +
        + +
        +
        +
        + +
        "; + $rez=str_replace('{Plays_Today_Total}', $games->getPlaysTodayTotal($cur_id, $today), $rez); + $rez=str_replace('{Bets_Vol_Today}', $games->getBetsVolToday($cur_id, $today), $rez); + $rez=str_replace('{Most_Pop_Game}', $games->mostPopGame($cur_id, $today), $rez); + $rez=str_replace('{Play_Today}', $games->PlayMemToday($cur_id, $today), $rez); + $rez=str_replace('{Big_Prize_Today}', $games->bigPrizeToday($cur_id, $today), $rez); + $rez=str_replace('{Total_Revenue_Today}', $games->totalRevenueToday($cur_id, $today), $rez); + + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showStatCash(); + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2games/k2games_statRP.php b/k2shop/k2shop/app/deleted/games/k2games/k2games_statRP.php new file mode 100644 index 0000000..ab8580a --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2games/k2games_statRP.php @@ -0,0 +1,127 @@ +get('login'); +// $password=$k2->get('pass'); +// +// $login="RCC"; + + $rez .=$games->showHeader(); + + + + + $sql="SELECT n.games_name, SUM(num_plays) AS num_plays , player, SUM(total_bets) AS total_bets, SUM(payouts) AS payouts + FROM k2games_player_stat g + + LEFT JOIN k2games_name n + ON g.games_id = n.games_id + + WHERE g.games_id=".$games_id." AND cur_id=".$cur_id." GROUP BY player" ; + $rez .=" + +
        +
        +
        RP Games
        +
        +
        +
        +
        +
        +
          +
        • Total Plays Today: {Plays_Today_Total}
        • +
        • Bets Volume Today: {Bets_Vol_Today}
        • +
        • Most Popular Game Today: {Most_Pop_Game}
        • +
        +
        +
        +
          +
        • Members Playing Today: {Play_Today}
        • +
        • Biggest Prize Today: RP {Big_Prize_Today} - {Most_Pop_Game}
        • +
        • RP Issued/Consumed Today: RP {Total_Revenue_Today}
        • +
        +
        +
        +
        +
        + + + + + + + + + + + + "; + foreach ($k2->db->query($sql) as $row){ + + $total_bets=$row['total_bets']; + $payouts=$row['payouts']; + $revenue = $total_bets-$payouts; + $rez.=" + + + + + + + "; + } + $rez.=" +
        GamesMemberN of playsTotal BetsPayoutsRP Issued/Consumed
        ".$row['games_name']."".$row['player']."".$row['num_plays']."".$row['total_bets']."".$row['payouts']."".$revenue."
        +
        +
        +
        + Games +
        +
        +
        + +
        +
        +
        + +
        "; + $rez=str_replace('{Plays_Today_Total}', $games->getPlaysTodayTotal($cur_id, $today), $rez); + $rez=str_replace('{Bets_Vol_Today}', $games->getBetsVolToday($cur_id, $today), $rez); + $rez=str_replace('{Most_Pop_Game}', $games->mostPopGame($cur_id, $today), $rez); + $rez=str_replace('{Play_Today}', $games->PlayMemToday($cur_id, $today), $rez); + $rez=str_replace('{Big_Prize_Today}', $games->bigPrizeToday($cur_id, $today), $rez); + $rez=str_replace('{Total_Revenue_Today}', $games->totalRevenueToday($cur_id, $today), $rez); + + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showStatRP(); + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2gamesadmin/k2gamesadmin.php b/k2shop/k2shop/app/deleted/games/k2gamesadmin/k2gamesadmin.php new file mode 100644 index 0000000..e7ed965 --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2gamesadmin/k2gamesadmin.php @@ -0,0 +1,54 @@ + ["root","k2games",'Games rules'], + 'elements' => [ + ["k2games_rules","Settings","?adm=k2gamesadmin_rules", ['','']] + ] + ] + ]; + + return $arr; + } + + + // Обработка команд + function admCommands($comm){ + + global $k2; + $rez=false; + + $s=$k2->getComp($comm); + if ($s[0]<>'k2gamesadmin'){ + return; + } + + $comp=$k2->ins_comp($s[0], $s[1], true); + if ($comp<>'') + echo $comp->content(); + + return $rez; + + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/games/k2gamesadmin/k2gamesadmin_rules.php b/k2shop/k2shop/app/deleted/games/k2gamesadmin/k2gamesadmin_rules.php new file mode 100644 index 0000000..8c7cd86 --- /dev/null +++ b/k2shop/k2shop/app/deleted/games/k2gamesadmin/k2gamesadmin_rules.php @@ -0,0 +1,81 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select * + from k2games_name ", + 'table' => "k2games_name", + 'sortname' => 'games_id', + 'sortorder' => 'asc', + 'caption' => 'Games', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'games_id', + 'caption' => 'ID', + 'width' => '40', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'games_name', + 'caption' => 'Games name', + 'width' => '250', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'games_index', + 'caption' => 'Games index', + 'width' => '250', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'max_prize', + 'caption' => 'Max prize', + 'width' => '250', + 'readonly' => false, + 'align' => 'left' + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + //$k2->site->h1=$this->Translate("{lnUnitMeasurement}"); + + return $rez; + + } + + + + // Возвращаем контент + function content(){ + $rez=$this->showRules(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/k2cfg/README b/k2shop/k2shop/app/deleted/k2cfg/README new file mode 100644 index 0000000..6aa0e9b --- /dev/null +++ b/k2shop/k2shop/app/deleted/k2cfg/README @@ -0,0 +1,2 @@ +Configurator K2 (Конфигуратор К2) + diff --git a/k2shop/k2shop/app/deleted/k2cfg/k2configurator/README b/k2shop/k2shop/app/deleted/k2cfg/k2configurator/README new file mode 100644 index 0000000..d68360d --- /dev/null +++ b/k2shop/k2shop/app/deleted/k2cfg/k2configurator/README @@ -0,0 +1,4 @@ +Configurator K2 System + + + diff --git a/k2shop/k2shop/app/deleted/k2cfg/k2configurator/k2configurator.php b/k2shop/k2shop/app/deleted/k2cfg/k2configurator/k2configurator.php new file mode 100644 index 0000000..d1b2bd5 --- /dev/null +++ b/k2shop/k2shop/app/deleted/k2cfg/k2configurator/k2configurator.php @@ -0,0 +1,60 @@ + array("root","k2Configurator",$this->Translate("{lnConfigurator}"), "fa fa-code-fork"),//Иконка для категории меню админки + 'elements' => array( + array("k2structure_configurator",$this->Translate("{lnStructConfigurator}"),"?adm=k2configurator_structure", array('','')), + array("k2modules_configurator",$this->Translate("{lnModuleConfigurator}"),"?adm=k2configurator_modules", array('','')), + array("documents_configurator",$this->Translate("{lnDocumentsConfigurator}"),"?adm=k2configurator_documents", array('','')), + array("sprav_configurator",$this->Translate("{lnSpravConfigurator}"),"?adm=k2configurator_sprav", array('','')), + array("forms_configurator",$this->Translate("{lnFormsConfigurator}"),"?adm=k2configurator_forms", array('','')), + array("reports_configurator",$this->Translate("{lnReportsConfigurator}"),"?adm=k2configurator_reports", array('','')), + array("scripts_configurator",$this->Translate("{lnScriptsConfigurator}"),"?adm=k2configurator_scripts", array('','')) + ) + ) + + ); + + return $arr; + } + + + // Command Processing (Обработка команд) + function admCommands($comm){ + global $k2; + $rez=false; + + $s=$k2->getComp($comm); + if ($s[0]<>'k2configurator'){ + return; + } + + $comp=$k2->ins_comp($s[0], $s[1], true); + if ($comp<>'') + echo $comp->content(); + + return $rez; + + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/k2cfg/k2configurator/k2configurator_documents.php b/k2shop/k2shop/app/deleted/k2cfg/k2configurator/k2configurator_documents.php new file mode 100644 index 0000000..118bde3 --- /dev/null +++ b/k2shop/k2shop/app/deleted/k2cfg/k2configurator/k2configurator_documents.php @@ -0,0 +1,18 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select type_prichid, name_type_prichin, comment_typeprich from dpTypePrichin ", + 'table' => "dpTypePrichin", + 'typeid'=>1, + 'sortname' => 'type_prichid', + 'sortorder' => 'asc', + 'caption' => 'Типи причин відмови', + /*'is_edit' => true, + 'is_clone'=> false,*/ + 'fields' => [ + ['field' => 'type_prichid', + 'caption' => 'ID типу причини відмови', + 'width' => '120', + 'readonly' => true, + 'align' => 'center', + 'hidden'=>true + ], + + ['field' => 'name_type_prichin', + 'caption' => 'Причина відмови', + 'width' => '500', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'comment_typeprich', + 'caption' => 'Примітки', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ] + + ] + ]; + + $rez .= $grid->simpleTable($arr); + + echo $rez; + // return $rez; + + + } + + // Возвращаем контент + function content(){ + $rez=$this->showTypePrichVidmov(); + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/deleted/k2mantis/k2mantis.php b/k2shop/k2shop/app/deleted/k2mantis/k2mantis.php new file mode 100644 index 0000000..8e079ee --- /dev/null +++ b/k2shop/k2shop/app/deleted/k2mantis/k2mantis.php @@ -0,0 +1,60 @@ + array("root","bugs","Баг трекинг", array('','')), + 'elements' => array( + array("bugs_dinamic","Динамика","?adm=bugs_dinamic", array('','')), + array("bugs_reports","Отчеты","?adm=bugs_reports", array('','')), + array("bugs_settings","Настройки","?adm=bugs_settings", array('','')) + ) + ) +*/ + + ); + + return $arr; + + } + + + // Обработка команд + function admCommands($comm){ + + global $k2; + $rez=false; + + $s=$k2->getComp($comm); + if ($s[0]<>'k2mantis'){ + return; + } + + $comp=$k2->ins_comp($s[0], $s[1]); + echo $comp->content(); + + return $rez; + + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/mantis/k2mantis/k2mantis.php b/k2shop/k2shop/app/deleted/mantis/k2mantis/k2mantis.php new file mode 100644 index 0000000..9d08677 --- /dev/null +++ b/k2shop/k2shop/app/deleted/mantis/k2mantis/k2mantis.php @@ -0,0 +1,77 @@ + array("root","bugs","Баг трекинг", array('','')), + 'elements' => array( + array("bugs_dinamic","Динамика","?adm=bugs_dinamic", array('','')), + array("bugs_reports","Отчеты","?adm=bugs_reports", array('','')), + array("bugs_settings","Настройки","?adm=bugs_settings", array('','')) + ) + ) +*/ + + ); + + return $arr; + + } + + + // Обработка команд + function admCommands($comm){ + + global $k2; + $rez=false; + + $s=$k2->getComp($comm); + if ($s[0]<>'k2mantis'){ + return; + } + + $comp=$k2->ins_comp($s[0], $s[1]); + echo $comp->content(); + + return $rez; + +/* $rez=false; + + /////// Баг трекинг ////////// + if (trim($comm)=='bugs_dinamic'){ + + echo "Динамика баг-трекинга"; + + }elseif (trim($comm)=='bugs_reports'){ + + echo "Отчеты"; + + }elseif (trim($comm)=='bugs_settings'){ + + echo "Настройки"; + + } + + return $rez;*/ + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/image/privat24.png b/k2shop/k2shop/app/deleted/obmen/k2obmennik/image/privat24.png new file mode 100644 index 0000000000000000000000000000000000000000..870c554f0dbc4794afa3731fb214a63d4066a46e GIT binary patch literal 1881 zcmaJ?c~BE)9L-2QF$e*%QlM+X5vs}Ngd{^m$a18Z$R);Dk0n_kqshkXVggzf1Wiyx zJg8Wisa#sDpnw;66)0*2Q4t!IY8$CX1y5QpaJoUz{!zL!yWcVIz2EV@Z`Kkck0ej> zm_#Cx$kHe%ju<)icfvU0>m6b~LJZUKa0MQZCgVoffRIAfXc7WQwQvd&hrsIel^2m< z63M|&lc2yAvbiD^s%64<4AZ356KoPGIK-rfRm%|^NJ3IHIx+Q0!&xezQH!Yy_%fDE zFF{f@Q5gm#K0}_M%2=)vs;MEffnbw}5YQqx44AYlbePB_rViAyR27-i4HlH69#F+(fSZp51VuNfhgDn*Ccp?@H7=EZkG=n-> z6bD5N$0Al@YATNFMIdN28kt5e6E&oOY@tvHvN#}z!yph0EM14gCWa29jVM3}rZQ;s zxCYe$c11V|O~b`hBGdOJX!Rdtb=Yv5h=zeCSP!z9EPF{KK$-0Sp<3++G=|3^AM^cB zVJsnCkAQIqhNc-*#K9%g?4k4`i2;Fe)R2IpD@M8)lZxUfmWt{DiDam20DXZ*r$&uf zzz|0!6G?R#4(n8i6cSSj6{bd`76q~*xRS8I&_G^9D4QM56A1X>P!KPW#R-(~d7;7) zE`+Mmw1^HL;i^A!!$#%W?V!~Yks-vOS%s)045$_uDqEx(Jr}{Kdc$1x=(z|-<$^>q zp#5iM3E-uxYGx3c-@&5-<^(|fSfff%b+HG)pygr z_4q_p{xqeR`@7c9N@;75=H7>1w6@%;_G-HwVOh#kTBnnhi8CBsCu%H;*)fTho^4l8 z^-uVLadgeKA-*`UCD~ZHzbn~}4*cdiiQt$$^v)2Z+M{v2i$?V1^F!_H*am{wVQP;cHvBx)!UjMT}dt5n;v&1*n9&C#LmC#SXWtkV^LwESJ9Lf_yp>4JH$J?>e6h} z+Ri7AlXG6CcL|dVl@$TK6*KE+E~-PzXY^Zf){H7_U0W}7J^zT$wUn)^b1Lo@ zKySp_nCH96lQ%B98ojh~d31G73ym63DEn>U8FEwu;Bj=*GLHA!zvWp?sva#K%k*nS82u3x17&%Zo+~nU?dbD7 z>DtToY3z6ZrBvnjSk#tRP&T;uT+M#^GjkR@%yspS!-$3T$HB@wW2-L|`Zgv>YL}LF zZ7rBQSMl62m+XPI*?8~@=UXLUu%Ch6)m7lK;ljX|YqqI!m5~=36Ua@CFEiz@-qr@x rx7L&%9++2LCx3P3L}%Ohx3qJlD;!`~D81cc|Jg~y=r9stnRQydNotm}t#PH)Z_6;uW?83@ z$#Qm}B_S&|ESwcY7%`T}SHw|s`8<}t#Fr-$`TO%fWbwH?AOn*1BnxQmL)C{Po$D^HrtY@(ro=zr^}k;CJ0 zxS}YYpOh~i&*f7kX&1pZ4G0iMptvTZn*c(8Dc{dNhTTjs2Gu+$LL%=J#eS|`98@jU z5JnwBDsUZ=fWZcRf(-5)w42#cQqmwoOBktTVG4l^?rzx5%UWjAV7-Y%^lB_vsh|dY zaU7NUix7mX7GfN=1QT*Zs8G$3@I_({S0EN(Voc&M;Q3i0hK1R?cL}W|)Tx$Mp+ehE z6_ij@;X9Xw2>mnylxlH5p$4HgipoZ{zKDaM@nR|&pNApw?TPGybxAbch*O6iqP3f2 zxfYa4rr`^Od@+h}_&h|+i5Ceq97#OJ8hC+MnBlcWbFXw+C+>PyfGd=qzD%BBD>gPzBsxz3l_NXEk_=!XUkqichL630UjA>()ICTh{EQg7Rx-P2^D0J%> z*OQ~2(B^2{D!UspYY*B+soOp3P8069)$G!q9Y@$-`J?lS{>rF8EG7v6gx+Lu(enXR z1{VN?-ehpm^8r)_7XXCbWN^{*0aOMT0EFITaMAMtR0bCSgx+Lu(enXR1{VN?-ehpm z^8r)_7XXCbWN^{*0aOMT0EFITaMAMtR0bCSgx+Lu(enXR1{VN?-ehpm^8r)_7XXCb zWN^{*0aOMT0EFITaMAMtR0bCSgx+Lu(enXR1{VN?-ehpm^8r)_7XXCbWN^{*0aOMT z0EFITaMAMtR0bCSgx+Lu(enXR1{VN?-ehpm^8r)_7XXCbWN^{*0aOMT0EFJ8#nr#_ z;Z00WJ+YZiJ(`)X$P1z#>tv}_5n&LN=>RFLuRltFv{F`p)n&jI(o!=kL&M#)8MnxZExJ-oMPQ)R|duQJJ;N=B&R5R=6QDD z7G>bjNlsY);K9DDiwpA3&t5n;yf|kazNcufs-(DNX4&dfEhprC>MtL9bmMte=(E?! zx6|wP-Nrj5+0E=nfz&_wpyB%Ut@MXb?!jDyigl` zq_9xzb{TOvu;qf>VaiSNlacYmACLI*SmUP|MJ`@@f6Ff{?|qB^g=%8VwE|J1OKVJy zYV^#Vo>Mm)n?qg|d>n#*a{9usf~$_$`0A`VIolJD@{sE-RlO#)2;8a-ZhP0PuRXrD zs4?efvqQj;#9tiyaEC4Y!fSU+_5H^eV~UfL4vh$E7Liq9-kvxAb})Msk~FPOY+lmr zv|*+T`%DEJP8;pZxxM?&&FR-Z-&`&XdOht0>jGR-yJ#n5N*O$6HG=GLEP3?CIkocU znTWh)M|BzHFS(mfmn3C*Y!Gh9KC#s6e4mD=@u7x&C+AM~s1Poz!D~Lq820j?H4nq% zPA@I#l~OTwe9_k)Yu)DsY{>UnK7}`SOP!Zk;#5>|@7aR;O_|%KZx#3~uia$WbgD*k zaMmRDXE!gclJ;rHT~^@TI%0j4`EuZuf>1xTPqQvX?}jtPf$IALJ0OnE$<7 z(d8$fW}IsvwkU80`gQV zj>~o}R{Hhzp0(;j%Ms)Bk;UXe3cy zo4MR;*SIY!EB`(LH5uZ*y}4zReAw=XFLcUcpMM>4ada*7oZ*miaggxmYio6gTr-5d zYv7J=NTCE-q53~uuTyb9448AP&Us^ttJ4nepzC#BW!p_p zMt$k{+I#W)vbE<7iO%@Evb*azjvJM}P33*>ldeBief-~iJ#W>{ zTKv_M86GuRTF2o@q5X?|t48e?AD@9ZrwuYKD-4Q!u_un_;k2M&ZFaJ8>VgchH(FYu za9{drcj}98SM`lv(=_Ax)q}#=la6WcxtzXQb;9A7?_?fV*WD{kaISN|{%G|A7m4Sh zsX~Fr@WLg_cPwfB;|$iy-tUn=FC{!@&xw$%F~(N+=7!$u&>e6@OtWjh$xWKR+BbY; z-`!*Q#M&fm?1~@U7dQ1T3cWF_$?4LO>hIyBl}(!}cn1xAT&hz_^EdX&c-rI`eAqBF z_xJ;j{K4yI%QrS*F-w;1`7!rSs`Igj*{uEhat0mQc3$a|mt9(Uyr4pwSX{d6Qfprh z(pXoO|5WdK|HlAl*Y66pmVWf+_Xn$UH+iNn79cU&2b*3u2h0AEc95u7HhMmp{`e8} Y}R_mA6sKcDygEuZIkzT5N1o8m|FTC8ub4}m}y zQ@qJ^^@^T<7wD?LYuuBo)Qg$SBS;n?;>zSK2>>B*MBxCGB49-Tbb!U#5z_*=Kpe6br}Nvyo^N)CmViVX;n5XgeqxiE=<7Q3w>q9)-g@IN*^;=+_6Pjwa!7 z@pQ81*I4S4D~usM20)fKea0nzCfkxY_5%$s@LK#b8FO*t+Qy>FU zwuCR1@kK)Dydo=H6f1LusWbh%1cCUwtWf&3P3ndr6f7|U1xL=8^bJU*{(q=I@Et9c z(SiTu`#*)Hj2&VCK?kIwSP5G_IIh)vC^4QS0a!ATgdq||f9s+jPb3pbc_J~CMEcS- z=!R{4Ax9*a{`7@IrQ#_jSohljHV>Km6VV#f*qq3j!%^PP)9{*XIw2Z2}}nG8tyaRA3tA`(Eql#S>AI2ZB{ z^}cdBKg@lM~~vqxn;F1rxaX?wS4z z0sj6*&gLbd#A%(^SMrr09{h>5EXB%r>B7b-+*Tyb&vcA~Sh66b4Q$G(`>3<+;MB1o zW6BD>UD>OoG?L`n}V!;M%sD32pfui}am3dfHml zK@k|NBhbG4!oubeqUOZ34_M)y{5-uY4YoHQd<9bKKBs_e9SmQ-BEc%V)japQ?fZ4c zuyggnBwV{~$(gY9Ft>s{-Y>s}T^TAYJTR1~B)ViS+nx|b<6eeR#qniiW9_w*lY9_i zXHWq6VJ{$)>+UOYEX?f zJEt5xJ7+=&ply2^qKy1tkrVSU=Jx%E!UMI58@y3ZG7C{j*2k?@-Wg3G6eG6#WxWT( zQVW+QHnFvQUb{>mC}l-FwWG5e^p!tz`!=gSFKNWZJ~k!y*G>++jc%?VC?A+S(uK?$ zfHzqSk=LebhtO+du)T30*KN~tL{QiVhknH)r+0eFS9SfXlOuc_5|hM_Y1O@#V@em$ z3_p##ryESoBpCRt?@kI^(VjxbR9>?zLafr_d)?A;a!>I(IqLmfxXS}_Wt~26w5amj zuJh30{5ki|cEY;_pB)lORVOsA4Bj>@n6$4jG`U-p*SKh~!7aBHU~Mt0PDo{($us+1 zKlbI((=`@)?f2ge)MX|&Rj$8z9hKg}ZJyD#&6+xDlB+*su%;&K>SgD)>1SrOj|Dn6 z(zMKym@3C7af{G85l_nDM2pah2BqpIYL-geGUTR7LvKQ6AF#umprfAS#@{#^$kJPa zcANA?Kl=p!9hXR7hiR(vF>S`^;$C=`?HgRu4uwOh@IzmLcK803inp@@R~f1;0d*=MhSIxA zbNED^p6?z%)TS3B+iBy3-jqjv3ze-c=IDb_J!ScZ*@j%*qR2k&2(JDzRZ!JDgScsH&?szQNP(SDjE#%dP~t- zl1Rn2;W#<^8T3WcxqGFJ856|*@mPG;oqG-%icR-Z8H~i7__9`+>A8WYzHyiO4DJ#8 zJ=@_n8($rbtW}-HE@5d1ds8q&{*6O-(>`qV>IkseQRd@*q_5{rbZG9&9F@Vqg^deC zH3nX;44LLWDcY+m!C!pyHj5~ZXUAf z`xAJ~ekQZ6S(V+tmSv8s{7zSIHK0BFeEry?qP>&xajyNGYdyK) zT}BnHJUiy7(fZ8&&gGldg_vIkS9WBqo4C5Nqeb>=V_vuI66qUW0J53AYx7~-%*dRN zxkhlVSHNw>o{hr|^sdt;b1i|R+K~mV`f((?a|g(WK%<{&y3Ak>JjRxXd;Xe9=8O-I zF@4(7;Q7`Cxs#VN8vQd$>|Vomf@kKG$>YUgh8Nqj3PY^ZA#cklG2XDGUM7?Qv$cXQ zN6@{kF@|s>xpkUemdpJ>6Dvz&Xn}3AWlH(4hc!E`jSHKRHoEIPCBPDLYBJ`E?9gJY z{h;pW@;z=AWBbLs^Sh!0QoC>0T=WVKF|x|Yi7Gss?EK)6w{gB8VEKaRk;;qMA-+-P z{#Ha_r_qg^L0AoF>q|6wQXQhgt?}<4s~v+wndDsFaM7}VmdufgJ?eB5O8HyNPTn@J mEc;me_7A+*UHAN1>zfeghJ>AlyL~A0e_s?28o81f2L1)L#xz3! literal 0 HcmV?d00001 diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/image/visamaster.png b/k2shop/k2shop/app/deleted/obmen/k2obmennik/image/visamaster.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5d8cf72125f1d79dd002fef36309709c616768 GIT binary patch literal 20190 zcmeI4cT|&E(C`B&Qbds=O({W&v=j)vtaK2NDn$`O2t|5AM|zPi2nYg85d;KjA_&ry zsuV$*G(kWF>0JbYH|Sb6>*nk^@B5wapX8jBxpQac-rvmJ=lSPJn5Kpj1sNk5005v+ zQI^-nd_xc4B*d6cW|`1Z%onMnvLPA(Ag4Zj69AG^=>Y(-57xQ{&Iamg;s^&j0l2w? z8B)OA&Ji;k0Fab%cZ4Hskj|`TNK0#bDd2K-J&@JfTneZUQwOU%$|0?+l|4~N9ZwBi zgr^Nc%p52qO(y9sj&WdzbcVCK+u7Qq#oeWVU;T<>ejg5lfUIAqINL}8FB}GBHBi@N zm2*HLSz!V&egqf_VHFV*fWTlPB2Ye7C>SCH0z*I$L4JssxR8)I7|iZUSzC0uCrk5JXH&3@GcD+gx>w3WlZg#4lY*T9&ZsH^{o{oD20 z+5I*&+F8LBgWxZuzqLf`dN?9M+DNp63krc$aK&te{dc=}wzl}0oWFTG)cot(k?z+2 zVs@zcX7;rdzGX-fvsZCB6cX<2fYNnvu$BH+Wt!g+vdYPQttwV-eQSGj2RHP2Nf5Tl z&wT&%hLndpBc%`Pksku#2g7tB!s1X-UN96>lD~NPHVw;xx`Vm3g~x9k2tmamLcjX> zWhS-{O!Jt-o#Fq<%dc~P@nen!NVt$7znFy( zlwSx66BPjq!bHu?kY6FHtN&{L57+Vz2$#cF!MOf*s+c<NaI^1$esT7XK$lR~m_rY4`^%iey_jQynTc7zMG(SB zeseKQEg&s~%=kqiW^jHXAt6yA5hzA21pOZ3H*WqBO4%BXDOHbON*GhfUyn5%q|@I= zzbkC5zaCGHa1)*|=-AjTF zuL8E#{|~Z&hP(dna`4|;>VKDmza3Bi|I+ZYgb`M7drPFbH0XQvejoU6nfsQ{zqi%* zR{duiN*-R8#4#<5sVMl@)`3WZ{xSA5^0)a0hplMq@^!ul6pVR+AcvoSnf|KAHZ{a; z`l}k-^rxksy|uG6<^cM-P^{r!tPZc8-_CX&%xxZ0S{Mcsgh_(1hp{a*t=*Bf2J+UJ zLl}K{n7}am`f7u%_^qMgzZw3b_{;EHs(!g4``UxwMlrX0m^)3-k6X=uwC9f_?Emt| z&mH|=dd2dE4}t{*w}{7un-7*2j|&S3ZV`_QHy+EG-@v77*Mb9v5ytSXw+TEFic=oVdt-KD>#v$2_s=hIuqI z@_lI==CMvzgtE3e0N}|10Qdz00G|&q-yZ=07cc-YX9@s_CjkI-4!2F36#)Pml#2WX zUH9RIWRLi(%`OKrdJZ4o%s)(KP{~3nQVn+pn6ncITYUDX5WeOcWIDNh6XNc6hKmwB zSXvtBPf0|4;)LmR(mCSDNW*}mR8*`)W^qS`KgC*PGjxvidez^z-%lbSkC`&q;o_Qc z>#EAF9)D1jU+ukIyQvyRa=@g#ULUj&o4``3b~M=9%1!?92vHDW8ESwM4N|Puy!EAnw0$^ z1NDX=C%3b&)kl@c$Zg4|p5()uEp$YmUzkd#nviBI@&>3iNE;-s4X7(8UVE_G_Bs6I z<`km}Qag{;Y-&k+q$rRmBH_X8BbL|0x^KK%Cbwn+xf|%8bMhPmHh+FPxT$puepO%V zcuy$l>tRyF>Yca*m_4GFI!5DiUVJZ20BX|o)is^|sTgIQNJ5R|H~Vl2>r$WPvGF?v z#O>PLre?;C_pGT$s=LHo*xG%oqveSDZFuhNyINU2<_|8UB|J_m>luRT>rgWuq`w3z z&L_!|v~8bQF$FJnMvw0JxkuS>J+Nvt9pc$KVXmVpM?*U7-uX#ikX+^itZVb(Fm)Zw zz^;hXMybU3WWc>e^C!M-mi7%dl$_9i&c zurl`=7{#iH4ry-WB;^iOy3o}djg)(4SiLpXj4CPw1LKM0C`rj2?HtWs%F#mIA9ym( z&8c{(2rm|o8gd80(y}y3ijFp`CY=%ZSV3|t-|00~h)}acsd2u{m{;fGy6 zsGiTL5RPVHj3*q?mWRt{-qTRwm}jOuYr4E(H}#YbH0>z;{Nav(QF504Ni{yjCz4x+ z7pYObtt_@wPjeI1=9xihnOrG*?W$rK6$9)kC+|YoH{HEe6S0AP72n|ACFwizmXfE`4r} z>pF=m?;!A*?=9>Xk~4|_H_7iZ<2F~i+tT=uV!M7%MGbbhQzeYw$__B3t&!N_vVy3 z(vm+Hv?LFPUpIBMO_6;dUJwJ~4j?mH5aMTGDWx*?I7ek|#0b3vPhd-!3eT0MkfOMl ztgTYvax7veq`i=|D@SwVuBd>A>FZRLc{07ucgh!N+b7P9^n{+essukbIH5$qV$|1D z@2I%vonRIUk?pvA&?9@Es#%B9N*H&*1Hm(xB-%6Z=&R=mgy8h6R_M5{M&q^zI6>|NnDox3b?)#$de zm~I=v6w_pZ(YzEiZJ3w)aR`dzp5{Y=!YG@^Hz$<`GQk4VwrZ`5+Vmu@Z%LliR6O3g zSzs~Je6=fBqakxrDZ58Q2yuOGDHf$nZ@3*RB^G+z=)5cuM2Y1^w(fn#9p^J`@JRU9 zk@?ZPQ*Uj`%_kdkG}Fr{ke4_dwHIrEayO1Y{(B!2yBvq;lz+8uJ2m&be)t9Ulb)G_%p z+PDjQu=R#~xFvBfT;aaZxEj5J;fJ`?%1c-tB$9td;-SvaL^d1l**UWS~O*tzOl~c&eEVYU`a$F1=Fq zbkzd1zdk-wK(2`5c>H`?Il8I&(PU)t#l6#~_>fuZrM2rT6D$m+Ve;M4_i7=oI`(;L zrDsfAX%u9Vc`ay)BOy(QQoHh1nyB;Y^dU6i(rqpu&qCsFtmUQ~e2VhWfy(g3%N{AQ zQ?H}yW4N*9dg7YU?e&BiqbA#ktFMcPY8*-~@;-HQp{q#D*Xk%0x-$@;KcRNYY&b8* z4c))pXR$D2_KN;0S%u#tJ_WXAL6;jAZyF3YnL-L^6>qTVGB=0cEf~v}=T~Sz+RW}A zH%C6#3~M)oT=a-;G1WQFugDW3%W>V4y!pm>x9*I6RM^CHVc__iXvHXXdd111iiF2@ z?M{4WMHFoTmO}4zh(6EBj<|Gq@u;w6ln#ugsfY&-nRQdT@$=oMBmg${4RkE>+y$n? z473=4=_pugR%_dd5$(R58oSlXR>!IvJNu3Mm)2=NUl1=cA&C-ay|+MDaau-H8@hbS zQy6Z}8ic--yz*8#c8TF(hw}Y10G@sln!!6qxtm^$ELmAAlu|+CLHy-Ws&z_~GMFni zOuhVb!d@d0U8^y<-y?^-2N8O7YHLfKbQh1u%Mnsj(I@lx2n`K{gQ+Hq^whcDE-D)8 zHduvJ1U+)#{LuDVp~B~)VYqt-FfzzYFG)1|X0DKDO4=xRgHlS@LL%0(Hs#+p}cQ0p^MQ|V2T&1`Z z5|aEhMH;>IzF>E4`e?mZ)(r4WqAlCA3L(q-`px0w;g5u=^!skHG^=NtC^WXeg51ZLyTLSQS#~+XZX;8r=-8UJE`R@C3&Mo-yPjD z`PQyer#L#ePLI?nnK5qngIYKwiK(R>Wq75p?8tq(&x-01@|KTpb3c<3ntf9{*NiB5 zm0nZM-d~-<<$1cYPh(fBNAN<`^;EUt`Ne|loq6;Kz2yn2=2jgwb#qn3U4`Db#LbPw z;iJrC!2Y8dE>fOA-q))cUPrSjSs{Ro@^S12ND#N zt*Z!YG@YbDhP|G715sFhzcH+@Y{+&cyw{^{|BCJUtNSH;upQ!X_c1HIhXUU2Q(8y0 z7zv$7PE1=Z54Y3=rdUap1cymg$K=bvEWIpK%$y$Ro$pePSEUdL4e&WCK~bX{3?o%? zNu*{-OGc5^r@2V)!T3|}dISp2U7Ol?N+ERr7%aK>JX$=NIt-FVa+2-lB%p-3u`I}z zh?Q7(LVEtR{WywvX~i}9HZAaVo^RE5yV8?TsDA;fAUSgtuWy}<> zI&*&A>#>ef%fOYc_~=MF-*eLjGS^>B3!e=Y>2@qs+8veCY#3!7gD(58ca*QNo^`TxKxIbq)iQ-XJf>jI8c9ke5u`6p>}-HG6yM z9nK@p9nEECg>aMQ{0!YBJmq=bFR+MSWv}~itAIvKkRQ+5QT4l^OJb-KQ zikc_#qHp=G)e<`!pM#p~7mqQ$f3&zmAFP?>)dF~F#BC8QpVc|K%#_L~$kVYJ^V*JN zmtaA5#{ZK&D>K(%)l_aP`w@g}cB|atF*Z>W2LEUD0c^p&gfzF>oBwF{({F zBhjEUbRx&Vmi(#2r;mv6F!rl$0o28TeIA6hN7<6Wx!cl&lia@=+T zDq4RR39N#+ijR3**($g(Q4dxb%ntwF;(7UUf7d)dwL|rb)2@3 zlri8vFf*>ZvRs%akQ9ng2GK0E}bmdhIBW(FN{hVUjHu1)3C9bVMnw4TT z#*B_<5YiG^e1tVEQmySQrkCr{)XM!?6n1BcU`J+8q-OakuW4Rf>#}=j8H@2NcZy)- zr+39((IGmQ5ZP`q3v)2~jQ#g<*0$*#^H;X0c6Z#wrXpD2UL!{y85<7oFCc<^o;|lo z=bZ9SuBY5}6xqua?)B_7?$g+3wHXVt?gTq*Eoxc?IFk)k6SuKA-1*`>c`bFO9Vw*5<1SlbTMGrBTt4=9<8ZFl6W5&J=Dp8 zybUR`sgs-NhUdJkkJQL;Y|V=A?KEwkNbTx{7R9c#%qtU36>oF$rVT%zE`FFjDAvT@ zwXyaj&Qh>uhwFpZFxSkY7eMoSXICS6ukO;a>LY z{rhI5%3b1d zO!X@q%qFFYA)?)7q-SndgnH81hC7YER7-mMtgPUPQ^U~3yjU`(^tT#KkCt#HRzP+@3q9?Gu%p0xozT*1I~<^NgwaX zj-vw{U6a{9vTSmN_yilR<}O=o2(Ry&A!?OeOma3W;;lSf8GZJl*UpIA_6BOfii2gy z_vEb_$&&(Nr}PH>MMEzmp6C0dH|>0>Ff{jj#g&d2tFdV4yrR6tY^Kc7UGEjf6YiT_ z8jot5j+@qBai~wKmz?p;Pd{M1nC=l7NjmhjoXPDu5U{`3!0X{TaMNJ#K)Nfw_ro*O zV~n%>w0^>UO&0lbB~ERBfQwzRBJ#p`1*Rime zOoHzBLm7P|UqS+4D{tECJPJZXM_u=yWb*(o?SB?ICzBeNP#wM&p--&PaP54tF$WO% z=e%%eO@-{!bQ7*x;M#hta9HRIe~OgpQSyD25CwVRLR!P!_%E%Wd^wGQz~aJK-=ku+ zdyF5Co5z3oqo`g)V#j+{<+u^6J{sj@5NIT(fTq?_V7RrDr_$Itr>EYj<8>=1bm&w)>XftsQbb zu{_=cV!4qZHk}^3w!^l;qFZb=fA(d^<-8*9xnqpUe$pAFgA{!9oyH4LAj1473|`)23^p%CG?X4-fRqee`*=l~tTwxW8=kPuwdNC<_Hfo8EFw zb;PDyYdaVYoTdmFc zh-clR7X;_M0#YRFmNYeqRQq=0UyK-MZY4}uUDYFIdCo0;pXSqpG#%$~k8 zWnX6~jA*0(i~pTh`_u_k=bNE4?SK3kxgs5}MhHa=w3E&GabJ5KE^^B!c&^ZLjzMcc zkX!6R*bRU=V>g)iGsin{!|4k$H-QCX=sTYUYWEIyjSd=TWsU(roD|IgZ!9zp|A9_L MK|{Vs)->RM0N|N|H~;_u literal 0 HcmV?d00001 diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/image/webmoney.png b/k2shop/k2shop/app/deleted/obmen/k2obmennik/image/webmoney.png new file mode 100644 index 0000000000000000000000000000000000000000..18aaf5da1d712b4e87a581cbd519880a1435f20d GIT binary patch literal 2563 zcmaJ@dpy&7AD@(jTtXcb+YpJ}Si3OV4J#`RSvSn~!(tcPuo%a!m?ZKP9+x_mM-jD? z?xHeMlu+kLO3~7DB&`m)l%DCN^ZfDj{9do$?|XT@-|x@u{l`!4zsYB*o~0fL1X@b- zr7$!rYVOt5(R{7FvK5-eLPBLq0t69~1eOQ@5jlcz08HbtA^`@#;_QjN19*Ty+N-&N zObL_jhi40TFxDIfCglk=Y!Jx9ODbfsqX7vx9Ejxd3DB`?O;9kGLx2XO=?J=z3`B8# z6GcEk;-)}$Vl*4afqHp@J*0Sz01uF`z*1feUyPR$pkH5dcQR&@OBQ3JJ#GU`R9?gF!iiQ3#|P9D#%*U0skkyqg;yfdGGdpqgkRP6VDo z@%|P|b0R>aBoZMW4o^r(fF-!X1fobd5{JXV5hyqc<)T5ji1+X%EU61$Y&)+&0mN(( zS192M_~1E3R=6NeLV#*A{i_6?@VhKu{H;xzhQXyQAsh)q%#}0`q|^UDl*jvy7E2hw z-}(MeVR7IdApmCpVnLjUtr=W|?OZ4!o-6`b5`idCAc&doqJNY?A`nLjgkUoHYuCVz z!CXE^kRV?3l|!fFX?(GS#b*OF3IVE7fpNJUJQd-JLakdzUgzeGMIxzgM5HSfi(KbM z!g%AbL@Z^VOA)Z+cmQ8A&*l8hrTmaPX9u286PW^txbXnTTO{Ctzm|>X{x}!n5B0ur zIX}*Y^g}LOlMH-rxc@cm`74cs=CGUZk{ZIBad6lFh2tcqERg=ColW=kjyao)N{=BXC6B4HeTqwL3p+`2TC-cYIUWj<~S}} zqgYgXfP}6*bu4U`0@ik<9_Dya=ix9;T`EjOCF~h{I-LQZI^-^ne0weORmbDE8?!0U z`(3G-|2Tb^MX1q79xUGIQCdvxu(QsXSu7tgX@c+__|4-+tWVM`?C{a`4SCqK;vv@w zEF{KcIweDxU^0+5OkKt=}z! zZy6j?SWj$IKJ)yb^ZfS7kl&koqTl@zq7@muFwTmth(8fD&>-!Amp07EUhS;ReBS$q zcm>3OpGpkdNtOloKhYf-_bG;K;HKhwf|6FKt5U0r(?%f5(Ad{-{mDAov9sXFaMh<9 zUJbpS~6JzcvfkR-9X+?-Mw#hcGtKAbtY+$y8P#EpX=wAnj`e8oW?q(#M1-2bpi92 z3z!vAH-}Zku4ntCcPDjB*DA~#`cxJdlm&OEYW-7A(&`5?51-dVAq+Frx_&i8^Ft0p zE4ocW&e$6Ui!p159cueUJ2B9IMmXCWo08{1h#lC0m1$VXh*p;-{2wtI`9zm#(Gk!XYsS!`|@Z=;eUN@qw6MNB))AQS0mimvgH z#`vh*j$So;{Tn11@%&+8LGE%q*nda{b+uz*DWR%Q!5h%Pmiq=qOZH#Ts%}R12E6{V zU~5!%yI6H|xKC|1>T_AV-xQ{In1AV5b+P`^*SWJ(cOixs%>LY7;CWWP@r)tF&(PHT z$Y6`FGc(=3;R>m;bw`l(hu8-OirsLW0v-yH)yZ)j4ZsTL?|K+mWBXQohk!KLR6aE z>|R7bp)3zUm8nFkECEtuI)=)QVVHFWl1-rqqRj@CIujv)G$aGn3+WSAJLv$b5zOg0OMfZAIXXm7EO0e%xZ)+bc01?{WMmjIq8}g{i4oHQb7e#5(z)=L)SKsOmd-`ABo`!; z0qw*6*RU6^NC(-si`FF%i{?l4q~ndGwSNy(Q7IIMmr_`yG~XXPDb;!0-0f~|eU#Z^Mu}rj%U)|xs z{K5HMOXfpPi~la4=}$RB?ly2F+*Dk#9xdxF9xiT@Sr2D9ITzoY$Ud&v(dwZjL|YED z1^l}6VHtR#>e#NaxX}`;@6#*p>a3xGsJu%GA^szVMo`NgkK`M2$K!ff;WZ#bSt1Tw9XdFWCWkX|Ndlqym`&tXBpQVA9T4|n%~K(xw3N|x+8=e=+Zc_fy>r* z19fFLdhTp2k#S;HKDnB9yehA6{3GvcRgZ2o{oK%eZ+DLb5_z{j$}Tw2Uw^LP>C5l0 z7lu?SqtCJqXG>@Y%ZEC)oc=|537!(gFCPl?74LtmQpdH#IdAT5Q}I>{99lnS_kT4e ze|$M0( z)aajk&rWxqI4_e2bqWVl`c84CMk=ZK{oVPV9=r=xG array("root","cabinet",$this->Translate("{lnPersonalArea}")), + 'elements' => array( + array("about",$this->Translate("{lnMyAccount}"),"?adm=mydata", array('','')) + ) + ), + + + array('category' => array("root","obmen",$this->Translate("{lnExchangerAdmin}")), + 'elements' => array( + array("obmen_zakaz",$this->Translate("{lnOrders}"),"?adm=k2obmennik_zak", array('','')), + array("obmen_bonus",$this->Translate("{lnBonuses}"),"?adm=k2obmennik_bonus", array('','')), + //array("obmen_contacts","Контакты","?adm=obmen_contacts", array('','')), + + array("obmen_kurs",$this->Translate("{lnCurrencyExchange}"),"?adm=k2obmennik_kurs", array('','')), + + //array("obmen_emoney","Параметры платежных систем","?adm=k2obmennik_emoneyparam", array('','')), + array("obmen_emoney",$this->Translate("{lnPaymentSystems}"),"?adm=k2obmennik_emoney", array('','')), + array("obmen_valuts",$this->Translate("{lnCurrency}"),"?adm=k2obmennik_val", array('','')) + ) + ) + ); + + return $arr; + } + + + // Обработка команд + function admCommands($comm){ + + global $k2; + $rez=false; + + $s=$k2->getComp($comm); + if ($s[0]<>'k2obmennik'){ + return; + } + + $comp=$k2->ins_comp($s[0], $s[1], true); + if ($comp<>'') + echo $comp->content(); + + return $rez; + + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_emoney.php b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_emoney.php new file mode 100644 index 0000000..5d38afe --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_emoney.php @@ -0,0 +1,136 @@ +ins_comp('k2grid'); + + $arr = array( + + 'name' => "grid", + 'table_caption' => $this->Translate("{lnPaymentSystems}").":", + 'ismasterdetile' => true, + + + 'select' => "select emoneyid, emoneyname, iconname from k2_obmen_emoney", + 'update' => "update k2_obmen_emoney set emoneyname='@emoneyname', iconname='@iconname' where emoneyid=@emoneyid", + 'delete' => "delete from k2_obmen_emoney where emoneyid=@emoneyid", + 'insert' => "insert into k2_obmen_emoney (emoneyname, iconname) values ('@emoneyname', '@iconname');", + 'fields' => array( + array('field' => 'emoneyid', + 'caption' => 'ID', + 'readonly' => true + ), + array('field' => 'emoneyname', + 'caption' => $this->Translate("{lnPaymentSystem}") + ), + array('field' => 'iconname', + 'caption' => $this->Translate("{lnIcon}") + ) + ) + + ); + + $rez = $grid->simpleTable($arr); + + + + if($k2->post("emoneyid_selected")<>'') + { + $select = "select emoneyvalid,emoneyid,valid,emoneyvalname from k2_obmen_emoneyval where emoneyid='".$k2->post("emoneyid")."'"; + $k2->session["emoneyid"] = $k2->post("emoneyid"); + } + else + { + if(!$grid->koolajax->isCallback) + { + $_rows = $grid->grid->GetInstanceMasterTable()->GetInstanceRows(); + if (isset($_rows[0])){ + $_rows[0]->Selected = true; + $select = "select emoneyvalid,emoneyid,valid,emoneyvalname from k2_obmen_emoneyval where emoneyid='".$_rows[0]->DataItem["emoneyid"]."'"; + $insert = "insert into k2_obmen_emoneyval (emoneyid, valid, emoneyvalname) values ('".$_rows[0]->DataItem["emoneyid"]."', '@valid', '@emoneyvalname')"; + }else{ + $select = "select emoneyvalid,emoneyid,valid,emoneyvalname from k2_obmen_emoneyval where 1=0"; + $insert = ""; + + } + + } + else + { + $select = "select emoneyvalid,emoneyid,valid,emoneyvalname from k2_obmen_emoneyval where emoneyid='".$k2->session["emoneyid"]."'"; + $insert = "insert into k2_obmen_emoneyval (emoneyid, valid, emoneyvalname) values ('".$k2->session["emoneyid"]."', '@valid', '@emoneyvalname')"; + } + } + + + + $grid_moneyval = $k2->ins_comp('k2grid'); + + $arr = array( + 'master' => $grid, + 'name' => "grid_moneyval", + 'table_caption' => $this->Translate("{lnCurrency}").":", + 'ismasterdetile' => true, + + 'keyfield' => 'emoneyvalid', + 'masterkeyfield' => 'emoneyid', + + 'select' => $select, + 'update' => "update k2_obmen_emoneyval set emoneyid='@emoneyid', valid='@valid', emoneyvalname='@emoneyvalname' where emoneyvalid=@emoneyvalid", + 'delete' => "delete from k2_obmen_emoneyval where emoneyvalid=@emoneyvalid", + 'insert' => $insert, + 'fields' => array( + array('field' => 'emoneyvalid', + 'caption' => 'ID', + 'readonly' => true + ), + array('field' => 'emoneyvalname', + 'caption' => $this->Translate("{lnNameSystemCurrency}") + ), + array('field' => 'valid', + 'caption' => $this->Translate("{lnCurrency}"), + 'type_field' => 'DropDown', + 'values' => array( + "1" => $this->Translate("{lnUSDollar}"), + "2" => $this->Translate("{lnGrivna}"), + "3" => $this->Translate("{lnRussianRuble}"), + "4" => $this->Translate("{lnEuro}") + ) + ) + ) + + ); + + $rez .= $grid_moneyval->simpleTable($arr); + + + return $rez; + } + + + // Возвращаем контент + function content(){ + $rez=$this->show_val_table(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_kurs.php b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_kurs.php new file mode 100644 index 0000000..5e47250 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_kurs.php @@ -0,0 +1,106 @@ +db->query($sql) as $value) { + $arr[$value['emoneyvalid']] = $value['emoneyvalname']; + } + + + //var_dump($arr); + + return $arr; + + } + + + + // Вывод таблицы справочника валют + function show_val_table(){ + + global $k2; + + $grid=$k2->ins_comp('k2grid'); + + $platsys=$this->getPlatSys(); + + $arr = array( + + 'select' => "select kursid, emoneyid1, emoneyid2, sumval1, sumval2 from k2_obmen_kurs", + 'update' => "update k2_obmen_kurs set emoneyid1='@emoneyid1', emoneyid2='@emoneyid2', sumval1='@sumval1', sumval2='@sumval2' where kursid=@kursid", + 'delete' => "delete from k2_obmen_kurs where kursid=@kursid", + 'insert' => "insert into k2_obmen_kurs (emoneyid1, emoneyid2, sumval1, sumval2) values ('@emoneyid1', '@emoneyid2', '@sumval1', '@sumval2');", + + 'grouping' => true, + + 'fields' => array( + array('field' => 'emoneyid1', + 'caption' => $this->Translate("{lnCurrency1}"), + 'type_field' => 'DropDown', + 'values' => $platsys + /*array( + "1" => "Доллар США", + "2" => "Гривна", + "3" => "Российские рубли", + "4" => "Евро" + )*/ + ), + array('field' => 'emoneyid2', + 'caption' => $this->Translate("{lnCurrency2}"), + 'type_field' => 'DropDown', + 'values' => $platsys + /*array( + "1" => "Доллар США", + "2" => "Гривна", + "3" => "Российские рубли", + "4" => "Евро"*/ + ), + array('field' => 'sumval1', + 'caption' => $this->Translate("{lnCurrencyAmount1}") + ), + array('field' => 'sumval2', + 'caption' => $this->Translate("{lnCurrencyAmount2}") + ) + ) + + ); + + $rez = $grid->simpleTable($arr); + + return $rez; + } + + + // Возвращаем контент + function content(){ + $rez=$this->show_val_table(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_pubkursobmen.php b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_pubkursobmen.php new file mode 100644 index 0000000..ecb87ba --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_pubkursobmen.php @@ -0,0 +1,85 @@ +ins_comp('k2grid'); + + $arr = array( + + 'select' => "select k.kursid, k.emoneyid1, k.emoneyid2, k.sumval1, k.sumval2, + v1.emoneyvalname as nameval1, v2.emoneyvalname as nameval2 + from k2_obmen_kurs k + + join k2_obmen_emoneyval v1 + on v1.emoneyid=k.emoneyid1 + + join k2_obmen_emoneyval v2 + on v2.emoneyid=k.emoneyid2 + ", + 'update' => "", + 'delete' => "", + 'insert' => "", + 'ReadOnly' => 'true', + 'width' => '600px', + 'style' => 'office2010blue', + 'filtering' => true, + 'PageSize' => 1000, + + 'grouping' => true, + 'group' => array( + 'nameval1' => $this->Translate("{lnFromCurrency}") + ), + + + 'fields' => array( + array('field' => 'nameval1', + 'caption' => $this->Translate("{lnFromCurrency}") + ), + array('field' => 'nameval2', + 'caption' => $this->Translate("{lnInCurrency}") + ), + array('field' => 'sumval1', + 'caption' => $this->Translate("{lnRates1}") + ), + array('field' => 'sumval2', + 'caption' => $this->Translate("{lnRates2}") + ) + + ) + + ); + + $rez = $grid->simpleTable($arr); + + + return $rez; + } + + + // Возвращаем контент + function content(){ + $rez=$this->show_val_table(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_pubobmen.php b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_pubobmen.php new file mode 100644 index 0000000..60f6b18 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_pubobmen.php @@ -0,0 +1,748 @@ +db->query($sql) as $row) { + $res.=""; + } + + return $res; + + } + + // Вывод валют, на которую обмениваем + function getVal2(){ + + global $k2; + + $sql = "select k.emoneyid2 as emoneyid, v.emoneyvalname as nameval + from k2_obmen_kurs k + + join k2_obmen_emoneyval v + on v.emoneyid=k.emoneyid2 + + group by k.emoneyid2, v.emoneyvalname + order by k.emoneyid2, v.emoneyvalname"; + + $res=''; + + foreach ($k2->db->query($sql) as $row) { + $res.=""; + } + + return $res; + + } + + + + // Расчет курса валюты + // $arr - массив с параметрами + function calcKursVal($arr){ + + global $k2; + + $sql = "select k.emoneyid1, k.emoneyid2, k.sumval1, k.sumval2, v1.emoneyvalname as valname1, v2.emoneyvalname as valname2 + from k2_obmen_kurs k + + join k2_obmen_emoneyval v1 + on k.emoneyid1=v1.emoneyvalid + + join k2_obmen_emoneyval v2 + on k.emoneyid2=v2.emoneyvalid + + where (k.emoneyid1='".$arr['val1']."') + and(k.emoneyid2='".$arr['val2']."') + + limit 1 + "; + + $rez=null; + + foreach ($k2->db->query($sql) as $row) { + $rez = $row; + + break; + } + + + return $rez; + + } + + + + // Форма заказа для обмена + function form_zakaz_obmen(){ + + global $k2; + + // Форма ввода информации о клиенте (можно будет выести в свойства компоненты) + $LoginForm='
        +
        + + + + + + + + + + + + + Формирование заказа + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Фамилия:
        Имя:
        Отчество:
        Счет, откуда перечисляется:
        Куда перечисляется:
        E-mail:
        Телефон:
        +
        + +
        + + +
        + +
        +
        + '; + + + + require_once $k2->kool->KoolControlsFolderAbs."/KoolForm/koolform.php"; + + + + $ValNum1 = $k2->post("ValNum1"); + $ValNum2 = $k2->post("ValNum2"); + + $val1_selectedValue = $k2->post("val1_selectedValue"); + $val2_selectedValue = $k2->post("val2_selectedValue"); + + $ckCommision = $k2->post("ckCommision"); + + + $form=$LoginForm; + + $form=str_replace('{ValNum1}', $ValNum1, $form); + $form=str_replace('{ValNum2}', $ValNum2, $form); + $form=str_replace('{val1_selectedValue}', $val1_selectedValue, $form); + $form=str_replace('{val2_selectedValue}', $val2_selectedValue, $form); + $form=str_replace('{ckCommision}', $ckCommision, $form); + + + $rez=$form; + + return $rez; + + + } + + + // Возвращает название валюты по id + function getValName($valid){ + + global $k2; + + $rez=''; + + + $sql = "select ev.emoneyvalid as emoneyvalid, ev.emoneyvalname as emoneyvalname + from k2_obmen_emoneyval ev + where ev.emoneyvalid='$valid'"; + + + foreach ($k2->db->query($sql) as $value) { + $rez = $value['emoneyvalname']; + } + + + return $rez; + } + + + // Заполнение шаблонов в письме + function fillEmail($strinp){ + + global $k2; + + $rez=$strinp; + + $rez=str_replace('{domain}', $k2->domain(), $rez); + + $rez=str_replace('{username}', $k2->auth->username, $rez); + + $rez=str_replace('{nameval1}', $this->getValName($k2->post("val1_selectedValue")), $rez); + $rez=str_replace('{ValNum1}', $k2->post("ValNum1"), $rez); + $rez=str_replace('{schet1}', $k2->post("SchetFrom"), $rez); + + $rez=str_replace('{nameval2}', $this->getValName($k2->post("val2_selectedValue")), $rez); + $rez=str_replace('{sumpoluch}', $k2->post("ValNum2"), $rez); + $rez=str_replace('{schet2}', $k2->post("SchetTo"), $rez); + + $rez=str_replace('{commision}', $k2->post("ckCommision"), $rez); + + $rez=str_replace('{email}', $k2->post("Email"), $rez); + $rez=str_replace('{phone}', $k2->post("Phone"), $rez); + + + $rez=str_replace('{fam}', $k2->post("Fam"), $rez); + $rez=str_replace('{im}', $k2->post("Im"), $rez); + $rez=str_replace('{otch}', $k2->post("Otch"), $rez); + + + return $rez; + } + + + // Отправка уведомлений по электронной почте + function sendZakazMail(){ + + global $k2; + + $zak_subj='Новый заказ на обмен денег {domain}'; // Заголовок почтоового сообщения о регистрации + $mail_registered=" + Добрый день, + + Поступил новый заказ. + + Имя пользователя: {username} + Обмен валюты: {nameval1} + Сумма обмена: {ValNum1} + Перечисляют со счета (с кошелька): {schet1} + + Меняем на валюту: {nameval2} + Сумма к получению: {sumpoluch} + Получают на счет (на кошелек): {schet2} + + Коммисия: {commision} + + Фамилия: {fam} + Имя: {im} + Отчество: {otch} + + E-mail: {email} + Телефон: {phone} + "; // Сообщение, которое выдается при регистрации + + + $zak_cli_subj='Оформлен заказ на обмен денег {domain}'; // Заголовок почтоового сообщения о регистрации + $mail_cli_registered=" + Добрый день, + + Вы оформили заказ на обмен денег. + + Данные по заказу: + + Имя пользователя: {username} + Обмен валюты: {nameval1} + Сумма обмена: {ValNum1} + Перечисляются со счета (с кошелька): {schet1} + + Меняем на валюту: {nameval2} + Сумма к получению: {sumpoluch} + Получаются на счет (с кошелька): {schet2} + + Коммисия: {commision} + + Фамилия: {fam} + Имя: {im} + Отчество: {otch} + + E-mail: {email} + Телефон: {phone} + + "; // Сообщение, которое выдается при регистрации + + + // Заменяем маски + $zak_subj=$this->fillEmail($zak_subj); + $mail_registered=$this->fillEmail($mail_registered); + + $zak_cli_subj=$this->fillEmail($zak_cli_subj); + $mail_cli_registered=$this->fillEmail($mail_cli_registered); + + + $k2->mail->sendMail($k2->mail->my_email, $zak_subj, $mail_registered); + $k2->mail->sendMail($k2->post("Email"), $zak_cli_subj, $mail_cli_registered); + + + + } + + + // Сохранение заказа + function save_zakaz(){ + + global $k2; + + + $sql = "insert into k2_obmen_zakaz (emoneyvalid1, emoneyvalid2, sumobmen, username, obmenna, datezak, comment, fam, im, otch, schet_from, schet_to, commision, status, sumobmento, email, phone) + values ('".$k2->post("val1_selectedValue")."', '".$k2->post("val2_selectedValue")."', '".$k2->post("ValNum1")."', '".$k2->auth->login."', + '".$k2->post("ValNum2")."', NOW(), '', '".$k2->post("Fam")."', '".$k2->post("Im")."', '".$k2->post("Otch")."', + '".$k2->post("SchetFrom")."', '".$k2->post("SchetTo")."', + '".$k2->post("ckCommision")."', '1', '".$k2->post("ValNum2")."', '".$k2->post("Email")."', '".$k2->post("Phone")."' );"; + + + try{ + $k2->db->exec($sql); + + }catch(PDOException $e) { + echo "Error Insert Zakaz: $sql\n"; + echo $e->getMessage(); + } + + + $rez="

        Заказ отправлен.

        "; + + $this->sendZakazMail(); + + + return $rez; + + } + + + + // Фомирование нового заказа + function new_zakaz(){ + + //echo "

        Будет ввод информации о клиенте.

        "; + + $rez=$this->form_zakaz_obmen(); + + return $rez; + + } + + + + // Вывод таблицы справочника валют + function show_val_table(){ + + global $k2; + + require_once $k2->kool->KoolControlsFolderAbs."/KoolComboBox/koolcombobox.php"; + require_once $k2->kool->KoolControlsFolderAbs."/KoolAjax/koolajax.php"; + + require_once $k2->kool->KoolControlsFolderAbs."/KoolGrid/koolgrid.php"; + require_once $k2->kool->KoolControlsFolderAbs."/KoolForm/koolform.php"; + + + if($koolajax->isCallback) + { + sleep(1); + } + + + $sql='select v.emoneyvalid, v.emoneyvalname, m.iconname + from k2_obmen_emoneyval v + + left join k2_obmen_emoney m + on v.emoneyid=m.emoneyid + '; + + + + + + // Создание формы + $myform_manager = new KoolForm("formobmen"); + $myform_manager->scriptFolder = $k2->kool->KoolControlsFolder."/KoolForm";//Set scriptFolder + + $myform_manager->styleFolder="default"; + + + + + + + // Валюта с которой обмениваем + $selected_val1 = null; + if($k2->post("val1_selectedValue")<>'') + { + $selected_val1 = $k2->post("val1_selectedValue"); + } + + $val1 = new KoolComboBox("val1"); + $val1->scriptFolder = $k2->kool->KoolControlsFolder."/KoolComboBox"; + $val1->styleFolder='default'; + $val1->width = "220px"; + $val1->itemTemplate = "
        {text}{text}
        "; + + foreach ($k2->db->query($sql) as $row) { + $val1->addItem($row["emoneyvalname"],$row["emoneyvalid"],array("image"=>$row["iconname"]),($selected_val1==$row["emoneyvalid"])); + } + + + + // Валюту в которую обмениваем + $selected_val2 = null; + if($k2->post("val2_selectedValue")<>'') + { + $selected_val2 = $k2->post("val2_selectedValue"); + } + + + $val2 = new KoolComboBox("val2"); + $val2->scriptFolder = $k2->kool->KoolControlsFolder."/KoolComboBox"; + $val2->styleFolder='default'; + $val2->width = "220px"; + + $val2->itemTemplate = "
        {text}{text}
        "; + + +// if($selected_val2!=null) +// { + foreach ($k2->db->query($sql) as $row) { + $val2->addItem($row["emoneyvalname"],$row["emoneyvalid"],array("image"=>$row["iconname"]),($selected_val2==$row["emoneyvalid"])); +// } + + } + + + // Переменные через Post + $ValNum1=''; + $ValNum2=''; + $ckCommision=''; + + if ($k2->post("ValNum1")<>'') { + $ValNum1 = $k2->post("ValNum1"); + } + + if ($k2->post("ValNum2")<>'') { + $ValNum2 = $k2->post("ValNum2"); + } + + + if ($k2->post("ckCommision")<>'') { + $ckCommision = $k2->post("ckCommision"); + } + + + + + + $kurs_arr=array( + 'val1' => $selected_val1, + 'val2' => $selected_val2, + 'num1' => $ValNum1, + 'num2' => $ValNum2, + 'commision' => $ckCommision + ); + + + $k=$this->calcKursVal($kurs_arr); + + $kurs_label=''; + if (isset($k)){ + $sum1=$k['sumval1']; + $sum2=$k['sumval2']; + + $kurs_label="Курс обмена: ".$sum1." ".$k['valname1']." = ".$sum2." ".$k['valname2']; + + if (($sum1<>0)and($sum2<>0)){ + $ValNum2=$ValNum1/$sum1*$sum2; + } + + // Учитываю наценку + if ($ckCommision=='1' && $this->nacenk<>0){ + $ValNum2=((100+$this->nacenk)/100)*$ValNum2; + } + + $ValNum2=round($ValNum2, 2); + + } + + + + + $myform_manager->Init(); + + + ob_start(); + + + ?> + +
        + Render();?> + + + + + + + + + +
        + + + + + post('btnobmen')<>''){ + + if (!$k2->auth->isUser()){ + echo "

        Внимание!Только авторизированные пользователи могут делать заявки!

        "; + }else{ + + echo $this->new_zakaz(); + + //echo "

        Ваша заявка успешно отправлена.

        "; + + + + } + + + }elseif($k2->post('submit_zakaz')<>''){ + + echo $this->save_zakaz(); + + }else{ + + + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ОтдаюПолучаю
        Render(); + ?> + Render(); + ?> +
        + + + + + +
        + +
        + +
        + + /> + +
        +
        +
        + + + +
        + + + + + + + + + + +
        + + + + + + +
        + +
        + + + + + show_val_table(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_val.php b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_val.php new file mode 100644 index 0000000..f1050d3 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_val.php @@ -0,0 +1,56 @@ +ins_comp('k2grid'); + + $arr = array( + + 'select' => "select valid, valname, sokrname from k2_obmen_val", + 'update' => "update k2_obmen_val set valname='@valname', sokrname='@sokrname' where valid=@valid", + 'delete' => "delete from k2_obmen_val where valid=@valid", + 'insert' => "insert into k2_obmen_val (valname, sokrname) values ('@valname', '@sokrname')", + 'fields' => array( + array('field' => 'valname', + 'caption' => $this->Translate("{lnCurrencyName}") + ), + array('field' => 'sokrname', + 'caption' => $this->Translate("{lnAbbreviation}") + ) + ) + + ); + + $rez = $grid->simpleTable($arr); + + + return $rez; + } + + + // Возвращаем контент + function content(){ + $rez=$this->show_val_table(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_zak.php b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_zak.php new file mode 100644 index 0000000..2f617ae --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/k2obmennik_zak.php @@ -0,0 +1,379 @@ +db->query($sql) as $value) { + $arr[$value['emoneyvalid']] = $value['emoneyvalname']; + } + + return $arr; + + } + + + // Заполняем массив статусов + function getStatus(){ + + global $k2; + + $sql = "select s.k2statid, s.statname + from k2_status_zak s + order by s.k2statid"; + + + $arr=array(); + + foreach ($k2->db->query($sql) as $value) { + $arr[$value['k2statid']] = $value['statname']; + } + + return $arr; + + } + + + + // Вывод таблицы справочника валют + function show_val_table($isReadonly=false){ + + global $k2; + + $platsys=$this->getPlatSys(); + + + $grid=$k2->ins_comp('k2grid'); + + $arr = array( + + 'filtering' => true, + 'scroll' => true, + 'width' => '1200px', + + 'ReadOnly' => $isReadonly, + + 'master_width' => '1000px', + 'master_height' => '600px', + + 'column_number' => 2, + 'input_focus' => 'HideGrid', + + + 'select' => "select z.k2obmzak1, z.emoneyvalid1, z.emoneyvalid2, z.sumobmen, z.username, z.obmenna, z.datezak, + z.comment, z.fam, z.im, z.otch, z.schet_from, z.schet_to, z.commision, z.status, z.sumobmento, z.email, z.phone + from k2_obmen_zakaz z + ", + + 'update' => "update k2_obmen_zakaz + set emoneyvalid1='@emoneyvalid1', emoneyvalid2='@emoneyvalid2', sumobmen='@sumobmen', username='@username', obmenna='@obmenna', comment='@comment', + fam='@fam', im='@im', otch='@otch', schet_from='@schet_from', schet_to='@schet_to', commision='@commision', status='@status', sumobmento='@sumobmento', datezak='@datezak', + email='@email', phone='@phone' + where k2obmzak1='@k2obmzak1'", + + 'delete' => "delete from k2_obmen_zakaz where k2obmzak1='@k2obmzak1'", + + 'insert' => "insert into k2_obmen_zakaz (emoneyvalid1, emoneyvalid2, sumobmen, username, obmenna, datezak, comment, fam, im, otch, schet_from, schet_to, commision, status, sumobmento, email, phone) + values ('@emoneyvalid1', '@emoneyvalid2', '@sumobmen', '@username', '@obmenna', '@datezak', '@comment', '@fam', '@im', '@otch', '@schet_from', '@schet_to', + '@commision', '@status', '@sumobmento', '@email', '@phone' );", + + 'fields' => array( + array('field' => 'k2obmzak1', + 'caption' => 'ID', + 'width' => '50px', + 'readonly' => true + ), + + array('field' => 'datezak', + 'caption' => $this->Translate("{lnDate}"), + 'type_field' => 'DateTime', + 'width' => '100px' + ), + + + + array('field' => 'emoneyvalid1', + 'caption' => $this->Translate("{lnGive}"), + 'type_field' => 'DropDown', + 'width' => '90px', + 'values' => $platsys + ), + + + + + array('field' => 'sumobmen', + 'caption' => $this->Translate("{lnGive}"), + 'width' => '90px' + ), + array('field' => 'schet_from', + 'caption' => $this->Translate("{lnFromAccount}"), + 'width' => '90px' + ), + + + + array('field' => 'emoneyvalid2', + 'caption' => $this->Translate("{lnPay}"), + 'type_field' => 'DropDown', + 'width' => '90px', + 'values' => $platsys + ), + + + + array('field' => 'sumobmento', + 'caption' => $this->Translate("{lnGet}"), + 'width' => '90px' + ), + array('field' => 'schet_to', + 'caption' => $this->Translate("{lnOnAccount}"), + 'width' => '90px' + ), + + array('field' => 'commision', + 'caption' => $this->Translate("{lnCommissionIncluded}"), + 'width' => '75px' + ), + + + array('field' => 'username', + 'caption' => $this->Translate("{lnUser}"), + 'width' => '120px', + 'readonly' => true + ), + + array('field' => 'fam', + 'caption' => $this->Translate("{lnSurname}"), + 'width' => '100px' + ), + array('field' => 'im', + 'caption' => $this->Translate("{lnName}"), + 'width' => '100px' + ), + + array('field' => 'otch', + 'caption' => $this->Translate("{lnMiddleName}"), + 'width' => '100px' + ), + + + + array('field' => 'email', + 'caption' => 'E-mail', + 'width' => '100px' + ), + + + array('field' => 'phone', + 'caption' => $this->Translate("{lnPhone}"), + 'width' => '100px' + ), + + + array('field' => 'comment', + 'caption' => $this->Translate("{lnNote}"), + 'width' => '120px' + ), + + + array('field' => 'status', + 'caption' => $this->Translate("{lnStatus}"), + 'type_field' => 'DropDown', + 'width' => '75px', + 'values' => $this->getStatus() + ) + + + + + + ) + + ); + + $rez = $grid->simpleTable($arr); + + + return $rez; + } + + + + // Вывод сайта в публичной части, в личном кабинете пользователя (с фильтрацией по заданному пользователю) + function show_public(){ + + global $k2; + + $platsys=$this->getPlatSys(); + + + $grid=$k2->ins_comp('k2grid'); + + $arr = array( + + 'filtering' => false, + 'scroll' => true, + 'width' => '600px', + + 'ReadOnly' => true, + + + 'master_width' => '600px', + 'master_height' => '400px', + + + 'select' => "select z.k2obmzak1, z.emoneyvalid1, z.emoneyvalid2, z.sumobmen, z.username, z.obmenna, z.datezak, + z.comment, z.fam, z.im, z.otch, z.schet_from, z.schet_to, z.commision, z.status, z.sumobmento, z.email, z.phone + from k2_obmen_zakaz z + where username='".$k2->auth->login."' + ", + + 'update' => "", + + 'delete' => "", + + 'insert' => "", + + 'fields' => array( + + array('field' => 'status', + 'caption' => $this->Translate("{lnStatus}"), + 'type_field' => 'DropDown', + 'width' => '75px', + 'values' => $this->getStatus() + ), + + + array('field' => 'datezak', + 'caption' => $this->Translate("{lnDate}"), + 'type_field' => 'DateTime', + 'width' => '80px' + ), + + + + array('field' => 'emoneyvalid1', + 'caption' => $this->Translate("{lnPaymentCurrency}"), + 'type_field' => 'DropDown', + 'width' => '90px', + 'values' => $platsys + ), + + + + + array('field' => 'sumobmen', + 'caption' => $this->Translate("{lnPaymentAmount}"), + 'width' => '90px' + ), + array('field' => 'schet_from', + 'caption' => 'Со счета', + 'width' => '90px' + ), + + + + array('field' => 'emoneyvalid2', + 'caption' => $this->Translate("{lnReceptionCurrency}"), + 'type_field' => 'DropDown', + 'width' => '90px', + 'values' => $platsys + ), + + + + array('field' => 'sumobmento', + 'caption' => $this->Translate("{lnReceptionAmount}"), + 'width' => '90px' + ), + array('field' => 'schet_to', + 'caption' => $this->Translate("{lnOnAccount}"), + 'width' => '90px' + ), + + array('field' => 'commision', + 'caption' => $this->Translate("{lnCommissionIncluded}"), + 'width' => '75px' + ), + + + + array('field' => 'fam', + 'caption' => $this->Translate("{lnSurname}"), + 'width' => '100px' + ), + array('field' => 'im', + 'caption' => $this->Translate("{lnName}"), + 'width' => '100px' + ), + + array('field' => 'otch', + 'caption' => $this->Translate("{lnMiddleName}"), + 'width' => '100px' + ), + + + + array('field' => 'email', + 'caption' => 'E-mail', + 'width' => '100px' + ), + + + array('field' => 'phone', + 'caption' => $this->Translate("{lnPhone}"), + 'width' => '100px' + ), + + + array('field' => 'comment', + 'caption' => $this->Translate("{lnNote}"), + 'width' => '120px' + ) + + + ) + + ); + + $rez = $grid->simpleTable($arr); + + + return $rez; + + } + + + // Возвращаем контент + function content(){ + $rez=$this->show_val_table(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik/en.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik/en.csv new file mode 100644 index 0000000..e8befb5 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik/en.csv @@ -0,0 +1,9 @@ +name| value +lnPersonalArea| Personal Area +lnMyAccount| My Account +lnExchangerAdmin| Exchanger Admin +lnOrders| Orders +lnBonuses| Bonuses +lnCurrencyExchange| Currency exchange +lnPaymentSystems| Payment systems +lnCurrency| Currency \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik/ru.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik/ru.csv new file mode 100644 index 0000000..a8be28f --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik/ru.csv @@ -0,0 +1,9 @@ +name|value +lnPersonalArea| Личный кабинет +lnMyAccount| Мои данные +lnExchangerAdmin| Обменник Админ +lnOrders| Заказы +lnBonuses| Бонусы +lnCurrencyExchange| Курсы обмена +lnPaymentSystems| Платежные системы +lnCurrency| Валюты \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik/ua.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik/ua.csv new file mode 100644 index 0000000..70e584c --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik/ua.csv @@ -0,0 +1,9 @@ +name| value +lnPersonalArea| Особистий кабінет +lnMyAccount| Мої дані +lnExchangerAdmin| Обмінник Адмін +lnOrders| Замовлення +lnBonuses| Бонуси +lnCurrencyExchange| Курси обміну +lnPaymentSystems| Платіжні системи +lnCurrency| Валюти \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_emoney/en.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_emoney/en.csv new file mode 100644 index 0000000..ef867fe --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_emoney/en.csv @@ -0,0 +1,10 @@ +name| value +lnPaymentSystems| Payment systems +lnPaymentSystem| Payment system +lnIcon| Icon +lnCurrency| Currency +lnNameSystemCurrency| Name System/Currency +lnUSDollar| U.S. dollar +lnGrivna| Grivna +lnRussianRuble| Russian ruble +lnEuro| Euro \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_emoney/ru.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_emoney/ru.csv new file mode 100644 index 0000000..48be523 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_emoney/ru.csv @@ -0,0 +1,10 @@ +name|value +lnPaymentSystems| Платежные системы +lnPaymentSystem| Платежная система +lnIcon| Иконка +lnCurrency| Валюта +lnNameSystemCurrency| Название система/валюта +lnUSDollar| Доллар США +lnGrivna| Гривна +lnRussianRuble| Российский рубль +lnEuro| Евро diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_emoney/ua.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_emoney/ua.csv new file mode 100644 index 0000000..aeaec6e --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_emoney/ua.csv @@ -0,0 +1,10 @@ +name| value +lnPaymentSystems| Платіжні системи +lnPaymentSystem| Платіжна система +lnIcon| Іконка +lnCurrency| Валюта +lnNameSystemCurrency| Назва система / валюта +lnUSDollar| Долар США +lnGrivna| Гривня +lnRussianRuble| Російський рубль +lnEuro| Євро \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_kurs/en.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_kurs/en.csv new file mode 100644 index 0000000..cc9a0ce --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_kurs/en.csv @@ -0,0 +1,5 @@ +name| value +lnCurrency1| Currency 1 +lnCurrency2| Currency 2 +lnCurrencyAmount1| Currency Amount 1 +lnCurrencyAmount2| Currency Amount 2 \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_kurs/ru.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_kurs/ru.csv new file mode 100644 index 0000000..5f2c006 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_kurs/ru.csv @@ -0,0 +1,5 @@ +name|value +lnCurrency1| Валюта 1 +lnCurrency2| Валюта 2 +lnCurrencyAmount1| Сумма валюты 1 +lnCurrencyAmount2| Сумма валюты 2 \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_kurs/ua.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_kurs/ua.csv new file mode 100644 index 0000000..9abe599 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_kurs/ua.csv @@ -0,0 +1,5 @@ +name| value +lnCurrency1| Валюта 1 +lnCurrency2| Валюта 2 +lnCurrencyAmount1| Сума валюти 1 +lnCurrencyAmount2| Сума валюти 2 \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_pubkursobmen/en.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_pubkursobmen/en.csv new file mode 100644 index 0000000..7cd6abd --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_pubkursobmen/en.csv @@ -0,0 +1,5 @@ +name| value +lnFromCurrency| From Currency +lnInCurrency| In Currency +lnRates1| Rates 1 +lnRates2| Rates 2 \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_pubkursobmen/ru.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_pubkursobmen/ru.csv new file mode 100644 index 0000000..b58cad7 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_pubkursobmen/ru.csv @@ -0,0 +1,5 @@ +name|value +lnFromCurrency| Из валюты +lnInCurrency| В валюту +lnRates1| Курс 1 +lnRates2| Курс 2 \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_pubkursobmen/ua.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_pubkursobmen/ua.csv new file mode 100644 index 0000000..d48a494 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_pubkursobmen/ua.csv @@ -0,0 +1,5 @@ +name| value +lnFromCurrency| Із валюти +lnInCurrency| У валюту +lnRates1| Курс 1 +lnRates2| Курс 2 \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_val/en.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_val/en.csv new file mode 100644 index 0000000..07aa426 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_val/en.csv @@ -0,0 +1,3 @@ +name| value +lnCurrencyName| Currency name +lnAbbreviation| Abbreviation \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_val/ru.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_val/ru.csv new file mode 100644 index 0000000..198d00a --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_val/ru.csv @@ -0,0 +1,3 @@ +name|value +lnCurrencyName| Название валюты +lnAbbreviation| Сокращенное название \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_val/ua.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_val/ua.csv new file mode 100644 index 0000000..17be8a9 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_val/ua.csv @@ -0,0 +1,3 @@ +name| value +lnCurrencyName| Назва валюти +lnAbbreviation| Скорочена назва \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_zak/en.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_zak/en.csv new file mode 100644 index 0000000..24317d5 --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_zak/en.csv @@ -0,0 +1,19 @@ +name| value +lnDate| Date +lnGive| Give +lnFromAccount| From account +lnPay| Pay +lnGet| Get +lnOnAccount| On account +lnCommissionIncluded| Commission included +lnUser| User +lnSurname| Surname +lnName| Name +lnMiddleName| Middle name +lnPhone| Phone +lnNote| Note +lnStatus| Status +lnPaymentCurrency| Payment currency +lnPaymentAmount| Payment amount +lnReceptionCurrency| Reception currency +lnReceptionAmount| Reception amount \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_zak/ru.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_zak/ru.csv new file mode 100644 index 0000000..69cd21d --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_zak/ru.csv @@ -0,0 +1,19 @@ +name|value +lnDate| Дата +lnGive| Отдают +lnFromAccount| Со счета +lnPay| Платят +lnGet| Получают +lnOnAccount| На счет +lnCommissionIncluded| Коммисия включена +lnUser| Пользователь +lnSurname| Фамилия +lnName| Имя +lnMiddleName| Отчество +lnPhone| Телефон +lnNote| Примечание +lnStatus| Статус +lnPaymentCurrency| Валюта оплаты +lnPaymentAmount| Сумма оплаты +lnReceptionCurrency| Валюта получения +lnReceptionAmount| Сумма получения \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_zak/ua.csv b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_zak/ua.csv new file mode 100644 index 0000000..00a801d --- /dev/null +++ b/k2shop/k2shop/app/deleted/obmen/k2obmennik/lng/k2obmennik_zak/ua.csv @@ -0,0 +1,19 @@ +name| value +lnDate| Дата +lnGive| Віддають +lnFromAccount| З рахунку +lnPay| Платять +lnGet| Отримують +lnOnAccount| На рахунок +lnCommissionIncluded| Комісія включена +lnUser| Користувач +lnSurname| Прізвище +lnName| Ім'я +lnMiddleName| По батькові +lnPhone| Телефон +lnNote| Примітка +lnStatus| Статус +lnPaymentCurrency| Валюта оплати +lnPaymentAmount| Сума оплати +lnReceptionCurrency| Валюта отримання +lnReceptionAmount| Сума отримання \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/check.sql b/k2shop/k2shop/app/deleted/rcc/rcc/check.sql new file mode 100644 index 0000000..5e9e00b --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/check.sql @@ -0,0 +1,35 @@ +/********************************************************/ +/* Восстановление RP и балансов в таблице пользователей */ +/********************************************************/ + +/* Поиск некорректностей */ +select FROM_UNIXTIME(max(date)), max(date), FROM_UNIXTIME(min(date)), min(date) +from `balance-history` +where amount=0 and type='RP' and balance<=1 + and description = 'RP Transfer' + and date>=1472690000; + + + +/* Вьювер балансов на заданную дату */ +CREATE VIEW mybalance +AS + +select u.id userid as userid, u.login, max(b.id) as max_balans_id, + (select balance from `balance-history` bh where bh.id=max(b.id) ) as mybalanse +from users u + + left join `balance-history` b + on u.id=b.USER + +where b.date<1472691762 + and type='RP' +group by u.id, u.login +; + + + +/* Обновление балансов пользователей */ +update users +set RP=RP+(select mybalanse from mybalance where userid=id); + diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rc_clear.php b/k2shop/k2shop/app/deleted/rcc/rcc/rc_clear.php new file mode 100644 index 0000000..b282b4e --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rc_clear.php @@ -0,0 +1,272 @@ +check_connect(); + } + + + // Initialize the main directory (Инициализация основных каталогов) + function iniMain(){ + global $k2; + echo "Create backaup directory \n"; + $this->run_cmd('mkdir /backup/'); + } + + + // It performs the command line (Выполняет командную строку) + function run_cmd($cmd){ + if ($this->debug==1){ + echo $cmd."\n\n"; + }else{ + exec($cmd); + } + } + + // The command creates the structure of a given file (Команда создает структуру заданного файла) + function saveStructure($tablename, $filename){ + global $k2; + + echo "Delete structure for $tablename \n"; + $this->run_cmd( "rm /backup/".$tablename."_struct.sql" ); + + echo "Create structure for $tablename \n"; + $this->run_cmd( "mysqldump --no-data --user=".$k2->user." --password=".$k2->pass." ".$k2->dbname." $tablename >$filename" ); + } + + + // This command creates a backup of the specified table (Команда создает бекап заданной таблицы) + function backupTable($tablename, $filename){ + global $k2; + + echo "Create backup table for $tablename \n"; + $this->run_cmd( "mysqldump --user=".$k2->user." --password=".$k2->pass." ".$k2->dbname." $tablename >$filename" ); + } + + + // It executes the SQL script (Выполняет SQL скрипт) + function execScript($sql){ + global $k2; + + try{ + + if ($this->debug==1){ + echo "sql: $sql\n\n"; + }else{ + echo "$sql\n".$k2->db->exec($sql)."\n"; + + } + + }catch(PDOException $e) { + echo "Error Run Script: ".$e->getMessage()."\n"; + } + + } + + + // It executes the SQL script Select (Выполняет SQL скрипт с Select) + function selectScript($sql){ + global $k2; + + try{ + + if ($this->debug==1){ + echo "sql: $sql\n\n"; + }else{ + echo "$sql\n".$k2->db->query($sql)."\n"; + + } + + }catch(PDOException $e) { + echo "Error Run Select Script: ".$e->getMessage()."\n"; + } + + } + + + // This command deletes the table and restore from backup (Команда удаляет таблицу и восстанавливает из бекапа) + function dropAndRestoreTable($tablename, $filename){ + global $k2; + + // Deleting a table (Удаление таблицы) + echo "Drop table of $tablename\n"; + $this->execScript('drop table '.$tablename); + + echo "Restore table of $tablename\n"; + $this->run_cmd( "mysql -u ".$k2->user." -p".$k2->pass." ".$k2->dbname." < $filename" ); + + } + + // Returns the name of the structure file (Возвращает название файла со структурой) + function getStructFileName($tablename){ + return "/backup/".$tablename."_struct.sql"; + } + + // Returns the name of the backup file (Возвращает название файла бакапа) + function getBackupFileName($tablename){ + return "/backup/".$tablename."_".date("Y_m_d-H_m_s").".sql"; + } + + + // Struture command creates the specified file, creates a backup of the specified table, + // table to delete the job and restores its backup satellite structure (Команда создает + // струтуру заданного файла, создает бекап заданной таблицы, удаляет заданую таблицу и восстанавливает её исз бекапа структуры) + function fullClearTable($tablename){ + global $k2; + + $structname=$this->getStructFileName($tablename); + $bacupname=$this->getBackupFileName($tablename); + + echo "Name struct filename=$structname\n"; + echo "Name backup filename=$bacupname\n"; + + + $this->iniMain(); + $this->saveStructure($tablename, $structname); + $this->backupTable($tablename, $bacupname); + + // Удаляем таблицу и восстанавливаем - если сделались бекапы + if (file_exists($structname) && file_exists($bacupname)){ + $this->dropAndRestoreTable($tablename, $structname); + }else{ + echo "Not Found Backup or Structure!\n"; + } + } + + + + // Saving SQL-query in the file to a temporary directory (Сохранение SQL-запроса в файл во временный каталог) + function saveSQLToFile($sql){ + $this->execScript($sql); + } + + + // Moves from the temporary directory to a backup directory (Перемещает из временного каталога в каталог бекапа) + function moveTmpToBackup($filename){ + //$this->run_cmd("mv /tmp/$filename /backup/$filename"); + } + + // Returns the file name for the backup, depending on the current date and time (Возвращает название файла для бекапа, в зависимости от текущей даты и времени) + function getFileNameBackup($tablename){ + return $tablename."_".date("Y_m_d-H_m_s").".txt"; + } + + + + // Collapse for a certain number of days (Свертывание за определенное количество дней) + // $tablename - table name (название таблицы) + // $fieldname - the name of the field over which the rotation (название поля, по которому производится ротация) + // $days - the number of days that remain (количество дней, которое остается) + // $isunixformat - Unix-date format (Unix-формат даты) + function rotateTable($tablename, $fieldname, $days=2, $isunixformat=true){ + $filename=$this->getFileNameBackup($tablename); + + echo "backup file: $filename \n"; + + + // Saving data to a file (Сохранение данных в файл) + $sql="SELECT * + INTO OUTFILE \"/backup/".$filename."\" + FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' + LINES TERMINATED BY \"\\n\" + FROM $tablename"; + + if ($isunixformat){ + + $d = strtotime("-$days day"); + $datefrom=date("Y-n-j", $d).' 00:00:00'; + + + $where=" WHERE (`$fieldname`<=UNIX_TIMESTAMP('".$datefrom."'))"; + }else{ + + $where=" WHERE (`$fieldname`<=CURDATE()-$days)"; + + } + + $sql.=$where.";"; + + $this->saveSQLToFile($sql); + $this->moveTmpToBackup($filename); + + + // Deleting information from a file (Удаление информации из файла) + if (file_exists("/backup/".$filename)){ + $sql="DELETE FROM $tablename ".$where.";"; + $this->execScript($sql); + } + + + } + + + + + // Will the database cleaning (Будет очистка базы данных) + function clearData(){ + global $k2; + + // Nowhere is not in use, so sent to the file archive (Нигде не используется, поэтому отправляется в файловый архив) + $this->fullClearTable('log_cron_events'); + $this->fullClearTable('log_cache'); + $this->fullClearTable('users_change_rp'); + + // Used only 1 day. Remove all less than 1 day (Используется только 1 день. Удалять все, что менее 1 дня) + $this->rotateTable('visitors', 'date', 2, true); + $this->rotateTable('rp_ads_viewed', 'date', 2, false); + + + // Tables where you have to do rotation (Таблицы, где нужно делать ротацию) + // allocated_ads + // balancehistory + + + // Used view_ads (Используется в view_ads) + // ad_actions + + + // Used statistic_ajax (Используется в statistic_ajax) + // allocated_logs + + // It is also used in other scripts (Используется так же в других скриптах) + // ad_clicks + + // Many used where (Много где используется) + // referral_commissions_log + + + + + echo "Clear And...\n"; + } + + + function content(){ + $rez=$this->clearData(); + return $rez; + } + + +} + diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rcc.php b/k2shop/k2shop/app/deleted/rcc/rcc/rcc.php new file mode 100644 index 0000000..eb475f1 --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rcc.php @@ -0,0 +1,61 @@ +get('comp'); + $c=$k2->get('c'); + + $s=$k2->getComp($comm); + if ($s[0]<>'rcc'){ + return; + } + + $comp=$k2->ins_comp($s[0], $s[1], true); + + if ($comp<>'') + $rez.=$comp->content(); + + return $rez; + + } + + + // Возвращаем контент + function content(){ + + global $k2; + + $rez='
        + '; + + $rez.=$this->oper(); + + $rez.=' +
        + '; + + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rcc.sql b/k2shop/k2shop/app/deleted/rcc/rcc/rcc.sql new file mode 100644 index 0000000..9c05fcb --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rcc.sql @@ -0,0 +1,40 @@ +/* информация о баласе */ +CREATE VIEW balansinfo +AS + SELECT b.id, FROM_UNIXTIME(b.date) as date, b.amount, b.row_type, b.description, b.balance, b.type, b.USER, u.login + FROM `balancehistory` b + + LEFT JOIN users u + ON b.USER=u.id +; + +/* Информация о компаниях */ +CREATE VIEW compaigninfo +AS +SELECT c.id, c.pack, c.quantity, c.url, c.title, c.video_url, c.description, c.banner_125x125, c.banner_728x90, c.banner_468x60, c.countries, c.selected_countries, c.payment, c.total_cost, c.AD_PACK, c.date, c.user, c.AdAllocations, c.AdActions, c.AdViews_468x60, c.AdViews_728x90, c.AdClicks_468x60, c.AdClicks_728x90, c.AdViewStatus, + p.pack_type, u.login +FROM ad_campaigns c + + LEFT JOIN ad_packs p + on c.pack=p.id + + LEFT JOIN users u + on c.user=u.id +; + +/* Информация о рекламе */ +CREATE VIEW reportadsinfo +AS +SELECT r.id, r.campaign_id, r.report_user, FROM_UNIXTIME(r.date) as date, u.login, c.title, c.url, uc.login as logincomp +FROM reported_ads r + + LEFT JOIN users u + ON r.report_user=u.id + + LEFT JOIN ad_campaigns c + ON r.campaign_id=c.id + + LEFT JOIN users uc + ON c.user=uc.id +; + diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rcc_accountbalans.php b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_accountbalans.php new file mode 100644 index 0000000..ea531f2 --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_accountbalans.php @@ -0,0 +1,128 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "SELECT id, date, amount, row_type, description, balance, type, USER, login + FROM balansinfo + ", + + 'table' => "balansinfo", + + /*'is_edit'=>true, + 'is_export'=>true, + 'is_del'=>true, + 'is_clone'=>false, + 'is_add'=>false,*/ + + 'footer'=>true, + 'sum'=>array('date'=>'count','balance'=>'sum', 'amount'=>'sum'), + + 'height' => '100%', + + 'sortname' => 'date', + 'sortorder' => 'desc', + + 'caption' => 'View Account Balans', + 'width' => '100%', + 'rows' => '20', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'id', + 'caption' => 'ID', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'date', + 'caption' => 'Date', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + + ['field' => 'login', + 'caption' => 'Login', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'description', + 'caption' => 'Description', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'type', + 'caption' => 'Type', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'row_type', + 'caption' => 'Row Type', + 'width' => '150', + 'readonly' => false, + 'align' => 'center' + ], + + ['field' => 'balance', + 'caption' => 'Balance', + 'width' => '150', + 'readonly' => false, + 'align' => 'right' + ], + + ['field' => 'amount', + 'caption' => 'Amount', + 'width' => '150', + 'readonly' => false, + 'align' => 'right' + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showAcc(); + return $rez; + + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rcc_adcompaigns.php b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_adcompaigns.php new file mode 100644 index 0000000..0cdd641 --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_adcompaigns.php @@ -0,0 +1,214 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select id, pack, quantity, url, title, video_url, description, banner_125x125, banner_728x90, banner_468x60, countries, selected_countries, payment, total_cost, AD_PACK, date, user, + AdAllocations, AdActions, AdViews_468x60, AdViews_728x90, AdClicks_468x60, AdClicks_728x90, AdViewStatus, + pack_type, login + + from compaigninfo + ", + + 'table' => "compaigninfo", + + /*'is_edit'=>false, + 'is_export'=>true, + 'is_del'=>false, + 'is_clone'=>false, + 'is_add'=>false,*/ + + 'footer'=>true, + 'sum'=> ['id'=>'count'], + + 'height' => '100%', + + 'sortname' => 'id', + 'sortorder' => 'desc', + + 'caption' => 'AD Compaigns', + 'width' => '100%', + 'rows' => '20', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'id', + 'caption' => 'ID', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'login', + 'caption' => 'Login', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'pack', + 'caption' => 'Pack', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'quantity', + 'caption' => 'Quantity', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'url', + 'caption' => 'URL', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'video_url', + 'caption' => 'Video URL', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'banner_125x125', + 'caption' => 'Banner 125x125', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'banner_728x90', + 'caption' => 'Banner 728x90', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'banner_468x60', + 'caption' => 'Banner 468x60', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'countries', + 'caption' => 'Counties', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'payment', + 'caption' => 'Payment', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'AD_PACK', + 'caption' => 'AD Pack', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'AdAllocations', + 'caption' => 'AD Allocations', + 'width' => '150', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'AdActions', + 'caption' => 'AD Actions', + 'width' => '150', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'AdViewStatus', + 'caption' => 'AD View Status', + 'width' => '150', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'selected_countries', + 'caption' => 'Selected Countries', + 'width' => '150', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'AdViews_468x60', + 'caption' => 'Ad Views 468x60', + 'width' => '150', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'AdViews_728x90', + 'caption' => 'Ad Views 728x90', + 'width' => '150', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'AdClicks_468x60', + 'caption' => 'Ad Clicks 468x60', + 'width' => '150', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'AdClicks_728x90', + 'caption' => 'Ad Clicks 728x90', + 'width' => '150', + 'readonly' => true, + 'align' => 'right' + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showAcc(); + return $rez; + + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rcc_bank.php b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_bank.php new file mode 100644 index 0000000..9e76ecb --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_bank.php @@ -0,0 +1,88 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "SELECT FROM_UNIXTIME(date) as date, descr, summ FROM bank_log ", + 'table' => "bank_log", + + /*'is_edit'=>true, + 'is_export'=>true, + 'is_del'=>true, + 'is_clone'=>false, + 'is_add'=>false,*/ + + 'footer'=>true, + 'sum'=>array('date'=>'count','summ'=>'sum'), + + /*'height' => '100%',*/ + + 'sortname' => 'date', + 'sortorder' => 'desc', + 'caption' => 'Bank WidthDrawal History', + /*'width' => '800', + 'rows' => '20',*/ + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'date', + 'caption' => 'Date', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + + ['field' => 'descr', + 'caption' => 'Description', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'summ', + 'caption' => 'Summ', + 'width' => '150', + 'readonly' => false, + 'align' => 'right' + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showUsers(); + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rcc_loginip.php b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_loginip.php new file mode 100644 index 0000000..c82e3ab --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_loginip.php @@ -0,0 +1,104 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "SELECT FROM_UNIXTIME(date) as date, login, ip, status FROM last_login_ip ", + 'table' => "last_login_ip", + + 'where'=>'WHERE (1=1)', + + /*'is_edit'=>true, + 'is_export'=>true, + 'is_del'=>true, + 'is_clone'=>false, + 'is_add'=>false,*/ + + 'footer'=>true, + 'sum'=> ['date'=>'count'], + + /*'height' => '100%',*/ + + 'sortname' => 'date', + 'sortorder' => 'desc', + 'caption' => 'Login IP Log', + /*'width' => '800', + 'rows' => '20', + 'is_edit' => true,*/ + 'fields' => [ + ['field' => 'date', + 'caption' => 'Date', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + + ['field' => 'login', + 'caption' => 'User', + 'width' => '150', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/manage/interface/view_users?sort[login]={login}', + 'caption2' => '{login}' + ] + ], + + + ['field' => 'ip', + 'caption' => 'IP Address', + 'width' => '150', + 'readonly' => false, + 'align' => 'right' + ], + + ['field' => 'status', + 'caption' => 'Status', + 'width' => '120', + 'readonly' => false, + 'align' => 'right' + ] + + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showUsers(); + return $rez; + + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rcc_reportads.php b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_reportads.php new file mode 100644 index 0000000..d73e733 --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_reportads.php @@ -0,0 +1,131 @@ +ins_comp2('k2phpgrid', $this); + + $arr = ['select' => "SELECT id, campaign_id, report_user, date, login, title, url, logincomp FROM reportadsinfo ", + 'table' => "reportadsinfo", + + /*'is_edit'=>false, + 'is_export'=>true, + 'is_del'=>false, + 'is_clone'=>false, + 'is_add'=>false,*/ + + 'footer'=>true, + 'sum'=> ['id'=>'count'], + + /*'height' => '100%',*/ + + 'sortname' => 'date', + 'sortorder' => 'desc', + 'caption' => 'Report Ads', + 'width' => '100%', + 'rows' => '20', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'id', + 'caption' => 'ID', + 'width' => '150', + 'readonly' => false, + 'align' => 'center' + ], + + + + ['field' => 'title', + 'caption' => 'Ad Title', + 'width' => '200', + 'readonly' => false, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => ['exp' => '(false)', + 'url2' => '/cp/index/all-ad-campaigns#!/campaign-info?id=ADW:{campaign_id}', + 'caption2' => '{title}' + ] + ], + + + ['field' => 'login', + 'caption' => 'Report User', + 'width' => '100', + 'readonly' => false, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/manage/interface/view_users?sort[login]={login}', + 'caption2' => '{login}' + ] + ], + + ['field' => 'logincomp', + 'caption' => 'Report User', + 'width' => '100', + 'readonly' => false, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/manage/interface/view_users?sort[login]={logincomp}', + 'caption2' => '{logincomp}' + ] + ], + + + + ['field' => 'date', + 'caption' => 'Report Time and Date', + 'width' => '150', + 'readonly' => false, + 'align' => 'right' + ], + + ['field' => ' ', + 'caption' => 'Actions', + 'width' => '100', + 'readonly' => false, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/manage/interface/reported_ads?id={id}&sub=delete', + 'caption2' => 'Mark as Show' + ] + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showUsers(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rcc_users.php b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_users.php new file mode 100644 index 0000000..86d7426 --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_users.php @@ -0,0 +1,269 @@ +ins_comp2('k2phpgrid', $this); + + $arr = ['select' => "select id, login, full_name, sex, email, notice_email, + country, date_of_birth, ref, active, disabled, + SECRET_KEY, REG_DATE, INVEST_BALANCE, ACCOUNT_BALANCE, + SHARES, RP, REFERER_URL, LAST_LOGIN_TIME, LAST_ACTIVICY, + IP, wallets, error_cashouts, date_reg, cnt_ref, deposit, cashout, invest + + from (select u.id, u.login, u.full_name, u.sex, u.email, u.notice_email, + u.country, u.date_of_birth, u.ref, u.active, u.disabled, + u.SECRET_KEY, u.REG_DATE, u.INVEST_BALANCE, u.ACCOUNT_BALANCE, + u.SHARES, u.RP, u.REFERER_URL, u.LAST_LOGIN_TIME, u.LAST_ACTIVICY, + u.IP, u.wallets, u.error_cashouts, u.date_reg, + + (SELECT count(*) as cnt FROM `users` u2 WHERE u2.ref = u.login) as cnt_ref, + + (SELECT SUM(m.summ) AS summ FROM `merchant_history` m WHERE m.user = u.id AND m.STATUS = '1') as deposit, + + (SELECT SUM(c.summ) AS summ FROM `cashouts` c WHERE c.user = u.id AND c.status = '1') as cashout, + + (SELECT SUM(i.summ) as summ FROM `investments` i WHERE i.user = u.id) as invest + + from users u + ) u + ", + 'table' => "users", + + 'where' => 'WHERE (1=1)', + /*'is_edit'=>true, + 'is_export'=>true, + 'is_del'=>true, + 'is_clone'=>false, + 'is_add'=>false,*/ + + 'footer'=>true, + 'sum'=> ['id'=>'count','RP'=>'sum', 'INVEST_BALANCE'=>'sum', 'ACCOUNT_BALANCE'=>'sum', 'SHARES'=>'sum'], + + 'height' => '100%', + + 'sortname' => 'id', + 'sortorder' => 'desc', + 'caption' => 'Пользователи', + /*'width' => '100%', + 'rows' => '20',*/ + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'id', + 'caption' => 'ID', + 'width' => '60', + 'readonly' => true, + 'align' => 'left' + ], + + + ['field' => 'login', + 'caption' => 'Login', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'SECRET_KEY', + 'caption' => 'Login as...', + 'width' => '80', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/setcookie?p[key]=user_ix&p[value]={SECRET_KEY}&redir=/cp/index/dashboard', + 'caption2' => 'Login as' + ] + ], + + + ['field' => 'email', + 'caption' => 'Email', + 'width' => '180', + 'readonly' => false, + 'align' => 'left' + ], + + + ['field' => 'country', + 'caption' => 'Country', + 'width' => '60', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'date_of_birth', + 'caption' => 'Date of Birth', + 'width' => '80', + 'readonly' => false, + 'align' => 'center', + 'type_field' => 'date' + ], + + + ['field' => 'ref', + 'caption' => 'Referer', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'cnt_ref', + 'caption' => 'Referrals', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'deposit', + 'caption' => 'Deposited', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'cashout', + 'caption' => 'Cashout', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'INVEST_BALANCE', + 'caption' => 'IB', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'ACCOUNT_BALANCE', + 'caption' => 'AB', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'SHARES', + 'caption' => 'Shares', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'RP', + 'caption' => 'RP', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'invest', + 'caption' => 'Invested', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'REFERER_URL', + 'caption' => 'Referer URL', + 'width' => '230', + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '{REFERER_URL}', + 'caption2' => '{REFERER_URL}' + ] + ], + + + ['field' => '', + 'caption' => 'Add to Blacklist', + 'width' => '120', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/manage/interface/edit_blacklist?login={login}', + 'caption2' => 'Add to Blacklist' + ] + ], + + ['field' => ' ', + 'caption' => 'Edit Form', + 'width' => '100', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/manage/interface/add_users?edit={id}', + 'caption2' => 'Edit Form' + ] + ], + + ['field' => ' ', + 'caption' => 'Add funds', + 'width' => '100', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/manage/interface/add_funds?to={id}', + 'caption2' => 'Add funds' + ] + ], + + ['field' => ' ', + 'caption' => 'Reset to zero', + 'width' => '100', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => "/manage/interface/view_users?reset={id}", + 'caption2' => 'Reset' + ] + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showUsers(); + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/rcc/rcc/rcc_viewinvest.php b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_viewinvest.php new file mode 100644 index 0000000..ff10b08 --- /dev/null +++ b/k2shop/k2shop/app/deleted/rcc/rcc/rcc_viewinvest.php @@ -0,0 +1,130 @@ +ins_comp2('k2phpgrid', $this); + + $arr = ['select' => "SELECT FROM_UNIXTIME(repay_due) as repay_due, FROM_UNIXTIME(date) as date, pack, summ, (summ/100*pack) as amount_due, u.login + FROM investments i + + LEFT JOIN users u + on user=u.id + + ", + 'table' => "investments", + + 'where'=>'WHERE (1=1)', + + /*'is_edit'=>true, + 'is_export'=>true, + 'is_del'=>true, + 'is_clone'=>false, + 'is_add'=>false,*/ + + 'footer'=>true, + 'sum'=> ['repay_due'=>'count','summ'=>'sum' /*, 'amount_due'=>'sum'*/], + + 'height' => '100%', + + 'sortname' => 'date', + 'sortorder' => 'desc', + 'caption' => 'Investment Instruments', + 'width' => '100%', + 'rows' => '20', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'date', + 'caption' => 'Investment date', + 'width' => '150', + 'readonly' => true, + 'align' => 'center' + ], + + + ['field' => 'pack', + 'caption' => 'Invest Pack', + 'width' => '150', + 'readonly' => false, + 'align' => 'right' + ], + + ['field' => 'summ', + 'caption' => 'Invested', + 'width' => '60', + 'readonly' => false, + 'align' => 'right' + ], + + ['field' => 'amount_due', + 'caption' => 'Total amount due', + 'width' => '120', + 'readonly' => false, + 'align' => 'right' + ], + + + + ['field' => 'login', + 'caption' => 'Repay due date', + 'width' => '150', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/manage/interface/view_users?sort[login]={login}', + 'caption2' => '{login}' + ] + ], + + ['field' => '', + 'caption' => 'Delete', + 'width' => '80', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/manage/interface/view_invest?sub=delete&id={id}', + 'caption2' => 'Delete' + ] + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showUsers(); + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/k2vdocfiles.php b/k2shop/k2shop/app/deleted/vdoc/k2vdocfiles.php new file mode 100644 index 0000000..2754e94 --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/k2vdocfiles.php @@ -0,0 +1,810 @@ + + .select2{ + width:200px; + padding: 10px; + } + +
        +
        +
        +
        + × +

        Додати файл

        +
        +
        +
        +
        +
        +
        +

        Виберіть необхідні параметри

        +
        +
        +
        + Виберіть папку
        + {folder}

        + Виберіть тип документу
        + {typedoc}

        +
        + + +
        + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + × +

        Видалити файл

        +
        +
        +
        +
        +
        +
        +

        Виберіть необхідні параметри

        +
        +
        + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + × +

        Увага!

        +
        +
        +
        +
        +
        +
        +

        Будь ласка, виберіть файл

        +
        + +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        + × +

        Перемістити файл

        +
        +
        +
        +
        +
        +
        +

        Виберіть необхідні параметри

        +
        +
        + {folder}

        + +
        +
        +
        +
        +
        +
        +
        +
        + "; + public $right_panel='
        + + + + + + + +
        + + +
        +
        + + +
        +
        + + +
        +
        + + +
        +
        + + +
        +
        + + +
        +
        + + '; + public $bottom_panel = ' + '; + + + protected function init_obj(){ + global $k2; + $k2->check_connect(); + + + $k2->site->addCSS('w3.css', 'http://www.w3schools.com/lib/w3.css'); + $k2->site->addCSS('font-awesome.min.css', 'http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css'); + $k2->site->addJS('bootstrap.min.js', 'k2shop/usr/admin/php/bootstrap/js/bootstrap.min.js'); + $k2->site->addCSS('w3.css', 'http://www.w3schools.com/lib/w3.css'); + $k2->site->addCSS('font-awesome.min.css', 'http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css'); + $k2->site->addJS('upload.js', 'k2shop/k2shop/app/app/vdocs/k2vdocs/upload.js'); + + $k2->site->addHead('jquery.min.js', ' + '); + + } + + + function getExt($ext) { + global $k2; + $rez = ''; + $sql = 'select typefileid from vdExt where ext = "'.$ext.'" '; + foreach ($k2->db->query($sql) as $value) { + $rez = $value['typefileid']; + } + + return $rez; + } + + function getFileid() { + global $k2; + $rez = ''; + $sql = 'select fileid from vdHistory where ordnum = (SELECT MAX(ordnum) FROM vdHistory) '; + foreach ($k2->db->query($sql) as $value) { + $rez = $value['fileid']; + } + + return $rez; + } + + + // Вывод таблицы справочника валют + function show_files($arr){ + + global $k2; + $rez = ''; + + $selects=$k2->ins_comp('k2select2'); + $folder=$selects->sel( + array( + 'name' => 'folder', + 'sql' => "select treeid as k, treename as v from vdTree", + 'search_input' => 1, + 'value'=>'' + ) + ); + + //$typedoc=$k2->ins_comp('k2select2'); + $typedoc=$selects->sel( + array( + 'name' => 'typedoc', + 'sql' => "select typedocid as k, typedocname as v from vdTypeDoc", + 'search_input' => 1, + 'value'=>'' + ) + ); + $grid=$k2->ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select fileid, treeid, ordnum, typefileid, filename, fileext, statid, docn, docdate, typedocid, kodf, sumdoc, comment_file, usercreate," + . "datecreate, userupdate, dateupdate, size_file, site_history, working_user, date_working, del from vdFiles where del = 0", + 'table' => "vdFiles", + 'typeid'=>1, + 'sortname' => 'fileid', + 'sortorder' => 'asc', + 'caption' => 'Файли', + 'detile' => "vdHistory", + /*'is_edit' => true, + 'is_add'=>false, // allow/disallow add + + 'is_delete'=>false, // allow/disallow delete */ + 'is_rowactions'=>false, // show/hide row wise edit/del/save option + 'is_autofilter' => false, // show/hide autofilter for search + 'is_search' => false, // show single/multi field search condition (e.g. simple or advance) , + 'footer'=>true, + 'sum'=> ['size_file'=>'sum', 'sumdoc'=>'sum'], + 'fields' => [ + ['field' => 'fileid', + 'caption' => 'ID файлу', + 'width' => '120', + 'hidden' => true, + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'statid', + 'caption' => 'Статус', + 'width' => '120', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select statid as k, statname as v from vdStat" + ], + + ['field' => 'docn', + 'caption' => '№
        документу', + 'width' => '80', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'docdate', + 'caption' => 'Дата
        документу', + 'width' => '105', + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'typedocid', + 'caption' => 'Тип
        документу', + 'width' => '80', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select typedocid as k, typedocname as v from vdTypeDoc" + ], + + ['field' => 'sumdoc', + 'caption' => 'Сума
        документа', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'typefileid', + 'caption' => 'Тип
        файлу', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select typefileid as k, nametypefile as v from vdTypeFile" + ], + + + ['field' => 'treeid', + 'caption' => 'ID гілки', + 'width' => '200', + + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select treeid as k, treename as v from vdTree" + ], + + ['field' => 'kodf', + 'caption' => 'Контрагент', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select kodf as k, namefirm as v from vdFirm" + ], + + ['field' => 'comment_file', + 'caption' => 'Примітки', + 'width' => '100', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'ordnum', + 'caption' => 'Номер вставки в базу даних', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'filename', + 'caption' => 'Назва файлу', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'fileext', + 'caption' => 'Розширення файлу', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'usercreate', + 'caption' => 'Створив', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'datecreate', + 'caption' => 'Час створення', + 'width' => '200', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'userupdate', + 'caption' => 'Змінив', + 'width' => '200', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'dateupdate', + 'caption' => 'Час змін', + 'width' => '200', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'size_file', + 'caption' => 'Розмір файлу, кб', + 'width' => '200', + 'hidden' => false, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'site_history', + 'caption' => 'Історія', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'working_user', + 'caption' => 'Зараз працює', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'date_working', + 'caption' => 'Дата взяття на роботу', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '300', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ] + ]; + + //$rez .= $this->right_panel; + $rez .= '
        '; + $rez .= '
        '; + $rez .= $grid->simpleTable($arr); + $rez .= '
        '; + $rez .= '
        '; + $rez .= $this->bottom_panel; + $rez .= $this->forms; + + $grid2 = $k2->ins_comp2('k2phpgrid', $this); + + $arr2 = [ + 'select' => "select histid, fileid, ordnum, datecreate, usercreate from vdHistory where fileid={masterid} ", + 'table' => "vdHistory", + 'typeid'=>1, + 'getmaster' => true, + 'masterid' => 'fileid', + 'sortname' => 'histid', + 'sortorder' => 'asc', + 'caption' => 'Історія', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'histid', + 'caption' => 'ID Історіі', + 'width' => '80', + 'readonly' => false, + 'hidden' => true, + 'align' => 'center' + ], + + ['field' => 'fileid', + 'caption' => 'ID файла', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'ordnum', + 'caption' => 'Номер вставки в базу даних.', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'datecreate', + 'caption' => 'Дата створення', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'usercreate', + 'caption' => 'Користувач', + 'width' => '100', + 'readonly' => false, + 'align' => 'left' + ] + ] + ]; + + //$rez .= $grid2->simpleTable($arr); + + $rez .= " +
        +
        +
        + + × +
        +
        ".$grid2->simpleTable($arr2)."
        +
        +
        +
        +
        "; + $rez .=""; + $rez=str_replace('{folder}', $folder, $rez); + $rez=str_replace('{typedoc}', $typedoc, $rez); + + if($_FILES && is_uploaded_file($_FILES["filename"]["tmp_name"]) ) + { + + $arr_ext = explode(".", $_FILES["filename"]["name"]); + $file = $arr_ext[0]; + $ext = $arr_ext[1]; + $size_file = $_FILES["filename"]["size"]; + $typefileid = $this->getExt($ext); + + $sql1 = "insert into vdFiles + (treeid, typefileid, typedocid, filename, fileext, size_file, usercreate, statid) + values ('".$k2->post('folder')."', '".$typefileid."', '".$k2->post('typedoc')."', '".$file."', '".$ext."', '".$size_file."', '".$k2->auth->login."', 'b387c11965c2b2b21898dcd3940769ee') "; + $k2->db->exec($sql1); + + $fileid = $this->getFileid(); + $year = date('Y'); + $month = date('m'); + $day = date('d'); + $path = md5($k2->rootdir).'/'.$year.'/'.$month.'/'.$day; + + if (file_exists($k2->rootdir.'/vdupload/'.$path)) { + // echo "The file $filename exists"; + } else { + mkdir($k2->rootdir.'/vdupload/'.$path, 0775, true); + } + //$rez .=$path; + $uploadComplete = move_uploaded_file($_FILES["filename"]["tmp_name"], $k2->rootdir.'/vdupload/'.$path.'/'.$fileid); + //mkdir("/path/to/my/dir", 0700); + + //$filename = '/path/to/foo.txt'; + + +// if ($this->isAllowedExtension($_FILES["filename"]["name"]) ) { +// // Пороверяем, чтобы такого имени файла небыло в папке. +// do { +// $filename = $this->generateFileName($_FILES["filename"]["name"]); +// } while (file_exists(self::SOURCE_URL.$filename)); + +// $uploadComplete = move_uploaded_file($_FILES["filename"]["tmp_name"], self::SOURCE_URL.$filename); + +// if($uploadComplete) { +// // Создаем полное изображение и миниатюру +// $resize = $k2->ins_comp('k2image_resize'); +// $resize->resize(self::SOURCE_URL.$filename, self::FULL_SIZE_URL.$filename, self::FULL_IMG_WIDTH, self::FULL_IMG_HEIGHT); +// $resize->resizeto(self::SOURCE_URL.$filename, self::THUMBNAILS_URL.$filename, self::THUMB_IMG_WIDTH, self::THUMB_IMG_HEIGHT); + +// $portf_name = ''; +// $portf_projid = 1; +// $portf_sort = 1; +// $portf_typeid = 1; +// $portf_alt = ''; + +// if($k2->post('portf_sort')){ +// $portf_sort = $k2->post('portf_sort'); +// } + +// if($k2->post('portf_alt')){ +// $portf_alt = $k2->post('portf_alt'); +// } + +// if($k2->post('portf_typeid')){ +// $portf_typeid = $k2->post('portf_typeid'); +// } + +// if($k2->post('portf_name')){ +// $portf_name = $k2->post('portf_name'); +// } + +// if($k2->post('portf_projid')){ +// $portf_projid = $k2->post('portf_projid'); +// } + + +// $sql1 = "insert into k2portfolio (portf_path, portf_projid, portf_name, portf_typeid, portf_sort, portf_alt, langid) +// values ('".self::SOURCE_URL.$filename."', ".$portf_projid.", '".$portf_name."', ".$portf_typeid.", ".$portf_sort.", '".$portf_alt."', 'ru') "; + +// $k2->db->exec($sql1); +// // +// // print_r($_POST); +// echo '
        '; +// } else { +// echo '
        '; +// } + + } else { + //echo ''; + } + + echo $rez; + + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/k2vdocs_delFile.php b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_delFile.php new file mode 100644 index 0000000..10a268f --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_delFile.php @@ -0,0 +1,47 @@ +changeStatusDel($fileid); + $sql = "UPDATE vdFiles SET del='1' WHERE fileid ='$fileid'"; + try { + $k2->db->exec($sql); + }catch (Exception $e) { + echo "Ошибка удаления: $fileid. ".$e->getMessage()."\n"; + } + + + } + + } + + + + function content(){ + global $k2; + $rez=$this->delFile(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/k2vdocs_getFilePath.php b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_getFilePath.php new file mode 100644 index 0000000..5e456b6 --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_getFilePath.php @@ -0,0 +1,83 @@ +db->query($sql) as $value) { + // if ($value['first']!==null) { + $first = $value['first'].'/'; + // } + + + if ($value['second']!==null) { + $second = $value['second'].'/'; + } else { + $second = ''; + } + if ($value['next']!==null) { + $next = $value['next'].'/'; + } else { + $next = ''; + } + $typefileid = $value['nametypefile']; + + $file_json = []; + array_push($file_json, array( + 'path' => $next.$second.$first, + 'file' => $filename.'.'.$typefileid + + )); + } + + echo json_encode($file_json); + } + + + + + function content(){ + global $k2; + $rez=$this->getFilePath(); + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/k2vdocs_getTable.php b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_getTable.php new file mode 100644 index 0000000..60ca017 --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_getTable.php @@ -0,0 +1,420 @@ +db->query($sql) as $value) { + $rez = $value['treeid']; + } + + return $rez; + } + + function getFile(){ + global $k2, $vdocs; + $rez = ''; + + if(isset($_GET['category'])){ + $category = $_GET['category']; + $treeidHash = $this->getTreeid($category); + $where = "and treeid = '$treeidHash'"; + } else { + $where = ''; + } + $arr = ['select' => "select fileid, treeid, ordnum, typefileid, filename, fileext, statid, docn, docdate, typedocid, kodf, sumdoc, comment_file, usercreate," + . "datecreate, userupdate, dateupdate, size_file, site_history, working_user, date_working, del from vdFiles where del = 0 $where", + 'table' => "vdFiles", + 'typeid'=>1, + 'sortname' => 'fileid', + 'sortorder' => 'asc', + 'caption' => 'Файли', + 'detile' => "vdHistory", + /*'is_edit' => false, + 'is_add'=>false, // allow/disallow add */ + + /*'is_delete'=>false, // allow/disallow delete + 'is_rowactions'=>false, // show/hide row wise edit/del/save option + 'is_autofilter' => false, // show/hide autofilter for search + 'is_search' => false, // show single/multi field search condition (e.g. simple or advance) ,*/ + 'footer'=>true, + 'sum'=> ['size_file'=>'sum', 'sumdoc'=>'sum'], + 'fields' => [ + ['field' => 'fileid', + 'caption' => 'ID файлу', + 'width' => '120', + 'hidden' => true, + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'statid', + 'caption' => 'Статус', + 'width' => '120', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select statid as k, statname as v from vdStat" + ], + + ['field' => 'docn', + 'caption' => '№
        документу', + 'width' => '80', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'docdate', + 'caption' => 'Дата
        документу', + 'width' => '105', + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'typedocid', + 'caption' => 'Тип
        документу', + 'width' => '80', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select typedocid as k, typedocname as v from vdTypeDoc" + ], + + ['field' => 'sumdoc', + 'caption' => 'Сума
        документа', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'typefileid', + 'caption' => 'Тип
        файлу', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select typefileid as k, nametypefile as v from vdTypeFile" + ], + + + ['field' => 'treeid', + 'caption' => 'ID гілки', + 'width' => '200', + + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select treeid as k, treename as v from vdTree" + ], + + ['field' => 'kodf', + 'caption' => 'Контрагент', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select kodf as k, namefirm as v from vdFirm" + ], + + ['field' => 'comment_file', + 'caption' => 'Примітки', + 'width' => '100', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'ordnum', + 'caption' => 'Номер вставки в базу даних', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'filename', + 'caption' => 'Назва файлу', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'fileext', + 'caption' => 'Розширення файлу', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'usercreate', + 'caption' => 'Створив', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'datecreate', + 'caption' => 'Час створення', + 'width' => '200', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'userupdate', + 'caption' => 'Змінив', + 'width' => '200', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'dateupdate', + 'caption' => 'Час змін', + 'width' => '200', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'size_file', + 'caption' => 'Розмір файлу, кб', + 'width' => '200', + 'hidden' => false, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'site_history', + 'caption' => 'Історія', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'working_user', + 'caption' => 'Зараз працює', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'date_working', + 'caption' => 'Дата взяття на роботу', + 'width' => '200', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '300', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ] + + ] + ]; + + $grid = $k2->ins_comp2('k2phpgrid', $this); + + + $rez .= $grid->simpleTable($arr); + $grid2 = $k2->ins_comp2('k2phpgrid', $this); + + $arr2 = [ + 'select' => "select histid, fileid, ordnum, datecreate, usercreate from vdHistory where fileid={masterid} ", + 'table' => "vdHistory", + 'typeid'=>1, + 'getmaster' => true, + 'masterid' => 'fileid', + 'sortname' => 'histid', + 'sortorder' => 'asc', + 'caption' => 'Історія', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'histid', + 'caption' => 'ID Історіі', + 'width' => '80', + 'readonly' => false, + 'hidden' => true, + 'align' => 'center' + ], + + ['field' => 'fileid', + 'caption' => 'ID файла', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'ordnum', + 'caption' => 'Номер вставки в базу даних.', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'datecreate', + 'caption' => 'Дата створення', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'usercreate', + 'caption' => 'Користувач', + 'width' => '100', + 'readonly' => false, + 'align' => 'left' + ] + ] + ]; + + //$rez .= $grid2->simpleTable($arr); + + $rez .= " +
        +
        +
        + + × +
        +
        ".$grid2->simpleTable($arr2)."
        +
        +
        +
        +
        "; + + $rez .=""; + + return $rez; + } + + + + function content(){ + global $k2; + $rez=$this->getFile(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/k2vdocs_getTree.php b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_getTree.php new file mode 100644 index 0000000..3c9edff --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_getTree.php @@ -0,0 +1,305 @@ +db->query($sql) as $row) { + + array_push($categories, array( + 'id' => $row['id'], + 'parent' => $row['parent'], + 'text' => $row['text'] + )); + + } + return $categories; + } + +// Исключение категории по ее родителю и позиции number +function excludePosition($parentId, $position) { + + global $k2; + + $rez=''; + $sql = "update vdTree set number = number - 1 where parent_treeidnum = $parentId and number > $position"; + try { + $k2->db->exec($sql); + }catch (Exception $e) { + echo "Ошибка закрытия трансфера: $transfid. ".$e->getMessage()."\n"; + } + return $rez; +} + +// Вставка категории по ее id, родителю и позиции number +function includePosition($categoryId, $parentId, $position) { + global $k2; + + $rez=''; + $sql1 = "update vdTree set number = number + 1 where parent_treeidnum = $parentId and number >= $position"; + try { + $k2->db->exec($sql1); + }catch (Exception $e) { + echo "Ошибка закрытия трансфера: $categoryId. ".$e->getMessage()."\n"; + } + + $sql2 = "update vdTree set parent_treeidnum = $parentId, number = $position where treeid_num = $categoryId"; + try { + $k2->db->exec($sql2); + }catch (Exception $e) { + echo "Ошибка закрытия трансфера: $categoryId. ".$e->getMessage()."\n"; + } + return $rez; +} + +// Перемещение категории +function moveCategory($params) { + global $k2; + $categoryId = (int)$params['id']; + $oldParentId = (int)$params['old_parent']; + $newParentId = (int)$params['new_parent']; + $oldPosition = (int)$params['old_position'] + 1; + $newPosition = (int)$params['new_position'] + 1; + + $this->excludePosition($oldParentId, $oldPosition); + $this->includePosition($categoryId, $newParentId, $newPosition); + + return json_encode(array( + 'code' => 'success' + )); +} + +// Удаление категории по ее id (полю del присваивается 1) +function deleteSub($categoryId) { + global $k2; + $rez=''; + $sql1 = "update vdTree set del='1' where (treeid_num = $categoryId OR parent_treeidnum = $categoryId) "; + try { + $k2->db->exec($sql1); + }catch (Exception $e) { + echo "Ошибка закрытия трансфера: $categoryId. ".$e->getMessage()."\n"; + } + return $rez; +} + +// Переименование категории +function renameSub($categoryId, $categoryNewName) { + global $k2; + $rez=''; + $sql1 = "update vdTree set treename = '$categoryNewName' where (treeid_num ='$categoryId' OR id_tmp LIKE 'j%' ) "; //если в поле id_tmp записан индекс создания папки j??? + try { + $k2->db->exec($sql1); + }catch (Exception $e) { + echo "Ошибка закрытия трансфера: $categoryId. ".$e->getMessage()."\n"; + } + $sql2 = "update vdTree set id_tmp = '0' where (id_tmp LIKE 'j%' ) ";//обнуляем поле id_tmp + try { + $k2->db->exec($sql2); + }catch (Exception $e) { + echo "Ошибка закрытия трансфера: $categoryId. ".$e->getMessage()."\n"; + } + + return $rez; +} + +// Создание категории +function createSub($categoryId, $categoryName, $categoryParent) { + global $k2; + $rez=''; + $sql1 = "INSERT INTO vdTree (treename, parent_treeidnum, id_tmp) VALUES ('$categoryName', '$categoryParent', '$categoryId')"; + try { + $k2->db->exec($sql1); + }catch (Exception $e) { + echo "Ошибка закрытия трансфера: $categoryName. ".$e->getMessage()."\n"; + } + + $sql2 = "Select max(`treeid_num`) as `maxid` from `vdTree`"; + + try { +// $dd=$k2->db->exec($sql2); + + }catch (Exception $e) { + echo "Ошибка закрытия трансфера: $categoryName. ".$e->getMessage()."\n"; + } + return $rez; +} + + +// Удаление категории +function deleteCategory($params) { + global $k2; + $categoryId = (int)$params['id']; + + $this->deleteSub($categoryId); + + return json_encode(array( + 'code' => 'success' + )); +} + +//Переименование категории + +function renameCategory($params) { + global $k2; + $categoryId = (int)$params['id']; + $categoryNewName = $params['newname']; + + $this->renameSub($categoryId, $categoryNewName); + + return json_encode(array( + 'code' => 'success' + )); + +} + +//Создание категории +function createCategory($params) { + global $k2; + + $categoryId = $params['id']; + $categoryName = $params['name']; + $categoryParent = $params['parent']; + $this->createSub($categoryId, $categoryName, $categoryParent); + + return json_encode(array( + 'code' => 'success' + )); + +} + + +function getFilePath($treeid) + { + global $k2; + $rez = ''; + + $sql = "select t.treename as first, t.treeid, t.parent_treeid, t1.treename as second, t1.treeid, t1.parent_treeid, t2.treename as next, t2.treeid, t2.parent_treeid + from vdTree t + + left join vdTree t1 + on t.parent_treeid = t1.treeid + + left join vdTree t2 + on t1.parent_treeid = t2.treeid + + where t.treeid='$treeid'"; + + foreach ($k2->db->query($sql) as $value) { + // if ($value['first']!==null) { + $first = $value['first'].'/'; + // } + + + if ($value['second']!==null) { + $second = $value['second'].'/'; + } + if ($value['next']!==null) { + $next = $value['next'].'/'; + } + + } + + return $next.$second.$first; + } + + function getTree(){ + global $k2, $trans; + $rez = ''; + + + try { + + // Получаем данные из массива GET + $action = $_GET['action']; + switch ($action) { + // Получаем дерево категорий + case 'get_categories': + $result = $this->getCategories(); + break; + + // Перемещаем категорию + case 'move_category': + $result = $this->moveCategory($_GET); + break; + + // Удаляем категорию + case 'delete_category': + $result = $this->deleteCategory($_GET); + break; + + // Переименовать категорию + case 'rename_category': + $result = $this->renameCategory($_GET); + break; + + // Создание категорию + case 'create_category': + $result = $this->createCategory($_GET); + break; + + case 'file_path': + $result = $this->getFilePath($treeid); + break; + + // Действие по умолчанию, ничего не делаем + default: + $result = 'unknown action'; + break; + } + + // Возвращаем клиенту успешный ответ + $rez = json_encode(array( + 'code' => 'success', + 'result' => $result + )); + } + catch (Exception $e) { + // Возвращаем клиенту ответ с ошибкой + $rez = json_encode(array( + 'code' => 'error', + 'message' => $e->getMessage() + )); + } + + + return $rez; + + } + + function content(){ + global $k2; + $rez=$this->getTree(); + return $rez; + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/k2vdocs_moveFile.php b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_moveFile.php new file mode 100644 index 0000000..d05013d --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/k2vdocs_moveFile.php @@ -0,0 +1,68 @@ +db->query($sql) as $value) { + $rez = $value['treeid']; + } + + + + return $rez; + } + function moveFile(){ + global $k2, $vdocs; + $rez = ''; + + + $fileid = $_POST['fileid']; + $treeid = $_POST['treeid']; + + $treeidHash = $this->getTreeid($treeid); + if(isset($fileid)){ + + //$changegrtr = $vdocs->changeStatusDel($fileid); + $sql = "UPDATE vdFiles SET treeid='$treeidHash' WHERE fileid ='$fileid'"; + try { + $k2->db->exec($sql); + }catch (Exception $e) { + echo "Ошибка перемещения: $fileid. ".$e->getMessage()."\n"; + } + + + } + + return $treeid.'/'.$fileid; + } + + + + function content(){ + global $k2; + $rez=$this->moveFile(); + return $rez; + } + + + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/k2vdoctree.php b/k2shop/k2shop/app/deleted/vdoc/k2vdoctree.php new file mode 100644 index 0000000..9dae80c --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/k2vdoctree.php @@ -0,0 +1,55 @@ +site->addJS('jquery.min.js', $this->telerik_path.'js/jquery.min.js'); + $k2->site->addJS('jstree.min.js', $this->tree_path.'/js/jstree.min.js'); + $k2->site->addJS('maintree.js', 'k2shop/k2shop/app/app/vdocs/k2vdocs/maintree.js'); + $k2->site->addCSS('style.css', $this->tree_path.'/css/jstree/style.css'); + $k2->site->addCSS('main.css', $this->tree_path.'/css/main.css'); + $k2->site->addJS('upload.js', 'k2shop/k2shop/app/app/vdocs/k2vdocs/upload.js'); + + } + + + + function getVDocTree() { + global $k2; + + $rez = ' +
        + +
        + +
        + +
        + '; + + + echo $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/maintree.js b/k2shop/k2shop/app/deleted/vdoc/maintree.js new file mode 100644 index 0000000..a095382 --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/maintree.js @@ -0,0 +1,224 @@ +'use strict'; + +// Модуль приложения +var app = (function($) { + + // Инициализируем нужные переменные + var ajaxUrl = '/php', + ui = { + $categories: $('#categories'), + $goods: $('#goods') + }; + + // Инициализация дерева категорий с помощью jstree + function _initTree(data) { + var category; + $('#categories').jstree({ + core: { + check_callback: true, + multiple: false, + data: data + }, + search: { + case_insensitive: true, + show_only_matches : true + }, + "state" : { "key" : "categories" }, + "plugins": ['dnd', 'search', 'state'] + }).bind('changed.jstree', function(e, data) { + category = data.node.text, + //$('select#select2-chosen-8').html(category); + //alert(category); + + //$('select#gs_treeid').val('28f9bb91b1169b58621b477f6c650b1d'); + + $.ajax({ + url: "/?comp=k2vdocs&c=getTable&temp=ajax", + type: "GET", + data: {category:category}, + + success: function(data) { + + $('#fileTable').html(data); + console.log('category moved'); + jQuery('#vdFiles').jqGrid().trigger('reloadGrid'); + }, + error: function(error) { + console.error('Ошибка: ', error); + } + }); + //jQuery('#vdFiles').jqGrid().trigger('reloadGrid'); + console.log('changed node: ', data); + }).bind('move_node.jstree', function(e, data) { + var params = { + id: +data.node.id, + old_parent: +data.old_parent, + new_parent: +data.parent, + old_position: +data.old_position, + new_position: +data.position + }; + _moveCategory(params); + console.log('move_node params', params); + }).bind('delete_node.jstree', function (e, data) { + var params = { + id: +data.node.id + }; + _deleteCategory(params); + console.log('delete_node params', params); + }).bind('rename_node.jstree', function (e, data) { + var params = { + "id": data.node.id, + "newname": data.node.text + }; + console.log(data.node.id); + console.log('rename_node params', params); + _renameCategory(params); + + }).bind('create_node.jstree', function (e, data) { + var params = { + id: data.node.id, + name: data.node.text, + parent: data.node.parent + + }; + console.log(data); + console.log('create_node params', params); + _createCategory(params); + }); + $('#search').keyup(function(){ + $('#categories').jstree('search', $(this).val()); + }); + } + + // Перемещение категории + function _moveCategory(params) { + var data = $.extend(params, { + action: 'move_category' + }); + + $.ajax({ + url: "/?comp=k2vdocs&c=getTree&temp=ajax", + data: data, + dataType: 'json', + success: function(resp) { + if (resp.code === 'success') { + console.log('category moved'); + } else { + console.error('Ошибка получения данных с сервера: ', resp.message); + } + }, + error: function(error) { + console.error('Ошибка: ', error); + } + }); + } + + // Удаление категории + function _deleteCategory(params) { + var data = $.extend(params, { + action: 'delete_category' + }); + + $.ajax({ + url: "/?comp=k2vdocs&c=getTree&temp=ajax", + data: data, + dataType: 'json', + success: function(resp) { + if (resp.code === 'success') { + console.log('category deleted'); + } else { + console.error('Ошибка получения данных с сервера: ', resp.message); + } + }, + error: function(error) { + console.error('Ошибка: ', error); + } + }); + } + + + // Переименование категории + function _renameCategory(params) { + var data = $.extend(params, { + action: 'rename_category' + }); + + $.ajax({ + url: "/?comp=k2vdocs&c=getTree&temp=ajax", + data: data, + dataType: 'json', + success: function(resp) { + if (resp.code === 'success') { + console.log('category renamed'); + } else { + console.error('Ошибка получения данных с сервера: ', resp.message); + } + }, + error: function(error) { + console.error('Ошибка: ', error); + } + }); + } + + // Создание категории + function _createCategory(params) { + var data = $.extend(params, { + action: 'create_category' + }); + + $.ajax({ + url: "/?comp=k2vdocs&c=getTree&temp=ajax", + data: data, + dataType: 'json', + success: function(resp) { + if (resp.code === 'success') { + console.log('category created'); + } else { + console.error('Ошибка получения данных с сервера: ', resp.message); + } + }, + error: function(error) { + console.error('Ошибка: ', error); + } + }); + } + + // Загрузка категорий с сервера + function _loadData() { + var params = { + action: 'get_categories' + }; + + $.ajax({ + url: "/?comp=k2vdocs&c=getTree&temp=ajax", + method: 'GET', + data: params, + dataType: 'json', + success: function(resp) { + // Инициализируем дерево категорий + if (resp.code === 'success') { + _initTree(resp.result); + + } else { + console.error('Ошибка получения данных с сервера: ', resp.message); + } + }, + error: function(error) { + console.error('Ошибка: ', error); + } + }); + } + + // Инициализация приложения + function init() { + _loadData(); + } + + // Экспортируем наружу + return { + init: init + } + +})(jQuery); + +jQuery(document).ready(app.init); \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/upload.js b/k2shop/k2shop/app/deleted/vdoc/upload.js new file mode 100644 index 0000000..8b2fec9 --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/upload.js @@ -0,0 +1,186 @@ +// function TransferCompleteCallback(content){ +// // we might want to use the transferred content directly +// // for example to render an uploaded image +// } +// $( document ).ready(function() { +// var input = document.getElementById("input_files"); +// var formdata = false; +// if (window.FormData) { +// formdata = new FormData(); +// $("#btn_submit").hide(); +// $("#loading_spinner").hide(); +// } +// $('#input_files').on('change',function(event){ +// var i = 0, len = this.files.length, img, reader, file; +// //console.log('Number of files to upload: '+len); +// $('#result').html(''); +// $('#input_files').prop('disabled',true); +// $("#loading_spinner").show(); +// var folder = $("#folder").val(); +// alert(folder); +// for ( ; i < len; i++ ) { +// file = this.files[i]; +// //console.log(file); +// alert(this.folder); +// if(!!file.name.match(/.*\.pdf$/)){ +// if ( window.FileReader ) { +// reader = new FileReader(); +// reader.onloadend = function (e) { +// TransferCompleteCallback(e.target.result); +// }; +// reader.readAsDataURL(file); +// } +// if (formdata) { +// formdata.append("files[]", file); +// } +// } else { +// $("#loading_spinner").hide(); +// $('#input_files').val('').prop('disabled',false); +// alert(file.name+' is not a PDF'); +// } +// } +// if (formdata) { +// $.ajax({ +// url: "/?comp=k2vdocs&c=upload&temp=ajax", +// type: "POST", +// data: formdata, +// processData: false, +// contentType: false, // this is important!!! +// success: function (res) { +// var result = JSON.parse(res); +// $("#loading_spinner").hide(); +// $('#input_files').val('').prop('disabled',false); +// if(result.res === true){ +// var buf = '
          '; +// for(var x=0; x'; +// } +// buf += '
        '; +// $('#result').html('Files uploaded:'+buf); +// } else { +// $('#result').html(result.data); +// } +// // reset formdata +// formdata = false; +// formdata = new FormData(); +// } +// }); +// } +// return false; +// }); +// }); +//var defFilter = '{"groupOp":"AND","rules":[{"field":"treeid","op":"eq","data":"28f9bb91b1169b58621b477f6c650b1f"}]}'; +// $('#vdFiles').jqGrid("getGridParam", "postData").filters = defFilter; +function showHistory() { + + var selr = jQuery('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = jQuery('#vdFiles').jqGrid('getRowData', selr); + var fileid = ret.fileid; + if (fileid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + document.getElementById('history').style.display='block'; + } + + + + + } + +function showModal(param) { + if ((param=='del')||(param=='move')){ + var selr = jQuery('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = jQuery('#vdFiles').jqGrid('getRowData', selr); + var fileid = ret.fileid; + if (fileid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + document.getElementById(param).style.display='block'; + } + } else { + document.getElementById(param).style.display='block'; + } + + + } +function closeModal(param) { + document.getElementById(param).style.display='none' + } +function getParam(param){ + setTimeout(getParams, 0); + function getParams(){ + var selr = jQuery('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = jQuery('#vdFiles').jqGrid('getRowData', selr); + if (ret) { + + var fileid = ret.fileid; + if (param == 'del') { + delFile(fileid); + + var modal = document.getElementById("del"); + modal.style.display = "none"; + closeModal(param); + } else if (param == 'move'){ + + var treeid = $('#select2-chosen-4').html(); + + var fileid = ret.fileid; + + moveFile(fileid, treeid); + var modal = document.getElementById("del"); + modal.style.display = "none"; + closeModal(param); + } else { + + } + + } else { + + } + } + } + + +function delFile(fileid) { + + $.ajax({ + url: "/?comp=k2vdocs&c=delFile&temp=ajax", + type: "POST", + data: {fileid:fileid}, + success: function(result){ + jQuery('#vdFiles').jqGrid().trigger('reloadGrid'); + + }}); + } + +function moveFile(fileid, treeid) { + $.ajax({ + url: "/?comp=k2vdocs&c=moveFile&temp=ajax", + type: "POST", + data: {fileid:fileid, treeid:treeid}, + success: function(result){ + jQuery('#vdFiles').jqGrid().trigger('reloadGrid'); + + }}); + } + +// $('#vdFiles').jqGrid({ +// colModel: [ +// +// { name: 'treeid', index: 'treeid', width: 200, formatter:'select', stype: 'select', //sorttype:'int', +// searchoptions:{ +// sopt: ['eq'], +// dataInit:function(el){ +// var defOption = $("option:contains("+defaultCategory+")",el); +// defOption.attr("selected", "selected"); +// setTimeout(function(){ +// $(el).trigger('change'); +// },500); +// } +// }, +// sorttype: function(cell, obj) { +// return categories[cell]; +// }, +// edittype:'select', editoptions: { value: categoriesStr } +// },] +// }); \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/vdoc/vdocsadmin/k2vdocsadmin_files.php b/k2shop/k2shop/app/deleted/vdoc/vdocsadmin/k2vdocsadmin_files.php new file mode 100644 index 0000000..f1a3365 --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/vdocsadmin/k2vdocsadmin_files.php @@ -0,0 +1,303 @@ +ins_comp2('k2phpgrid', $this); + + $arr = ['select' => "select fileid, treeid, ordnum, typefileid, filename, fileext, statid, docn, docdate, typedocid, kodf, sumdoc, comment_file, usercreate," + . "datecreate, userupdate, dateupdate, size_file, site_history, working_user, date_working, del from vdFiles where del = 0", + 'table' => "vdFiles", + 'typeid'=>1, + 'sortname' => 'fileid', + 'sortorder' => 'asc', + 'caption' => 'Файли', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'fileid', + 'caption' => 'ID файлу', + 'width' => '120', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'treeid', + 'caption' => 'ID гілки', + 'width' => '200', + + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select treeid as k, treename as v from vdTree" + ], + + ['field' => 'ordnum', + 'caption' => 'Номер вставки в базу даних', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'typefileid', + 'caption' => 'Тип
        файлу', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select typefileid as k, nametypefile as v from vdTypeFile" + ], + + ['field' => 'filename', + 'caption' => 'Назва файлу', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'fileext', + 'caption' => 'Розширення файлу', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'statid', + 'caption' => 'Статус', + 'width' => '120', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select statid as k, statname as v from vdStat" + ], + + ['field' => 'docn', + 'caption' => '№ документу', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'docdate', + 'caption' => 'Дата документу', + 'width' => '200', + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'typedocid', + 'caption' => 'Тип
        документу', + 'width' => '80', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select typedocid as k, typedocname as v from vdTypeDoc" + ], + + ['field' => 'kodf', + 'caption' => 'Контрагент', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select kodf as k, namefirm as v from vdFirm" + ], + + ['field' => 'sumdoc', + 'caption' => 'Сума документа', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'comment_file', + 'caption' => 'Примітки', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'usercreate', + 'caption' => 'Створив', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'datecreate', + 'caption' => 'Час створення', + 'width' => '200', + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'userupdate', + 'caption' => 'Змінив', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'dateupdate', + 'caption' => 'Час змін', + 'width' => '200', + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'size_file', + 'caption' => 'Розмір файлу, кб', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'site_history', + 'caption' => 'Історія', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'working_user', + 'caption' => 'Зараз працює', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'date_working', + 'caption' => 'Дата взяття на роботу', + 'width' => '200', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '300', + 'readonly' => false, + 'align' => 'left' + ], + + ] + ]; + + $rez .= $grid->simpleTable($arr); + + $butn2=$k2->ins_comp('k2button'); + + $arr_btn = [ + 'caption'=>'Відкрити', + 'btn_id'=>'jqxToggleButton', + 'width'=>'150', + 'height'=>'30', + 'style'=>'', + 'img_src'=>'img/air.png', + 'btn_tmp'=>'success', + 'onclick'=>" + var selr = jQuery('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = jQuery('#vdFiles').jqGrid('getRowData', selr); + var treeid = ret.treeid; + var filename = ret.filename; + var typefileid = ret.typefileid; + if (treeid==undefined){ + alert('Ви не вибрали жодного файлу!!!'); + } else { + $.ajax({ + url: '/?comp=k2vdocs&c=getFilePath&temp=ajax', + type: 'GET', + data: {action:'file_path', treeid:treeid, filename:filename}, + success: function(result){ + startClient(result); + }}); + } + function startClient(result){ + var obj = JSON.parse(result); + var directory = obj[0]['path']; + var file = obj[0]['file']; + var pathfile = directory + file; + window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; + window.requestFileSystem(window.TEMPORARY, 5*1024*1024, initFS, errorHandler); + function initFS(fs){ + function createDir(rootDir, folders) { + rootDir.getDirectory(folders[0], {create: true}, function(dirEntry) { + if (folders.length) { + createDir(dirEntry, folders.slice(1)); + } + }, errorHandler); + }; + createDir(fs.root, directory.split('/')); + setTimeout(writeFile, 3000); + function writeFile(){ + fs.root.getFile(pathfile, {create: true, exclusive: true}, function(fileEntry) { + fileEntry.createWriter(function(fileWriter) { + window.URL = window.URL || window.webkitURL; + var blob = new Blob(['Lorem Ipsum'], {type: 'text/plain'}); + fileWriter.write(blob); + }, errorHandler); + }, errorHandler); + } + } + function errorHandler(){ + console.log('An error occured'); + } + }" + ]; + + $rez .= $butn2->simpleBtn($arr_btn); + + + + $arr = [ + '' + ]; + $radio = $k2->ins_comp('k2button'); + $rez .= $radio->radioBtn($arr); + +// $switch = $k2->ins_comp('k2button'); +// $rez .= $switch->switchBtn($arr); + +// $check = $k2->ins_comp('k2button'); +// $rez .= $check->checkBox($arr); + return $rez; + } + + + + + + // Возвращаем контент + function content(){ + $rez=$this->showAdminDesign(); + return $rez; + } + + + +} diff --git a/k2shop/k2shop/app/deleted/vdoc/vdocsadmin/k2vdocsadmin_tree.php b/k2shop/k2shop/app/deleted/vdoc/vdocsadmin/k2vdocsadmin_tree.php new file mode 100644 index 0000000..b8a2418 --- /dev/null +++ b/k2shop/k2shop/app/deleted/vdoc/vdocsadmin/k2vdocsadmin_tree.php @@ -0,0 +1,143 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select treeid, treename, parent_treeid, ccount, usercreate, datecreate, userupdate, dateupdate, tree_comment, projid, ordnum, del from vdTree", + 'table' => "vdTree", + 'typeid'=>1, + 'sortname' => 'treeid', + 'sortorder' => 'asc', + 'caption' => 'Дерево', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'treeid', + 'caption' => 'ID каталогу', + 'width' => '120', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'treename', + 'caption' => 'Назва каталогу', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'parent_treeid', + 'caption' => 'ID гілки', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'ccount', + 'caption' => 'Кількість дочірніх елементів', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'usercreate', + 'caption' => 'Створив', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'datecreate', + 'caption' => 'Час створення', + 'width' => '200', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'userupdate', + 'caption' => 'Змінив', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'dateupdate', + 'caption' => 'Час змін', + 'width' => '200', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'tree_comment', + 'caption' => 'Примітки', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'projid', + 'caption' => 'ID проекту', + 'width' => '200', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select projid as k, projname as v from vdProj" + ], + + ['field' => 'ordnum', + 'caption' => 'Номер вставки в базу даних', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '300', + 'readonly' => false, + 'align' => 'left' + ], + + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + + } + + // Возвращаем контент + function content(){ + $rez=$this->showAdminDesign(); + return $rez; + } + + + + +} diff --git a/k2shop/k2shop/app/deleted/work/work/work.php b/k2shop/k2shop/app/deleted/work/work/work.php new file mode 100644 index 0000000..91ffd32 --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work.php @@ -0,0 +1,59 @@ +get('comp'); + $c=$k2->get('c'); + + $s=$k2->getComp($comm); + if ($s[0]<>'work'){ + return; + } + + $comp=$k2->ins_comp($s[0], $s[1], true); + + if ($comp<>'') + $rez.=$comp->content(); + + return $rez; + + } + + + // Возвращаем контент + function content(){ + global $k2; + $rez='
        + '; + + $rez.=$this->oper(); + + $rez.=' +
        + '; + + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/work/work/work_adsends.php b/k2shop/k2shop/app/deleted/work/work/work_adsends.php new file mode 100644 index 0000000..296ceeb --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work_adsends.php @@ -0,0 +1,240 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "SELECT s.k2sendgrid, s.sendgroupdate, s.groupname, s.kolpayed, s.balans, s.comment_group, s.mess, s.client_email, s.groups_adres, s.country_adress, s.countadr + FROM k2sendgroup s ", + 'table' => "k2sendgroup", + 'thema' => 'ui-lightness', + 'lang' => 'ru', + + // Детально + 'detile' => "k2sended_logbalans", + + /*'is_edit'=>true, + 'is_export'=>true, + 'is_del'=>true, + 'is_clone'=>false, + 'is_add'=>true,*/ + + 'footer'=>true, + 'sum'=> ['k2sendgrid'=>'count', 'kolpayed'=>'sum', 'balans'=>'sum'], + + 'height' => '100%', + + 'sortname' => 'k2sendgrid', + 'sortorder' => 'desc', + 'caption' => 'Реклама в рассылках', + /*'width' => '1100', + 'rows' => '20',*/ + 'fields' => [ + ['field' => 'k2sendgrid', + 'caption' => 'Id', + 'width' => '50', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => ' ', + 'caption' => 'Настроить', + 'width' => '75', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/k2shop/k2shop/index.php?comp=work&c=sendsettings&sendgrid={k2sendgrid}', + 'caption2' => 'Настроить' + ], + ], + + ['field' => ' ', + 'caption' => 'Тест', + 'width' => '75', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'exp' => '(false)', + 'url2' => '/k2shop/k2shop/index.php?comp=work&c=subscribe&command=test&packid={k2sendgrid}', + 'caption2' => 'Тест' + ], + ], + + + ['field' => 'groupname', + 'caption' => 'Название рекламной компании', + 'width' => '250', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'sendgroupdate', + 'caption' => 'Дата рассылки', + 'width' => '120', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'date' + ], + + + ['field' => 'kolpayed', + 'caption' => 'Количество
        показов', + 'width' => '75', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'balans', + 'caption' => 'Баланс', + 'width' => '75', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'comment_group', + 'caption' => 'Примечание', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + + ['field' => 'client_email', + 'caption' => 'Email клиента', + 'width' => '100', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'groups_adres', + 'caption' => 'Группы', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'country_adress', + 'caption' => 'Страна', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'countadr', + 'caption' => 'Кол.адресов', + 'width' => '100', + 'readonly' => true, + 'align' => 'left' + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + + + + // Детальная информация + $grid=$k2->ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select s.sendlogid, s.datesend, s.sendkol, s.k2sendgrid, s.grid, p.name_l1 from k2sended_logbalans as s left join position as p on s.grid=p.id ", + + 'where'=>' where k2sendgrid={masterid} ', + + 'getmaster' => true, // Указывает, что есть master-таблица + 'masterid' => 'k2sendgrid', + + 'table' => "k2sended_logbalans", + 'sortname' => 'sendlogid', + + 'height' => '200px', + 'rows' => '20', + + 'footer'=>true, + 'sum'=>array('sendlogid'=>'count', 'sendkol'=>'sum'), + + 'sortorder' => 'desc', + 'caption' => 'Отправки', + /*'is_edit' => false,*/ + 'fields' => [ + ['field' => 'sendlogid', + 'caption' => 'ID', + 'width' => '40', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'datesend', + 'caption' => 'Дата отправки', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'grid', + 'caption' => 'id группы', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'hidden' => false + ], + + ['field' => 'name_l1', + 'caption' => 'Название должности', + 'width' => '150', + 'readonly' => false, + 'align' => 'left', + 'hidden' => false + ], + + ['field' => 'sendkol', + 'caption' => 'Количество', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'hidden' => false + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showAdSend(); + return $rez; + } + + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/work/work/work_price.php b/k2shop/k2shop/app/deleted/work/work/work_price.php new file mode 100644 index 0000000..ba60a1c --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work_price.php @@ -0,0 +1,110 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "SELECT * FROM crPrice ", + 'table' => "crPrice", + 'thema' => 'ui-lightness', + 'lang' => 'ru', + + /*'is_edit'=>true, + 'is_export'=>true, + 'is_del'=>true, + 'is_clone'=>true, + 'is_add'=>true,*/ + + 'footer'=>true, + 'sum'=> ['priceid'=>'count', 'kolweeks'=>'sum','cena'=>'sum'], + + /*'height' => '100%',*/ + + 'sortname' => 'priceid', + 'sortorder' => 'desc', + 'caption' => 'Price', + /*'width' => '1000', + 'rows' => '20',*/ + 'fields' => [ + ['field' => 'priceid', + 'caption' => 'Id', + 'width' => '50', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'valid', + 'caption' => 'Валюта', + 'width' => '75', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select valid as k, nameval as v from crVal order by nameval " + ], + + + ['field' => 'uslugid', + 'caption' => 'Услуга', + 'width' => '500', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select uslugid as k, nameusl as v from crUslug order by nameusl " + ], + + + ['field' => 'kolweeks', + 'caption' => 'Кол. недель', + 'width' => '120', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'cena', + 'caption' => 'Цена', + 'width' => '100', + 'readonly' => false, + 'align' => 'right' + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showPrice(); + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/work/work/work_send.php b/k2shop/k2shop/app/deleted/work/work/work_send.php new file mode 100644 index 0000000..35de13b --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work_send.php @@ -0,0 +1,209 @@ +check_connect(); + require_once ($k2->rootdir."/cms/modules/_mail.php"); + } + + + // Отправка почтовых сообщений + function SendAll(){ + global $k2; + + /*function putLog($fp,$string) + { + fwrite($fp, $string); + }*/ + + + /* + + $users_in_one_send = 250; // default 5 + $sec_to_wait = 0; // default 0 + + + $query = " SELECT + psubscribe_emails.id, + psubscribe_emails.email, + psubscribe_emails.name, + psubscribe_emails.subscribe_id, + psubscribe_set.html, + psubscribe_set.title + FROM + psubscribe_emails + LEFT JOIN psubscribe_set ON psubscribe_set.id=psubscribe_emails.subscribe_id + ORDER BY psubscribe_emails.id + LIMIT $users_in_one_send"; + $emails = query($query,"s"); + + if (!empty($emails)) + { + $fp = fopen("/var/www/ukrcrewi/data/www/ukrcrewing.com.ua/userfiles/Tmp/psubscribe.txt","a+"); + + foreach ($emails as $temail) + { + putLog($fp, "\n\n".$temail['title']." [$users_in_one_send letters] ".date("d.m.Y H:i:s").": "); + $subscribe_id = $temail['subscribe_id']; + + // инициализируем класс + $mailer = new extPHPMailer(); + + // Устанавливаем тему письма + $mailer->Subject = $temail['title']; + $mailer->Body = $mailHeader.$temail['html'].$mailFooter; + + // start sending + $mailer->From = "mail@ukrcrewing.com.ua"; + $mailer->FromName = "Ukrcrewing"; // Рассылка Ukrcrewing + + $email = explode(",",trim($temail['email'])); + $email = trim($email[0]); + + @ $mailer->AddAddress($email,$temail['name']); + if(!$mailer->Send()) + putLog($fp, " ERROR email ".$email); + else + putLog($fp, " sent ".$email); + + $mailer->ClearAddresses(); + $mailer->ClearAttachments(); + + if ($sec_to_wait>0) + sleep($sec_to_wait); + + $query = " DELETE FROM psubscribe_emails WHERE id = '".$temail['id']."'"; + query($query,"d"); + + $query = " SELECT COUNT(id) as total + FROM + psubscribe_emails + WHERE subscribe_id='$subscribe_id'"; + $emailsLeft = query($query,"s"); + + if ($emailsLeft[0]['total']==0) + { + $query = " UPDATE psubscribe_set SET active='0', stop=NOW() WHERE id='$subscribe_id'"; + query($query,"u"); + } + } + + putLog($fp, "\n ----------------- sent ".date("d.m.Y H:i:s")); + fclose ($fp); + + } + */ + + } + + + + + + // Отправка писем + function sendMail($subj='', $html='', $emails=''){ + global $k2; + $rez=''; + + // инициализируем класс + $mailer = new extPHPMailer(); + + if (trim($subj)==''){ + $subj=$this->subject; + } + + if (trim($html)==''){ + $html=$this->prepareMail(); + } + + if (trim($emails)==''){ + $emails=$this->emails; + } + + + // Устанавливаем тему письма + $mailer->Subject = /*$temail['title']*/$subj; + $mailer->Body = $html; + + // start sending + $mailer->From = "mail@ukrcrewing.com.ua"; + $mailer->FromName = "Ukrcrewing"; // Рассылка Ukrcrewing + + $email = explode(",",trim($emails)); // $temail['email'] + $email = trim($email[0]); + + + $mailer->AddAddress($email,/*$temail['name']*/$subj); + if(!$mailer->Send()) + //putLog($fp, " ERROR email ".$email); + echo " ERROR email ".$email."\n"; + else + //putLog($fp, " sent ".$email); + echo " sent ".$email."\n"; + + + return $rez; + } + + + + // Подготовка письма + function prepareMail(){ + global $k2; + $rez=''; + + $rez=$this->mail_body; + $rez=str_replace('{site}',$this->domain,$rez); + $rez=str_replace('{reklama}',$this->reklama,$rez); + + + return $rez; + } + + + // Возвращаем контент + function content(){ + global $k2; + + //$body=$this->prepareMail(); + $rez=$this->sendMail('Тестирование рассылки...',$body,'rs@corp2.net'); + + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/work/work/work_sendsettings.php b/k2shop/k2shop/app/deleted/work/work/work_sendsettings.php new file mode 100644 index 0000000..c6f86cd --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work_sendsettings.php @@ -0,0 +1,305 @@ +rootdir.'/cms/modules/ckeditor/ckeditor.php'; + + $k2->site->addJS('select2.css',"/cms/modules/ckeditor/ckeditor.js"); + $k2->site->addJS('select2.min.js',"/cms/modules/ckeditor/adapters/jquery.js"); + + $k2->site->addCSS('select2.min.js',"/cms/cms_template/_style.css?v=20"); + } + + + + // Группы моряков + function listSeaGroup($gradress=''){ + global $k2; + $rez=''; + $rez.=" +

        Моряки:


        + +

        + +
        + "; + + return $rez; + } + + // Группы моряков + function listCountries($coutryadr=''){ + global $k2; + $rez=''; + $rez.=" +

        Страны:


        + +

        + +
        + "; + + return $rez; + } + + // Вывод настройки + function showSetting(){ + global $k2; + + $data=$this->restoreDB(); + $mess=''; + if (isset($data['mess'])){ + $mess=$data['mess']; + } + + $gradress=''; + if (isset($data['groups_adres'])){ + $gradress=$data['groups_adres']; + } + + $coutryadr=''; + if (isset($data['country_adress'])){ + $coutryadr=$data['country_adress']; + } + + //var_dump($data); + + $rez='

        '; + $rez.="Текст рассылки:
        "; + $rez.=PutFCKeditorContent('text', $mess, "Subscribe", "100%", "800"); + $rez.=''; + $rez.=$this->listSeaGroup($gradress); + $rez.=$this->listCountries($coutryadr); + $rez.='
        '; + $rez.='
        '; + //print_r($_POST); + return $rez; + } + + + + // Перечень групп через запятую + function getAdressList(){ + global $k2; + $rez=''; + if (isset($_POST) && isset($_POST['positions_list'])){ + $rez=implode(",", $_POST['positions_list']); + } + + return $rez; + } + + // Перечень групп через запятую + function getCuntryList(){ + global $k2; + $rez=''; + if (isset($_POST) && isset($_POST['country_list'])){ + $rez=implode(",", $_POST['country_list']); + } + + return $rez; + } + + // Подсчет количества адресатов + function getKolAdress($idlist=''){ + global $k2; + $rez=0; + + if ($idlist==''){ + $idlist=$this->getAdressList(); + if ($idlist==''){ + return 0; + } + } + + $sql = "SELECT count(*) as cnt + FROM position f + + LEFT JOIN seaman s + ON (s.approved='1') + AND (s.pos1=f.id) + + WHERE f.id in ($idlist) + "; + + foreach ($k2->db->query($sql) as $value) { + $rez=$value['cnt']; + } + + + return $rez; + } + + + // Сохранение информации в базе данных + function saveDB(){ + global $k2; + $rez=''; + + $sendgrid=$k2->get('sendgrid'); + + $adreslist=$this->getAdressList(); + $countrylist=$this->getCuntryList(); + $koladres=$this->getKolAdress(); + + $mess=$k2->post('text'); + + + if (trim($sendgrid)==''){ + return ''; + } + + $sql = "UPDATE k2sendgroup + SET countadr=$koladres, groups_adres='$adreslist', mess='$mess', country_adress='$countrylist' + WHERE k2sendgrid='$sendgrid'"; + + try { + $k2->db->exec($sql); + }catch (Exception $e) { + echo "Ошибка запроса: ".$e->getMessage()."
        \n"; + } + + + + //заполняем по должностям + $del="DELETE FROM k2sendgroup_position WHERE k2sendgrid='$sendgrid' "; + $k2->db->exec($del); + + + $grid=explode(',',$adreslist); + foreach ($grid as $gr) { + $query = "INSERT INTO k2sendgroup_position (positionid, k2sendgrid) VALUES ($gr, $sendgrid)"; + try{ + //echo $query.'
        '; + $k2->db->exec($query); + }catch(PDOException $e) { + echo "Error Insert group_country: $query\n"; + echo $e->getMessage(); + } + } + + + //заполняемпо странам + $del="DELETE FROM k2sendgroup_country WHERE k2sendgrid='$sendgrid' "; + $k2->db->exec($del); + + + $adr=explode(',',$countrylist); + foreach ($adr as $countryname) { + $query = "INSERT INTO k2sendgroup_country (countryname, k2sendgrid) VALUES ('$countryname', $sendgrid)"; + try{ + //echo $query.'
        '; + $k2->db->exec($query); + }catch(PDOException $e) { + echo "Error Insert group_country: $query\n"; + echo $e->getMessage(); + } + } + + + } + + + // Восстановление информации из базы данных + function restoreDB(){ + global $k2; + + $rez=array(); + $sendgrid=$k2->get('sendgrid'); + + $sql = "SELECT s.groups_adres, s.country_adress, s.mess, s.k2sendgrid + FROM k2sendgroup s + WHERE s.k2sendgrid='$sendgrid'"; + + foreach ($k2->db->query($sql) as $value) { + $rez=$value; + } + + + return $rez; + } + + + // Возвращаем контент + function content(){ + global $k2; + $rez=''; + + //var_dump($_POST); + //$rez.='AdressComa: '.$this->getAdressList(); + //$rez.='Количество: '.$this->getKolAdress(); + + if (!empty($_POST)){ + $this->saveDB(); + } + + + $rez.=$this->showSetting(); + + return $rez; + + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/work/work/work_stat.php b/k2shop/k2shop/app/deleted/work/work/work_stat.php new file mode 100644 index 0000000..e49d1f1 --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work_stat.php @@ -0,0 +1,228 @@ +get('datefrom')<>''){ + $datefrom=$k2->get('datefrom'); + } + + $dateto=''; + if ($k2->get('dateto')<>''){ + $dateto=$k2->get('dateto'); + } + + + + $where="where (1=1)"; + + if (trim($datefrom)<>''){ + list($day, $month, $year) = sscanf($datefrom, "%02d.%02d.%04d"); + $dat="$year.$month.$day"; + $where.="and(posted_date>='$dat')"; + } + + + if (trim($dateto)<>''){ + list($day, $month, $year) = sscanf($dateto, "%02d.%02d.%04d"); + $dat="$year.$month.$day"; + $where.="and(posted_date<='$dat')"; + } + + + + $grid=$k2->ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "SELECT v.* + FROM vakansystat as v ", + 'table' => "vakansystat", + 'thema' => 'ui-lightness', + 'lang' => 'en', + + 'where' => $where, + + /*'is_edit'=>false, + 'is_export'=>true, + 'is_del'=>false, + 'is_clone'=>false, + 'is_add'=>false,*/ + + 'footer'=>true, + 'sum'=>array('id'=>'count'/*,'summ'=>'sum'*/), + + 'height' => '100%', + + 'sortname' => 'id', + 'sortorder' => 'desc', + 'caption' => 'MARKET INVESTIGATION', + /*'width' => '100%', + 'rows' => '20',*/ + 'fields' => [ + ['field' => 'id', + 'caption' => 'Id', + 'width' => '50', + 'readonly' => true, + 'align' => 'right' + ], + + + ['field' => 'posted_date', + 'caption' => 'Date of publication', + 'width' => '140', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'dolgn', + 'caption' => 'Rank', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select name_l1 as k, name_l1 as v from position order by name_l1 " + ], + + ['field' => 'salary', + 'caption' => 'Salary', + 'width' => '100', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'contract_duration', + 'caption' => 'Duration', + 'width' => '90', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'onboard_date', + 'caption' => 'Join date', + 'width' => '90', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'fleet_type', + 'caption' => 'Flot', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'type_sudna', + 'caption' => 'Vessel type', + 'width' => '150', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select name_l1 as k, name_l1 as v from vessel_type order by name_l1 " + ], + + ['field' => 'dedweight', + 'caption' => 'DWT', + 'width' => '75', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'power', + 'caption' => 'BHP', + 'width' => '100', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'region', + 'caption' => 'Sailing area', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ] + ] + ]; + + $comp=$k2->get('comp'); + $c=$k2->get('c'); + + + $rez="
        + Filter by date +
        + From: + To: + + + + +
        +
        + "; + + + $rez.=" "; + + + $rez .= $grid->simpleTable($arr); + + + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + + $rez=$this->showUsers(); + + //$rez='RRRRR'; + + return $rez; + + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/work/work/work_subscribe.php b/k2shop/k2shop/app/deleted/work/work/work_subscribe.php new file mode 100644 index 0000000..679312d --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work_subscribe.php @@ -0,0 +1,639 @@ + + .mya {font-family:Arial, Helvetica;text-decoration:none; color:#0099cc;} + .mya:hover {font-family:Arial, Helvetica;text-decoration:none; color:#632819;} + .mya.var:visited {font-family:Arial, Helvetica;text-decoration:none; color:#999;} + .gray {font-family:Arial, Helvetica;sans-serif;color:gray} + .myhr {font-family:Arial, Helvetica;display:block; height:1px; border:none; background:gray; margin:0px;} + .myh1 {font-family:Arial, Helvetica;color:black; font-size:21px; padding:0px; margin:0px 0px 10px 0px; font-weight:bold; line-height:23px;} + "; + + // + + public $head=" +

        На сайт {site} были добавлены новые вакансии

        +
        + "; + + public $rekl_label="

        РЕКЛАМА

        "; + + + public $end="

        {reklama}

        "; + + public $end2="

        Для того, чтобы отписаться от рассылки, обратитесь в техническую поддержку support@ukrcrewing.com.ua

        "; + + public $rowtemp=" + + + {prof} + + +

        {cena}$ в месяц

        +

        Посадка {datevakans}

        + +

        Откликнуться

        + +
        +
        + + + "; + + public $rekl_arr=array(); // Массив рекламы + + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + $k2->check_connect(); + $this->work_send=$k2->ins_comp('work','send'); + } + + + // Формирование подписки + function putSubscribeSet($title,$html,$cur_position,$cur_country='') + { + global $k2; + $rez=true; + + $html = /*htmlspecialchars(*/$html; + $title = /*htmlspecialchars(*/$title; + + $html = str_replace("'", "''", $html); + $title = str_replace("'", "''", $title); + + $newSubscribeId=''; + + $query = "INSERT INTO psubscribe_set (title, html, start, stop, active) VALUES ('$title','$html',NOW(),DATE_ADD(CURDATE(), INTERVAL 31 DAY),'1')"; + + try{ + $k2->db->exec($query); + $newSubscribeId=$k2->db->lastInsertId(); + }catch(PDOException $e) { + $rez=false; + echo "Error Insert Subscribe for $cur_position: $query\n"; + echo $e->getMessage(); + } + + $where=''; + if (trim($cur_country)<>'' /*&& !$istest*/){ + $where.="AND citizenship='$cur_country' "; + } + + $subscribers = array(); + + + $query = "SELECT name, email + FROM seaman + WHERE email!='' AND emailme='1' AND approved='1' AND pos1='$cur_position' $where "; + + + foreach ($k2->db->query($query) as $s) + { + array_push($subscribers,array ("email"=>$s['email'],"name"=>$s['name'])); + } + + array_push($subscribers,array ("email"=>"crewing@mail.ru","name"=>"CREWING")); + + $query2 = "INSERT INTO psubscribe_emails (subscribe_id, email, name) VALUES "; + $qr=''; + foreach ($subscribers as $s) + { + if (trim($qr)<>''){ + $qr.=','; + } + + $mail=htmlspecialchars($s['email']); + $mail = str_replace("'", "''", $mail); + + $name=htmlspecialchars($s['name']); + $name = str_replace("'", "''", $name); + + $qr .= " ('$newSubscribeId','".$mail."','".$name."')"; + } + $query2.=$qr.';'; + + + try{ + $k2->db->exec($query2); + }catch(PDOException $e) { + $rez=false; + echo "Error Insert Subscribe Email for $cur_position: $query2\n"; + echo $e->getMessage(); + } + + return $rez; + + } + + + // Подсчитывает количество адресатов + // $position - должность + function getKolAdress($position, $citizenship=''){ + global $k2; + + $rez=0; + + $where=''; + if (trim($citizenship)<>'' /*&& !$istest*/){ + $where.="AND citizenship='$citizenship' "; + } + + $query = "SELECT count(*) cnt + FROM seaman + WHERE email!='' AND emailme='1' AND approved='1' AND pos1='$position' $where "; + + foreach ($k2->db->query($query) as $q) + { + $rez=$q['cnt']; + } + + return $rez; + } + + + + function date_huk($format,$date) + { + return $date == '0000-00-00' || $date == '0000-00-00 01:01:01' || $date == '0000-00-00 00:00:00' || !$date ? '00.00.0000' : date($format,strtotime($date)); + } + + + + + + // Подписка + function subsctibe($position=''){ + global $k2; + $subscribe=$this->getSubscribeInfo(); + + + + + /* if (!empty($subscribe)) + { + $subscribe_id = $subscribe["id"]; + $title = $subscribe["title"]; + $positions_list = "'9999999'"; // рассылаем всем + + $query = " SELECT + v.*, + v.add_info_l1 as add_info, + v.onboard_date as onboard_date, + p.id as position_id, + p.name_l1 as position_name, + vt.id as vessel_type_id, + vt.name_l1 as vessel_type, + a.name_l1 as agency_name, + a.id as agency_id + FROM + vacancy v + LEFT JOIN vessel_type vt ON vt.id=v.vessel_type + LEFT JOIN position p ON p.id=v.position + LEFT JOIN agency a ON a.user_id=v.agency_id + WHERE v.posted_date >= '".$subscribe['last_post']."' AND v.posted_date <= NOW() /*AND v.position NOT IN ($positions_list) + ORDER BY v.position"; + + $cur_position = 0; + $old_positionName = ""; + $vacancyList=""; + + // Задаем тело письма + $body = $subscribe['text']; + $color = "eee"; + + foreach ($k2->db->query($query) as $vacancy) { + + + if ($cur_position!=$vacancy['position']) + { + $html = $body."

        Новые вакансии:

        + + + ".$vacancyList."
        ДолжностьДата посадки
        "; + + // put current subscribe list to order + $this->putSubscribeSet($title." ".$old_positionName,$html,$cur_position); + + // start new subscribe list + $color = "fff"; + $cur_position=$vacancy['position']; + + $vacancyList =" + ".$vacancy['position_name']." on ".$vacancy['vessel_type']." + ".$this->date_huk("d.m.Y", $vacancy['onboard_date'])." + + "; + } + else + { + $color = ($color=="eee"?"fff":"eee"); + $cur_position=$vacancy['position']; + + $vacancyList .=" + ".$vacancy['position_name']." on ".$vacancy['vessel_type']." + ".$this->date_huk("d.m.Y", $vacancy['onboard_date'])." + + "; + } + + $old_positionName = $vacancy['position_name']; + + + } + + $html = $body."

        Новые вакансии:

        + + + ".$vacancyList."
        ДолжностьДата посадки
        "; + + $this->putSubscribeSet($title." ".$old_positionName,$html,$cur_position); + + $fp = fopen($k2->rootdir."/psubscribe.txt","a+"); + fwrite($fp, "\nРассылка добавлена в очередь: ".date("d.m.Y H:i:s").", $title \n"); + fclose ($fp); + + $query = " UPDATE subscribe SET + last_post=NOW(), scheduled='0' + WHERE id = '".$subscribe['id']."'"; + + try{ + $k2->db->exec($query); + }catch(PDOException $e) { + echo "Error Subscribe: $query\n"; + echo $e->getMessage(); + } + + } + */ + + + + } + + + // Фиксация даты подписки + function fixedSubscribeDate($subscribeid){ + global $k2; + $rez=''; + + $query = "UPDATE subscribe SET + last_post=NOW(), scheduled='0' + WHERE id = '$subscribeid'"; + + try{ + $k2->db->exec($query); + }catch(PDOException $e) { + echo "Error Subscribe: $query\n"; + echo $e->getMessage(); + } + + + return $rez; + } + + + + // Сохранение лога в балансе + // $position - ID должности + // $cnt - количество позиций + function saveLogBalans($position, $citizenship=''){ + global $k2; + + $cnt=$this->getKolAdress($position, $citizenship); + + foreach ($this->rekl_arr as $el){ + + if (trim($el)<>''){ + + $query = "INSERT INTO k2sended_logbalans (datesend, sendkol, k2sendgrid, grid) VALUES(NOW(), $cnt, $el, $position);"; + + try{ + //echo $query.'
        '; + $k2->db->exec($query); + }catch(PDOException $e) { + echo "Error Insert LogBalans: $query\n"; + echo $e->getMessage(); + } + + + + + + // Обновляю количество + $query = "UPDATE k2sendgroup SET balans=IF(balans is null,0,balans)+$cnt WHERE k2sendgrid=$el;"; + + try{ + //echo $query.'
        '; + $k2->db->exec($query); + }catch(PDOException $e) { + echo "Error Insert LogBalans: $query\n"; + echo $e->getMessage(); + } + + + } + + } + + + //$pos['position'], $pos['cnt'] + // + + } + + + // Формирует все письма + function mailAll($position='',$istest=true){ + global $k2; + $rez=''; + + // Получаем информацию о подписке + $subscribeinfo=$this->getSubscribeInfo(); + + $where=''; + if (trim($position)<>'' /*&& !$istest*/){ + $where.="and(v.position=$position)"; + } + + + $lastpost=$subscribeinfo['last_post']; + + if ($istest){ + $lastpost=date("Y-m-d", strtotime("-30 DAY")); + //date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-7, date("Y"))); + } + + $query="SELECT position, country.countryname, count(*) as cnt + FROM vacancy v + + LEFT JOIN k2sendgroup_position p + ON v.position=p.positionid + + LEFT JOIN k2sendgroup g + ON p.k2sendgrid=g.k2sendgrid + + LEFT JOIN k2sendgroup_country country + ON g.k2sendgrid=country.k2sendgrid + + WHERE v.posted_date >= '".$lastpost."' AND v.posted_date <= NOW() + $where + GROUP BY v.position, country.countryname + ORDER BY v.position, country.countryname"; + +// $query = "SELECT v.position, count(*) as cnt +// FROM vacancy v +// WHERE v.posted_date >= '".$lastpost."' AND v.posted_date <= NOW() +// $where +// GROUP BY v.position +// ORDER BY v.position"; + + //echo $query.'
        '; + + + $vakans_list=''; + foreach ($k2->db->query($query) as $pos) { + $vakans_list=''; + //$vakans_list.=''; + $vakans_list=$this->getVacancyList($pos['position'], $lastpost, $istest); + //$vakans_list.='
        '; + + if (!$istest){ + + if ($this->putSubscribeSet($subscribeinfo['title'], $vakans_list, $pos['position'], $pos['countryname'] )){ + $this->saveLogBalans($pos['position'], $pos['countryname']); + } + + } + + } + + $rez.=$vakans_list; + + $this->fixedSubscribeDate($subscribeinfo['id']); + + return $rez; + } + + + // Возвращает список вакансий с форматированием для письма + function getVacancyList($positionid, $last_post,$istest=true){ + global $k2; + $rez=$this->style.$this->head; + + + $query = " SELECT + v.*, + v.add_info_l1 as add_info, + v.onboard_date as onboard_date, + p.id as position_id, + p.name_l1 as position_name, + vt.id as vessel_type_id, + vt.name_l1 as vessel_type, + a.name_l1 as agency_name, + a.id as agency_id + FROM + vacancy v + LEFT JOIN vessel_type vt ON vt.id=v.vessel_type + LEFT JOIN position p ON p.id=v.position + LEFT JOIN agency a ON a.user_id=v.agency_id + WHERE (v.posted_date >= '".$last_post."') AND (v.posted_date <= NOW()) AND (v.position IN ($positionid)) + ORDER BY v.position "; + + if ($istest){ + $query .= ' LIMIT 4; '; + } + + $rez.=''; + + foreach ($k2->db->query($query) as $vacancy) { + $rowvakans=$this->rowtemp; + + $datevakans=$this->date_huk("d.m.Y", $vacancy['onboard_date']); + $rowvakans=str_replace('{datevakans}', $datevakans, $rowvakans); + + $rowvakans=str_replace('{prof}', $vacancy['position_name'].' on '.$vacancy['vessel_type'], $rowvakans); + $rowvakans=str_replace('{url}', $this->site_url.'/vacancy/'.$vacancy['id'], $rowvakans); + + $rowvakans=str_replace('{cena}', $vacancy['salary'], $rowvakans); + + $rez.=$rowvakans; + } + + $rez.='
        '; + + $reklama=$this->end; + $rekltmp=$this->getReklama($positionid, $last_post, $istest); + $reklama=str_replace('{reklama}', $rekltmp, $reklama).$this->end2; + + if (trim($rekltmp)<>''){ + $reklama=$this->rekl_label.$reklama; + } + + $rez.=$reklama; + + $rez=str_replace('{site}', $this->site_url, $rez); + + + return $rez; + } + + + + + // Возвращает информацию о рекламе + // $profid - id профессии + function getReklama($positionid='', $last_post, $istest=true){ + global $k2; + $rez=''; + $poswhere=''; + + $this->rekl_arr=array(); + + if (trim($positionid)<>''){ + $poswhere="and(FIND_IN_SET($positionid, groups_adres)>0 )"; + } + + $sql = "SELECT k2sendgrid, mess + FROM k2sendgroup + WHERE (sendgroupdate>='$last_post') + and((kolpayed>=balans)or((kolpayed>0)and(balans is null))) + $poswhere + "; + + foreach ($k2->db->query($sql) as $mess) { + $rez.=htmlspecialchars_decode($mess['mess']); + $this->rekl_arr[]=$mess['k2sendgrid']; + } + + + return $rez; + } + + + // Информация о подписке + function getSubscribeInfo(){ + global $k2; + + $rez=array(); + + $query = " SELECT * + FROM subscribe + WHERE constant='seaman'"; + + foreach ($k2->db->query($query) as $subscribe) { + $rez = $subscribe; + } + + return $rez; + } + + + // Подготавливает письмо по заданной позиции + function mailSeaPosition($position){ + + } + + + // Получение информации о рассылке + function getSendGroup($packid){ + global $k2; + $rez=''; + + + $sql = "SELECT s.k2sendgrid, s.groupname, s.mess, s.client_email, s.groups_adres, s.country_adress + FROM k2sendgroup s + WHERE (s.k2sendgrid='$packid')"; + + foreach ($k2->db->query($sql) as $value) { + $rez = $value; + } + + return $rez; + } + + + // Подготовка сообщения + function prepareMessage($packinfo){ + global $k2; + $rez=''; + + $this->work_send->reklama=htmlspecialchars_decode($packinfo['mess']); + + echo $this->work_send->reklama; + + return $rez; + } + + + // Проверка тестирования отправки почты + function testSendMail(){ + global $k2; + $rez=''; + + $packid=$k2->get('packid'); + $packinfo=$this->getSendGroup($packid); + $subscribeinfo=$this->getSubscribeInfo(); + + $email=trim(htmlspecialchars($packinfo['client_email'])); + + if ($email==''){ + $rez='Не указан Email!'; + }else{ + + $adr=explode(',',$packinfo['groups_adres']); + $country=explode(',',$packinfo['country_adress']); + + $profid=trim($adr[0]); + + $html=$this->mailAll($profid, true); + + + //$rez.= 'Тема: '.$subscribeinfo['title'].'
        '.'email: '.$email.'
        '.$html.'
        '; + $rez.=$this->work_send->sendMail($subscribeinfo['title'], $html, $email).'
        '.$html; + } + + + return $rez; + } + + + + // Возвращаем контент + function content(){ + global $k2; + + $cmd=$k2->get('command'); + + if (trim($cmd)==''){ + $rez=$this->mailAll('',false); + }elseif (trim($cmd)=='test'){ + $rez=$this->testSendMail(); + } + + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/work/work/work_totop.php b/k2shop/k2shop/app/deleted/work/work/work_totop.php new file mode 100644 index 0000000..6d29129 --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work_totop.php @@ -0,0 +1,548 @@ + + + + + + + + + + + + + + + + +

        Поднять резюме в ТОП

        + {content} + + + + {script} + + + + "; + + + + public $temp=" +

        Поднять резюме в ТОП

        + {content} + {script} + "; + + + + // Инициализация. Класс переопределяется всегда + protected function init_obj(){ + global $k2; + + $k2->site->addCSS('select2.css',"//cdn.jsdelivr.net/select2/3.5.2/select2.css"); + $k2->site->addJS('select2.min.js',"//cdn.jsdelivr.net/select2/3.5.2/select2.min.js"); + $k2->site->addJS('jquery.min.js',"/k2shop/k2shop/libs/phpgrid/phpgrid-full-v2.0/lib/js/jquery.min.js"); + + $k2->site->addCSS('_style.css',"/cms/template/_style.css?v=71"); + $k2->site->addJS('zakaz.js',"/zakaz.js"); + } + + + // Возвращает список должностей + function getDolgn(){ + global $k2; + + $sql = "SELECT + id, name_l1 as position + FROM + position + ORDER BY weight"; + + $rez=''; + + return $rez; + } + + + // Возвращает список валют + function getVal(){ + global $k2; + + $sql = "select valid as k, nameval as v from crVal order by nameval "; + + $rez=''; + + return $rez; + } + + + // Возвращает список услуг + function getUsl(){ + global $k2; + + $sql = "select uslugid as k, nameusl as v from crUslug order by nameusl "; + + $rez=''; + + return $rez; + } + + + function showForm($err=''){ + $rez=' + + + {err} +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Фамилия и имя (латинскими буквами)
        Должность{dolgn}
        E-mail:
        Телефон:
        Валюта оплаты:{nameval}
        Услуга:{uslug}
        Количество недель:{week}
        + +
        + + + +
        '; + + + $rez=str_replace('{dolgn}', $this->getDolgn(), $rez); + $rez=str_replace('{nameval}', $this->getVal(), $rez); + + $rez=str_replace('{uslug}', $this->getUsl(), $rez); + $rez=str_replace('{week}', $this->geWeeks(), $rez); + + $rez=str_replace('{err}', $err, $rez); + + + // Заполняем значения полей + $rez=str_replace('{name}', $this->post('name'), $rez); + $rez=str_replace('{email}', $this->post('email'), $rez); + $rez=str_replace('{phone}', $this->post('phone'), $rez); + + + + return $rez; + } + + + // Проверка формата Email + function checkEmail($email){ + + $rez=''; + + if(!preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $email)) { // прoвeрим email нa вaлиднoсть + $rez = 'Нe вeрный фoрмaт email!'; + } + + return $rez; + } + + + // Обрабатывает запросы из post + function post($varname){ + if (isset($_POST[$varname])){ + $rez=htmlspecialchars($_POST[$varname]); + }else{ + $rez=''; + } + + return $rez; + } + + + // Оформление ошибки + function err($mess){ + $rez="
        * $mess
        "; + return $rez; + } + + + // Проверка, что ввередно латиницей + function isLat($strinp){ + $rez=''; + + if (!preg_match("/^[a-z ]+$/i", $strinp)) { + $rez='Текст не в латинице!'; + } + + return $rez; + } + + + + // Проверка заполнения заявки + function proverk(){ + $rez=''; + + if (trim($this->post('name'))==''){ + $rez.=$this->err('Фамилия и имя (латинскими буквами).'); + }else{ + $namelat=$this->isLat(trim($this->post('name'))); + if (trim($namelat)<>''){ + $rez.=$this->err('* Фамилию и имя нужно вводить латинскими буквами!'); + } + } + + + if (trim($this->post('v_position'))==''){ + $rez.=$this->err('Необходимо заполнить поле "Должность".'); + } + + if (trim($this->post('email'))==''){ + $rez.=$this->err('Необходимо заполнить поле "E-mail".'); + }else{ + // Проверяем корректность E-mail + $checkmail=$this->checkEmail(trim($this->post('email'))); + + if (trim($checkmail)<>''){ + $rez.=$this->err("* $checkmail"); + } + } + + if (trim($this->post('phone'))==''){ + $rez.=$this->err('Необходимо заполнить поле "Телефон".'); + } + + if (trim($this->post('v_val'))==''){ + $rez.=$this->err('Необходимо заполнить поле "Валюта оплаты".'); + } + + if (trim($this->post('v_uslug'))==''){ + $rez.=$this->err('Необходимо заполнить поле "Услуга".'); + } + + if (trim($this->post('v_week'))==''){ + $rez.=$this->err('Необходимо заполнить поле "Количество недель".'); + } + + + return $rez; + } + + + + // функция прeoбрaзoвaния зaгoлoвкoв в вeрную кoдирoвку + function mime_header_encode($str, $data_charset, $send_charset) { + if($data_charset != $send_charset) + $str=iconv($data_charset,$send_charset.'//IGNORE',$str); + return ('=?'.$send_charset.'?B?'.base64_encode($str).'?='); + } + + + // Отправка электронного сообщения + function sendMail($mess){ + $rez=''; + + $dc='UTF-8'; + $sc='windows-1251'; + $enc_to=$this->mime_header_encode($this->email,$dc,$sc).' <'.$this->email.'>'; + $enc_subject=$this->mime_header_encode('Новый заказ',$dc,$sc); + $enc_from=$this->mime_header_encode($this->email,$dc,$sc).' <'.$this->email.'>'; + + $enc_body=$dc==$sc?$mess :iconv($dc,$sc.'//IGNORE',$mess); + + //$enc_body=$mess; + + $headers=''; + $headers.="Mime-Version: 1.0\r\n"; + $headers.="Content-type: ".$this->type."; charset=".$sc."\r\n"; + $headers.="From: ".$enc_from."\r\n"; + + mail($enc_to,$enc_subject,$enc_body,$headers); + + return $rez; + } + + + // Вставка заказа в базу данных + function insZakaz(){ + global $k2; + $rez=''; + + $sql="INSERT INTO crZakaz (fio, valid, uslugid, kolweek, email, phone, dolgnid) " + . "VALUES('".trim($this->post('name'))."','".trim($this->post('v_val'))."','".trim($this->post('v_uslug'))."','".trim($this->post('v_week')) + ."','".trim($this->post('email'))."','".trim($this->post('phone'))."','".trim($this->post('v_position'))."')"; + + try { + $k2->db->exec($sql)."\n"; + }catch (Exception $e) { + $rez.= "Ошибка вставки заказа. ".$e->getMessage()."\n"; + } + + return $rez; + } + + + // Возвращает название валюты + function ValToString($valid){ + global $k2; + $rez=''; + + $sql="select nameval from crVal where (valid='$valid')"; + + foreach ($k2->db->query($sql) as $row) { + $rez=$row["nameval"]; + } + + + return $rez; + } + + // Возвращает название услуги + function UslToString($uslid){ + global $k2; + $rez=''; + + $sql="select nameusl from crUslug where (uslugid='$uslid')"; + + foreach ($k2->db->query($sql) as $row) { + $rez=$row["nameusl"]; + } + + + + return $rez; + } + + // Возвращает название должности + function DolgnIDToString($DolgnID){ + global $k2; + $rez=''; + + $sql="select name_l1 from position where (id='$DolgnID')"; + + foreach ($k2->db->query($sql) as $row) { + $rez=$row["name_l1"]; + } + + return $rez; + } + + // Возврат цены заказа + function getCenaZakaz(){ + global $k2; + $rez=''; + + $sql="select cena from crPrice where (valid='".trim($this->post('v_val'))."')and(uslugid='".trim($this->post('v_uslug'))."')and(kolweeks='".trim($this->post('v_week'))."')"; + + foreach ($k2->db->query($sql) as $row) { + $rez=$row["cena"]; + } + + return $rez; + } + + + + + // Отправка заказа по почте + function sendOrderMail(){ + $rez=''; + + + $this->insZakaz(); + + $mess="Новый заказ \n" + ."Фамилия и имя: ".trim($this->post('name'))."\n" + ."E-mail: ".trim($this->post('email'))."\n" + ."Телефон: ".trim($this->post('phone'))."\n" + ."Должность: ".$this->DolgnIDToString(trim($this->post('v_position')))."\n" + ."Валюта: ".$this->ValToString(trim($this->post('v_val')))."\n" + ."Услуга: ".$this->UslToString(trim($this->post('v_uslug')))."\n" + ."Количество недель: ".trim($this->post('v_week'))."\n" + ."Цена: ".$this->getCenaZakaz()."\n" + ; + + + $this->sendMail($mess); + + return $rez; + } + + + + // Возвращает список недель + function geWeeks(){ + $rez=''; + + return $rez; + } + + + + + // Заказ в Top + function showTotop(){ + $rez=''; + + $this->send_order=$this->post('send_order'); + + if (trim($this->send_order)<>''){ + $prov=$this->proverk(); + if ($prov<>''){ + $rez=$this->showForm($prov); + }else{ + $this->sendOrderMail(); + $rez='

        Ваша заявка отправлена.
        Ожидайте сообщение о дальнейших действиях на свой е-мейл.

        '; + } + }else{ + $rez=$this->showForm(); + } + + return $rez; + } + + + // Возвращает цены + function getPrice(){ + global $k2; + $rez=''; + + $sql="SELECT p.valid, p.uslugid, p.kolweeks, p.cena + FROM crPrice p + ORDER by p.valid, p.uslugid, p.kolweeks "; + + + $rez='var price=['; + + + $arrstr=''; + + foreach ($k2->db->query($sql) as $row) { + + if (trim($arrstr)<>''){ + $arrstr.=','; + } + + $arrstr.="['".$row['valid']."','".$row['uslugid']."','".$row['kolweeks']."','".$row['cena']."']"; + } + + $rez.=$arrstr.'];'; + + + return $rez; + } + + + // Java-скрипт для обработки нажатий + function script(){ + $rez=""; + + return $rez; + } + + + + // Возвращаем контент + function content(){ + global $k2; + + $k2->site->h1='Поднять резюме в ТОП'; + + $rez=$this->showTotop(); + + return $rez; + + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/work/work/work_tov.php b/k2shop/k2shop/app/deleted/work/work/work_tov.php new file mode 100644 index 0000000..c3d854e --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work_tov.php @@ -0,0 +1,83 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select uslugid, nameusl from crUslug ", + 'table' => "crUslug", + 'thema' => 'ui-lightness', + 'lang' => 'ru', + + /*'is_edit'=>true, + 'is_export'=>true, + 'is_del'=>true, + 'is_clone'=>false, + 'is_add'=>true,*/ + + 'footer'=>true, + 'sum'=> ['uslugid'=>'count'], + + /*'height' => '100%',*/ + + 'sortname' => 'uslugid', + 'sortorder' => 'desc', + 'caption' => 'Названия услуг', + /*'width' => '900', + 'rows' => '20',*/ + 'fields' => [ + ['field' => 'uslugid', + 'caption' => 'Id', + 'width' => '50', + 'readonly' => true, + 'align' => 'right' + ], + + + ['field' => 'nameusl', + 'caption' => 'Название услуги', + 'width' => '550', + 'readonly' => false, + 'align' => 'left' + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showTov(); + return $rez; + } + + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/deleted/work/work/work_zakaz.php b/k2shop/k2shop/app/deleted/work/work/work_zakaz.php new file mode 100644 index 0000000..73ab938 --- /dev/null +++ b/k2shop/k2shop/app/deleted/work/work/work_zakaz.php @@ -0,0 +1,143 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "SELECT zakazid, fio, kolweek, email, phone, nameval, nameusl, cena, dolgnname, datezak + FROM viewzakaz ", + 'table' => "crZakaz", + 'thema' => 'ui-lightness', + 'lang' => 'ru', + + //'where' => $where, + + /*'is_edit'=>false, + 'is_export'=>true, + 'is_del'=>false, + 'is_clone'=>false, + 'is_add'=>false,*/ + + 'footer'=>true, + 'sum'=> ['zakazid'=>'count', 'kolweek'=>'sum','cena'=>'sum'], + + /*'height' => '100%',*/ + + 'sortname' => 'zakazid', + 'sortorder' => 'desc', + 'caption' => 'Заказы', + /*'width' => '100%', + 'rows' => '20',*/ + 'fields' => [ + ['field' => 'zakazid', + 'caption' => 'Id', + 'width' => '50', + 'readonly' => true, + 'align' => 'right' + ], + + + ['field' => 'datezak', + 'caption' => 'Дата', + 'width' => '120', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'dolgnname', + 'caption' => 'Должность', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + //'type_field' => 'DropDown', + //'multy' => false, + //'sql' => "select name_l1 as k, name_l1 as v from position order by name_l1 " + ], + + ['field' => 'fio', + 'caption' => 'Фамилия и имя', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'email', + 'caption' => 'E-mail', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'phone', + 'caption' => 'Телефон', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'nameusl', + 'caption' => 'Услуга', + 'width' => '150', + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'nameval', + 'caption' => 'Валюта', + 'width' => '75', + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'kolweek', + 'caption' => 'Кол. недель', + 'width' => '75', + 'readonly' => true, + 'align' => 'right' + ], + + ['field' => 'cena', + 'caption' => 'Цена', + 'width' => '100', + 'readonly' => true, + 'align' => 'right' + ] + + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + + // Возвращаем контент + function content(){ + global $k2; + $rez=$this->showZakaz(); + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/depricate/k2copy_shopscript.php b/k2shop/k2shop/app/depricate/k2copy_shopscript.php new file mode 100644 index 0000000..3b9cbbe --- /dev/null +++ b/k2shop/k2shop/app/depricate/k2copy_shopscript.php @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/k2shop/k2shop/app/depricate/k2dp2/k2dp2_import.php b/k2shop/k2shop/app/depricate/k2dp2/k2dp2_import.php new file mode 100644 index 0000000..650c034 --- /dev/null +++ b/k2shop/k2shop/app/depricate/k2dp2/k2dp2_import.php @@ -0,0 +1,244 @@ + + + '; + +if(isset($_POST['import'])) +{ + + $rez.= 'Программа начала импорт из ACCESS
        '. date("Y-m-d H:i:s").'
        '; + + $link = mysql_connect($k2->host, $k2->user, $k2->pass) or die ("Could not connect to MySQL"); + mysql_select_db ($k2->dbname) or die ("Could not select database"); +// подклюсение через odbc драйвер к базе access + $conn = odbc_connect("MS Access Database","","") or die( "Could not connect to Access database
        + настройте odbc драйвер (odbcad32.exe для 32 бит или C:\Windows\SysWOW64\odbcad32.exe для 64 бит)"); + $table[]=array (); // строка запроса +// читаем из tbSp_OblastSS + $ret = odbc_exec($conn,"SELECT * FROM tbSp_OblastSS"); +// удаляем записи из dp2Oblast + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ("DELETE FROM dp2Oblast ;")or die ("Query2 failed") ; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; +// записываем результат в массив $table[] + while ($line = odbc_fetch_array($ret)) { + $col=0; + while(list($col_name, $col_value) = each($line)) { + $table [$col]= iconv('CP1251', 'UTF-8', $col_value); + $col++; + } +// записывает в dp2Oblast + $strSQL = "INSERT INTO dp2Oblast (OblastId,OblastNameUA,OblastNameTRL) + VALUES (".$table [0].",'".$table [1]."','".$table [2]."')"; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ($strSQL)or die ("Query INSERT INTO dp2Oblast failed"); + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; + } + + $rez.= '1. Импортирована таблица dp2Oblast
        '; + +// читаем из tbSv_OblastZona + $ret = odbc_exec($conn,"SELECT * FROM tbSv_OblastZona"); +// удаляем записи из dp2OblastZona + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ("DELETE FROM dp2OblastZona ;")or die ("Query2 failed") ; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; +// записываем результат в массив $table[] + while ($line = odbc_fetch_array($ret)) { + $col=0; + while(list($col_name, $col_value) = each($line)) { + $table [$col]= iconv('CP1251', 'UTF-8', $col_value); + $col++; + } +// записывает в dp2OblastZona + $strSQL = "INSERT INTO dp2OblastZona (IdOblast,IdZona) + VALUES (".$table [0].",'".$table [1]."')"; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ($strSQL)or die ("Query INSERT INTO dp2OblastZona failed"); + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; + } + + $rez.= '2. Импортирована таблица dp2OblastZona
        '; + +// читаем из tbKulturs + $ret = odbc_exec($conn,"SELECT * FROM tbKulturs"); +// удаляем записи из dp2Kultur + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ("DELETE FROM dp2Kultur ;")or die ("Query2 failed") ; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; +// записываем результат в массив $table[] + while ($line = odbc_fetch_array($ret)) { + $col=0; + while(list($col_name, $col_value) = each($line)) { + $table [$col]= str_replace ("'","`",iconv('CP1251', 'UTF-8', $col_value)); + $col++; + } +// записывает в dp2Kultur + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $strSQL = "INSERT INTO dp2Kultur (CodKult,Kultura) + VALUES ('".$table [0]."','".$table [1]."')"; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ($strSQL)or die ("Query INSERT INTO dp2Kultur failed"); + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; + } + + $rez.= '3. Импортирована таблица dp2Kultur
        '; + +// читаем из tbSp_FormaVlasnosti + $ret = odbc_exec($conn,"SELECT * FROM tbSp_FormaVlasnosti"); +// удаляем записи из dp2Kultur + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ("DELETE FROM dp2FormVlasn ;")or die ("Query2 failed") ; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; +// записываем результат в массив $table[] + while ($line = odbc_fetch_array($ret)) { + $col=0; + while(list($col_name, $col_value) = each($line)) { + $table [$col]= str_replace ("'","`",iconv('CP1251', 'UTF-8', $col_value)); + $col++; + } +// записывает в dp2Kultur + $strSQL = "INSERT INTO dp2FormVlasn (FormaVlasnId,FormaVlasnNameUA) + VALUES ('".$table [0]."','".$table [1]."')"; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ($strSQL)or die ("Query INSERT INTO dp2FormVlasn failed"); + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; + } + + $rez.= '4. Импортирована таблица dp2FormVlasn
        '; + +// читаем из tbSp_TipNasinnya + $ret = odbc_exec($conn,"SELECT * FROM tbSp_TipNasinnya"); +// удаляем записи из dp2TypeNasinnya + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ("DELETE FROM dp2TypeNasinnya ;")or die ("Query2 failed") ; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; +// записываем результат в массив $table[] + while ($line = odbc_fetch_array($ret)) { + $col=0; + while(list($col_name, $col_value) = each($line)) { + $table [$col]= str_replace ("'","`",iconv('CP1251', 'UTF-8', $col_value)); + $col++; + } +// записывает в dp2Kultur + $strSQL = "INSERT INTO dp2TypeNasinnya (TipNasinnyaId,TipNasinnyaNameUA) + VALUES ('".$table [0]."','".$table [1]."')"; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ($strSQL)or die ("Query INSERT INTO dp2TypeNasinnya failed"); + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; + } + + $rez.= '5. Импортирована таблица dp2TypeNasinnya
        '; + +// читаем из tbOsn_Virobnik + $ret = odbc_exec($conn,"SELECT * FROM tbOsn_Virobnik"); +// удаляем записи из dp2Virobn + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ("DELETE FROM dp2Virobn ;")or die ("Query2 failed") ; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; +// записываем результат в массив $table[] + $order_ins=0; // порядок вставки записи + while ($line = odbc_fetch_array($ret)) { + $col=0; + while(list($col_name, $col_value) = each($line)) { + $table [$col]= str_replace ("'","`",iconv('CP1251', 'UTF-8', $col_value)); + $col++; + } +// записывает в dp2Virobn + $order_ins++; + $strSQL = "INSERT INTO dp2Virobn + (VirobnikId,IdOblast,IdFormaVlas,VirobnikNameUA,AdresPocht,AdresYurid,IdentNomer,Otm_UAAN, + Otm_DerzhSluzhba,User,Date,land,land_another,order_ins) + VALUES + ('".$table [0]."','".$table [6]."','".$table [5]."','".$table [1]."','".$table [2]."', + '".$table [3]."','".$table [4]."','".$table [7]."','".$table [8]."', + '".$table [9]."','".$table [10]."','".$table [11]."','".$table [12]."','".$order_ins."')"; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed"); + $result = mysql_query ($strSQL)or die ("Query INSERT INTO dp2Virobn failed"); + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed"); + } + + $rez.= '6. Импортирована таблица dp2Virobn
        '; + +// читаем из tbRb_VirobnikSort + $ret = odbc_exec($conn,"SELECT * FROM tbRb_VirobnikSort"); +// удаляем записи из dp2VirobnikSort + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ("DELETE FROM dp2VirobnikSort ;")or die ("Query2 failed"); + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; +// записываем результат в массив $table[] + $i=0; + while ($line = odbc_fetch_array($ret)) { + $col=0; + while(list($col_name, $col_value) = each($line)) { + $table [$col]= str_replace ("'","`",iconv('CP1251', 'UTF-8', $col_value)); + $col++; + } +// записывает в dp2VirobnikSort + $strSQL = "INSERT INTO dp2VirobnikSort (Schetchik,IdTipNasinnya,IdVirobnik,NumZajv,ObsyagVirobn,God, + Dogovor,Datadogovora,User,Date,Rozsad_vipr1,Rozsad_vipr2,Rozsad_rozm1,Rozsad_rozm2,superelit,elit, + gen1,gen2,gen_last,is_dobazov,is_base,is_cert) + VALUES ('".$table [0]."','".$table [4]."','".$table [1]."','".$table [2]."','".$table [3]."', + '".$table [5]."','".$table [6]."','".$table [7]."','".$table [8]."','".$table [9]."', + '".$table [10]."','".$table [11]."','".$table [12]."','".$table [13]."','".$table [14]."','".$table [15]."', + '".$table [16]."','".$table [17]."','".$table [18]."','".$table [19]."','".$table [20]."','".$table [21]."')"; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed"); + $result = mysql_query ($strSQL)or die ("Query INSERT INTO dp2VirobnikSort failed"); + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed"); + } + + $rez.= '7. Импортирована таблица dp2VirobnikSort
        '; + +// читаем из tbRb_SortReestr + $ret = odbc_exec($conn,"SELECT * FROM tbRb_SortReestr"); +// удаляем записи из dp2SortReestr + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ("DELETE FROM dp2SortReestr ;")or die ("Query2 failed") ; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; +// записываем результат в массив $table[] + while ($line = odbc_fetch_array($ret)) { + $col=0; + while(list($col_name, $col_value) = each($line)) { + $table [$col]= str_replace ("'","`",iconv('CP1251', 'UTF-8', $col_value)); + $col++; + } +// записывает в dp2Kultur + $strSQL = "INSERT INTO dp2SortReestr (SortID,NameUA,NumZajv,CodKult,Kultura) + VALUES ('".$table [2]."','".$table [1]."','".$table [2]."','".$table [3]."','".$table [4]."')"; + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 0;")or die ("Query1 failed") ; + $result = mysql_query ($strSQL)or die ("Query INSERT INTO dp2SortReestr failed"); + $result = mysql_query ("SET FOREIGN_KEY_CHECKS = 1;")or die ("Query3 failed") ; + } + + $rez.= '8. Импортирована таблица dp2SortReestr
        '; + + $rez.= 'Программа закончила импорт из ACCESS
        '.date("Y-m-d H:i:s").'
        '; +} // post + return $rez; +} // ImportAccess + + // Возвращаем контент + function content(){ + $rez=$this->ImportAccess(); + return $rez; + } + +} diff --git a/k2shop/k2shop/app/depricate/k2edit_o.php b/k2shop/k2shop/app/depricate/k2edit_o.php new file mode 100644 index 0000000..ea806e1 --- /dev/null +++ b/k2shop/k2shop/app/depricate/k2edit_o.php @@ -0,0 +1,221 @@ + + .modalDialog { + position: absolute; + background: none; + } + + .modalDialog > div { + width: 90%; + position: relative; + margin: 10% auto; + padding: 10px; + border-radius: 10px; + + background: -moz-linear-gradient(#fff, #999); + background: -webkit-linear-gradient(#fff, #999); + background: -o-linear-gradient(#fff, #999); + } + .close { + background: #606061; + color: #FFFFFF; + line-height: 25px; + position: absolute; + right: -12px; + text-align: center; + top: -10px; + width: 24px; + text-decoration: none; + font-weight: bold; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; + -moz-box-shadow: 1px 1px 3px #000; + -webkit-box-shadow: 1px 1px 3px #000; + box-shadow: 1px 1px 3px #000; + } + + .close:hover { background: #48741d; color:white; } + .submit_btn:hover { background: #48741d; color:white; } + + + + + +
        +
        + X +
        +
        +
          +
        • +

          Редактирование информационного элемента:

          +
        • +
        • + + +
        • +
        • + + +
        • +
        • + + + +
        • + + +
        + +
          +
        • +

          META - данные:

          +
        • +
        • + + +
        • +
        • + + +
        • +
        • + + +
        • +
        • + +
        • +
        +
        +
        +
        +
        '; + + + /** + * Формируем выпадающий список для выбора языка документа + * @return type string - готовый код для выпадающего списка. + */ + function getLanguagesSelect() { + global $k2; + + $rez = ''; + + $langSelect = $k2->ins_comp('k2select2'); + + $LanguagesArray = []; + + foreach ($k2->langs as $langKey => $language) { + $LanguagesArray[$langKey] = $language['name']; + } + + $rez.=$langSelect->sel( + array( + 'name' => 'selectedLang', + 'sql' => "", + 'value' => $k2->lng, + 'search_input' => 1, + 'additems' => $LanguagesArray, + ) + ); + + return $rez; + } + + + /** + * Отображает форму для редактирования записи + * @return type string + */ + function showEditForm() { + + global $k2; + + $cont = $k2->ins_comp('k2cont'); + + $itemId = $k2->get('item_id'); // Получаем ID записи из $_GET + $itemCommand = $k2->get('command'); // Получаем command записи из $_GET + + if ($itemId) { // Задан ID + $itemDataArray = $cont->getItemContentById($itemId); // Получаем контент по ID + + } else if ($itemCommand) { // Указана command + + // Проверить есть ли такая запись в БД. + $dBRecord = $cont->isItemExist($itemCommand); + + // Если записи нет, то создать ее... + if(!$dBRecord) { + $cont->createItemDueCommand($itemCommand); // Создать новую записб в БД + } + + $itemDataArray = $cont->getItemContentByCommand($itemCommand); // Получаем контент по command + } + + // Если была нажата кнопка Submit - обновляем запись в БД. + if ( $k2->post('save_content') == 'submited' ) { + $cont->updateItem($itemId, $itemCommand); + header("Location: ".'/'); + + // иначе просто показываем форму. + } else if($itemDataArray) { + + $rez = $this->editForm; + + //$rez = str_replace('{languageSelect}', $this->getLanguagesSelect(), $rez); + $rez = str_replace('{header}', $itemDataArray[0]['h1'], $rez); + $rez = str_replace('{ShortDescription}', $itemDataArray[0]['short_description'], $rez); + $rez = str_replace('{FullContent}', $itemDataArray[0]['content'], $rez); + $rez = str_replace('{MetaTitle}', $itemDataArray[0]['title'], $rez); + $rez = str_replace('{MetaDescription}', $itemDataArray[0]['descript'], $rez); + $rez = str_replace('{MetaKeywords}', $itemDataArray[0]['keywords'], $rez); + + // или не показываем, если нет ID записи в GET + } else { + die('Не указан контент для редактирования!'); + } + + return $rez; + } + + function content() { + + global $k2; + + if (!$rez = $k2->auth->isAdmin()) { + die('У Вас нет прав редактировать данный текст!!!'); + + } + + $rez = $this->showEditForm(); + + return $rez; + } + + function show() { + echo $this->content(); + } + +} diff --git a/k2shop/k2shop/app/depricate/k2form.php b/k2shop/k2shop/app/depricate/k2form.php new file mode 100644 index 0000000..9ad2483 --- /dev/null +++ b/k2shop/k2shop/app/depricate/k2form.php @@ -0,0 +1,153 @@ + + {formFields} + {submitButton} + '; + // Поле типа Text + public $formFieldText = '
        + + +
        '; + // Кнопка + public $submitButton = ' + '; + + + private function generateFieldID() { + return uniqid(); + } + + public function build() { + global $k2; + + // Пример массива для создания формы + $dataArray = [ + 'formName' => 'myFirstForm', + 'formAction' => 'index.php', + 'formMethod' => 'GET', + 'formEnctype' => 'application/x-www-form-urlencoded', + 'formFields' => [ + 'name' => [ + 'inputType' => 'text', + 'fieldName' => 'name', + 'fieldValue' => 'Иван', + 'fieldPlaceholder' => 'Введите имя', + 'fieldLabel' => 'Имя', + 'fieldClass' => 'form-control', + + ], + 'surname' => [ + 'inputType' => 'text', + 'fieldName' => 'surname', + 'fieldValue' => 'Иванов', + 'fieldPlaceholder' => 'Введите фамилию', + 'fieldLabel' => 'Фамилия', + 'fieldClass' => 'form-control', + + ], + 'about' => [ + 'inputType' => 'textarea', + 'fieldName' => 'О себе', + 'fieldValue' => '', + 'fieldPlaceholder' => 'Расскажите о себе', + 'fieldLabel' => 'О себе', + 'fieldClass' => 'form-control', + + ], + 'gender' => [ + 'inputType' => 'radio', + 'fieldName' => 'fermale', + 'fieldValue' => 'female', + 'fieldPlaceholder' => 'female', + 'fieldLabel' => 'female', + 'fieldClass' => 'form-control', + + ], + 'gender1' => [ + 'inputType' => 'checkbox', + 'fieldName' => 'fermale', + 'fieldValue' => 'female', + 'fieldPlaceholder' => 'female', + 'fieldLabel' => 'female', + 'fieldClass' => 'form-control', + + ], + 'submitOptions' => [ + 'submitName' => 'submit', + 'submitValue'=> 'Отправить', + 'submitClass'=> 'btn btn-info', + ], + ], + ]; + + $formCode = $this->formWrapper; + $formFields = ''; + $formSubmit = ''; + + foreach ($dataArray as $option => $optionValue) { + switch ($option) { + case 'formFields': + foreach ($optionValue as $fieldName => $fieldValue) { + switch ($fieldName) { + case 'submitOptions': + $formSubmit = $this->submitButton; + foreach ($fieldValue as $fieldOption => $fieldOptionValue) { + $formSubmit = str_replace('{'.$fieldOption.'}', $fieldOptionValue, $formSubmit); + } + break; + default : + $formFields .= $this->formFieldText; + foreach ($fieldValue as $fieldOption => $fieldOptionValue) { + $formFields = str_replace('{'.$fieldOption.'}', $fieldOptionValue, $formFields); + } + $fieldID = $this->generateFieldID(); + $formFields = str_replace('{fieldLabelFor}', $fieldID, $formFields); + $formFields = str_replace('{fieldID}', $fieldID, $formFields); + } + } + break; + + default: + $formCode = str_replace('{'.$option.'}', $optionValue, $formCode); + break; + } + } + $formCode = str_replace('{formFields}', $formFields, $formCode); + $formCode = str_replace('{submitButton}', $formSubmit, $formCode); + + + echo $formCode; die; + + return $formCode; + } + + function content() { + + global $k2; + + $rez = $this->build(); + return $rez; + } + + function show() { + echo $this->content(); + } + +} diff --git a/k2shop/k2shop/app/depricate/k2grid.php b/k2shop/k2shop/app/depricate/k2grid.php new file mode 100644 index 0000000..95eff84 --- /dev/null +++ b/k2shop/k2shop/app/depricate/k2grid.php @@ -0,0 +1,420 @@ + $value) { + + if (isset($value['type_field']) && ($value['type_field']=='DropDown')){ // Выпадающий список + $column = new GridDropDownColumn(); + + // Заполняем значение + if (isset($value['values'])){ + foreach ($value['values'] as $keydown => $valuedown) { + $column->AddItem(trim($valuedown), trim($keydown)); + } + } + + }elseif (isset($value['type_field']) && ($value['type_field']=='DateTime')){ // Поле дато и время + + + $column = new GridDateTimeColumn(); + //$column->DataField = "orderDate"; + //$column->HeaderText = "Order date"; + $column->FormatString = "d.m.Y"; // "M d, Y" + + $column->Picker = new KoolDatePicker(); + $column->Picker->scriptFolder = $k2->kool->KoolControlsFolder . "/KoolCalendar"; + $column->Picker->styleFolder = /*"sunset"*/ $k2->kool->style_calendar(); + $column->Picker->DateFormat = "d.m.Y"; + + }else{ + $column = new GridBoundColumn(); + } + + + $column->HeaderText = $value['caption']; + $column->DataField = $value['field']; + + // Только для чтения + if (isset($value['readonly'])){ + $column->ReadOnly = $value['readonly']; + } + + // Выравнивание + if (isset($value['align'])){ + $column->Align = $value['align']; + } + + + // Ширина столбца + if (isset($value['width'])){ + $column->Width = $value['width']; + }else{ + $column->Width = '100px'; + } + + + // Группировка + if (count($group)>0){ + + + foreach ($group as $keygr => $valuegr) { + + + if (trim($keygr)==$value['field']){ + + $column->Group = true; + + //$column->GroupSettings->InfoTemplate = "Reports To: {".$valuegr."}"; + $column->GroupSettings->HeaderText = $valuegr; + } + + } + + } + + + $matertable->AddColumn($column); + } + + } + + + // Выводит таблицу + function simpleTable($arr){ + + global $k2; + + ob_start(); + + + //$is_ajsx_show=(!isset($arr['ajaxshow'])) or ($arr['ajaxshow']<>true); + + if (isset($arr['master'])){ + $this->koolajax = $arr['master']->koolajax; + $this->master = $arr['master']; + }else{ + + //if ($is_ajsx_show){ + require_once $k2->kool->KoolControlsFolderAbs."/KoolAjax/koolajax.php"; + $this->koolajax = $koolajax; + $this->koolajax->scriptFolder = $k2->kool->KoolControlsFolder."/KoolAjax"; + //} + + } + + + if (isset($arr['table_caption'])){ + $this->table_caption=trim($arr['table_caption']); + } + + + + require_once $k2->kool->KoolControlsFolderAbs."/KoolGrid/koolgrid.php"; + + require_once $k2->kool->KoolControlsFolderAbs."/KoolGrid/ext/datasources/PDODataSource.php"; + + require_once $k2->kool->KoolControlsFolderAbs . "/KoolUploader/kooluploader.php"; + require_once $k2->kool->KoolControlsFolderAbs . "/KoolCalendar/koolcalendar.php"; + + $ds = new PDODataSource($k2->db); + $this->ds = $ds; + + $ds->SelectCommand = $arr['select']; + $ds->UpdateCommand = $arr['update']; + $ds->DeleteCommand = $arr['delete']; + $ds->InsertCommand = $arr['insert']; + //$ds->SetCharSet('utf8'); + + $name='grid'; + if (isset($arr['name'])){ + $name = trim($arr['name']); + } + + + $grid = new KoolGrid($name); + $this->grid = $grid; + $grid->scriptFolder = $k2->kool->KoolControlsFolder."/KoolGrid"; + + + if (isset($arr['style'])){ + $grid->styleFolder= trim($arr['style']); + }else{ + $grid->styleFolder= $k2->kool->style_grid(); + } + + + $grid->AjaxEnabled = true; + $grid->DataSource = $ds; + $grid->MasterTable->Pager = new GridPrevNextAndNumericPager(); + //$grid->MasterTable->Pager->Positon = "top"; + + + if (isset($arr['width'])){ + $grid->Width = $arr['width']; + }else{ + $grid->Width = "100%"; + } + + + $grid->ColumnWrap = true; + $grid->AllowSorting = true; + $grid->AllowResizing = true; + $grid->RowAlternative = true; + + + $page_rows=5; + if ($k2->get('page_rows')<>''){ + $page_rows=$k2->get('page_rows'); + $_SESSION['page_rows']=$page_rows; + }elseif($k2->sess('page_rows')<>''){ + $page_rows=$k2->sess('page_rows'); + } + + // Количество строк на странице + if (isset($arr['PageSize'])){ + $grid->PageSize = $arr['PageSize']; + }else{ + $grid->PageSize = $page_rows; + } + + // Фильтрация + if (isset($arr['filtering'])){ + $grid->AllowFiltering = $arr['filtering']; + }else{ + $grid->AllowFiltering = false; + } + + + // Прокрутка + if (isset($arr['scroll'])){ + $grid->AllowScrolling = $arr['scroll']; + }else{ + $grid->AllowScrolling = true; + } + + + // Размеры области + if (isset($arr['master_width'])){ + $grid->MasterTable->ColumnWidth = $arr['master_width']; + } + + if (isset($arr['master_height'])){ + $grid->MasterTable->Height = $arr['master_height']; + } + + + // Скрываем таблицу при редактировавнии + $grid->MasterTable->InsertSettings->InputFocus = "BlurGrid"; //"HideGrid"; + $grid->MasterTable->EditSettings->InputFocus = "BlurGrid"; //"HideGrid"; + if (isset($arr['input_focus'])){ + $grid->MasterTable->InsertSettings->InputFocus = $arr['input_focus']; //"HideGrid"; + $grid->MasterTable->EditSettings->InputFocus = $arr['input_focus']; //"HideGrid"; + } + + + // Количество столбцов при редактировании + $grid->MasterTable->InsertSettings->ColumnNumber = 2; + $grid->MasterTable->EditSettings->ColumnNumber = 2; + if (isset($arr['column_number'])){ + $grid->MasterTable->InsertSettings->ColumnNumber = $arr['column_number']; + $grid->MasterTable->EditSettings->ColumnNumber = $arr['column_number']; + } + + + + $type_edit_grid="Inline"; + if ($k2->get('type_edit_grid')<>''){ + $type_edit_grid=$k2->get('type_edit_grid'); + $_SESSION['type_edit_grid']=$type_edit_grid; + }elseif($k2->sess('type_edit_grid')<>''){ + $type_edit_grid=$k2->sess('type_edit_grid'); + } + + + // Вид формы редактирования + $grid->MasterTable->InsertSettings->Mode = $type_edit_grid; + $grid->MasterTable->EditSettings->Mode = $type_edit_grid; + if (isset($arr['form_mode'])){ + $grid->MasterTable->InsertSettings->Mode = $arr['form_mode']; + $grid->MasterTable->EditSettings->Mode = $arr['form_mode']; + } + + + + + + $grid->MasterTable->AllowSelecting = true; + $grid->MasterTable->AllowHovering = true; + + $grid->MasterTable->ShowFunctionPanel = true; + + $grid->DisableAutoGenerateDataFields = false; + $grid->KeepGridRefresh = true; + + + // Выбор галочками строк - пока отключаю +// $grid->AutoGenerateRowSelectColumn = false; + + + // Группировка + if (isset($arr['grouping']) && $arr['grouping']){ + + $grid->AllowGrouping = true; + $grid->MasterTable->ShowGroupPanel = true; + } + + + $group=array(); + if (isset($arr['group'])){ + $group=$arr['group']; + } + + + $this->showFields($grid->MasterTable, $arr['fields'], $group); + + + if (isset($arr['ReadOnly']) and $arr['ReadOnly']){ + $readonly=true; + }else{ + $readonly=false; + } + + + + + + if (!$readonly){ + $column = new GridEditDeleteColumn(); + $column->Align = "center"; + $column->Width='30px'; + + $grid->MasterTable->AddColumn($column); + + + }else{ + //$grid->MasterTable->ShowGroupPanel = false; + $grid->MasterTable->ShowFunctionPanel = false; + } + + $grid->AllowEditing = !$readonly; + $grid->AllowDeleting = !$readonly; + + + // Для выборпа Master-detile + if (isset($arr['ismasterdetile']) and !isset($arr['master'])){ + $grid->ClientSettings->ClientEvents["OnRowSelect"] = "Handle_OnRowSelect"; + } + + + $grid->Process(); + + + + + // Выводим, если указано, что нужно выводить + if (!isset($arr['master']) and !isset($arr['ismasterdetile']) ){ + ?> + +
        + koolajax->Render(); + //} + ?> + Render();?> +
        + + +
        + koolajax->Render(); + //} + ?> + + + + + '.$this->master->table_caption.''; + echo $this->master->grid->Render(); + echo '
        '.$this->table_caption.'
        '; + echo $grid->Render(); + ?> + +
        + + 000^Y1^@s7Ht3#O00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXM` z5HYDE9dC%B08QZZPzk;xhag1yw zHc3!Oln77)UxFg>0V4Q-_yQtABm^WBDFHr!giug|P!ub1z$ii3F(EJ8acn$;V|QXF zGk%Qc(bMm)s(a5ldo4cfeO|ZfR?keP+tZ!9rPj=?bM8Hlz1Qo%{%dVf0lAW_j&xc7dp1KB6q#^UC49SmVWXR z{}HVsH)S}u7!m;$q>7k2QbkZl{Knrx>u~lrevU{}v-s>UGZUkg3Kvj>7C}r<%_|^E zqVkqTB8FntG8e~CRE%ZV#+#N90_qEb2+0IiW3!aR_wK&a+eB}f#Mn>Q{u@ZKN&6~x{B+~Eyg^^6YA8(Ny8CSe2;SIi?4g2yTi{k+cSB2^Mf>Byj=&4Q_%3Wu72eLiQJX z{_&su0k)S{0lTrUTLqmdO{K(Yj#q-t0ylNI^XU8kCE}^}ul@FaWA^+P;I2oQ+k)G6 zcu}x`sUpEa6~iGY!3_xkDXXv7DRS#Sx|;LE=RVAX@A+}$+PSa0KK6@*5P*PaR;(g| z0~KBrXFWThWM$jX1DDmn)+gn(PZHH*1~fLD%4fC>l-5l}_cF_rQz zjx$Te@OZgi$f__FWs#%-hdJ3tG;I-tl(rCo+7AdCuq1?_G%5&S9`n19Y~;ief`e{D z+yx25`EEXEYX^5{Ha~$15brIEdN~+J0Zns61(M?q7oYfbB$@k1{?!ljCix26m5@BV zXbbrY7Hm*OBe*J60MRnpF_16_0WA(SL2p|nm)PU-<;dmJ@5wIQUV{4ESGoN3mtN3> z-^g(8Mm{zOL9|F?Kt+0YFi0$CWvR^Sor&f+q%w;pI_kK)A9hlX_>H5^d%4G~ZP|YK zQMT`RkQgiE>VD&&_-F6uZGZW1F%KMyux=}pF4>TH42T+Drq_Z{Ie1VAI*AF473*^g zj-@BI4leMUzxPqT>mPg=`Q*?1U4O${-puxFj$3>CO}bqXq z?$nEejG-J{CRjt;)TDX|sUdh;ekM)D<1XOA?B47IZ=Ei%;>rBE+Co*4cu$^NU1aR5m|tmUhzhEL zw#Jt1@%c~wD)EZVx$>zGvRx_BY7n8743A22Y_#abrl>#1|e%CKOK?n0g$q0IpfAw)!slOpp*T42=N~Ic$^L*mE~(mZ|2M zOBZ@Dy037J zNI3B*@BN$q7Ts=<)>{t=E@+_nfn;HUsj;k zE+jMo6~)w16bq7Fk^olBE`UYNc1jgjLDhOC;O;$QIcO5Nt)=Ex(df$s*PcDgV(%K9 zel2hP?tc!a9^z!RL~OC}3(tL-&;Im}@Q&~NKH9L$&U{Ajed-i$=cxVm6nh5^hWQ}W z!4(rPpXm{H5h+ROtQc|x>!he?cMd?*n}#E8#!FWB#MIJ+IZcx|;qbN3e~3T61n>O8 z|B75X_q0F$Q$NW4@BceIpjW8W5g>^mqg06F#8H-X6^K<;+O{2{W_JklDMDb&9CUU3 z7o`7v8ATdh0B90$2@{NA64kpiPKY{SGF^z3=cv`)397Uba$MFeT5EbZ%7NJ!p7Lzz zCW}0^Xb6}YbzS#pL;tdu7jZLE%4kBsaWmRBr=xTf}LhLFzMHPMW*Yf=hORua|zh?$8Q}vz4$a zOyg%EH#F*p_O*!J$k$?(R}g0*&Y*#qb}YMK$4 za;()AY|eGXZLvdMjg6I{JBm*}S3aG`R%8E*W;O)u<((+?a7}kyLZ3!dRcblN^Hx5a zSucxbM%~`Y*FN(h&R^Lhx;rPN#yd*a zPF{AfEXdtUj2ilhad&(o1kTb1NHar;Oo9AVcYt2G4=Ipmmp?XI{8-H`s=dN=b3|o; z93cyImp~A~gCSBDxdNLm4C-6+Y$!3OtU)TVJiC4 zOrD{U=~`1_KhuI!+thFt5c-tx#YU?Br$A_|2Tkga`*yCvttL=>-VaO+io z%tABCxwBY>!8&ae`Yk)^ePdP$i#l;}v0!%3`*_P={m0lWWHX6Pz@WodByu|au_5M4)fhqhrf6KEitO-5DJK9kS;-S_j|oCx}=PNFG#xa z^Ii!dU47|k_Rl}TrDeq%-|;=%`;H%_+7_gB#9H&_+H-vRXZ|+xoijZ8ws&J&yJ)JX zsNrVZS`$xp>pSLe@48FIw7Xom%V4Ivb3;kCm`V?v9%Yd?g8mBf<2?J{mDOB1_lNx9 z7e2}EYrls#efvLzt$n1ve8qqF7ymV{4p+JFkvGyvWJ~G-`fR4}7WCm5!^=_tItohM zSBR-j1;1E$2Rw9^zN^-fP1yCyH|e-LjZ{>vldfLiv!DJ29{3CYh=ozEor9is1B}tC*-LocPD~s zAF+>!a+~qWap6erRFaTNNINHZ|zNO4F7*E*h#0^GTjPj0pq)6LO2wY8ajG z%uw9C2X|b<JnufM%h_sXQ;1)Yo{+=_Tkrh&r0NlLVh$ zb`>ENx?UdOmg}?h5c=8-Odg>S8}hr=P#4d77^O| z>O^R4g_}=Ig(_7TVkQ$ZiqYm$x?)IXgucu?vmtZyoj<}B& zn&iKYSYvvGh>QiTw~CUfmQ9*gLkF_8Qy_Y2Ry5N5skS8d}V)V>q(F10=3yP<9 zy@(x|+ZqW)5!BwIi(nmdvoOl6bJ@%B-i7b(S@ZkKru^mc&vV16@gLF@Q%JF&FD1}w zJF#x&bKK|^+=3;Dk6H^(>8a{Yq@E-uTGbId6GSSKca`XlmIhWLg1Qn%)aKp_jMiQo zw3kCi(ftc!0}sn*2F2hIu8azUa^-5V()p)-C3|8kUb7VdwY$gGj3iUJQXd$b$&Bar zDo`a>Cx{Qe;hjADx&Ka6*UThWFyl~pgN`m{5=cH>z^NC&%&GJhK~EhBat2%4Z8DbtZxeBVaIYO0T-PV_A9bp!Q0WD_Tnl+G**jNmh@OVXczlT{xB?vQOu95ii8|a z2aXfKmc=mVio@C^Jh>eQP0h+PI4i#V$~CM06zQH=w5P3xsbAZl8$@4-AB-g{t;>eu zm0tMX=c${?`Lp9dj`Ttqr!rd03>`SiLy0JL z%9)hqasiEVFnfsV)IG?4o&5YKeu<0!>))YXb7p6Y`8?93&QsiA@2{*Z%8&z>qB(?& zM`+=_3zRzYOn&LWIC@XSvc)d0z6O~PXwVI$e(S9Z!?h-*CChrw-qplY`z>$({(r;# zRc|83sNDOm??o0DIQ!wBBc@BtPMj*P!`RKTO-khzAmn`+XQ|}!wiEQ66Y($radZVM zN^#q>#dn1+ccz*fx=U$PvB{I)qDfYByb**MmljL*6TI!ae~kFxo7k@E+zD0$t}dMV z%GWsip?}YnFa92J$>K1JVyy0PG!H$#M7cfNRfuh3C$GhKpZ% z41fMf!rn!6JKWGx#&H46%O)H*nbq~Dd4`*Hzqi6YZWMb-1IwC(r|0&kllp@d=)!_y znt{yKIqQ2%tV`>9PS3WpHJDa+fAeElR9&ij%{^XkExjCT?RsndxZ~p<8aGnjZpJ-a z@BX?(#YV2bLGq5Hu4r4aG-t^iKXErZ_r8vMU-ee*df;2wJ#{~_ozwGOvz~5EGtU6KA<^cgDjH+|TY^_uwb)q?v6~r6p>{rk~tqY{s8ngmE3V z9XR4JVwm_~5IgeYxUHXi-ykQ0=+cAo9Vf^n?`67**^;!p%)zw_T)KFU=P#UNQ8&y^?y~)=@8Hol zzK_!nyqU%m^LawV5U-cMY~diaT>awj@ReWtdD=@)@bGJ1&%KX+3pPK^ehr9I1tX9U zjT4&5W^Bf0+`tH3rxE(t7$1sa$%gxS#(f&~dfsz_5kE3pTM6h;aIT zm?dOyul9L;i6=kv5&qz#zrZ)&xy{{gc?U7h31lcP#)x~$98hs)9ba-YHe)kxyns(D zE;A2ytwCpCMs*&+QPKJ&3O5|f#C_=tlY0XWg`83THtd2nGU(o}HQY|7n6AqjY$Ev0 z*o;mToZx{i-=>vBiqN{#)HN!Cdcc~R`uvx8_UX^@{KX4YcfE@@y!Y?1ecv09r}kQp zPkx-o{?m`~n)}ai`mNta(#TevF{@%0!eo6-b5iwv>}u=}MeB0dxKncU*`N+kyLZre-bJ+UdC<|QhjMWzk&evKZw&foY{rXI1tu-6 z?lX(qNUCTX&jpdCoq*$9qar-}1egBg|MK+J3+N+%kvG2YM~Ek`ew{CV>SN4Vu>0tn zN!6K5q*TdUKuA+|49{)9Ef)*3zAJ%~Ot3ilINm2nH__=B*NmE z!`)X$_e0r{sk`Sfsm2|)q}!|6Cja{9ur$D@M~t>!klK1})D=lo-eTqYDW%Ep({Gn7 zlS<^_J|Re2`wjt2=Dh)$K3^`>ijoe&(PJpNwSc*-rF(Suv3igF#zH`RiS<1lVXRWi zH1ts`hw-|_>`-pnI}+I#-tPWB{;mk#8GNUFZ!pYxFAvWRgP0oQ&TyMJ=$hl+^(e{j zSXQI=n?TljAurlRv32s6Hytfql-93<*6m1LGVlV9e?}|YhszOb(ShJuZ)VZ($+c93 z)|_O%R^9|JyV0#7M{2~X9fpj_pi{G+6|h;^>f!Le+{tVLKgjIjm)L49arMiOvAl4Fh&hY> zJ!aBy?hBtlcg}KZcLzemL*A#p(tuVG4OOmoC1PtI7phbv)*dn<9aO09M7M#Iv(kSi zrNp9HtcUM#wy5z@FOBhaa=o2QUerWD$sW&YL@^jTrwNv$7H5qyI);@CL^rBY$FL){ zy&rwN`~7qsr)GTaq*$R;pI>vG-2Yg>JH>3ruxs_ z4%i(U<4D6dhOT8|cXVh;(Z5gWYZVpxMq$}-k0RXexD3bp_qmcEH+e#C{F2W zoJw0652O2gC2ZU!f?xzs9K$R;Mi%qoG0}hGJW6g668tzKuwzuY&FU&Y!SnGpWs}^e zMm)EgadJyf#0Yv!HG^iIaP$-APL{F0+9N5ehAInW0vj2VPM1h-%@SSv_0sF*&hc}I z$3QJYhKJWO`Q0%Y_J&$N8MbyFy|gb}r+M84_jUV!cLrS!8T4_=%EECK8Ab@Z$2cve zfq-_hGjf>9yQwA6YV398*kMxDY?thCpf>(j`;u#W4J@Cds*KPCmdl3NRwvkf@HJfh zli#F0xXel4r#*;B40wQq=bB|z(15uzw}UJ^YbLGM8A)RQ0IQy$yV0a}ZFvSbv*TKz zx+9jGfyLDc>Asg%IyR2IA$L;P$qUtdntvQZ{C?q%jgiPuwC%?%JIH%8uM0j!4Uu); zHn=EBwyz68_KHUj!<<2eh+vXC?V7opm6kUzzKn*Vtb(-@z57&iw}+7 zR-M<}Nlr%HO-rZJaj&ql&-JjyPHAbVT?F1w$K<%Hl)bm|yI|xLbZfb5c_b@)ZTH8! z+tSkEq`SXR?hl4J{|4gaL)3e{w8k1U;ew>ul8wp^;MaZ2})p&r2&x|-$!@u(o5exMhH-M4RKoLh#zN;m$)1q z?zup)K;_|>)QgjJ&G*YZg|z0V2j?*fkwEF7gyl?+je6QHrdIZ`XQoUAZcH4&c z-IG^rQ>UZ0S9C$=T(w;@(@~Hn+C`j`WLw5urjFgD>M4NR{ zQGU@$x2Eq~)<=0q9k;aXBlHmTh$vjLkjt=BNsiuaKpJ%2q~>1rYrSd7z4szpN8fl^ zUBM65D+fAd>JzqcA61y)Ix7+0;i%rta0xx>>F8@%hWL)#C{esOw4G5O-$&5cU#~Y5 zT~swfYSuyS`x@7K%iVhE1V%?4(52&(8Nt_Eo7{@rdURp3R@`w3wChlW7myk6U{V{s zlW}8D5yeVB*p8Iu1>AMj()D#vx_v{^-sm!P{q2nK>TwmU$nnrjwDjsPM%!fNxQ>o@ zPHJDKR-%v64W&MO z*y2EX=eLum+WReY`XF)4Cs|!;Ia<$Mo!ty+V6nHP-e0mGcX`8G-oei4yOF&*d0N&i zp8h;feDvqpKl@wEcjw$uRqO<%!jLKvBUA#hNf73^=nAy-!bm=wu^E4+I4(YF)H=#z zcSbVj+ib!{pX3VNX=8CzM)`9_dC=sk-=M`OInjJw4cXZ-Kbq8r&~J0#GC+ltE@dvB z^Yj~e-i*z-!H#K82Zu(G;CN{BzBA^y1=_}F8s}Q7Ie-2d?d(DBdE*CoF0e%)p)_Gm+CIr0=`wM&+u5epbTc;Nc%!~r zF4i0Q!uL3m3|Am^3qFbZd<4U}Dh*98JL`=8m=sswbnW)X9p&~q`89l{jLj!Zd9Kd~ z+lLzr?HG`q#MQ!EYtZDrObgpgT~f zObS^Z?9(>JbAR+WU-|uyuz2$KIoX`!R9F(QoL8!LK*L(aCE~}!GMlj(e`Y-H(j9#z zI;JzKrOv!J*p!XxN5(b!2>x7Qx>M@Nd+5FVPREVte@~f|qxHOla-Y(%*=1a|MuGW{ zX+66co3R-$tHS6JF*nQ_7In)(Q$f6&*~tevaryyX{pWswllQ%v!rJb)AU=$ynA)+IkOLUS)ayX|6o;6xJ+zg|vyvH)Aud?{$xJ&x{OaCefrm zhnk6ag%nc+JjiNU+Q1t?fmRSZ;#kkrw-tzeN{(A4KTbN)_3UWd81&89jGLk^98boq znz6HUimf~DBJA8n+CGDA-HF7=i56mXqBP(}vvg+jZT>$nsiw_M)$xu10000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXM` z5Ft64e(?bS01kLbL_t(o!>yTnj3ife#(&?rRoy)g?|Nq+Ha6H^@A?^IW3XisEEG8* zC;}`LKtzF9${Py^ke4jtJe1@gD2Gdb+FbIr-yO_lzIGQby7!##eBXCYE8MR3S=S-F24SU-=?*d@7|RTf9^LBC?HpT@`-!#;UZje4ZU3lu__>7HLp+&<`y1W z{KjYKCj$Y!L<|x(W7yLDG|LYF5WvHao(hdTZaw~ufBC#3cS~|IqDGhi3zUqxg$s`D zzWA!kwfxT?i`r_0AqC^LMYMPb-?5we(wnHPB7hv3)&1|jU-y3Sy14q~dq6=bu-QH_ z01YZs8({)qvkCV6#67oYJZ|6qwL4$;*EhcLX9R(za>3;Ac1*5%B&#uN@gz_U6__$% zU?xxkG66JA@U5@@1+RbazkQ$@ub=(U1P?*4p=j@n(h5fJP{A=F$bA9DcDmTqJ?dJMjkAC}s+xxyj$@SJD`Bu2hFakr! zyNq_1hf1hY`_LG55hAK!uko!SBZX~RPVqf zjEoGxuq2Wy9{l26Z?0_h1kK^U0to~b&d7Vz$;tJAqy{WVbwahkSIKK@Xn35)dPF!O zN0u;$q?#sY7%gL$z4ueUwz9TKvpFI=G+`JG*;}j~k_p0$FmO3e5M3T4#z+|>khcUa z8{;(=hZ|h=&W|6~sM-8bySDmEfKqlc5fWAzO5g&SO0Z0rf#c5uKv36n z?7#W8j}GQ{enPp;w?sQyIeGk{yN-VH&L4Tjfh$;8*n=Y?)h|HL^N-f8%U1_sgfJQd zB_n_&kqDARn{q)`7$L(dP0@yJLEBwhNNk<;GbiGylgD)BEqAMxqw(-P zhyM6|e{kh%uHW7B1X71eLFDNTUi=8~APg|Wr4m_lpn{ajqLd3gr9_2LI6h%eD2N7_ zyhgyZ#Dr&uRI@qG%r%*B9zDVh@3`w-)yj7l-_>6}vU{+0kkoTh9+Af_xgDeIN%`8K&gk+M^-ayiFGowtM{>fX6Y}hxrM!-JGpKl#Ad-gNxazxmdMSz|5*rVctP^pt>*AeD2az{*C$ z5;Eb5Y2-~n5;DU(y!W-${eKq-aLUR^RHL z=hvTI{O!flr!OC$U81K9;qVf-mSWpuj0iA;hQMSo_HW655EVIU$1&x9r1j6^EjtVG0SF*wNz z<0yy-R0~C57PtlKmWx%}oz66g*;-;;UyT zsaYokDOFPzd8s2(VGtC!n$9_7WPPX-PGGi4mZ4@i{F%`NU7^{(riAw67iaW@jrZ%P7FzkxFracZ%`cQu6NBS&0~~5Tg~U z&1V_sAx$1JXos|(sjHfHZU@#IQ1^O_=Fg)yvlB~m6WYcwu(oixgeJR)pryhXLk{ST z7_KGO)%LJKiL6Ms23qT*sRY7_Ab`2+w1LNaiGS-1>xsOf)Gl z6MY$;0!v2VFggWeqcvfx$7u~LB{G|YDq0e?JF5Cn4NyH#>J6akBh7#ksY=+mX8G(Y zi)X8-=63C6?cOh7|6P+)O$G=rikz&dDaI&jQaD&mN`a>t+Eiifkd%zvbtzaeZR*rD zk}wG+!x5GoM>s7OJBVnhqWE=1L$pr4xk65bp?Xo{h@l73HmnR+n7QaS*|`U0~Q7cm`h;Yn@^zs^JwvE@-36CMAsVFHGdtfFqOgEU*8mOU4 z!XiinwU6;smqG|*Y-==WgH{_1W5k)WianRyG`59{uKV!H%dTxk>qCZ{BSzyfWG6?3 zduiJgqLtACEslGTU5vxXbT*QrrkNlUv}(zbac}Vm6opk1AP>|y=Bd<6cxS8w4}mvC zv_M0fYepNHjghguv4QQpR&(d?{{^)<|LUk|$A|y){U6b(2kLYCFfb9JsRtsWMASOY zl}{ra))-0hk9f3$I}JWv|=ZwfC~ynxsSh$dz*2?kvyK?#6UZJ08xDPapr?N=zc3l0;?(g(r5f{w&5dW{%+lkWIPsL&apjo zdivq7|JmZ-eT>Vmx|Vj|#q<#~G{s4iwgo$;3!S`vUm=fxRCO43EDGI7K`=v5A)AaJ z3xac{sSLO#2~qJX5rj&E5KRM zk3xHeIgR1C!NS-){dj!)kwZFo^X;+osyBS38m_GW^6=Pw%nu08eVJzH<5k0$ieA)R z$$ICVOF%qCPGC6ljG`sH1rOAATqzc9r*CAB!N&Fv@6BOz5d=;F%y&TddGgfh8-P-kYK6%^}rTH9*w>OFb+NAk7rB zs6?nLYAP%I@4{1slZtZy`abTGoI27ii|SW38*=Ks2ejv@hgd%Kpyn@n?fa{$vL_AX?$GD!>1#l?1+ZaXnkbbd`<1h5N2bo1Ki zv>{u)MIqMFMY%xx`2n_o%fu8LCU4PB`Kq^tCGD~T-aS9xA|jpbR^$7k6XjoCc=H2wI&2)tKS{n=0N zxa5^@diL;z?A}-dU!p(LC%KR+WEDi2X=(Cf23^3T2w8F6rS?+C`A$*%Vr>J9c1ni{ z!)Z&oPlS1b<_?^0blk0O@>2q*4(ZdNTQ@7vwlP(Ay~)6Q%KLdj`3hQtcET7|5*!g& zh{}5;O~wOI5x9g~HJuM>BIW@ajWFv*O>#U$8x7H{Qu~M)!^jq5*Ll~;=KB9x^=4-B z&P#9j$iAE3`GKW>{X~VgG^(ksPn8n2Ii~20IyAWqq)jEe-VJgKu!HQ5LLIl33Mjuw z^tYk86EN#|xkF$#SM89ij@!%s>Zm7MM_;M)Pu*wQmZUD?goKwdP^s35}{&eJ~6c=S<&q^)x|^sO>W6K*vNqsY^-nc%yN(2*S$^q_FsF?Og;N0 zdCqr4#N(SytEZ11`mIOr`I9U5E+46O&qmOnfoh_{|VLuU58u&iV7p`C| z(KF#W)3hyZHkxM4((*<$vsdYgAA0vAyAR&<`?)tbWtLAX=lrU`cL^PcmOZ2K>eFYA zKXmKjBlo|3^`S4*EAplfTdY&I0NP8i!%7SZn(+*tw7M_Fu1E uFMsua%wF`WFU4T)v001dr2JosIPpKt>ZkMCI7{LH0000rootdir.'/k2shop/k2shop/app/licenz.txt'; + $lic = file_get_contents($filename); + + + $return = ' +
        + + +

        +   + * +
        + +

        +
        ' ; + + return $return ; + } + + function echoResult( $result ) { + $str = split( ".::." ,$result); + $return = ' +
        +
        + Настройка завершена ! +
        +
        +
        + Информация о Вашем аккаунте:

        +
          +
        • + Логин: '.$str[0].' +
          + Email: '.$str[1].' +
        • +
        +
        +
        + Ваши настройки:

        +
          +
        • +  Обновления продукта +
          +  Предложения +
          +  Новости о системе +
          +
        • +
        +



        + К Вам придет электронное сообщение по электронной почте с ссылкой на активацию аккаунта. + +
        +
        ' ; + + return $return ; + } + + + + // Создание администратора + function createAdmin(){ + + global $k2; + + require_once $k2->kool->KoolControlsFolderAbs."/KoolSlideMenu/koolslidemenu.php"; + require_once $k2->kool->KoolControlsFolderAbs."/KoolAjax/koolajax.php"; + + if ($koolajax->isCallback) { + sleep(1); + } + + + $ksm = new KoolSlideMenu("ksm"); + + $ksm->scriptFolder = $k2->kool->KoolControlsFolder."/KoolSlideMenu"; + $ksm->styleFolder = $k2->kool->KoolControlsFolder."KoolSlideMenu/styles/darkgray"; + + $ksm_expand = $ksm->addParent("root","step1","Шаг 1: Информация о администраторе"); + $ksm->addPanel( "step1", "Pstep1" , $this->echoStep1() ) ; + $ksm_expand->expand = true ; + + $ksm->addParent("root","step2","Шаг 2: Информация о подключении, настройки сайта "); + $ksm->addPanel( "step2", "Pstep2" , $this->echoStep2() ) ; + + $ksm->addParent("root","step3","Шаг 3: Лицензионное соглашение "); + $ksm->addPanel( "step3", "Pstep3" , $this->echoStep3() ) ; + + $ksm->singleExpand = true; + $ksm->width="800px"; + + $regisForm = new UpdatePanel( "regisForm" ) ; + $regisForm->setLoading($k2->kool->KoolControlsFolder."/koolajax/loading/1.gif" , "white" , 50 ); + $stepDone = ( $k2->post("task")<>'' && $k2->post("task") == "done" ) ? true : false ; + + if( $stepDone ) { + $return = '
        +
        Установка системы

        +
        '; + + $return .= $this->echoResult($k2->post("data" )) ; + + $return .= '
        '; + }else{ + $return = ' +
        +
        Установка системы Корпорация 2 (К2®)

        +
        '. $ksm->Render(). + '
        + + + +
        '; + } + + $regisForm->cssclass = "cssRegisForm" ; + $regisForm->content= $return ; + + ?> + + Render();?> + Render();?> + + + + + + createAdmin(); + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/depricate/k2install/k2regfunc.js b/k2shop/k2shop/app/depricate/k2install/k2regfunc.js new file mode 100644 index 0000000..1ee2331 --- /dev/null +++ b/k2shop/k2shop/app/depricate/k2install/k2regfunc.js @@ -0,0 +1,80 @@ + + +function OnBeforeExpand_handle(sender,arg) +{ + if ( arg.ItemId == 'step2' ){ + if( step1ok.indexOf( "0" ) > -1 ){ + alert( "You must finish step 1 before continuousing with step 2" ); + return false; + }else{ + document.getElementById( "wstep2" ).className = "showw" ; + return true; + } + }else if ( arg.ItemId == 'step3' ){ + if( !step2ok ){ + alert( "You must finish step 2 before continuousing with step 3" ); + return false; + }else{ + document.getElementById( "wstep3" ).className = "showw" ; + return true; + } + }else if ( arg.ItemId == 'step1' ){ + return true; + } +} +function checkAccName() +{ + txtname = document.getElementById( "txtName" ).value ; + checkArr = step1ok.split( "" ); + if ( txtname.length > 4 ){ + document.getElementById( "accNoteWord" ).innerHTML = "" ; + checkArr[0] = "1" ; + }else{ + document.getElementById( "accNoteWord" ).innerHTML = "Account Name must more than 4 characters." ; + checkArr[0] = "0" ; + } + step1ok = checkArr[0] + checkArr[1] + checkArr[2] + checkArr[3] ; +} + +function checkAccPass() +{ + txtpass = document.getElementById( "txtPass" ).value ; + checkArr = step1ok.split( "" ); + if ( txtpass.length > 4 ){ + document.getElementById( "passNoteWord" ).innerHTML = "" ; + checkArr[1] = "1" ; + }else{ + document.getElementById( "passNoteWord" ).innerHTML = "Password must more than 4 characters." ; + checkArr[1] = "0" ; + } + step1ok = checkArr[0] + checkArr[1] + checkArr[2] + checkArr[3] ; +} +function checkAccCfmPass() +{ + txtcfmpass = document.getElementById( "txtRepass" ).value ; + txtpass = document.getElementById( "txtPass" ).value ; + checkArr = step1ok.split( "" ); + if ( txtcfmpass == txtpass ){ + document.getElementById( "repassNoteWord" ).innerHTML = "" ; + checkArr[2] = "1" ; + }else{ + document.getElementById( "repassNoteWord" ).innerHTML = "Password and confirm pass does not match." ; + checkArr[2] = "0" ; + } + step1ok = checkArr[0] + checkArr[1] + checkArr[2] + checkArr[3] ; +} +function checkEmail() +{ + txtmail = document.getElementById( "txtMail" ).value ; + checkArr = step1ok.split( "" ); + checkMail = false ; + var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i; + if ( txtmail.search(emailRegEx) == -1 ){ + }else{ + checkMail = true ; + } + document.getElementById( "mailNoteWord" ).innerHTML = ( checkMail ) ? "" : "Email is not valid." ; + checkArr[3] = ( checkMail ) ? "1" : "0" ; + step1ok = checkArr[0] + checkArr[1] + checkArr[2] + checkArr[3] ; +} + diff --git a/k2shop/k2shop/app/depricate/k2newmenu.php b/k2shop/k2shop/app/depricate/k2newmenu.php new file mode 100644 index 0000000..65bd1d3 --- /dev/null +++ b/k2shop/k2shop/app/depricate/k2newmenu.php @@ -0,0 +1,156 @@ +{content}{edit}'; // Шаблон меню + public $content='
      • {name}
      • '; // Контент меню + public $selelect='class="b-nav-list-text"'; // Шаблон активного элемента меню + public $unselelect='class="b-nav-list-text"'; // Шаблон для неактивного элемента меню + public $order='ord'; // Поля по которым делается сортировка + + /** + * Получает ID меню из БД по его идентификатору menuID указанному в шаблоне в теге {menu [menuID]} + * @return type integer + */ + public function getMenuId(){ + global $k2; + + $sqlQuery = "SELECT k2menuid, menu_name, ident, comment, active FROM k2menu WHERE ident ='".$this->menuID."'"; + $menuId = ''; + + foreach ($k2->db->query($sqlQuery) as $menu) { + $menuId=$menu['k2menuid']; + break; + } + + return $menuId; + } + + + // Выводит шаблон + public function getTempl($arr){ + global $k2; + + $rez = $this->content; + + $rez = str_replace('{name}', $arr['caption'], $rez); + + // Выводит стиль в зависимости от того текущий элемент это или нет + $rez = str_replace('{selectclass}', $this->unselelect, $rez); + + // Вставляем url + if ( trim($arr['url'] ) <> '' ){ + $rez = str_replace('{url}', $k2->surl->SefURL_FromURL(trim($arr['url'])), $rez); + + } elseif (trim($arr['command'])<>''){ + $rez=str_replace('{url}', $k2->surl->SefURL_FromURL('/?p='.$arr['command']), $rez); + + } else { + $rez=str_replace('{url}', $k2->surl->SefURL_FromURL('/?p='.$arr['k2menuitemid']), $rez); + } + + return $rez; + + } + + // Получение элементов меню из базы данных + public function getMenuItems($menuid){ + global $k2; + + $sql = "SELECT k2menuitemid, k2menuid, caption, parentid, active, hint, command, url, ord FROM k2menuitems WHERE (k2menuid='".$menuid."')and(active='1')"; + + if ( trim($this->order) <> '' ) { + $sql .= ' order by '.$this->order.' '; + } + + $s=''; + + // Выводим строки + foreach ($k2->db->query($sql) as $row) { + + $s.=$this->getTempl($row); + } + + return $s; + + } + + + function getContent($isshow=false){ + + $rez=''; + + $menuid=$this->getMenuId(); + + if (trim($menuid)<>''){ + + $rez.=$mitem=$this->getMenuItems($menuid); + + } + + + return $rez; + } + + + // Выдет внешний вид кнопки + function editLinks(){ + + global $k2; + + $ico=$k2->ico->edit_menu(); + + return "Редактировать"; + } + + + // Кнопки для администрирования + function admButtons(&$html){ + + global $k2; + + if ( ($k2->auth->isAdmin()) and ($k2->auth->isDesignMode()) ){ + $btn=$this->editLinks(); + } else { + $btn=''; + } + + $html=str_replace('{edit}', $btn, $html); + + } + + + + // Получает контент + function content(){ + + if ($this->isshow){ + $cont=$this->getContent(false); + $rez=str_replace('{content}', $cont, $this->template); + $this->admButtons($rez); + + return $rez; + } + + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/depricate/k2pagecontent.php b/k2shop/k2shop/app/depricate/k2pagecontent.php new file mode 100644 index 0000000..d3a8570 --- /dev/null +++ b/k2shop/k2shop/app/depricate/k2pagecontent.php @@ -0,0 +1,107 @@ +lng; + } + + /** + * Получает и возвращает язык из строки запроса, если таковой указан + * @global type $k2 + * @return boolean + */ + public function getLang(){ + global $k2; + + if($k2->get('lang')){ + return trim($k2->get('lang')); + } else { + return false; + } + } + + /** + * Возвращает нужный идентификатор языка для контента + * @return type string + */ + public function getContentLang() + { + $currentLang = $this->getCurrentLang(); + $isLangInGet = $this->getLang(); + + if($isLangInGet) { + return $isLangInGet; + } else { + return $currentLang; + } + } + + /** + * Присвает значения свойствам, если запись на нужном языке найдена, или возвращает false в ином случае. + * @param type $page array + * @return boolean + */ + public function getPageContent($page){ + global $k2; + + $pageDataArray = array(); + $lang = $this->getContentLang(); + + if(trim($page) <> ''){ + + $sqlQuery = "SELECT * FROM k2content + WHERE (command = '".$page."') + AND (lang = '".$lang."') + LIMIT 1"; + + foreach ($k2->db->query($sqlQuery) as $row) { + array_push($pageDataArray, $row); + } + + if(!empty($pageDataArray)){ + + $this->pageTitle = $pageDataArray[0]['title']; + $this->pageDescription = $pageDataArray[0]['descript']; + $this->pageKeywords = $pageDataArray[0]['keywords']; + $this->pageHeader = $pageDataArray[0]['h1']; + $this->pageShortDescription = $pageDataArray[0]['short_description']; + $this->pageContent = $pageDataArray[0]['content']; + + return true; + + } else { + return false; + } + } else { + return false; // Страница не найдена! + } + } +} \ No newline at end of file diff --git a/k2shop/k2shop/app/depricate/k2slider.php b/k2shop/k2shop/app/depricate/k2slider.php new file mode 100644 index 0000000..a3c91db --- /dev/null +++ b/k2shop/k2shop/app/depricate/k2slider.php @@ -0,0 +1,314 @@ + +
        +
        +
        + +
        +
        +
        + '; + + public $sliderIndicator = '
      • '; // Внешний вид индикатора слайда + public $activeIndicatorClass = 'class="active"'; // Класс активного индикатора слайда + public $activeSlideClass = 'active'; // Класс активного слайда + public $imageAdditionalClass = 'girl'; // Дополнительный класс активного слайда + + // Шаблон одного слайда + public $sliderItem = '
        +
        + {slideContent} + {slideButton} +
        +
        + {slideImage} +
        +
        '; + + // Шаблон для изображения слайда + public $slideImage = ''; + + // Шаблон кнопки в слайде + public $slideButton = ''; + + // Шаблон левой управляющей стрелки слайдера + public $leftSliderControl = ''; + // Шаблон правой управляющей стрелки слайдера + public $rightSliderControl = ''; + + public function generateSliderId($length = self::SLIDER_ID_LENGTH){ + + $chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789'; + $numChars = strlen($chars); + $string = ''; + for ($i = 0; $i < $length; $i++) { + + $string .= substr($chars, rand(1, $numChars) - 1, 1); + } + + return $string; + } + + + /** + * Парсит имя слайдера, полученное из тега {slider} для определения идентификатора + * и шаблона. + * @param type $sliderName + * @return type array - [0]- dbIdentificator (идентификатор) [1] - template (шаблон) + */ + public function sliderDataParcer($sliderName){ + + $sliderInitData = explode("-", $sliderName); + + return $sliderInitData; + } + + + /** + * Задает параметры слайдера и возвращает их в виде массива + * @return type array + */ + public function getSliderParams(){ + global $k2; + +// $sliderName = $this->sliderName; +// $sliderInitData = []; +// +// // Если имя слайдера не указано, задаем значения по умолчанию +// if($sliderName == '') { +// $sliderInitData['dbIdentificator'] = 'main_slider'; // Идентификатор слайдера для получения данных из БД +// $sliderInitData['template'] = 'slider'; // Шаблон слайдера в папке k2shop/usr/cfg/k2slider-slider.php +// } else { +// // Получаем параметры слайдера из тега {slider} +// $sliderInitData['dbIdentificator'] = $this->sliderDataParcer($sliderName)[0]; +// $sliderInitData['template'] = $this->sliderDataParcer($sliderName)[1]; +// } + + $sliderName = $this->sliderName; + $sliderInitData = []; + + // Если имя слайдера не указано, задаем значения по умолчанию + if($sliderName == '') { + $sliderInitData['dbIdentificator'] = 'main_slider'; // Идентификатор слайдера для получения данных из БД + $sliderInitData['template'] = 'slider'; // Шаблон слайдера в папке k2shop/usr/cfg/k2slider-slider.php + } else { + // Получаем параметры слайдера из тега {slider} + $sliderInitData['dbIdentificator'] = $this->sliderDataParcer($sliderName)[0]; + $sliderInitData['template'] = $this->sliderDataParcer($sliderName)[1]; + } + + return $sliderInitData; + } + + + /** + * Получает всю информацию о слайдере из БД по его идентификатору. + * @return array - массив данных о слайдах для слайдера с указанным именем + */ + public function getSlides() { + global $k2; + + $sliderDbIdentificator = $this->getSliderParams()['dbIdentificator']; // Получаем идентификатор слайдера для запроса к БД + + $sliderData = []; // Массив с данными слайдов для нужного слайдера + + $sqlQuery = 'SELECT s.image, s.content, s.link, s.sort_order + FROM k2slider AS s + WHERE slider_name ="'.$sliderDbIdentificator.' " + ORDER BY s.sort_order'; + + + foreach ($k2->db->query($sqlQuery) as $row) { + array_push($sliderData, $row); + } + + return $sliderData; + } + + + /** + * Формирует секцию индикаторов для переключения слайдов + * @param type $slidesArray - массив с данными о слайдах + * @return type string - HTML код внешнего вида индикаторов слайдера + */ + public function getSliderIndicatiors($slidesArray){ + global $k2; + + $rez = ''; + + $slidesNumber = count($slidesArray); // Получаем количество слайдов для заданного слайдера + + for( $i = 0; $i <= $slidesNumber-1; $i++) { + + if( $i == 0 ) { + $rez .= $this->sliderIndicator; + $rez = str_replace('{slideNum}', $i, $rez); + $rez = str_replace('{indicatorClass}', $this->activeIndicatorClass, $rez); + } else { + $rez .= $this->sliderIndicator; + $rez = str_replace('{slideNum}', $i, $rez); + $rez = str_replace('{indicatorClass}', '', $rez); + } + + } + + return $rez; + + } + + + /** + * Генерирует слайды из БД + * @param type $slidesArray - массив информации о слайдах + * @return type string HTML код слайдов + */ + public function getSliderItems($slidesArray) { + global $k2; + + $rez=''; + + foreach ($slidesArray as $key => $slide) { + + if( $key == 0 ) { + $rez.= $this->sliderItem; + $rez = str_replace('{activeSlide}', $this->activeSlideClass, $rez); + $rez = str_replace('{slideContent}', $slide['content'], $rez); + $rez = str_replace('{slideButton}', $this->slideButton, $rez); + $rez = str_replace('{buttonLink}', $slide['link'], $rez); + $rez = str_replace('{slideImage}', $this->slideImage, $rez); + $rez = str_replace('{imageSrc}', $slide['image'], $rez); + $rez = str_replace('{imageAdditionalClass}', $this->imageAdditionalClass, $rez); + + } else { + $rez.= $this->sliderItem; + $rez = str_replace('{activeSlide}','' , $rez); + $rez = str_replace('{slideContent}', $slide['content'], $rez); + $rez = str_replace('{slideButton}', $this->slideButton, $rez); + $rez = str_replace('{buttonLink}', $slide['link'], $rez); + $rez = str_replace('{slideImage}', $this->slideImage, $rez); + $rez = str_replace('{imageSrc}', $slide['image'], $rez); + $rez = str_replace('{imageAdditionalClass}', $this->imageAdditionalClass, $rez); + } + } + return $rez; + } + + + /** + * Генерирует управляющие стрелки слайдера + * @return string код управляющих стрелок слайдера + */ + public function getSliderControls() { + global $k2; + + $rez = $this->leftSliderControl.$this->rightSliderControl; + + return $rez; + } + + + /** + * Переназначает свойства, отвечающие за внешний вид слайдера из шаблона, если таковой имеется в папке + */ + public function sliderTemplateInit() { + global $k2; + + $sliderTemplate = $this->getSliderParams()['template']; + + $templateFileName = 'k2slider-'.$sliderTemplate.'.php'; // Формируем название файла шаблона + $templateFileUrl = $k2->rootdir.'/k2shop/usr/'.$k2->curtemplate.'/cfg/'.$templateFileName; // Формируем URL местонахождение файла + + if (file_exists($templateFileUrl)) { + + return $templateFileUrl; + } else { + return false; + } + } + + + /** + * Формирует и отдает HTML код слайдера + * @return type string HTML код слайдера + */ + public function getSliderContent(){ + global $k2; + + $this->sliderTemplateInit(); + + $rez = $this->sliderContent; + + + // Выводим слайдер только на главной странице, если showOnlyOnMainPage = true + if( $this->showOnlyOnMainPage ) { + + if( !(($_SERVER['REQUEST_URI'] == '/') || ($_SERVER['REQUEST_URI'] == '/index.php')) ) { + $rez = ''; + } + + } + + $slidesArray = $this->getSlides(); + + $rez = str_replace('{sliderIndicators}', $this->getSliderIndicatiors($slidesArray), $rez); + $rez = str_replace('{sliderItems}', $this->getSliderItems($slidesArray), $rez); + $rez = str_replace('{sliderControls}', $this->getSliderControls(), $rez); + $rez = str_replace('{sliderId}', $this->generateSliderId(), $rez); + + return $rez; + } + + // Возвращаем контент + function content(){ + if( $this->sliderTemplateInit() ) { + // Подключаем указанный шаблон + require_once $this->sliderTemplateInit(); + } + + $rez = $this->getSliderContent(); // Выводим слайдер + + return $rez; + } + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/lng/k2menu/en.csv b/k2shop/k2shop/app/lng/k2menu/en.csv new file mode 100644 index 0000000..9159207 --- /dev/null +++ b/k2shop/k2shop/app/lng/k2menu/en.csv @@ -0,0 +1,17 @@ +name| value +lnOrders| Orders +lnTotalInfo| Total Information +lnChangePassw| Change Password +lnExit| Exit +lnCabinet| Cabinet +lnDrivers| Drivers +lnCars| Cars +lnTarifs| Tarifs +lnPlaning| Planing +lnTransfers| Transfers +lnEmployees| Employees +lnDiscounts| Discounts +lnMutualSettlements| Mutual Settlements +lnWorkingConditions| Working Conditions +lnAccounting| Accounting +lnDeposits| Deposits \ No newline at end of file diff --git a/k2shop/k2shop/app/lng/k2menu/ru.csv b/k2shop/k2shop/app/lng/k2menu/ru.csv new file mode 100644 index 0000000..afdf40e --- /dev/null +++ b/k2shop/k2shop/app/lng/k2menu/ru.csv @@ -0,0 +1,17 @@ +name|value +lnOrders| Заказы +lnTotalInfo| Общие данные +lnChangePassw| Поменять пароль +lnExit| Выход +lnCabinet| Кабинет +lnDrivers| Водители +lnCars| Автомобили +lnTarifs| Тарифы +lnPlaning| Планинг +lnTransfers| Трансферы +lnEmployees| Сотрудники +lnDiscounts| Скидки +lnMutualSettlements| Взаиморасчёты +lnWorkingConditions| Условия работы +lnAccounting| Бухгалтерия +lnDeposits| Депозиты diff --git a/k2shop/k2shop/app/lng/k2messages/en.csv b/k2shop/k2shop/app/lng/k2messages/en.csv new file mode 100644 index 0000000..6598a73 --- /dev/null +++ b/k2shop/k2shop/app/lng/k2messages/en.csv @@ -0,0 +1,2 @@ +name| value +lnReedMessage| Please read message diff --git a/k2shop/k2shop/app/lng/k2messages/ru.csv b/k2shop/k2shop/app/lng/k2messages/ru.csv new file mode 100644 index 0000000..30834f0 --- /dev/null +++ b/k2shop/k2shop/app/lng/k2messages/ru.csv @@ -0,0 +1,2 @@ +name|value +lnReedMessage| Пожалуйста прочитайте сообщение \ No newline at end of file diff --git a/k2shop/k2shop/app/lng/k2messages/ua.csv b/k2shop/k2shop/app/lng/k2messages/ua.csv new file mode 100644 index 0000000..49f5701 --- /dev/null +++ b/k2shop/k2shop/app/lng/k2messages/ua.csv @@ -0,0 +1,2 @@ +name| value +lnReedMessage| Будь ласка прочитайте повідомлення \ No newline at end of file