public function createsl($rec) { extract($rec); $excel = file_get_contents($this->getDir() . $template); if ($fileext == "xml") { // усли шаблон xml файл // заменяем в xml файле данные попадающие под шаблон _имя_ на переменную имя из $rec preg_match_all('/_([0-9a-z]+)_/', $excel, $matchesarray); for ($i = 0; $i < count($matchesarray[0]); $i++) { $excel = str_replace($matchesarray[0][$i], ${$matchesarray[1][$i]}, $excel); } } elseif ($fileext == "xls") { // а шаблон может быть и xls файлом, if (fileserver::savefile("{$filename}.txt", $rec)) { $url = "http://baza3.mpp/?level=getdata&getdata[act]=checksl&slid={$number}"; try { $barcode = new QR_Code(-1, QR_ErrorCorrectLevel::H); $barcode->addData($url); $barcode->make(); $imgbarcode = new QR_CodeImage($barcode, 150, 150, 10); $imgbarcode->draw(); $imgbarcode->store("{$filename}.jpg"); $imgbarcode->finish(); @chmod("{$filename}.jpg", 0777); } catch (Exception $ex) { console::getInstance()->out($ex->getMessage()); console::getInstance()->out($ex->getTraceAsString()); } /*$barcode = new BarcodeQR(); $barcode->url($url); $barcode->draw(150, "{$filename}.png"); */ } else { $out = "Не удалось создать файл txt"; return false; } // а сам xls запишитеся ниже } else { // вернем ошибку или в будущем как-то обработаем файл return false; } // сохранить if (fileserver::savefile($filename, $excel)) { Output::assign('sllink', fileserver::sharefilelink($filename)); Output::assign('slid', $lanch_id); $out = $this->fetch('partylink.tpl') . ($last ? '<script>reload_table();</script>' : ''); } else { $out = "Не удалось записать файл"; $out = false; } // вернуть ссылку на файл return $out; }
public function getRangePeriod($sdate, $edate) { $ret = array(); console::getInstance()->out("{$sdate} nnn {$edate}"); $sdate = date("Y-m-d", mktime(0, 0, 0, substr($sdate, 3, 2), substr($sdate, 0, 2), substr($sdate, 6, 4))); //$dyear."-".$dmonth."-".$dday; $edate = date("Y-m-d", mktime(0, 0, 0, substr($edate, 3, 2), substr($edate, 0, 2), substr($edate, 6, 4))); //$dyear."-".$dmonth."-".$dday; $sql = "SELECT *,sk_{$this->sklad}_spr.id FROM {$this->db}sk_{$this->sklad}_spr\n\t\t\t\tJOIN {$this->db}sk_{$this->sklad}_ost ON sk_{$this->sklad}_ost.spr_id=sk_{$this->sklad}_spr.id\n\t\t\t\tWHERE nazv<>''\n\t\t\t\tORDER BY nazv"; $res = sql::fetchAll($sql); foreach ($res as $rs) { $prih = 0; $rash = 0; $sql = "SELECT SUM(quant) as prihod FROM ({$this->db}sk_{$this->sklad}_dvizh)\n\t\t\t\t\tJOIN {$this->db}sk_{$this->sklad}_spr ON (sk_{$this->sklad}_spr.id=sk_{$this->sklad}_dvizh.spr_id)\n\t\t\t\t\tWHERE ddate >= '{$sdate}'\n\t\t\t\t\t\t\tAND ddate <= '{$edate}'\n\t\t\t\t\t\t\tAND sk_{$this->sklad}_spr.id='{$rs[id]}'\n\t\t\t\t\t\t\tAND type='1'\n\t\t\t\t\t\t\tAND numd<>'9999'\n\t\t\t\t\tGROUP BY sk_{$this->sklad}_spr.id"; //echo $sql; $res1 = sql::fetchAll($sql); foreach ($res1 as $rs1) { $prih += $rs1["prihod"]; } $sql = "SELECT SUM(quant) as prihod FROM ({$this->db}sk_{$this->sklad}_dvizh_arc)\n\t\t\t\t\tJOIN {$this->db}sk_{$this->sklad}_spr ON (sk_{$this->sklad}_spr.id=sk_{$this->sklad}_dvizh_arc.spr_id)\n\t\t\t\t\tWHERE ddate >= '{$sdate}'\n\t\t\t\t\t\t\tAND ddate <= '{$edate}'\n\t\t\t\t\t\t\tAND sk_{$this->sklad}_spr.id='{$rs[id]}'\n\t\t\t\t\t\t\tAND type='1'\n\t\t\t\t\t\t\tAND numd<>'9999'\n\t\t\t\t\t\t\tGROUP BY sk_{$this->sklad}_spr.id"; $res1 = sql::fetchAll($sql); foreach ($res1 as $rs1) { $prih += $rs1["prihod"]; } $sql = "SELECT SUM(quant) as prihod FROM ({$this->db}sk_{$this->sklad}_dvizh)\n\t\t\t\t\tJOIN {$this->db}sk_{$this->sklad}_spr ON (sk_{$this->sklad}_spr.id=sk_{$this->sklad}_dvizh.spr_id)\n\t\t\t\t\tWHERE ddate >= '{$sdate}'\n\t\t\t\t\t\t\tAND ddate <= '{$edate}'\n\t\t\t\t\t\t\tAND sk_{$this->sklad}_spr.id='{$rs[id]}'\n\t\t\t\t\t\t\tAND type='0'\n\t\t\t\t\t\t\tAND numd<>'9999'\n\t\t\t\t\tGROUP BY sk_{$this->sklad}_spr.id"; $rs1 = sql::fetchOne($sql); if (!empty($rs1)) { $rash += $rs1["prihod"]; } $sql = "SELECT SUM(quant) as prihod FROM ({$this->db}sk_{$this->sklad}_dvizh_arc)\n\t\t\t\t\tJOIN {$this->db}sk_{$this->sklad}_spr ON (sk_{$this->sklad}_spr.id=sk_{$this->sklad}_dvizh_arc.spr_id)\n\t\t\t\t\tWHERE ddate >= '{$sdate}'\n\t\t\t\t\t\t\tAND ddate <= '{$edate}'\n\t\t\t\t\t\t\tAND sk_{$this->sklad}_spr.id='{$rs[id]}'\n\t\t\t\t\t\t\tAND type='0'\n\t\t\t\t\t\t\tAND numd<>'9999'\n\t\t\t\t\tGROUP BY sk_{$this->sklad}_spr.id"; $res1 = sql::fetchAll($sql); foreach ($res1 as $rs1) { $rash += $rs1["prihod"]; } if ($prih != 0 || $rash != 0 || $rs["ost"] != 0) { $cols[nazv] = $rs[nazv]; $cols[prihod] = sprintf("%10.2f", $prih); $cols[rashod] = sprintf("%10.2f", $rash); $cols[ost] = sprintf("%10.2f", $rs["ost"]); $cols[edizm] = $rs[edizm]; $ret[] = $cols; } } return $ret; }
protected static function getMessage() { $selfObj = console::getInstance(); $format = 'html'; if (!isset($_SERVER['HTTP_HOST']) || $selfObj->mode !== 'log') { $format = $selfObj->mode; } else { $response_arr = @headers_list(); if ($response_arr) { foreach ($response_arr as $header) { if (strpos($header, 'text/plain') !== false) { $format = 'plain'; } } } } $backtrace = debug_backtrace(); $msg_head = $format === 'file' ? date('Y-m-d H:i:s') . ', ' : ''; $msg_head .= 'File ' . str_replace(DIRECTORY_SEPARATOR, '/', $backtrace[1]['file']) . ', ' . 'Line ' . $backtrace[1]['line']; switch ($format) { case 'console': case 'firebug': return $backtrace[1]['args']; break; case 'src': case 'plain': case 'file': $format_arr = array('open' => $format === 'src' ? "<!--\n" : '', 'close' => $format === 'src' ? "\n-->" : '', 'break' => "\n", 'sep' => str_repeat('-', strlen($msg_head)), 'highlight' => false); break; case 'html': $msg_head = 'File <span style="color:#669">' . str_replace(DIRECTORY_SEPARATOR, '/', $backtrace[1]['file']) . '</span>, ' . 'Line <span style="color:#966">' . $backtrace[1]['line'] . '</span>'; $format_arr = array('open' => '<pre style="white-space: pre-wrap; font: 16px \'courier new\'; border:10px solid #ccc;background:#eee;padding: 15px;position:relative"><button type=button onclick="this.parentNode.style.display=\'none\'" style="position:absolute; right:5px; top:5px; cursor:pointer" title="Close console">×</button>', 'close' => '</pre>', 'break' => '', 'sep' => '<hr style=\'border: 0;color: #ccc;background-color: #99c;height: 1px;width: 100%;\' />', 'highlight' => true); break; } $msg = $format_arr['break'] . $format_arr['open'] . $msg_head . $format_arr['break']; foreach ($backtrace[1]['args'] as $arg) { $msg .= $format_arr['sep'] . $format_arr['break'] . self::dumpAsString($arg, 15, $format_arr['highlight']) . $format_arr['break']; } $msg .= $format_arr['close']; return $msg; }
function add($name, $value = false, $options = array()) { $array = $this->fields[$name]; $errorsHtml = array(); $errorsText = array(); $errors = false; // возможно здесь следует провести проверку, и если значение установлено в реквесте — ставить всеже его if ($value) $array[value] = $value; if ($value) $array[src] = $value; if (count($this->errors)) { foreach ($this->errors as $error) { if ($this->getID($name) == $error[id]) { $errors = true; // если ID совпадают, то враппим в блок текст ошибки $errorsHtml[] = $error[html]; // для span $errorsText[] = $error[text]; // для title } } } $return = null; if (!is_array($array[options])) $array[options] = array(); $array[options] = array_merge($array[options], $options); if ($errors) { $array[options][html] .= " title='" . implode(", ", $errorsText) . "'"; } // для title switch ($array[type]) { case AJAXFORM_TYPE_CODE: $return = $this->code($array[options]); break; case AJAXFORM_TYPE_HIDDEN: $return = $this->hidden($array[name], $array[value], $array[options]); break; case AJAXFORM_TYPE_TEXT: $return = $this->text($array[name], $array[value], $array[options]); break; case AJAXFORM_TYPE_PASSWORD: $return = $this->password($array[name], $array[value], $array[options]); break; case AJAXFORM_TYPE_TEXTAREA: $return = $this->textarea($array[name], $array[value], $array[options]); break; case AJAXFORM_TYPE_BUTTON: $return = $this->button($array[name], $array[value], $array[options]); break; case AJAXFORM_TYPE_SUBMIT: $return = $this->submit($array[name], $array[value], $array[options]); break; case AJAXFORM_TYPE_RESET: $return = $this->reset($array[name], $array[value], $array[options]); break; case AJAXFORM_TYPE_IMAGE: $return = $this->image($array[name], $array[src], $array[options]); break; case AJAXFORM_TYPE_CHECKBOX: $return = $this->checkbox($array[name], $array[label], $array[value], $array[options]); break; case AJAXFORM_TYPE_CHECKBOXES: $return = $this->checkboxes($array[name], $array[values], $array[value], $array[options]); break; case AJAXFORM_TYPE_RADIO: $return = $this->radio($array[name], $array[values], $array[value], $array[options]); break; case AJAXFORM_TYPE_SELECT: $return = $this->select($array[name], $array[values], $array[value], $array[options]); break; case AJAXFORM_TYPE_FILE: $return = $this->file($array[name], $array[options]); break; case AJAXFORM_TYPE_DATE: $return = $this->date($array[name], $array[value], $array[options]); break; default: console::getInstance()->error("Поле «{$name}» не найдено в массиве или неверно задан тип ({$array[type]})."); } // если есть ошибки — выводим их под поле if ($errors) $return .= $this->errorHTML($name, implode($errorsHtml), true); return $return; }
public function init() { $this->type = $this->getName(); $this->tid = uniqid($this->type); if (!empty($_POST[find])) { $_GET[$this->getName()][index][2] = multibyte::UTF_decode($_POST[find]); } $param = $this->getLegoParam('index'); $this->all = (bool) $param[0]; $this->order = $param[1]; $this->find = $param[2]; //empty($_REQUEST[find])?$param[2]: multibyte::UTF_decode($_REQUEST[find]); $this->idstr = $param[3]; $this->del = Auth::getInstance()->getRights($this->type, 'del'); $this->edit = Auth::getInstance()->getRights($this->type, 'edit'); $this->buttons = true; $this->addbutton = Auth::getInstance()->getRights($this->type, 'edit'); $this->findbutton = true; try { $classname = "{$this->getName()}_model"; if (!class_exists($classname)) { $classname = get_class($this) . "_model"; } if (!class_exists($classname)) { throw new Exception("Нет класса {$classname}"); } $this->model = new $classname(); $this->model->init(); } catch (Exception $e) { console::getInstance()->out("[class=" . get_class($this) . "] : " . $e->getMessage()); } try { $classname = "{$this->getName()}_view"; if (!class_exists($classname)) { $classname = get_class($this) . "_view"; } if (!class_exists($classname)) { $classname = "sqltable_view"; } if (!class_exists($classname)) { throw new Exception("Нет класса {$classname}"); } $this->view = new $classname($this); } catch (Exception $e) { console::getInstance()->out("[class=" . get_class($this) . "] : " . $e->getMessage()); } try { $this->form = new ajaxform(''); // для подключения скриптов } catch (Exception $e) { console::getInstance()->out("[class=" . get_class($this) . "] : " . $e->getMessage()); } }
} if (empty($_REQUEST["level"])) { $_REQUEST["level"] = 'baza'; } include "_setup.php"; header("Content-Type: text/html; charset={$_SERVER[Encoding]}"); if ($_SERVER[Auth]) { // update и getdata делается без авторизации if (!Auth::getInstance()->run()->success) { echo Auth::getInstance()->getOutput(); echo console::getInstance()->run()->getOutput(); exit; } } $classname = $_REQUEST["level"]; $m = new $classname(); if ($m->run()) { if (!Ajax::isAjaxRequest()) { echo $m->getOutput(); } } // echo "<script>"; // echo "storeSetting(".multibyte::Json_encode($_SESSION["user_setting"]).");"; // echo "</script>"; if ($_SERVER[debug][report]) { if (Ajax::isAjaxRequest()) { echo console::getInstance()->getScripts(); } else { echo console::getInstance()->run()->getOutput(); } }
// при правильном использовании namespace достаточно только (PSR-0 https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md) spl_autoload_register(); // а так придестя зарегить функцию вслед за дефолтной spl_autoload_register('Autoloader::loadPackages'); // сам класс 'Autoloader' описан по PSR-0 // очень внимательно файлы будут искаться в МАЛЕНЬКИМИ буквами autoloader.php - Это известный БАГ и скоро может быть пофиксен /* * Строки ниже есть в файле autoload * НО с использованием SPL приишлось вставить сюда потому, что * auttoload включался каждый раз, а теперь используется include_once */ if (!$_SERVER["debug"]["noCache"]["php"]) { if (!empty($_SESSION["cache"]) && is_array($_SESSION["cache"])) { require_once realpath($_SERVER['DOCUMENT_ROOT']) . cache::buildScript($_SESSION["cache"], 'php'); } } /* * пожалуй уберу строчку из файла autoload и поставлю включение сюда */ //include_once __DIR__ . '/_engine/autoload.php'; // инклудим автозагрузку модулей ob_get_clean(); /* * Делать хоть один инстанс нужно для включения скриптов в заголовки */ Lang::getInstance()->setLang('ru'); // перехватим ошибки if ($_SERVER[debug][report]) { console::getInstance(); //->out(print_r($_REQUEST, true)); profiler::add('Autoexec', 'Выполнение начальных установок'); }