2379 lines
76 KiB
PHP
2379 lines
76 KiB
PHP
<?php
|
||
|
||
require 'log.php';
|
||
require 'rabbit.php';
|
||
|
||
|
||
|
||
function lockkey($table, $id){
|
||
return site_fold_ad.'log/'.$table.'_'.$id.'.lock';
|
||
}
|
||
|
||
|
||
function lock_id($table, $id, $user = '') {
|
||
|
||
$lockfile = lockkey($table, $id);
|
||
|
||
if (file_exists($lockfile)){
|
||
return file_get_contents($lockfile);
|
||
}
|
||
else {
|
||
file_put_contents($lockfile, trim($user)); // rezerv
|
||
return False;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
function copy_sql( $sql ){
|
||
|
||
return db_get($sql, 'argtest');
|
||
|
||
}
|
||
|
||
function history_db( $table, $data, $conn = '' ){
|
||
|
||
end($data); // Перемещаем указатель массива на последний элемент
|
||
$inc = key($data); // Получаем ключ последнего элемента
|
||
$inc_value = current($data); // Получаем значение последнего элемента
|
||
|
||
$find_sql = "SELECT `$inc` FROM `$table` WHERE `$inc` = '$inc_value' LIMIT 1";
|
||
|
||
$find = db_get($find_sql, 'db2');
|
||
|
||
if (isset($find[$inc])) {
|
||
$result = dbl_update( $table, $data, $inc, $inc_value, 'db2' );
|
||
//var_dump($result);
|
||
//$result = history_update ( $table, $data, 'db2' );
|
||
} else {
|
||
$result = dbl_insert($table, $data, 'db2');
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
function history_update( $table, $data, $conn = '' ){
|
||
|
||
$setClause = '';
|
||
$total = count($data);
|
||
|
||
foreach ($data as $column => $value) {
|
||
|
||
$counter++;
|
||
|
||
// Обработка значений, чтобы избежать SQL-инъекций
|
||
$safeValue = trim($value, "'");
|
||
$safeValue = is_numeric($safeValue) ? $safeValue : "'" . addslashes($safeValue) . "'";
|
||
|
||
$safeValue = $value;
|
||
|
||
if ( $counter == $total ){
|
||
|
||
$inc = $column;
|
||
$inc_value = $value;
|
||
|
||
// Составление итогового SQL-запроса
|
||
$result = "UPDATE `$table` SET $setClause WHERE `$inc` = '$inc_value' ";
|
||
|
||
} else {
|
||
|
||
if ($setClause !== '') {
|
||
$setClause .= ', ';
|
||
}
|
||
|
||
$setClause .= "`$column` = $safeValue";
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
//$logfile = set('site_fold').'log/'.$table.'_'.$inc_value.'.sql';
|
||
//file_put_contents( $logfile, $result );;
|
||
|
||
//echo $result;
|
||
|
||
return db_get($result, $conn);
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
function lock_status($table, $id) {
|
||
|
||
$lockfile = lockkey($table, $id);
|
||
return file_exists($lockfile);
|
||
|
||
}
|
||
|
||
|
||
function unlock_id($table, $id, $user){
|
||
|
||
$lockfile = lockkey($table, $id);
|
||
$user = trim($user);
|
||
|
||
if (file_exists($lockfile)){
|
||
$name = trim(file_get_contents($lockfile));
|
||
}
|
||
|
||
if ($name == $user){
|
||
if (unlink($lockfile) == False)
|
||
write_log($_SERVER['PHP_AUTH_USER'].':ip='.$_SERVER['REMOTE_ADDR'].':error unlink: '.$lockfile, 'log/lock.log');
|
||
}
|
||
|
||
return;
|
||
|
||
}
|
||
|
||
|
||
|
||
function fileimg($img, $id, $folder){
|
||
|
||
if (in_array($img, array('jpg', 'jpeg', 'gif', 'png', 'JPG'))) {
|
||
$fileimg = $folder . '/' . $id . '.' . $img;
|
||
}
|
||
else {
|
||
$fileimg = $folder . '/' . $img;
|
||
}
|
||
|
||
return $fileimg;
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
class AKdmin {
|
||
|
||
private $admin = '';
|
||
private $fields = array();
|
||
private $where = array();
|
||
private $order = array(); //
|
||
private $limit = 20;
|
||
private $page = 1;
|
||
public $link = null;
|
||
private $userid = 0;
|
||
private $groupid = 0;
|
||
private $deleted = False;
|
||
|
||
|
||
function xss($value) {
|
||
|
||
|
||
$value = htmlentities($value, ENT_QUOTES, 'UTF-8');
|
||
$value = htmlspecialchars($value);
|
||
$value = strip_tags($value);
|
||
$value = stripslashes ($value);
|
||
|
||
|
||
return $value;
|
||
|
||
}
|
||
|
||
|
||
function link($link) {
|
||
$this->link = $link;
|
||
}
|
||
|
||
|
||
//обработка входящих параметров
|
||
function gparam($name, $default = null, $type = 'str') {
|
||
|
||
if (isset($_GET[$name])) {
|
||
$value = $_GET[$name];
|
||
if ($type == 'str')
|
||
return $this->xss($value);
|
||
elseif($type == 'int')
|
||
return (int)$value;
|
||
}
|
||
else
|
||
return $default;
|
||
|
||
}
|
||
|
||
|
||
|
||
//загрузка схемы или ее создание по умолчанию
|
||
function load($shema) {
|
||
|
||
$f_xml = APPPATH.'xml/'. $shema.'.xml';
|
||
|
||
if (!file_exists($f_xml)){ // если файла нет - пытаемся создать
|
||
if (!$this->create($shema, $f_xml)) { // если файл не создался
|
||
echo('not found shema');
|
||
exit;
|
||
}
|
||
}
|
||
|
||
return simplexml_load_file($f_xml);
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* автоматическое создание файла модели
|
||
*/
|
||
function create($table, $xfile) {
|
||
|
||
$result = mysqli_query($this->link, "SHOW COLUMNS FROM `$table`");
|
||
|
||
if (mysqli_num_rows($result) == 0)
|
||
return false;
|
||
|
||
while ($row = mysqli_fetch_assoc($result)) {
|
||
$xml .= " <item>\n";
|
||
$xml .= " <column>".$row['Field']."</column>\n
|
||
<title>".$row['Field']."</title>\n";
|
||
if ($row['Extra'] == 'auto_increment')
|
||
$xml .= " <type>increment</type>\n";
|
||
elseif ($row['Type'] == 'tinyint(1)')
|
||
$xml .= " <type>checkbox</type>\n";
|
||
elseif ($row['Type'] == 'varchar(4)')
|
||
$xml .= " <type>file</type>\n
|
||
<col>85</col>\n";
|
||
elseif ($row['Type'] == 'text')
|
||
$xml .= " <type>textareatiny</type>\n
|
||
<row>8</row>\n
|
||
<col>85</col>\n";
|
||
elseif ($row['Type'] == 'datetime')
|
||
$xml .= " <type>datetime</type>\n";
|
||
else
|
||
$xml .= " <type>text</type>\n
|
||
<col>85</col>\n";
|
||
|
||
$xml .= " <view>\n";
|
||
$xml .= " <table>True</table>\n";
|
||
if ($row['Extra'] == 'auto_increment'){
|
||
$xml .= " <form>False</form>\n";
|
||
$increment = $row['Field'];
|
||
}
|
||
else
|
||
$xml .= " <form>True</form>\n";
|
||
|
||
$xml .= " </view>\n";
|
||
$xml .= " </item>\n";
|
||
}
|
||
|
||
|
||
$xml = '<?xml version="1.0" encoding="UTF8"?>'."\n".
|
||
"<items>
|
||
<main>
|
||
<table>$table</table>
|
||
<order>$incremen</order>
|
||
<order_type>DESC</order_type>
|
||
<increment>$increment</increment>
|
||
<title>$table</title>
|
||
</main>$xml</items>";
|
||
|
||
//$xfile = site_fold_ad.'xml/'.$table.'.xml';
|
||
return file_put_contents($xfile, $xml);
|
||
|
||
}
|
||
|
||
|
||
|
||
//построение выпадающих списков и фильтров
|
||
function lookup($table, $increment, $column, $value, $params = array(), $attrs = array())
|
||
{
|
||
|
||
$where = '';
|
||
$order = '';
|
||
$limit = '';
|
||
$join = '';
|
||
|
||
|
||
//поля учавствующее в запросе
|
||
$fields[] = separ($increment);
|
||
$fields[] = separ($column);
|
||
|
||
|
||
if (sizeof($params) > 0){
|
||
If (isset($params['where']))
|
||
$where = ' WHERE '.$params['where'];
|
||
If (isset($params['order']))
|
||
$order = ' ORDER BY '.$params['order'];
|
||
If (isset($params['limit']))
|
||
$limit = ' LIMIT '.$params['limit'];
|
||
if (isset($params['subfilter'])){
|
||
$subfilter = $params['subfilter'];
|
||
//$fields[] = separ($params['subfilter']['column']);
|
||
|
||
/*if ($subfilter['table'] !== $table) {
|
||
$join = ' LEFT JOIN '.separ($subfilter['table']).' ON ('.separ($subfilter['table']).'.'.separ($subfilter['id']).'='.separ($table).'.'.separ($wh_column).') ';
|
||
}*/
|
||
}
|
||
}
|
||
|
||
|
||
$sql_select = 'SELECT '.implode(',', $fields).' FROM '.separ($table).$join.$where.$order.$limit;
|
||
//echo $table.': '.$sql_select.'<br /><br />';
|
||
$selectres = mysqli_query($this->link, $sql_select);
|
||
|
||
if (mysqli_num_rows($selectres) !== 0) {
|
||
foreach ($attrs as $key => $attr) //дополнительные атрибуты
|
||
$attr_str .= ' '.$key.'="'.$attr.'" ';
|
||
$null_txt = (isset($params['null'])) ? $params['null'] : '- не выбрано - ';
|
||
$selected = ($value == 0) ? ' selected="selected"': '';
|
||
$result = '<SELECT'.$attr_str.'><option '.$selected.'class="grays" VALUE="0">'.$null_txt.'</option>';
|
||
while ($selectrow = mysqli_fetch_row($selectres)) {
|
||
if ($selectrow[0] > 0 and $selectrow[0] !== '') {
|
||
$selected = ($selectrow[0] == $value) ? $selected = ' selected ' : '';
|
||
$sel_txt = $selectrow[1];
|
||
if (isset($selectrow[2]) and $selectrow[2] !== '')
|
||
$sel_txt .= '['.$selectrow[2].']';
|
||
$result .= '<option'.$selected.' value="'.$selectrow[0].'">'.$sel_txt.'</option>';
|
||
}
|
||
}
|
||
$result .= '</SELECT>';
|
||
return $result;
|
||
}
|
||
else
|
||
return ' - нет данных - ';
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
function config($fconfig) {
|
||
|
||
|
||
configer::load($fconfig);
|
||
$set = configer::all();
|
||
|
||
// Выставляем папки по умолчанию
|
||
|
||
if (!isset($set['site']))
|
||
$set['SITE'] = 'http://'.str_replace('www', '', $_SERVER['HTTP_HOST']).'/';
|
||
|
||
|
||
if (!isset($set['AD']))
|
||
$set['AD'] = 'http://'.str_replace('www', '', $_SERVER['HTTP_HOST']).'/';
|
||
|
||
if (!isset($set['site_fold'])){
|
||
$set['site_fold'] = $_SERVER['DOCUMENT_ROOT'].'/';
|
||
}
|
||
|
||
$set['SITEPATH'] = $set['site_fold'];
|
||
|
||
if (!isset($set['site_fold_ad'])) { //автоопределение папки
|
||
|
||
$maindir = dirname($fconfig);
|
||
|
||
if (substr($maindir,-6) == 'config');
|
||
$maindir = substr($maindir, 0, -6);
|
||
|
||
$set['site_fold_ad'] = $maindir.'/';
|
||
|
||
}
|
||
|
||
if (!isset($set['APPPATH']))
|
||
$set['APPPATH'] = $set['site_fold_ad'].'app/';
|
||
|
||
if (!isset($set['site_ad']))
|
||
$set['site_ad'] = $set['AD'];
|
||
|
||
if (!isset($set['THEME']))
|
||
$set['THEME'] = $set['site_fold_ad'].'vendor/akdelf/akdmin/themes/office/';
|
||
|
||
if (!isset($set['PUB']))
|
||
$set['PUB'] = $set['AD'].'vendor/akdelf/akdmin/themes/office/pub/';
|
||
|
||
if (!isset($set['psite']))
|
||
$set['psite'] = $set['SITE'];
|
||
|
||
if (!isset($set['sysfold']))
|
||
$set['psite'] = $set['site_fold'].'system';
|
||
|
||
if (!isset($set['imgfold']))
|
||
$set['imgfold'] = $set['site_fold_ad'].'images/';
|
||
|
||
if (!isset($set['imgcache']))
|
||
$set['imgcache'] = $set['imgfold'].'preview/';
|
||
|
||
if (!isset($set['imglink']))
|
||
$set['imglink'] =$set['AD'].'images/';
|
||
|
||
|
||
|
||
// подключаемся к БД
|
||
if (isset($set['db'])) {
|
||
kORM::config($set['db']['db'], $set['db']['user'], $set['db']['password'], $set['db']['host']);
|
||
|
||
$this->link=mysqli_connect($set['db']['host'], $set['db']['user'], $set['db']['password'], $set['db']['db']);
|
||
mysqli_query($this->link, "SET NAMES UTF8");
|
||
}
|
||
|
||
if (isset($set['db2'])) {
|
||
|
||
|
||
if ( $set['db2']['active'] == 1) {
|
||
db_config('db2', "mysql:host={$set['db2']['host']};dbname={$set['db2']['db']}", $set['db2']['user'], $set['db2']['password']);
|
||
}
|
||
|
||
$set['db2_active'] = $set['db2']['active'];
|
||
|
||
|
||
}
|
||
|
||
|
||
// показываем ошибки
|
||
if (isset($set['debug']) and $set['debug'] == 1){
|
||
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_WARNING);
|
||
ini_set('display_errors', 1);
|
||
}
|
||
else {
|
||
ini_set('display_errors',0);
|
||
}
|
||
|
||
configer::load($set);
|
||
configer::todefines();
|
||
|
||
return $this;
|
||
|
||
|
||
}
|
||
|
||
|
||
function start(){
|
||
|
||
//if (!defined('DEBUG')) {
|
||
include_once ('auth.lib.php');
|
||
$auth = new auth();
|
||
$auth->action();
|
||
|
||
$user_row = kORM::table('users')->where('login', $_SERVER['PHP_AUTH_USER'])->where('active')->one();
|
||
|
||
/*$user = mysqli_query("SELECT * FROM `users` Where `login`='".$_SERVER['PHP_AUTH_USER']."'");
|
||
$user_row = mysqli_fetch_array($user);*/
|
||
|
||
if ($user_row == null)
|
||
$auth->authorized();
|
||
|
||
session_start();
|
||
$_SESSION['user_id'] = $user_row['user_id'];
|
||
setcookie('user_id', $user_row['user_id']);
|
||
$this->userid = $user_row['user_id'];
|
||
$group_id = $user_row['group_id'];
|
||
$this->groupid = $group_id;
|
||
$nameuser = $user_row['name'];
|
||
$region_id = $user_row['region_id'];
|
||
|
||
$this->username = $nameuser;
|
||
|
||
$grrow = kORM::table('groupuser')->where('group_id', $group_id)->one();
|
||
|
||
if ($user_row != null) {
|
||
$_SESSION['group'] = $grrow['name'];
|
||
$_SESSION['readonly'] = 0;
|
||
}
|
||
else
|
||
$_SESSION['readonly'] = 0;
|
||
|
||
|
||
write_log($_SERVER['PHP_AUTH_USER'].':ip='.$_SERVER['REMOTE_ADDR'].':authorized', 'log/edition.log');
|
||
//}
|
||
//else
|
||
// $group_id = 1;
|
||
|
||
$menufile = file_get_contents(APPPATH.'menu/'.$group_id.'.json');
|
||
|
||
$menus = json_decode($menufile, true);
|
||
|
||
include(THEME.'views/layout/main.phtml');
|
||
return;
|
||
|
||
}
|
||
|
||
|
||
function user_init() {
|
||
|
||
$user_row = kORM::table('users')->where('login', $_SERVER['PHP_AUTH_USER'])->where('active')->one();
|
||
|
||
if (isset($user_row))
|
||
$this->userid = $user_row['user_id'];
|
||
}
|
||
|
||
|
||
function init() {
|
||
|
||
if (count($_GET) == 0) {
|
||
$this->start();
|
||
return;
|
||
}
|
||
|
||
|
||
$this->user_init();
|
||
|
||
|
||
session_start();
|
||
|
||
require_once ('photos.php');
|
||
require_once ('day_and_week.php');
|
||
require_once ('acess.php');
|
||
|
||
require_once ('filter.php');
|
||
require_once ('file.php');
|
||
|
||
|
||
$filter = new filter;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function tp_quotes($text)
|
||
{
|
||
$quotes=array('"', '«', '»', '«', '»', '«', '»', '“', '„', '„', '“');
|
||
$text=str_replace($quotes, '"', $text);
|
||
|
||
$text=preg_replace('/([^=]|\A)""(\.{2,4}[а-яА-Я\w\-]+|[а-яА-Я\w\-]+)/', '$1<typo:quot1>"$2', $text);
|
||
$text=preg_replace('/([^=]|\A)"(\.{2,4}[а-яА-Я\w\-]+|[а-яА-Я\w\-]+)/', '$1<typo:quot1>$2', $text);
|
||
|
||
$text=preg_replace('/([а-яА-Я\w\.\-]+)""([\n\.\?\!, \)][^>]{0,1})/', '$1"</typo:quot1>$2', $text);
|
||
$text=preg_replace('/([а-яА-Я\w\.\-]+)"([\n\.\?\!, \)][^>]{0,1})/', '$1</typo:quot1>$2', $text);
|
||
|
||
$text=preg_replace('/(<\/typo:quot1>[\.\?\!]{1,3})"([\n\.\?\!, \)][^>]{0,1})/', '$1</typo:quot1>$2', $text);
|
||
$text=preg_replace('/(<typo:quot1>[а-яА-Я\w\.\- \n]*?)<typo:quot1>(.+?)<\/typo:quot1>/', '$1<typo:quot2>$2</typo:quot2>', $text);
|
||
$text=preg_replace('/(<\/typo:quot2>.+?)<typo:quot1>(.+?)<\/typo:quot1>/', '$1<typo:quot2>$2</typo:quot2>', $text);
|
||
$text=preg_replace('/(<typo:quot2>.+?<\/typo:quot2>)\.(.+?<typo:quot1>)/', '$1<\/typo:quot1>.$2', $text);
|
||
$text=preg_replace('/(<typo:quot2>.+?<\/typo:quot2>)\.(?!<\/typo:quot1>)/', '$1</typo:quot1>.$2$3$4', $text);
|
||
$text=preg_replace('/""/', '</typo:quot2></typo:quot1>', $text);
|
||
$text=preg_replace('/(?<=<typo:quot2>)(.+?)<typo:quot1>(.+?)(?!<\/typo:quot2>)/', '$1<typo:quot2>$2', $text);
|
||
$text=preg_replace('/"/', '</typo:quot1>', $text);
|
||
|
||
$text=preg_replace('/(<[^>]+)<\/typo:quot\d>/', '$1"', $text);
|
||
$text=preg_replace('/(<[^>]+)<\/typo:quot\d>/', '$1"', $text);
|
||
$text=preg_replace('/(<[^>]+)<\/typo:quot\d>/', '$1"', $text);
|
||
$text=preg_replace('/(<[^>]+)<\/typo:quot\d>/', '$1"', $text);
|
||
$text=preg_replace('/(<[^>]+)<\/typo:quot\d>/', '$1"', $text);
|
||
$text=preg_replace('/(<[^>]+)<\/typo:quot\d>/', '$1"', $text);
|
||
|
||
$text=str_replace('<typo:quot1>', $this->quot11, $text);
|
||
$text=str_replace('</typo:quot1>', $this->quot12, $text);
|
||
$text=str_replace('<typo:quot2>', $this->quot21, $text);
|
||
$text=str_replace('</typo:quot2>', $this->quot22, $text);
|
||
|
||
return;
|
||
}
|
||
|
||
|
||
|
||
|
||
//превращает в js синтаксис
|
||
function js_func ($namefunc, $params){
|
||
|
||
$params_line = '';
|
||
|
||
foreach ($params as $param) {
|
||
if ($params_line !== '')
|
||
$params_line .= ',';
|
||
$params_line .= chr(39).$param.chr(39);
|
||
}
|
||
|
||
return $namefunc.'('.$params_line.');';
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function delete_cache($fstr, $increment)
|
||
{
|
||
|
||
$files = explode(',',$fstr);
|
||
|
||
foreach ($files as $file){
|
||
$fname = SITEPATH.str_replace('{%}', $increment, trim($file));
|
||
unlink($fname);
|
||
}
|
||
|
||
return;
|
||
|
||
}
|
||
|
||
|
||
//приводим дату в названии папки
|
||
function date_to_url($date, $time = True, $separ = '/')
|
||
{
|
||
|
||
$currdate = explode(' ', $date);
|
||
$date = explode('-', $currdate[0]);
|
||
$url = $date[0].$separ.$date[1].$separ.$date[2];
|
||
|
||
if ($time) {
|
||
$time = explode(':', $currdate[1]);
|
||
$url .= $separ.$time[0].$separ.$time[1].$separ.$time[2];
|
||
}
|
||
|
||
return $url;
|
||
|
||
}
|
||
|
||
|
||
//пересчет кол-во значений в таблице
|
||
function counts($citems, $values)
|
||
{
|
||
|
||
/*
|
||
table - таблица, где обновляем данные
|
||
t_inc - имя инкрементного поля таблицы в которой обновляем
|
||
t_inc_column - ссылка на значение в поле гл таблицы
|
||
column - колонка которую обновляем
|
||
values - все полученные значения переменных
|
||
*/
|
||
|
||
$col_inc_name = (string)$citems->column_inc;
|
||
|
||
$count_sql = 'SELECT COUNT(*) FROM '.MAINTABLE.' WHERE '.$col_inc_name.'='.$values[$col_inc_name].' '.$citems->sql_where;
|
||
$countres = mysqli_query ($this->link, $count_sql);
|
||
if (!$countres)
|
||
write_log('Ошибка mysqli: '.mysqli_error()); //подсчет
|
||
else {
|
||
$sqlrows = mysqli_num_rows($countres);
|
||
if ($sqlrows > 0) { //запись результатов
|
||
$row = mysqli_fetch_array($countres, mysqli_NUM);
|
||
$count = $row[0];//получаем кол-во
|
||
$sql_update = 'UPDATE '.$citems->table.' SET '. $citems->column.'='.$count.' WHERE '.$citems->t_inc.' = '.$values[$col_inc_name];
|
||
$upd_result = mysqli_query($this->link, $sql_update);
|
||
if (!$upd_result)
|
||
write_log('Ошибка mysqli: '.mysqli_error());
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
function separ($txt)
|
||
{
|
||
return '`'.$txt.'`';
|
||
}
|
||
|
||
function quote($txt)
|
||
{
|
||
return "'".$txt."'";
|
||
}
|
||
|
||
|
||
function NullErrSession() {
|
||
|
||
if (isset($_SESSION['errors']))
|
||
unset($_SESSION['errors']);
|
||
if (isset($_SESSION['values']))
|
||
unset($_SESSION['values']);
|
||
|
||
}
|
||
|
||
|
||
|
||
//спецсимволы при сборе заброса
|
||
function SqlAddSpec($str, $type)
|
||
{
|
||
if (mb_strlen($str) > 0) {
|
||
if ($type == 0)
|
||
return ', ';
|
||
else if ($type == 1)
|
||
return ' AND ';
|
||
else
|
||
return '';
|
||
}
|
||
else
|
||
return '';
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
function fileexpansion ($filename)
|
||
{
|
||
$out = array();
|
||
preg_match('/\S+\.(\S+)$/', $filename, $out);
|
||
return $out[1];
|
||
}
|
||
|
||
|
||
|
||
function subfilters($value, $config)
|
||
{
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
//построение списка подзаписей
|
||
function subfilter($value, $config, $id)
|
||
{
|
||
|
||
|
||
$sql_filter = 'SELECT '.separ($config->increment).', '.separ($config->column).' FROM '.separ($config->table).' WHERE '.separ($config->wh_column).'='.quote($value);
|
||
$selectres = mysqli_query($this->link, $sql_filter);
|
||
if (@mysqli_num_rows($selectres) !== 0) {
|
||
$result = '<SELECT ID="'.$id.'"><OPTION class="gray" VALUE="0">по умолчанию</OPTION>';
|
||
while ($selectrow = mysqli_fetch_row($selectres)) {
|
||
$result .= '<OPTION VALUE="'.$selectrow[0].'">'.$selectrow[1].'</OPTION>';
|
||
}
|
||
$result .= '</SELECT>';
|
||
return $result;
|
||
}
|
||
else
|
||
return '';
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function GreateMainFilter($admin, $columname, $currvalue, $nullvalue = 'Нулевые значения')
|
||
{
|
||
$currvalue = (string)$value_tek;
|
||
$titles = array('Все', 'Пустые значения', $nullvalue);
|
||
$values = array(
|
||
'all'=>array('name'=>'Все', 'value'=>''),
|
||
'null'=>array('name'=>$nullvalue, 'value'=>'0')
|
||
);
|
||
|
||
foreach ($values as $value) {
|
||
$selected = ($value['value'] == $currvalue) ? $selected = ' selected="selected"' : '';
|
||
$result .= '<option class="grays" VALUE = "'.$value['value'].'"'.$selected.'>'.$value['name'].'</option>';
|
||
}
|
||
|
||
return $result;
|
||
}
|
||
|
||
function GreateMainLookup($value_tek) {
|
||
$value = (string)$value_tek;
|
||
$types = array('null', '0');
|
||
$titles = array('Пустое значение', 'Нулевое значения');
|
||
for ($s = 0; $s < 2; $s++) {
|
||
$selected = ($value == $types[$s]) ? 'selected="selected"' : '';
|
||
echo '<option value = "'.$types[$s].'" '.$selected.'>'.$titles[$s].'</option>';
|
||
}
|
||
|
||
}
|
||
|
||
|
||
function AnonsText($text, $counts, $counttype)
|
||
{
|
||
|
||
$text = strip_tags($text);
|
||
$mb_strlen = mb_strlen($text);
|
||
if ($mb_strlen < $counts)
|
||
return $text;
|
||
|
||
else {
|
||
|
||
for ($i = $counts - 1; $i <= $mb_strlen; $i++){
|
||
$s = mb_substr($text,$i,1);
|
||
if ($counttype == 0) {
|
||
if (($s == ' ') or ( $s == ',') or ($s == '.') or ($s == '!') or ($s == '?')) break; //не обрывать слова.
|
||
}
|
||
else {
|
||
if (( $s == ',') or ($s == '.') or ($s == '!') or ($s == '?')) break; //не обрывать предложения
|
||
}
|
||
}
|
||
if ($i != $mb_strlen ) $countend = $i; else $countend = $counts;
|
||
return mb_substr($text, 0, $countend). ' ...';
|
||
}
|
||
}
|
||
|
||
|
||
#зачитываем параметры
|
||
|
||
$action = $this->gparam('action', 'selectall');
|
||
|
||
if ($admin = $this->gparam('admin'))
|
||
$this->admin = $admin;
|
||
else {
|
||
echo 'shema zero';
|
||
exit;
|
||
}
|
||
|
||
|
||
//доступ группам
|
||
/*if (isset($_SESSION['group'])) {
|
||
$grname = $_SESSION['group'];
|
||
include_once ('acess.php');
|
||
if (isset($group[$grname])){
|
||
$acs = explode(',', $group[$grname]);
|
||
if (!in_array($admin, $ac)){
|
||
echo 'нет доступа';
|
||
exit();
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
echo 'нет доступа';
|
||
exit();
|
||
}*/
|
||
|
||
|
||
//наличие пустых параметров
|
||
//if ($f_xml == '' or !file_exists($_SERVER['DOCUMENT_ROOT'].'/xml/'.$f_xml)){
|
||
|
||
$page = $this->gparam('page', 1, 'int');
|
||
$order = (isset($_GET['order'])) ? strip_tags(trim($_GET['order'])) : '';
|
||
if ($order !== ''){
|
||
$ord_len = mb_strlen($order);
|
||
$endpos = mb_substr($order, $ord_len-1, 1);
|
||
if ($endpos == '+') {
|
||
$order_type = 0;
|
||
$order = mb_substr($order, 0 ,$ord_len-1);
|
||
}
|
||
elseif ($endpos == '-') {
|
||
$order_type = 1;
|
||
$order = mb_substr($order, 0 ,$ord_len-1);
|
||
}
|
||
else
|
||
$order_type = 0;
|
||
}
|
||
|
||
// $order_type = (isset($_GET['order_type'])) ? (int)($_GET['order_type']) : 0;
|
||
$increment_value = $this->gparam('increment', 0 , 'int');
|
||
$like = $this->gparam('like', '');
|
||
$like_id = $this->gparam('like_id', 0, int);
|
||
|
||
|
||
$maxi = -1;
|
||
|
||
$xml = $this->load($this->admin); //загружаем схему
|
||
|
||
|
||
|
||
// читаем главные параметры
|
||
foreach ($xml->xpath('/items/main') as $mainitem) {
|
||
$nametable = $mainitem->table;
|
||
$maintable = separ($nametable);
|
||
$caption = $mainitem->title;
|
||
$order_main = (string)$mainitem->order;
|
||
$fields_search = (string)$mainitem->search; //поиск по полям
|
||
|
||
if (isset($mainitem->deleted)){
|
||
$deleted = (int)$mainitem->deleted;
|
||
$this->deleted = $deleted;
|
||
}
|
||
else
|
||
$this->deleted = 1;
|
||
|
||
|
||
/*if($this->groupid == 1)
|
||
$this->deleted = True;
|
||
else
|
||
$this->deleted = False; */
|
||
|
||
if($mainitem->order_type) {
|
||
$order_main_type = ' '.(string)$mainitem->order_type;
|
||
}
|
||
|
||
if (isset($mainitem->export)){
|
||
$ex_table = $mainitem->export->table;
|
||
$ex_map = $mainitem->export->map;
|
||
}
|
||
|
||
//убивание файлов кеша
|
||
if (isset($mainitem->cache))
|
||
$fcache = (string)$mainitem->cache;
|
||
|
||
//пересчет кол-ва
|
||
if(isset($mainitem->count))
|
||
$count_items = $mainitem->count;
|
||
|
||
|
||
$increment = (string)$mainitem->increment;
|
||
|
||
if ($mainitem->where !== '')
|
||
$where_main = $mainitem->where;
|
||
$link_view = $mainitem->vbutton->link;
|
||
$inc_view = $mainitem->vbutton->incname;
|
||
|
||
}
|
||
|
||
|
||
define('INC', $increment);
|
||
define('MAINTABLE', $maintable);
|
||
|
||
unset($mainitem);
|
||
|
||
|
||
$filters = array();
|
||
$filters_count = 0;
|
||
|
||
|
||
switch ($action) {
|
||
case 'select':
|
||
case 'selectall':
|
||
case 'selectrow':
|
||
case 'selectpage':
|
||
case 'selecttable':
|
||
|
||
|
||
//первоначальные значения
|
||
$filters_count = 0;
|
||
$increment_num = -1;
|
||
$maxi = -1;
|
||
$inc_show = false;
|
||
|
||
|
||
//зачитывае данные
|
||
$item = $xml->xpath('/items/item');
|
||
$item_count = sizeof($item);
|
||
|
||
$c_type = array();
|
||
$chet = False;
|
||
|
||
if ($action == 'selectall'){ ?>
|
||
<div id="caption"><?=$caption?> Редактирование</div>
|
||
|
||
<?}
|
||
for ($it = 0; $it < $item_count; $it++) {
|
||
|
||
$nullfilter = False;
|
||
$columnname = (string)$item[$it]->column;
|
||
if ($item[$it]->filter == 'True'){
|
||
$filters[$filters_count]['column'] = $item[$it]->title;
|
||
if (isset($_GET[$columnname])){
|
||
$colfilter = strip_tags($_GET[$columnname]);
|
||
$where_filter .= SqlAddSpec($where_filter, 1).$maintable.'.'.$item[$it]->column.' = '.$colfilter;
|
||
if ($colfilter == 'null' || $colfilter == 0)
|
||
$nullfilter = True;
|
||
}
|
||
if ($action == 'selectall'){ //рисуем фильтры
|
||
$filters_count ++;
|
||
if ($filters_count == 1)
|
||
echo '<p id = "titles">Фильтрация</p><div id = "filter">
|
||
<table>';
|
||
|
||
if (isset($item[$it]->lookup->fcolumn))
|
||
$lookup_column = $item[$it]->lookup->fcolumn;
|
||
else
|
||
$lookup_column = $item[$it]->lookup->column;
|
||
|
||
$ftable = table($item[$it]->lookup->table)->select($item[$it]->lookup->id, $lookup_column);
|
||
|
||
if ($item[$it]->lookup->where != '')
|
||
$ftable->wh($item[$it]->lookup->where);
|
||
|
||
if ($item[$it]->lookup->order != '')
|
||
$ftable->ord_str($item[$it] ->lookup->order);
|
||
|
||
$fitems = $ftable->all();
|
||
|
||
if ($fitems !== null){
|
||
$id_select = $item[$it]->column;
|
||
$fvalue = $lookup_column;
|
||
?>
|
||
|
||
<td><b style = "color:#696969;"><?=$item[$it]->title?></b></td>
|
||
<td>
|
||
<SELECT ID="<?=$id_select?>" NAME = "<?=$id_select?>" onChange="<?=js_func('select_filter', array('select_id'=>$id_select, 'admin'=>$admin, 'param_name'=>$id_select))?>">
|
||
<option value = ""></option>
|
||
<?foreach ($fitems as $fitem):?>
|
||
<option value = "<?echo $fitem["$id_select"];?>"><?echo $fitem["$fvalue"];?></option>
|
||
<?endforeach?>
|
||
</SELECT>
|
||
</td>
|
||
|
||
<?}?>
|
||
|
||
<?
|
||
|
||
}
|
||
}
|
||
|
||
if ($item[$it]->view->table == 'True'){ // если для таблицы активна
|
||
$maxi ++;
|
||
if ($columnname == $increment) {
|
||
$increment_num = $it;
|
||
$component[$maxi]['type'] = 'increment';
|
||
$component[$maxi]['column'] = $increment;
|
||
$inc_show = true;
|
||
}
|
||
$component[$maxi]['type'] = (string)$item[$it]->type; //запоминаем тип компонета
|
||
$component[$maxi]['column'] = (string)$item[$it]->column;
|
||
if (isset($item[$it]->link)) $component[$maxi]['link'] = (string)$item[$it]->link;
|
||
if (isset($item[$it]->folder)) $component[$maxi]['folder'] = (string)$item[$it]->folder;
|
||
if (isset($item[$it]->folder)) $component[$maxi]['width'] = (string)$item[$it]->width;
|
||
if (isset($item[$it]->fieldate))
|
||
$component[$maxi]['fieldate'] = (string)$item[$it]->fieldate;
|
||
if (isset($item[$it]->version))
|
||
$component[$maxi]['version'] = (string)$item[$it]->version;
|
||
|
||
/*if (isset($item[$it]->curruser))
|
||
$component[$maxi]['curruser'] = (string)$item[$it]->curruser;*/
|
||
$new_order_type = '';
|
||
if ($columnname == $order) {
|
||
$order_value = ' ORDER BY '.$maintable.'.'.$columnname;
|
||
if ($order_type == 1){
|
||
$ord_title_type = '+';
|
||
$order_value .= ' ASC';
|
||
$img = '<IMG class="img_sort" src="'.PUB.'img/s_asc.png" alt="по возрастанию"/>';
|
||
}
|
||
else {
|
||
$ord_title_type = '-';
|
||
$order_value .= ' DESC';
|
||
$img = '<IMG class="img_sort" src="'.PUB.'img/s_desc.png" alt="по убыванию"/>';
|
||
}
|
||
$new_order_type = ($order_type == 1) ? ' ASC' : ' DESC';
|
||
$title_class = ' class="order_title"';
|
||
}
|
||
else {
|
||
$title_class = ' class="std_title"';
|
||
$ord_title_type = '+';
|
||
$img = '';
|
||
}
|
||
|
||
|
||
$titles .= '<td'.$title_class.'title = "'.$item[$it]->hint.'" >
|
||
<a href="#" onClick = "StartLink('.chr(39).$admin.chr(39).", 'selectall', 'content', 'order', '".$columnname.$ord_title_type."'".');">'.$item[$it]->title.$img.'</a>
|
||
</td>';
|
||
if ($item[$it]->type == 'lookup' && !$nullfilter){ //формируем запрос
|
||
$sql .= SqlAddSpec($sql, 0).$columnname.'.'.$item[$it]->lookup->column;
|
||
// $tables .=', '.$item[$it]->lookup->table;
|
||
$join .= ' LEFT JOIN '.separ($item[$it]->lookup->table).' '.separ($columnname).' ON ('.separ($columnname).'.'.separ($item[$it]->lookup->id).'='.$maintable.'.'.separ($item[$it]->column).')';
|
||
|
||
/*$where_lookup .= SqlAddSpec($where_lookup, 1).$item[$it]->lookup->table.'.'.$item[$it]->lookup->id.'='.$maintable.'.'.$item[$it]->column;*/
|
||
}
|
||
else
|
||
$sql .= SqlAddSpec($sql, 0).$maintable.'.'.$item[$it]->column;
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
if ($action == 'selectall') {
|
||
if ($filters_count > 0):?>
|
||
<tr><?=$ttitle?></tr><tr><?=$tselect?></tr></table></div>
|
||
<?endif?>
|
||
|
||
<?$like_id_value = ($like_id == 0) ? '' : $like_id;?>
|
||
<p id = "titles">Поиск</p>
|
||
<p id="search">
|
||
Искать <input id="like" name="like" size="60" value="<?=$like?>" />
|
||
<a onclick="StartLink('<?=$admin?>', 'selectall', 'content', 'like', document.getElementById('like').value);" title="Редактирование" href="#">
|
||
<img alt="начать поиск" src="<?=PUB?>img/lupa.png" id="rbutton"/>
|
||
</a> ID <input id="like_id" name="like_id" size="8" value="<?=$like_id_value?>" />
|
||
<a onclick="StartLink('<?=$admin?>', 'selectall', 'content', 'like_id', document.getElementById('like_id').value);" title="Редактирование" href="#">
|
||
<img alt="начать поиск" src="<?=PUB?>img/lupa.png" id="rbutton"/>
|
||
</a>
|
||
<p id = "titles">Данные</p><div id = "main"><div id = "fields">
|
||
|
||
<?}
|
||
|
||
|
||
|
||
if ($increment_num == -1) {
|
||
$sql .= SqlAddSpec($sql, 0).$maintable.'.'.$increment; //добавляем инекремнт если он не указан
|
||
$maxi ++;
|
||
$increment_num = $maxi;
|
||
$component[$maxi]['type'] = 'increment'; //запоминаем тип компонета
|
||
$component[$maxi]['column'] = $increment;
|
||
$inc_show = false;
|
||
}
|
||
|
||
|
||
|
||
if ($action == 'selectrow'){
|
||
$where = $increment." = '".$increment_value."'";
|
||
//$where .= SqlAddSpec($where, 1).$where_lookup;
|
||
//$sqlres = 'SELECT '.$sql.' FROM '.$maintable.$tables.' WHERE '.$where;
|
||
$sqlres = 'SELECT '.$sql.' FROM '.$maintable;
|
||
if ($tables !== '') $sqlres .= $tables;
|
||
if ($join !== '') $sqlres .= $join;
|
||
If ($where !=='')$sqlres .= ' WHERE '.$where;
|
||
}
|
||
else {
|
||
if ($order_value == '' && $order_main != '') //если не один не сыграл - фильтр по умолчанию
|
||
$order_value = ' ORDER BY '.$order_main.$order_main_type;
|
||
if ($where_main !== '')
|
||
$where .= SqlAddSpec($where, 1).$where_main;
|
||
$where_filter = trim($where_filter);
|
||
if ($where_filter !== '')
|
||
$where .= SqlAddSpec($where, 1).$where_filter;
|
||
if ($like !== '') {
|
||
$sqlres .= " LIKE '".$like."'";
|
||
$sfields = explode(',',$fields_search);
|
||
foreach ($sfields as $field){
|
||
$like_where[] = separ(trim($field)). " LIKE '%%".$like."%'";
|
||
}
|
||
$where .= SqlAddSpec($where, 1).implode(' OR ', $like_where);
|
||
|
||
}
|
||
if ($join != '') $sqlres .= $join;
|
||
//if ($where_lookup != '')
|
||
// $where .= SqlAddSpec($where, 1).$where_lookup;
|
||
if (trim($where) !== '')
|
||
$where = ' WHERE '.$where;
|
||
|
||
$per_page = (isset($_GET['limit'])) ? (int)($_GET['limit']) : 20;
|
||
$max_sql = 'SELECT count('.$increment.')'.' FROM '.$maintable.$tables.$where.$order_value;
|
||
|
||
$maxres = mysqli_query($this->link, $max_sql);
|
||
if (@mysqli_num_rows($maxres) != 0) {
|
||
$maxrow = mysqli_fetch_row($maxres);
|
||
$total_rows = $maxrow[0];
|
||
if ($total_rows > $per_page) {
|
||
$num_pages = ceil($total_rows/$per_page);
|
||
$vanitem = ($page - 1) * $per_page;
|
||
if ($page > 1 && $vanitem > $total_rows)
|
||
$vanitem = 1;
|
||
$limit = ' LIMIT '.$vanitem.','.$per_page;
|
||
}
|
||
}
|
||
/*<INPUT type = "updates" VALUE = "Обновить данные" onClick = "sendRequest('.chr(39).$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'].chr(39).", 'selectpage', getReq_name);".'" />*/
|
||
|
||
if ($action != 'selecttable'){
|
||
echo '<p id = "edit"><INPUT type = "BUTTON" VALUE = "Добавить" onClick = "StartLink('.chr(39).$admin.chr(39).", 'add', 'forms', '', ''".');" />'; ?>
|
||
|
||
<INPUT name="updates" id="updates" type="button" VALUE = "Обновить данные" onClick="buttupdates('<?=$admin?>');" />
|
||
<input id="chkupdate" name="chkupdate" type="checkbox" onclick="autoupdate('<?=$admin?>');">автоматически</input>
|
||
|
||
<?php }
|
||
|
||
$sqlres = 'SELECT '.$sql.' FROM '.$maintable;
|
||
if ($tables != '') $sqlres .= $tables;
|
||
if ($join != '') $sqlres .= $join;
|
||
|
||
if ($like_id > 0){
|
||
$where_like = separ($increment).'= "'.$like_id.'"';
|
||
|
||
if (trim($where) == '')
|
||
$where = ' WHERE '.$where_like;
|
||
else
|
||
$where .= SqlAddSpec($where, 1).$where_like;
|
||
}
|
||
|
||
if ($where !== '')
|
||
$sqlres .= $where;
|
||
if ($order_value !== '')
|
||
$sqlres .= $order_value;
|
||
$sqlres .= $limit;
|
||
|
||
|
||
|
||
}
|
||
|
||
//echo $sqlres;
|
||
$selectres = mysqli_query($this->link, $sqlres); //подсчет;
|
||
//echo $sqlres;
|
||
if (@mysqli_num_rows($selectres) != 0) {
|
||
if ($action != 'selectrow')
|
||
echo '<div id="datetable"><TABLE><THEAD>'.$titles.'<TD title = "изменение, редактирование элемента ">Редактор</TD></THEAD><TBODY>';
|
||
while ($selectrow = mysqli_fetch_row($selectres)){
|
||
$increment_value = $selectrow[$increment_num];
|
||
$edit_active = '"StartLink('.chr(39).$admin.chr(39).", 'edit', 'forms', 'increment', '".$increment_value."'".');"';
|
||
$print_active = '"StartLink('.chr(39).$admin.chr(39).", 'print_id', 'forms', 'increment', '".$increment_value."'".');"';
|
||
if ($action != 'selectrow') {
|
||
$chet = !$chet;
|
||
$tr_class = ($chet) ? 'nechet' : 'chet';
|
||
|
||
$lock_status = lock_status($nametable, $increment_value);
|
||
if ($lock_status)
|
||
$substyle = 'style="color: #999999;"';
|
||
else
|
||
$substyle = '';
|
||
|
||
echo('<TR id = "'.$increment_value.'" class="'.$tr_class.'" '.$substyle.' onmouseover = "Rmarker(this.id, '."'market'".');" onmouseout = "Rmarker(this.id, '."'".$tr_class."'".');">');
|
||
}
|
||
for ($a = 0; $a <= $maxi; $a++) {
|
||
switch ($component[$a]['type']) {
|
||
case 'checkbox' :
|
||
echo('<TD>');
|
||
if ($selectrow[$a] == 1) {
|
||
$input_value = 'checked';
|
||
$checked_value = '0';
|
||
}
|
||
else {
|
||
$input_value = '';
|
||
$checked_value = '1';
|
||
}
|
||
echo ('<INPUT TYPE = "checkbox" id = "'.$component[$a]['column'].$increment_value.'"'.$input_value.' onClick = "'."StartLinkActive('".$admin."' , '".$increment_value."', '".$component[$a]['column']."');".'"/>');
|
||
echo('</td>');
|
||
break;
|
||
|
||
case 'checkdate' :
|
||
echo('<TD>');
|
||
if ($selectrow[$a] == 1) {
|
||
$input_value = 'checked';
|
||
$checked_value = '0';
|
||
}
|
||
else {
|
||
$input_value = '';
|
||
$checked_value = '1';
|
||
}
|
||
echo ('<INPUT disabled TYPE = "checkbox" id = "'.$component[$a]['column'].$increment_value.'"'.$input_value.' onClick = "'."StartLinkActiveDate('".$admin."' , '".$increment_value."', '".$component[$a]['column']."', '".$component[$a]['fieldate']."');".'"/>');
|
||
echo('</td>');
|
||
break;
|
||
|
||
case 'increment':
|
||
if ($inc_show) {
|
||
echo('<TD>');
|
||
echo (AnonsText($selectrow[$a], 30, 0));
|
||
echo('</td>');
|
||
}
|
||
break;
|
||
case 'spin':
|
||
echo('<TD>');
|
||
if ($selectrow[$a] != 0)
|
||
echo $selectrow[$a];
|
||
echo('</TD>');
|
||
break;
|
||
case 'file':
|
||
|
||
echo '<TD>';
|
||
|
||
$wwwname = SITE.fileimg($selectrow[$a], $increment_value, $component[$a]['folder']);
|
||
|
||
$fwidth = 100;
|
||
if ($component[$a]['width'])
|
||
$fwidth = $component[$a]['width'];
|
||
else
|
||
$fwidth = 100;
|
||
$nocacheprefix = date('Y_m_d_h_i_s');
|
||
echo'<a href="'.$wwwname.'" target="_blank"><img src ="'.$wwwname.'" width="'.$fwidth.'"></a>';
|
||
|
||
echo '</TD>';
|
||
|
||
break;
|
||
|
||
case 'textareatiny':
|
||
$fulltext = $selectrow[$a];
|
||
$fulltext = strip_tags($fulltext);
|
||
$val_txt = mb_strlen($fulltext);
|
||
echo '<TD>'.$val_txt.'</TD>';
|
||
break;
|
||
|
||
default:
|
||
$fulltext = $selectrow[$a];
|
||
$fulltext = strip_tags($fulltext);
|
||
$texttitle = '';
|
||
if ($component[$a]['maxtext']) {
|
||
$maxtext = $component[$a]['maxtext'];
|
||
$maxtext = strip_tags($maxtext);
|
||
if (mb_strlen($fulltext) > $maxtext) {
|
||
$texttitle = 'title="'.$fulltext.'" ';
|
||
$val_txt = AnonsText($selectrow[$a], $maxtext, 0);
|
||
}
|
||
else {
|
||
$val_txt = $fulltext;
|
||
}
|
||
}
|
||
else
|
||
$val_txt = $fulltext;
|
||
|
||
echo('<TD '.$texttitle.$selectrow[$a].'">');
|
||
if (isset($component[$a]['link'])){
|
||
$ulink = str_replace('{%}', $selectrow[$a], $component[$a]['link']);
|
||
//$link = str_replace('{%inc%}', $increment, $component[$a]['link']);
|
||
echo '<a target="_blank" href ="'.$ulink.'">'.$val_txt.'</a>';
|
||
}
|
||
else
|
||
echo $val_txt;
|
||
echo('</td>');
|
||
break;
|
||
}
|
||
}
|
||
echo('<td id>');
|
||
|
||
echo('<a href="#" title = "Редактирование" onClick = '.$edit_active.' ><img id = "rbutton" src="'.PUB.'img/b_edit.png" alt="редактирование записи" /></a>');
|
||
|
||
|
||
|
||
|
||
|
||
if ($link_view != '') {
|
||
$vlink = str_replace('{%}', $increment_value, $link_view);
|
||
echo('<a href="#" onClick = "window.open('."'".$vlink."', 'Просмотр_".$caption."', config='height=600,width=800,scrollbars=1,resizable=1');".'" title = "Просмотр"><img id = "rbutton" src="'.PUB.'img/lupa.png" alt="Просмотр" /></a>');
|
||
}
|
||
|
||
if (isset($ex_table)):
|
||
$export_id=$increment_value.'_ex';?>
|
||
<span id="<?=$export_id?>"><a onclick="sendRequest('<?=AD?>index.php?admin=<?=$admin?>&action=export&increment=<?=$increment_value?>', '<?=$export_id?>', getRequest);" title="Экспорт" href="#"><img alt="редактирование записи" src="<?=PUB?>img/export.png" id="rbutton"/></a></span>
|
||
<?endif;
|
||
|
||
//if ($_SESSION['readonly'] == 0)
|
||
|
||
if ($this->deleted) {
|
||
echo '<a href="#" title = "Удаление" onClick = "ShowModalDelete('.chr(39).$admin.chr(39).','.chr(39).$increment_value.chr(39).');"/><img id = "rbutton" src="'.PUB.'img/b_drop.png" alt="удаление записи" /></a>';
|
||
}
|
||
|
||
|
||
echo('<a href="'.$_SERVER['SCRIPT_NAME'].'?admin='.$admin.'&action=print_id&increment='.$increment_value.'" title = "Печать" target="_blank"><img id = "rbutton" src="'.PUB.'img/filequickprint.png" alt="Печать записи" /></a></td>');
|
||
|
||
if ($action != 'selectrow') echo('</tr>');
|
||
}
|
||
if ($action != 'selectrow') {
|
||
echo('<tr><td id = "counts">всего:</td><td id = "counts">'.$total_rows.'</td></tr>'); //общее кол-во
|
||
echo('</TBODY></TABLE></div>');
|
||
if ($action != 'select' && $action != 'selecttable') {
|
||
if ($total_rows > $per_page) { //рисуем странички
|
||
echo('</div><br /><div id = "page"><b>Странички: </b>
|
||
<SELECT NAME = "pages" id="pages" onChange="'.js_func('select_page_link', array('select_id'=>'pages', 'admin'=>$admin)).'">');
|
||
|
||
for($i = 1; $i <= $num_pages; $i++) {
|
||
$selected = ($i == $page) ? 'selected' : '';
|
||
echo('<option value = "'.$i.'" '.$selected.' accesskey="'.$i.'"> '.$i.'</option>');
|
||
}
|
||
echo('</SELECT> из <b>'.$num_pages.'</b>');
|
||
$olimits = array('5', '10', '15', '20', '25', '30');
|
||
/*echo(' <b>Элементы:</b> <select id = "limit">');
|
||
for ($it = 0; $it < sizeof($olimits) ;$it++) {
|
||
$selected = ($olimits[$it] == $per_page) ? 'selected' : '';
|
||
echo('<OPTION VALUE = "'.$olimits[$it].'" onClick = "StartLink('.chr(39).$admin.chr(39).", 'selectpage', 'main' , 'limit', '".$olimits[$it]."'".');" '.$selected.'> '.$olimits[$it]); </select>
|
||
} */ ?>
|
||
|
||
</div>
|
||
</div>
|
||
<?}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
break;
|
||
|
||
|
||
//подфильтр
|
||
case 'subfilter':
|
||
|
||
if (isset($_GET['id']))
|
||
$id = strip_tags(($_GET['id']));
|
||
|
||
if (isset($_GET['value']))
|
||
$value = $_GET['value'];
|
||
|
||
$item = $xml->xpath('/items/item');
|
||
$item_count = sizeof($item);
|
||
|
||
for ($it = 0; $it < $item_count; $it++) {
|
||
if ($item[$it]->id == $id){
|
||
if ($value > 0)
|
||
$params['where'] = $item[$it]->lookup->subfilter->wh_column.'='.$value;
|
||
$attrs['name'] = $item[$it]->column;
|
||
$attrs['id'] = $attr['name'];
|
||
echo $this->lookup($item[$it]->lookup->table, $item[$it]->lookup->id, $item[$it]->lookup->column, 0, $params, $attrs);
|
||
break;
|
||
}
|
||
}
|
||
|
||
|
||
break;
|
||
|
||
|
||
//горячий checkbox
|
||
case "active":
|
||
|
||
$result = 0;
|
||
|
||
if (isset($_GET['increment']))
|
||
$increment_value = (int)($_GET['increment']);
|
||
else
|
||
$increment_value = 0;
|
||
if (isset($_GET['active']))
|
||
$active = strip_tags(($_GET['active']));
|
||
$newactive = ($active == 'true') ? 1 : 0;
|
||
if (isset($_GET['field']))
|
||
$field = strip_tags($_GET['field']);
|
||
if ($increment_value > 0) {
|
||
//write_log($_GET['fieldate']);
|
||
if (isset($_GET['fieldate']) and $newactive == 1){
|
||
$act_update_sql = 'UPDATE $maintable SET `'.$field.'` = '.$newactive.', '.'`'.$_GET['fieldate'].'` = '."'".date('Y:m:d G:i:s')."'".' WHERE `'.$increment.'` = '."'".$increment_value."'";
|
||
$sql_active = mysqli_query($this->link, 'UPDATE '.$maintable.' SET `'.$field.'` = '.$newactive.', '.'`'.$_GET['fieldate'].'` = '."'".date('Y:m:d G:i:s')."'".' WHERE `'.$increment.'` = '."'".$increment_value."'");
|
||
}
|
||
else {
|
||
$act_update_sql = "UPDATE `$maintable` SET `$field` = '$newactive' WHERE `$increment` = '$increment_value'";
|
||
$sql_active = mysqli_query($this->link ,'UPDATE '.$maintable.' SET `'.$field.'` = '.$newactive.' WHERE `'.$increment.'` = '."'".$increment_value."'");
|
||
}
|
||
|
||
db_get($act_update_sql, 'db2'); //временно вместо history_db
|
||
|
||
$result = ($sql_active) ? 1 : 0;
|
||
}
|
||
|
||
//echo (int)$result ;
|
||
|
||
write_log($_SERVER['PHP_AUTH_USER'].': '.'table='.$maintable.':action=active:value='.$newactive.':id='.$increment_value, 'log/edition.log');
|
||
|
||
|
||
break;
|
||
|
||
|
||
case "print_id":?>
|
||
|
||
<?
|
||
|
||
if (isset($_GET['increment']))
|
||
$increment_value = (int)($_GET['increment']);
|
||
else
|
||
$increment_value = 0;
|
||
|
||
$item = $xml->xpath('/items/item');
|
||
$item_count = sizeof($item);
|
||
|
||
for ($i = 0; $i < $item_count; $i++) {
|
||
if ($item[$i]->view->printed == 'True'){
|
||
$column = (string)$item[$i]->column;
|
||
if ($column != $increment){
|
||
$sql .= SqlAddSpec($sql, 0).$maintable.'.'.$column;
|
||
if ($item[$i]->type == 'lookup'){
|
||
$join .= ' LEFT JOIN '.separ($item[$i]->lookup->table).' ON ('.separ($item[$i]->lookup->table).'.'.separ($item[$i]->lookup->id).'='.$maintable.'.'.separ($item[$i]->column).')';
|
||
$sql .= SqlAddSpec($sql, 0).$item[$i]->lookup->table.'.'.$item[$i]->lookup->column;
|
||
}
|
||
else
|
||
$sql .= SqlAddSpec($sql, 0).$maintable.'.'.$column;
|
||
}
|
||
}
|
||
}
|
||
|
||
$editres = mysqli_query ($this->link, 'SELECT '.$sql.' FROM '.$maintable.$join.' WHERE '.$increment.' = '.$increment_value);
|
||
$sqlrows = mysqli_num_rows($editres);
|
||
if ($sqlrows > 0)
|
||
$editrow = mysqli_fetch_array($editres);
|
||
|
||
for ($f = 0; $f < $item_count; $f++) {
|
||
if ($item[$f]->view->printed == 'True'){
|
||
echo '<i>'.$item[$f]->title.'</i>:<br/>';
|
||
if($item[$f]->type == 'lookup'){
|
||
$column = (string)$item[$f]->lookup->column;
|
||
echo $editrow[$column];
|
||
}
|
||
else {
|
||
$column = (string)$item[$f]->column;
|
||
echo $editrow[$column];
|
||
}
|
||
|
||
echo '<br /><br /><br />';
|
||
}
|
||
}
|
||
|
||
|
||
break;
|
||
|
||
|
||
|
||
case 'export':
|
||
|
||
|
||
|
||
if (isset($_GET['increment']))
|
||
$increment_value = (int)($_GET['increment']);
|
||
else
|
||
echo 'no';
|
||
|
||
|
||
$source = array();
|
||
$exvalue = array();
|
||
|
||
$count_element = 0;
|
||
|
||
|
||
$elements = explode(',',$ex_map);
|
||
foreach ($elements as $element)
|
||
{
|
||
$count_element++;
|
||
$params = explode('->',trim($element));
|
||
$ex_fields[] = trim($params[0]);
|
||
$sou_fields[] = separ(trim($params[1]));
|
||
}
|
||
|
||
|
||
$sql_select = 'SELECT '.implode(',',$ex_fields).' FROM '.$maintable.' WHERE '.separ($increment).'='."'".$increment_value."' LIMIT 1;";
|
||
|
||
$data = mysqli_query($this->link, $sql_select) or die("Invalid query");
|
||
if (mysqli_num_rows($data) == 0) {
|
||
echo "error";
|
||
break;
|
||
}
|
||
|
||
$row = mysqli_fetch_row($data);
|
||
for ($f = 0; $f < $count_element; $f++) {
|
||
$curr_value = (isset($row[$f])) ? $row[$f] : 0;
|
||
$ex_values[] = "'".addslashes($curr_value)."'";
|
||
}
|
||
|
||
$sql_insert = 'INSERT INTO'.separ($ex_table).' ('.implode(',',$sou_fields).') VALUES('.implode(',',$ex_values).');';
|
||
write_log(':'.$sql_insert);
|
||
|
||
mysqli_query($this->link, $sql_insert) or die("Invalid");
|
||
|
||
|
||
|
||
write_log($_SERVER['PHP_AUTH_USER'].': '.'table='.$maintable.':action=export :id='.$increment_value, 'log/edition.log');
|
||
|
||
|
||
break;
|
||
|
||
|
||
|
||
//формы - добавления и редактирования
|
||
case "edit":
|
||
case "add":
|
||
|
||
$lockstring = lock_id($nametable, $increment_value, $_SERVER['PHP_AUTH_USER']);
|
||
|
||
|
||
if ($action == 'edit') {
|
||
if ($lockstring !== False and $lockstring !== '')
|
||
echo '<h2 style="color: red; font-weight: bold; ">Файл занят: '.$lockstring.'</h2>';
|
||
}
|
||
|
||
$act_str = ($action == 'edit') ? 'Изменение': 'Добавление';?>
|
||
|
||
<div id="caption" name="mainform" ><?=$caption?>. <?=$act_str?> - <?=$_SERVER['PHP_AUTH_USER']?> <span id="closed"><a href="javascript:closeform('<?=$nametable?>','<?=$increment_value?>');">закрыть X</a></span></div>
|
||
|
||
<div id = "editor">
|
||
<?php
|
||
$item = $xml->xpath('/items/item');
|
||
$item_count = sizeof($item);
|
||
|
||
if ($action == 'edit') { //формируем запрос
|
||
$f_acton = '&action=update&increment='.$increment_value;
|
||
if(!$valid) {
|
||
for ($i = 0; $i < $item_count; $i++) {
|
||
$column = (string)$item[$i]->column;
|
||
if ($column != $increment)
|
||
$sql .= SqlAddSpec($sql, 0).$maintable.'.'.$column;
|
||
}
|
||
$editres = mysqli_query ($this->link, 'SELECT '.$sql.' FROM '.$maintable.' WHERE '.$increment.' = '.$increment_value);
|
||
$sqlrows = mysqli_num_rows($editres);
|
||
if ($sqlrows > 0)
|
||
$editrow = mysqli_fetch_array($editres);
|
||
}
|
||
}
|
||
else
|
||
$f_acton = '&action=insert';
|
||
|
||
$pr_form = '<FORM NAME = "fMain" id="fMain" target = "tform" ACTION ="'.AD.'index.php?admin='.$admin.$f_acton.'" METHOD = "post" enctype = "multipart/form-data" onSubmit="SubmitForm(this.id);">';
|
||
$active_err = (isset($_SESSION['ferror']) && $_SESSION['ferror'] == 1) ? 1 :0; // узнаем ошибки ли это были или нет
|
||
$active_err = 0;
|
||
$_SESSION['ferror'] = 0; // сбрасываем на случай отмены
|
||
|
||
$hash_date = date("Y-m-d H:i:s");
|
||
$hash_form = md5($hash_date.$this->userid);
|
||
|
||
$pr_form .= '<input type="hidden" id="hashform" name="hashform" value="'.$hash_form.'" />';
|
||
setcookie($hash_form, "1", time()+60*60*24*7, '/');
|
||
|
||
for ($f = 0; $f < $item_count; $f++) {
|
||
$column = (string)$item[$f]->column;
|
||
$column_id = (isset($item[$f]->id)) ? (string)$item[$f]->id : '';
|
||
if ($item[$f]->view->form == 'True' && $column != $increment) {
|
||
if ($active_err == 1 ) {
|
||
$class_valid = (isset($_SESSION['errors'][$column])) ? $_SESSION['errors'][$column] : 'hidden';
|
||
$column_value = $_SESSION['value'][$column];
|
||
}
|
||
else {
|
||
$class_valid = 'hidden';
|
||
if ($action == 'edit')
|
||
$column_value = $editrow[$column];
|
||
else if ($action == 'add') {
|
||
if (isset($item[$f]->default)) //значение по умолчанию
|
||
$column_value = $item[$f]->default;
|
||
else //если есть фильтр ставим значение автоматом
|
||
$column_value = ($item[$f]->filter && isset($_GET[$column])) ? (int)$_GET[$column] : '';
|
||
}
|
||
}
|
||
|
||
$types = $item[$f]->type;
|
||
if ($types == 'hidden' or $types == 'user')
|
||
$title = '';
|
||
else
|
||
$title = ($item[$f]->title == '') ? $column : $item[$f]->title;
|
||
|
||
if ($title != '')
|
||
$pr_form .= '<p><label for = "'.$column.'name">'.$title.'</label></p>';
|
||
$valtype = (isset($item[$f]->validate->type)) ? (string)$item[$f]->validate->type : '';
|
||
/*$blur = ($valtype != '') ? 'onblur = "validate(this.value, '."'err_".$column."', '".$valtype."'".');"' : ''; */
|
||
switch ($types) {
|
||
case 'textarea':
|
||
case 'textareatiny':
|
||
$controls[] = $column; //поля для проверки орфографии
|
||
|
||
$maxlength = (isset($item[$f]->maxsize)) ? ' maxlength = "'.$item[$f]->maxsize.'" ondrop="ismaxlength(this)" onkeypress="ismaxlength(this)" onkeydown="ismaxlength(this)" onkeyup="ismaxlength(this)" onchange="ismaxlength(this)" onfocus="ismaxlength(this)" ' : '';
|
||
|
||
if ($types == 'textareatiny') {
|
||
$class = (isset($item[$f]->tinyclass)) ? $item[$f]->tinyclass : 'mceSimple';
|
||
$class = ' class="'.$class.'"';
|
||
}
|
||
else
|
||
$class = 'textarea_'.$column;
|
||
|
||
/*onKeyUp = Len(this.id); onKeyDown = Len(this.id);*/
|
||
|
||
if (isset($item[$f]->longtextfile)) {
|
||
$htmlfile = set('site_fold').$item[$f]->longtextfile.'/'.$increment_value.'.html';
|
||
if (file_exists($htmlfile))
|
||
$text = file_get_contents($htmlfile);
|
||
else
|
||
$text = $column_value;
|
||
}
|
||
else
|
||
$text = $column_value;
|
||
|
||
|
||
|
||
$pr_form .= '<p><TEXTAREA NAME = "'.$column.'" ID = "'.$column.'"'.$class.' rows="'.$item[$f]->row.'" cols="'.$item[$f]->col.'" '.$maxlength.'>'.$text.'</TEXTAREA></p>';
|
||
|
||
//if ($types == 'textarea')
|
||
$pr_form .= '<p class = "mainfilter">символов: <b id = "'.$column.'_counts"></b>'.strlen(strip_tags($text)).'</p>';
|
||
break;
|
||
|
||
case 'text':
|
||
case 'html':
|
||
$controls[] = $column; //поля для проверки орфографии
|
||
$maxlength = (isset($item[$f]->maxsize)) ? ' maxlength="'.$item[$f]->maxsize.'"' : '';
|
||
$readonly = ($item[$f]->readonly == TRUE) ? ' READONLY': ''; //readonly
|
||
$column_value = htmlspecialchars($column_value);
|
||
$pr_form .= '<p><INPUT TYPE = "text" NAME = "'.$column.'" size = "'.$item[$f]->col.'" value = "'.$column_value.'" '.$blur.$maxlength.$readonly.' /><span id = "err_'.$column.'" class = "'.$class_valid.'" >Неверное значение</span></p>';
|
||
break;
|
||
|
||
|
||
case 'value':
|
||
$pr_form .= '<p><INPUT TYPE = "hidden" NAME = "'.$column.'" value = "'.$item[$f]->value.'" ></p>';
|
||
break;
|
||
|
||
|
||
|
||
case 'checkbox':
|
||
case 'checkdate':
|
||
|
||
$week = date('N');
|
||
$hour = date('G');
|
||
|
||
$checkview = True;
|
||
|
||
if (isset($item[$f]->userid)) { # слежение за юзерами
|
||
if ($week == 6 or $week == 7)
|
||
$checkview = True;
|
||
elseif ($hour < 10 or $hour > 18)
|
||
$checkview = True;
|
||
else {
|
||
|
||
if ($action == 'edit') {
|
||
|
||
$curr_user = (string)$item[$f]->userid;
|
||
|
||
if ($editrow[$curr_user] == $this->userid and $column_value == 0)
|
||
$checkview = False;
|
||
elseif($column_value == 1)
|
||
$checkview = TRUE;
|
||
|
||
/*$user_value
|
||
|
||
$userres = mysqli_query ('SELECT '.separ($item[$f]->curruser).' FROM '.$maintable.' WHERE '.$increment.' = '.$increment_value);
|
||
if (isset($userres)) {
|
||
$row = mysqli_fetch_row($userres);
|
||
$curruser = $row[0];
|
||
if ($curruser == $this->userid)
|
||
$checkview = False;
|
||
}*/
|
||
}
|
||
else
|
||
$checkview = False;
|
||
|
||
}
|
||
}
|
||
|
||
$checkview = True;
|
||
|
||
$chstatus = ($checkview == False) ? 'disabled readonly' : '';
|
||
|
||
//if ($checkview) {
|
||
$checked = ($column_value == 1) ? 'checked' : '';
|
||
$pr_form .= '<p><INPUT '.$chstatus.' TYPE = "checkbox" NAME = "'.$column.'" '.$checked.'/></p>';
|
||
//}
|
||
//else
|
||
// $pr_form .= '- нет прав -';
|
||
|
||
break;
|
||
|
||
case 'datetime':
|
||
$datetime = ($column_value == '0000-00-00 00:00:00' or $column_value == '') ? date('Y-m-d G:i:s') : $column_value;
|
||
$pr_form .= '<INPUT TYPE = "text" NAME = "'.$column.'" value = "'.$datetime.'" '.$blur.' /><a href="#" onClick = "javascript:CalendarDT('."'".$column."'".');"><img height="16" alt="Щелкните для открытия календаря" src="cal.gif" width="16" border="0"/></a><span id = "err_'.$column.'" class = "'.$class_valid.'">Неверный формат даты</span></p>';
|
||
break;
|
||
case 'datetimeauto':
|
||
$datetimeauto = date('Y-m-d G:i:s');
|
||
$pr_form .= '<INPUT TYPE = "text" NAME = "'.$column.'" value = "'.$datetimeauto.'" '.$blur.' /><a href="#" onClick = "javascript:CalendarDT('."'".$column."'".');"><img height="16" alt="Щелкните для открытия календаря" src="cal.gif" width="16" border="0"/></a><span id = "err_'.$column.'" class = "'.$class_valid.'">Неверный формат даты</span></p>';
|
||
break;
|
||
case 'date':
|
||
if ($action == 'add' & $active_err == 0) $column_value = date('Y-m-d');
|
||
$pr_form .= '<p><INPUT TYPE = "text" NAME = "'.$column.'" value = "'.$column_value.'" '.$blur.' /><a href="#" onClick = "javascript:CalendarD('."'".$column."'".');"><img height="16" alt="Щелкните для открытия календаря" src="cal.gif" width="16" border="0"/></a><span id = "err_'.$column.'" class = "'.$class_valid.'">Неверный формат даты</span></p>';
|
||
break;
|
||
case 'file':
|
||
if ($column_value !== '') {
|
||
|
||
$filename = fileimg($column_value, $increment_value, $item[$f]->folder);
|
||
$wwwname = SITE.$filename;
|
||
|
||
$id = 'fl'.$column;
|
||
$pr_form .= ' <p><IMG src="'.$wwwname.'" width="100" onClick = "window.open('."'".$wwwname."', 'Просмотр_".$wwwname."', config='height=600,width=800');".'" title="чтобы увеличить - кликните" /></span>';
|
||
$pr_form .= '<p><span id = "'.$id.'"><INPUT TYPE = "button" VALUE = "Удалить файл" onClick = "'."sendRequest('".AD."deletefile.php?file=".$filename."&id=".$increment_value."&column=".$column."', '".$id."', getRequest);".'" /></span>';
|
||
$pr_form .= '<span style="margin-left: 8px;"><a href="'.$wwwname.'">Скачать</a></span>';
|
||
}
|
||
else
|
||
$pr_form .= '<p>';
|
||
$pr_form .= '<INPUT TYPE="file" NAME="'.$column.'" /></p>';
|
||
|
||
break;
|
||
case 'user':
|
||
|
||
if ($action == 'edit') {
|
||
//проверяем права доступа
|
||
if (isset($item[$f]->access)){
|
||
|
||
//проверка защищенных групп
|
||
if (isset($item[$f]->access->groups)){
|
||
$groups = explode(',', $item[$f]->access->groups);
|
||
$accessed = (in_array($_SESSION['group'], $groups)) ? False : True;
|
||
}
|
||
else
|
||
$accessed = False; //проверять у всех
|
||
|
||
//проверять
|
||
if ($accessed == False and ($column_value !== $this->userid)){
|
||
echo 'Нет доступа на редактирование!';
|
||
exit; //прерывание, нет доступа
|
||
}
|
||
}
|
||
}
|
||
|
||
$insert_type = (isset($item[$f]->user_type)) ? True : False;
|
||
if ($action == 'edit' and $insert_type)
|
||
$user_value = $column_value;
|
||
else {
|
||
$user_value = $this->userid;
|
||
}
|
||
|
||
$pr_form .= '<p><INPUT TYPE = "hidden" NAME = "'.$column.'" value = "'.$user_value.'" ></p>';
|
||
|
||
break;
|
||
|
||
case 'spin':
|
||
$max = ($item[$f]->max == '') ? 100 : (int)$item[$f]->max;
|
||
$min = ($item[$f]->min == '') ? 1 : (int)$item[$f]->min;
|
||
$pr_form .= '<p><SELECT NAME = "'.$column.'">';
|
||
$pr_form .= '<OPTION VALUE = "">';
|
||
for ($s = $min; $s <= $max; $s++) {
|
||
$checked = ($s == $column_value ) ? 'selected' : '';
|
||
$s_view = ($s == 0) ? ' ' : $s;
|
||
$pr_form .= '<OPTION VALUE = "'.$s.'" '.$checked.'>'.$s_view;
|
||
}
|
||
$pr_form .= '</SELECT></p>';
|
||
break;
|
||
|
||
|
||
case 'password':
|
||
|
||
$pr_form .= '<p><INPUT TYPE = "text" NAME = "'.$column.'" value = "'.$column_value.'" ></p>
|
||
<p><INPUT TYPE = "text" NAME = "'.$column.'_2" value = "" ></p>';
|
||
break;
|
||
|
||
|
||
case 'lookup':
|
||
|
||
|
||
$look_params = array();
|
||
$attrs = array();
|
||
$sub_params = array();
|
||
$sub_attrs = array();
|
||
|
||
$subfiltered = (isset($item[$f]->lookup->subfilter)) ? True : False; //есть ли подфильтр
|
||
|
||
|
||
if (isset($item[$f]->lookup->where))
|
||
$look_params['where'] = (string)$item[$f]->lookup->where;
|
||
if (isset($item[$f]->lookup->order))
|
||
$look_params['order'] = (string)$item[$f]->lookup->order;
|
||
if (isset($item[$f]->lookup->nulltxt))
|
||
$look_params['null'] = (string)$item[$f]->lookup->nulltxt;
|
||
|
||
$look_params['limit'] = 800;
|
||
$select_id = 'select_'.$column_id;
|
||
$attrs = array('id'=>$item[$f]->column, 'name'=>$item[$f]->column);
|
||
|
||
if ($subfiltered) {
|
||
$look_params['subfilter']['table']=$item[$f]->lookup->subfilter->table;
|
||
$look_params['subfilter']['id']=$item[$f]->lookup->subfilter->id;
|
||
$look_params['subfilter']['column']=$item[$f]->lookup->subfilter->column;
|
||
$look_params['subfilter']['wh_column']=$item[$f]->lookup->subfilter->wh_column;
|
||
}
|
||
|
||
$pr_form .= '<p id="'.$select_id.'">'.$this->lookup($item[$f]->lookup->table, $item[$f]->lookup->id, $item[$f]->lookup->column, $column_value, $look_params, $attrs).'<p>';
|
||
|
||
|
||
if ($subfiltered) {
|
||
if (isset($item[$f]->lookup->subfilter->where))
|
||
$sub_params['where'] = (string)$item[$f]->lookup->subfilter->where;
|
||
if (isset($item[$f]->lookup->subfilter->order))
|
||
$sub_params['order'] = (string)$item[$f]->lookup->subfilter->order;
|
||
$sub_params['null'] = 'Все значения';
|
||
|
||
|
||
$sub_attrs['id'] = 'subfilter_'.$item[$f]->column;
|
||
$sub_attrs['name'] = $sub_attrs['id'];
|
||
$sub_func = 'subfilterlink('.chr(39).$sub_attrs['id'].chr(39).','.chr(39).ADMIN.chr(39).', '.chr(39).$column_id.chr(39).','.chr(39).$select_id.chr(39).');';
|
||
$sub_attrs['onChange'] = $sub_func;
|
||
|
||
$pr_form .= '<p> Фильтр: '.$this->lookup($item[$f]->lookup->subfilter->table, $item[$f]->lookup->subfilter->id, $item[$f]->lookup->subfilter->column, 0, $sub_params, $sub_attrs).'</p>';
|
||
}
|
||
|
||
$pr_form .= '</p>';
|
||
|
||
/*$lookchange = ($subfiltered) ? 'OnChange="subfilterlink('.ADMIN.', '.$column_id.');"' : '';
|
||
|
||
if ($where_field != '')
|
||
$sql_res = 'SELECT '.$item[$f]->lookup->id.', '.$item[$f]->lookup->column.' FROM '.$item[$f]->lookup->table.' WHERE '.$where_field. ' Order By '.$where_field.' LIMIT 260';
|
||
else
|
||
$sql_res = 'SELECT '.$item[$f]->lookup->id.', '.$item[$f]->lookup->column.' FROM '.$item[$f]->lookup->table.$where.$where_order.' LIMIT 200';
|
||
$selectres = mysqli_query ($sql_res);
|
||
if (@mysqli_num_rows($selectres) != 0) {
|
||
$pr_form .= '<p><SELECT NAME = "'.$item[$f]->column.'" '.$lookchange.'>';
|
||
$select0 = (isset($item[$f]->select0)) ? (string)$item[$f]->select0 : 'True';
|
||
if ($select0 == 'True') {
|
||
$null_value = (isset($item[$f]->lookup->null_value) ? (string)$item[$f]->lookup->null_value : 'нулевое значение');
|
||
$pr_form .= '<OPTION class="grays" value = "0">'.$null_value;
|
||
// echo '<OPTION class="grays" value = "null">пустое значение';
|
||
|
||
}
|
||
|
||
|
||
while ($selectrow = mysqli_fetch_row($selectres)){
|
||
$selected = ($column_value == $selectrow[0]) ? 'selected' : '';
|
||
$pr_form .= '<OPTION VALUE = "'.$selectrow[0].'" '.$selected.'>'. mb_substr(trim($selectrow[1]), 0, 60).'…';
|
||
}
|
||
$pr_form .= '</SELECT></p>';
|
||
if ($subfiltered) {
|
||
$subfilter_id = 'subfilter_'.$column_id;
|
||
$pr_form .= 'Фильтр: <SPAN name="'.$subfilter_id.'" ID="'.$subfilter_id.'">'.subfilter($column_value, $item[$f]->lookup->subfilter, $subfilter_id).'</span>';
|
||
}
|
||
$pr_form .= $input_pr;
|
||
$pr_form .= '</p>';
|
||
|
||
}*/
|
||
break;
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
echo $pr_form;//принтеруем форму
|
||
|
||
NullErrSession(); //стираем все на случай отмены
|
||
|
||
/*if ($action = 'edit')
|
||
echo('<INPUT NAME = "'.$increment.'" TYPE = "hidden" VALUE = "'.$increment_value.'" />');
|
||
echo '<br /><p><b><INPUT name = "tipogreg" TYPE = "checkbox" class = "grays" />Отключить типографику</b></p><br />';*/
|
||
|
||
//echo '<strong style="color: red;">не забудьте воспользоваться новой замечательной функцией</strong>';
|
||
|
||
write_log('readonly='.$_SESSION['readonly']);
|
||
|
||
echo '<p>';
|
||
|
||
if ($_SESSION['readonly'] == 0){
|
||
echo('<INPUT accesskey="s" TYPE = "submit" VALUE="Сохранить">');
|
||
}
|
||
|
||
echo '
|
||
<button name="cmdSpell" type="button" onclick="spellCheck()" style="margin-right: 58px;">Правописание</button>';
|
||
|
||
|
||
$ctljs = '';
|
||
|
||
foreach ($controls as $control) {
|
||
if ($ctljs !== '')
|
||
$ctljs .= ', ';
|
||
$ctljs .= 'form.'. $control;
|
||
}
|
||
|
||
|
||
echo('</p></FORM></DIV>');
|
||
|
||
//echo('<INPUT TYPE = "button" VALUE="Отмена" OnClick = "StartLink('.chr(39).$admin.chr(39).",'cancel', '', '', '');".'"/>
|
||
|
||
|
||
//echo('<INPUT TYPE="button" value="Удалить" onClick = "ShowModalDelete('.chr(39).$admin.chr(39).','.chr(39).$increment_value.chr(39).');"/></p>
|
||
|
||
|
||
break;
|
||
|
||
|
||
case "insert":
|
||
case "update":
|
||
|
||
//защита от пустого $POST
|
||
if (sizeof($_POST) == 0)
|
||
exit;
|
||
|
||
if (isset($_POST['hashform'])) {
|
||
|
||
$hash_form = $_POST['hashform'];
|
||
|
||
if (isset($_COOKIE[$hash_form])){
|
||
unset($_COOKIE[$hash_form]);
|
||
setcookie($hash_form, null, -1, '/');
|
||
}
|
||
else {
|
||
exit;
|
||
//break;
|
||
}
|
||
|
||
}
|
||
|
||
require_once("validate.php");
|
||
require_once("tipograf.php");
|
||
|
||
$errors = 0;
|
||
$errresult = false;
|
||
|
||
//if ($action == 'insert') {
|
||
$div_res = 'content';
|
||
$admin_res = 'selectall';
|
||
// }
|
||
// else {
|
||
// $div_res = $increment_value;
|
||
// $admin_res = 'selectrow';
|
||
// }
|
||
|
||
NullErrSession();
|
||
|
||
|
||
$item = $xml->xpath('/items/item');
|
||
$item_count = sizeof($item);
|
||
$fa = 0;
|
||
$tip_reg = (isset($_POST['tipogreg'])) ? false : true; /* вкл-выкл типографики */
|
||
for ($i = 0; $i <= $item_count - 1; $i++) {
|
||
$posts = (string)$item[$i]->column;
|
||
if ($posts !== '') {
|
||
$column_id = (isset($item[$i]->id)) ? (string)$item[$i]->id : '';
|
||
$key = $posts;
|
||
$type = (string)$item[$i]->type;
|
||
$values = null;
|
||
if (isset($item[$i]->view->form))
|
||
$view_form = ($item[$i]->view->form == 'True') ? 'True' : 'False';
|
||
else
|
||
$view_form = 'False';
|
||
}
|
||
else
|
||
$view_form = 'False';
|
||
|
||
if ($view_form == 'True') {
|
||
|
||
switch ($type) {
|
||
case 'checkbox':
|
||
case 'checkdate':
|
||
|
||
$activation = True;
|
||
|
||
if (isset($item[$i]->count) and $item[$i]->count !== ''){
|
||
$ccolumn =(string)$item[$i]->count;
|
||
if (isset($_POST[$ccolumn])) {
|
||
$txtonly = $_POST[$ccolumn];
|
||
$txtonly = html_entity_decode($txtonly);
|
||
$txtonly = str_replace(" ", '', $txtonly);
|
||
//$txtonly = str_replace(" ", '', $txtonly);
|
||
$txtonly = preg_replace('/&([a-zA-Z0-9]{2,6}|#[0-9]{2,4});/', '', $txtonly);
|
||
$txtonly = str_replace('|+|amp|+|', '&', $txtonly);
|
||
$txtonly = strip_tags($txtonly);
|
||
$txtonly = trim($txtonly);
|
||
$len = mb_strlen($txtonly, 'UTF-8');
|
||
if ( $len > 1200 and in_array($_POST['sitepart_id'], array(1, 3, 21)) ) {
|
||
$values = null;
|
||
break;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
if (isset($_POST[$posts])){
|
||
$values = '1';
|
||
$checkdated = True;
|
||
}
|
||
else {
|
||
$values = '0';
|
||
$checkdated = False;
|
||
}
|
||
|
||
$activation = True;
|
||
|
||
break;
|
||
|
||
case 'file':
|
||
$file_increment[$fa] = $i;
|
||
$activation = False;
|
||
$fa ++;
|
||
break;
|
||
case 'increment':
|
||
$activation = False;
|
||
break;
|
||
case 'lookup':
|
||
$values = (isset($_POST[$posts])) ? (int)$_POST[$posts] : 0;
|
||
write_log($posts.'='.$values);
|
||
$activation = True;
|
||
break;
|
||
case 'date':
|
||
$values = (isset($_POST[$posts])) ? $_POST[$posts] : '';
|
||
$activation = True;
|
||
break;
|
||
case 'user':
|
||
$values = (isset($_POST[$posts])) ? (int)$_POST[$posts] : 0;
|
||
$activation = True;
|
||
break;
|
||
case 'password':
|
||
$values = (isset($_POST[$posts])) ? $_POST[$posts] : 0;
|
||
$subvalues = (isset($_POST[$posts."_2"])) ? $_POST[$posts."_2"] : 0;
|
||
if ($values == $subvalues) {
|
||
//$values = crypt($values, substr($values, 0, 2));
|
||
$values = crypt($values, base64_encode($values));
|
||
}
|
||
break;
|
||
default:
|
||
$values = (isset($_POST[$posts])) ? $_POST[$posts] : '';
|
||
$values = str_replace('img src="../images', 'img src="http://www.argumenti.ru/images', $values); //хак для полного адреса фоток
|
||
$values = str_replace('img src="../photo', 'img src="http://www.argumenti.ru/photo', $values); //хак для полного адреса фоток
|
||
//$values = preg_replace('/<!--.*-->/Uis', '', $values);
|
||
$values = str_replace('http://www.instagram.com', 'https://www.instagram.com', $values);
|
||
$values = str_replace('http://www.youtube.com', 'https://www.youtube.com', $values);
|
||
$values = str_replace('http://ok.ru', 'https://ok.ru', $values);
|
||
$values = str_replace('http://vk.com', 'https://vk.com', $values);
|
||
|
||
|
||
if ($type == 'text') {
|
||
//$values = $filter->source($values)->entity('html');
|
||
$values = htmlspecialchars_decode($values);
|
||
}
|
||
else if ($type == 'textareatiny'){
|
||
$values = str_replace('<pre>', '<p>', $values);
|
||
|
||
$maxAllowedLength = 65535;
|
||
|
||
if (isset($item[$i]->longtextfile) and strlen($values) >= $maxAllowedLength ) {
|
||
$htmlfile = set('site_fold').$item[$i]->longtextfile.'/'.$increment_value.'.html';
|
||
|
||
|
||
file_put_contents($htmlfile, $values);
|
||
$activation = False;
|
||
}
|
||
|
||
// } else {
|
||
|
||
|
||
}
|
||
|
||
$values = addslashes($values);
|
||
|
||
|
||
$vald_type = (string)$item[$i]->validate->type;
|
||
$errors = validate($values, $vald_type);
|
||
|
||
if ($errors == 0) {
|
||
$err_value = 'error';
|
||
if ($item[$i]->validate->critic)
|
||
$errresult = true;
|
||
}
|
||
else {
|
||
/*$err_value = 'hidden';
|
||
if ($tip_reg) {
|
||
$tip_type = ($item[$i]->tipograf->type != '') ? $item[$i]->tipograf->type : 'standart';
|
||
$tip_kill = ($item[$i]->tipograf->killstyle == 'true') ? true : false;
|
||
$values = tipograf($values, $tip_type, $tip_kill);
|
||
}*/
|
||
}
|
||
$activation = True;
|
||
break;
|
||
}
|
||
|
||
|
||
//типографика
|
||
$tip_reg = False;
|
||
/* if ($item[$i]->typograf == 1 and $tip_reg){
|
||
$jerrors = null;
|
||
$jevix = new Jevix();
|
||
$values = $jevix->parse($values, $jerrors);
|
||
write_log($jevix->parse('\"Зениит\"', $jerrors));
|
||
$values = tp_quotes($values);
|
||
}*/
|
||
|
||
|
||
$exxmlwhere = '';
|
||
//экслюзивность значения, в остальных полях идет сброс его
|
||
if (isset($item[$i]->exclusive) and $item[$i]->exclusive->value !== $values) {
|
||
$exclusives[$posts] = array('value'=>$values, 'reset'=>$item[$i]->exclusive->value);
|
||
if (isset($item[$i]->exclusive->where))
|
||
$exxmlwhere = trim($item[$i]->exclusive->where);
|
||
if ($exxmlwhere !== '') {
|
||
$exclusives[$posts]['where'] = $item[$i]->exclusive->where;
|
||
}
|
||
if (isset($item[$i]->exclusive->wherefields)){
|
||
$exclusives[$posts]['wherefields'] = explode(',', $item[$i]->exclusive->wherefields);
|
||
|
||
}
|
||
else
|
||
$exxmlwhere = '';
|
||
}
|
||
|
||
|
||
if ($type != 'file') {
|
||
$_SESSION['errors'][$posts] = $err_value;
|
||
$_SESSION['value'][$posts] = $values;
|
||
}
|
||
if (!$errresult) {
|
||
if ($activation) {
|
||
if ($posts !== '') {
|
||
$history_items[$posts] = $values; //без кавычек
|
||
$values = chr(39).$values.chr(39);
|
||
$save_items[$posts] = $values;
|
||
|
||
$posts = '`'.$posts.'`';
|
||
if ($action == 'insert') {
|
||
$incolumns .= SqlAddSpec($incolumns, 0).$posts;
|
||
$value_insert .= SqlAddSpec($value_insert, 0).$values;
|
||
if ($type == 'checkdate' and $checkdated) {
|
||
$incolumns .= SqlAddSpec($incolumns, 0). separ($item[$i]->fieldate);
|
||
$value_insert .= SqlAddSpec($value_insert, 0).quote(date('Y-m-d G:i:s'));
|
||
}
|
||
}
|
||
else if ($action == 'update') {
|
||
// if ($item[$i]->filter) {
|
||
// if (isset($_GET[$posts]) && (int)$_GET[$posts] != $values) {
|
||
// $div_res = 'content';
|
||
// $admin_res = 'selectall';
|
||
// }
|
||
// }
|
||
|
||
if ($values !== null)
|
||
$sql_update .= SqlAddSpec($sql_update, 0).$posts.' = '.$values;
|
||
|
||
if ($type == 'checkdate' and $checkdated) { # публикация
|
||
|
||
$actupdate = separ($item[$i]->fieldate).' = '.quote(date('Y-m-d G:i:s'));
|
||
|
||
//$actupdate = 'UPDATE '.$maintable.' SET '.$actupdate.' WHERE '.separ($increment).' = '."'".$increment_value."'".' AND '.separ($item[$i]->fieldate).' = '.quote('0000-00-00 00:00:00').' OR '.separ($item[$i]->fieldate).' IS NULL';
|
||
$actupdate = 'UPDATE '.$maintable.' SET '.$actupdate.' WHERE '.separ($increment).' = '."'".$increment_value."'".' AND '.separ($item[$i]->fieldate).' IS NULL';
|
||
mysqli_query($this->link, $actupdate) or write_log('Ошибка mysqli: '.mysqli_error().' SQL:'.$actupdate);
|
||
db_get( $actupdate, 'db2'); //временно вместо history db
|
||
|
||
# дата
|
||
$actupdate = 'UPDATE '.$maintable.' SET '.$actupdate.' WHERE '.separ($increment).' = '."'".$increment_value."'".' AND '.separ($item[$i]->fieldate).'='.quote('0000-00-00 00:00:00');
|
||
mysqli_query($this->link, $actupdate) or write_log('Ошибка mysqli: '.mysqli_error().' SQL:'.$actupdate);
|
||
db_get( $actupdate, 'db2'); //временно вместо history db
|
||
|
||
# user activate
|
||
if (isset($item[$i]->curruser)) {
|
||
$usersql = 'UPDATE '.$maintable.' SET '.separ($item[$i]->curruser).'='.$this->userid.' WHERE '.separ($increment).' = '."'".$increment_value."'";
|
||
mysqli_query($this->link, $usersql) or write_log('Ошибка mysqli: '.mysqli_error().' SQL:'.$usersql);
|
||
db_get( $usersql, 'db2'); //временно вместо history db
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
//копим все полученные значения с ключом
|
||
$allvalues[$key] = $values;
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
if ($errresult) {
|
||
$_SESSION['ferror'] = 1;
|
||
$newaction = ($action == 'update') ? 'edit' : 'add';
|
||
echo("<SCRIPT>window.parent.StartLink('".$admin."', '".$newaction."', 'forms', '', '');</SCRIPT>");
|
||
}
|
||
else {
|
||
$_SESSION['ferror'] = 0;
|
||
if ($action == 'insert'){
|
||
$sqltext = 'INSERT INTO '.$maintable.' ('.$incolumns.') VALUES ('.$value_insert.')';
|
||
$sqlres = mysqli_query($this->link, $sqltext);
|
||
}
|
||
else if ($action == 'update') {
|
||
$sqltext = 'UPDATE '.$maintable.' SET '. $sql_update.' WHERE '.$increment.' = '."'".$increment_value."'";
|
||
$sqlres = mysqli_query($this->link, $sqltext);
|
||
}
|
||
|
||
if (!$sqlres)
|
||
write_log('Ошибка mysqli: '.mysqli_error().' sql:'.$sqltext);
|
||
|
||
if ($sqlres) { //если запрос прошел успешно
|
||
if ($action == 'insert') { // значение инкремента
|
||
$inc_indx = mysqli_insert_id($this->link);
|
||
|
||
//echo 'созданный id = '.mysqli_insert_id($this->link);
|
||
}
|
||
else {
|
||
$inc_indx = $increment_value;
|
||
}
|
||
|
||
$save_items[$increment] = $inc_indx;
|
||
$history_items[$increment] = $inc_indx;
|
||
|
||
//обработка экслюзивных значений
|
||
if (isset($exclusives)) {
|
||
foreach ($exclusives as $exc_key => $excl){
|
||
$exupdwhere = ' WHERE '.$exc_key.' = '.$excl['value'].' AND '.$increment.' <> '."'".$inc_indx."'";
|
||
if (isset($excl['where'])){
|
||
$exwhere = $excl['where'];
|
||
preg_match_all("{(\w+)}", $exwhere, $exwherearr);
|
||
if (isset($exwherearr)) {
|
||
foreach ($exwherearr as $exwh){
|
||
$key = $exwh[1];
|
||
if (isset($allvalues[$key]));
|
||
$exwhere = str_replace('{'.$exwh[0].'}', $allvalues[$key], $exwhere);
|
||
}
|
||
}
|
||
$exupdwhere .= ' AND '.$exwhere;
|
||
}
|
||
|
||
if (isset($excl['wherefields'])){
|
||
foreach ($excl['wherefields'] as $exfvalue){
|
||
$exfvalue = trim($exfvalue);
|
||
if ($allvalues[$exfvalue] > 0) {
|
||
$exupdwhere .= ' AND '.separ($exfvalue).'='.$allvalues[$exfvalue];
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
$upd_sql = 'UPDATE '.$maintable.' SET '.$exc_key.'='.$excl['reset'].$exupdwhere;
|
||
write_log('exclusive: '.$upd_sql);
|
||
|
||
$upd_result = mysqli_query($this->link, $upd_sql);
|
||
if (!$upd_result) {
|
||
write_log('Ошибка mysqli: '.mysqli_error().' SQL:'.$upd_sql);
|
||
} else {
|
||
db_get( $upd_sql, 'db2'); //временно вместо history db
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
for ($l = 0; $l < $fa; $l ++) { //загрузка файло
|
||
$indx = $file_increment[$l];
|
||
$column = (string)$item[$indx]->column;
|
||
if(isset($_FILES[$column])){
|
||
if ($_FILES[$column]["name"] != '') {
|
||
$f_exp = fileexpansion($_FILES[$column]["name"]);
|
||
//if (in_array($f_exp, array('jpg','jpeg','JPG', 'gif', 'png', 'swf'))){
|
||
$upfolder = SITEPATH.$item[$indx]->folder;
|
||
|
||
if (isset($item[$indx]->dateversion)) {
|
||
$currversion = date('Ymdhis');
|
||
$newfname = $currversion.'-'.$inc_indx.'.'.$f_exp;
|
||
$newfilename = $upfolder.'/'.$newfname;
|
||
}
|
||
else {
|
||
$newfname = $f_exp;
|
||
$newfilename = $upfolder.'/'.$inc_indx.'.'.$f_exp;
|
||
}
|
||
|
||
|
||
if (file_exists($_FILES[$column]["tmp_name"])){
|
||
if (!is_writable($upfolder))
|
||
echo 'нет прав на запись в папку '.$upfolder;
|
||
else {
|
||
if (copy($_FILES[$column]["tmp_name"], $newfilename)){
|
||
$sql_add_file = 'UPDATE '.$maintable.' SET '.$column.' = '."'".$newfname."'".' WHERE '.$increment.' = '.$inc_indx;
|
||
$file_update = mysqli_query($this->link, 'UPDATE '.$maintable.' SET '.$column.' = '."'".$newfname."'".' WHERE '.$increment.' = '.$inc_indx);
|
||
db_get( $sql_add_file, 'db2'); //временно вместо history db
|
||
}
|
||
else
|
||
echo 'не удалось скопировать '.$newfilename;
|
||
}
|
||
|
||
unlink($_FILES[$column]["tmp_name"]);
|
||
}
|
||
else
|
||
echo 'не найден файл '.$_FILES[$column]["tmp_name"];
|
||
|
||
}
|
||
//}
|
||
|
||
}
|
||
if (isset($_POST['DFile_'.$column])){ //признак или несуществующего файла
|
||
|
||
$file_update = mysqli_query($this->link, 'UPDATE '.$maintable.' SET '.$column.' = '."''".' WHERE '.$increment.' = '.$inc_indx);
|
||
if (!$file_update)
|
||
write_log('Ошибка mysqli: '.mysqli_error());
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
//request duplication
|
||
//copy_sql( $sqltext );
|
||
|
||
if ($action == 'update')
|
||
unlock_id($nametable, $inc_indx, $_SERVER['PHP_AUTH_USER']);
|
||
|
||
$increm = ($action == 'insert') ? $inc_indx : $increment_value;
|
||
|
||
define('INC_VALUE', $increm);
|
||
//add_q((string)$nametable, $increm); //добавить очередь
|
||
$history_save = True;
|
||
|
||
if ($history_save) {
|
||
$currdate = date('Y-m-d H:i:s'); //текущая дата
|
||
$histoty_file = set('site_fold_ad').'history/'.$nametable.'/'.date_to_url($currdate, False).'/'.$nametable.'_'.$increm.'_'.date_to_url($currdate, True,'_').'.json'; //файл истории запроса sql
|
||
save($histoty_file, json_encode($save_items)); //сохраняем историю
|
||
history_db( $nametable, $history_items ); //сохраняем во вторую базу
|
||
}
|
||
|
||
if (isset($fcache))
|
||
delete_cache($fcache, $increm);
|
||
|
||
|
||
if (isset($count_items))
|
||
counts($count_items, $allvalues);
|
||
|
||
|
||
write_log($_SERVER['PHP_AUTH_USER'].': '.'table='.$maintable.':action='.$action.':id='.$inc_indx.' save:'.$histoty_file, 'log/edition.log');
|
||
echo("<SCRIPT>window.parent.StartLink('".$admin."','".$admin_res."' ,'".$div_res."', '', '');</SCRIPT>");
|
||
}
|
||
|
||
break;
|
||
|
||
|
||
case "unlock":
|
||
unlock_id($nametable, $increment_value, $_SERVER['PHP_AUTH_USER']);
|
||
break;
|
||
|
||
case "delete":
|
||
|
||
if ($this->groupid > 1)
|
||
break;
|
||
|
||
|
||
if (isset($_GET['increment']))
|
||
$increment_value = (int)($_GET['increment']);
|
||
else
|
||
$increment_value = 0;
|
||
|
||
if ($increment_value > 0)
|
||
$sql_delete = mysqli_query ($this->link, 'DELETE FROM '.$maintable.' WHERE '.$increment.' = '."'".$increment_value."'");
|
||
if (isset($fcache))
|
||
delete_cache($fcache, $increment_value);
|
||
|
||
write_log($_SERVER['PHP_AUTH_USER'].': '.'table='.$maintable.':action=delete :id='.$increment_value, 'log/edition.log');
|
||
echo("<SCRIPT>window.parent.StartLink('".$admin."', 'selectall', 'content', '', '');</SCRIPT>");
|
||
|
||
break;
|
||
|
||
}
|
||
|
||
}
|
||
}
|