public function setRecord($data) { $data[blocktype] = $this->blocktype; $operation[$data[operation_id]] = array('date' => $data[action_date], 'comment_id' => sqltable_model::getCommentId($data[comment])); // если в поле для нового ввели номер сопроводиловки уже существующий в журнале // то будем править его $sql = "SELECT * FROM {$this->maintable} WHERE lanch_id='{$data[lanch_id]}'"; $res = sql::fetchOne($sql); if (empty($res)) { // гадство! тут нужен уникальный, а без коментариев будет получаться один sql::insert('coments', array(array("comment" => multibyte::Json_encode($operation)))); $data[coment_id] = sql::lastId(); } else { $coment = multibyte::Json_decode(sqltable_model::getComment($res[coment_id])); $coment[$data[operation_id]] = $operation[$data[operation_id]]; // заменить старый по ключу sql::insertUpdate('coments', array(array("id" => $res[coment_id], "comment" => multibyte::Json_encode($coment)))); $data[edit] = $res[id]; // если был такой его и правим $data[coment_id] = $res[coment_id]; } $data[lastoperation] = $data[operation_id]; parent::setRecord($data); return true; }
/** * Функция возвращает обработанный для фронтенда контент * @param $content string Текущий контент (то, что вывелось на страницу тем или иным образом) */ public static function process($content) { $json = multibyte::Json_encode(array( "js" => self::$result, "text" => "{$content}", ), self::$entityDecode); return $json; }
public function action_commentupdate($coment_id) { $operationid = $_REQUEST[idstr]; $operations = multibyte::Json_decode(sqltable_model::getComment($coment_id)); $coment_id = $operations[$operationid][comment_id]; $out = sqltable_model::getComment($coment_id); $date = ajaxform::date2datepicker($operations[$operationid][date]); $out .= "<script>\$(\"*[datepicker='1']\").val('{$date}')</script>"; return $out; }
/** * Универсальный запрос и возврат * @param array $rec содержит массив REQUEST с параметрами * должны быть $id, $table, $format, соответственно идентификатор в таблице, таблица и формат возврата * Так как используется для запросов из скриптов (САМ, cmd, bash) форматы * line - посторочно без ключа * keyline - посторочно ключ|значение (default) * array - в массиве PHP на всякий случай * json - ну понятно * @return variable в зависимости * rem tear "http://baza4/?level=getdata&getdata[act]=uniget&table=customers&id=5" > res * rem tear "http://baza4/?level=getdata&getdata[act]=uniget&object=orders_customers_model&id=5" > res * rem tear "http://baza4/?level=getdata&getdata[act]=uniget&object=orders_customers_model&id=5&format=json" > res * rem tear "http://baza4/?level=getdata&getdata[act]=uniget&table=customers&id=%%D0%%90%%D0%%B7%%D0%%B8%%D0%%BC%%D1%%83%%D1%%82&field=customer" >res * tear "http://baza4/?level=getdata&getdata[act]=uniget&table=customers&id=Аврора&field=customer" >res */ public function uniget($rec) { if (!multibyte::is_utf($rec)) { $rec = multibyte::cp1251_to_utf8($rec); } extract($rec); if (!isset($format)) { $format = "keyline"; } if (isset($id)) { if (isset($table)) { if (1 * $id != 0) { $sql = "SELECT * FROM `{$table}` WHERE id='{$id}'"; } else { if (isset($field)) { $sql = "SELECT * FROM `{$table}` WHERE `{$field}`='{$id}'"; } else { // не определить return; } } $res = sql::fetchOne($sql); } elseif (isset($object)) { if (class_exists($object)) { $object = new $object(); if (method_exists($object, "getRecord")) { $res = $object->getRecord($id); } } } // вывод if ($format == "json") { $res = json_encode($res, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP); echo $res; return $res; } elseif ($format == "array") { return $res; } else { foreach ($res as $key => $value) { if ($format == "line") { echo "{$value}\n"; } else { echo "{$key}|{$value}\n"; } } return; } } }
public function showrec($rec) { extract($rec); $top = file_get_contents($this->getDir() . "/treb.tpl"); $middle = file_get_contents($this->getDir() . "/row.tpl"); $bot = file_get_contents($this->getDir() . "/bottom.tpl"); $buffer = $top; $buffer = str_replace("_nomer_", '', $buffer); $buffer = str_replace("_date_", date("d.m.Y", mktime(0, 0, 0, ceil(substr($ddate, 5, 2)), ceil(substr($ddate, 8, 2)), ceil(substr($ddate, 0, 4)))), $buffer); $buffer = str_replace("_cherezkogo_", multibyte::UTF_decode($cherezkogo), $buffer); $buffer = str_replace("_zatreb_", multibyte::UTF_decode($zatreb), $buffer); $buffer = str_replace("_razresh_", multibyte::UTF_decode($razresh), $buffer); //echo $buffer; foreach ($positions as $rs) { $buffer .= $middle; $buffer = str_replace("_nazv_", $rs["nazv"], $buffer); $buffer = str_replace("_edizm_", $rs["edizm"], $buffer); $buffer = str_replace("_otp_", $rs["quant"], $buffer); } $buffer .= $bot; $buffer = str_replace("_cherezkogo_", multibyte::UTF_decode($cherezkogo), $buffer); return $buffer; }
static public function savefile($filename, $content) { // записать файл $file = @fopen($filename, "w"); if ($file) { if (is_array($content)) { // если передали набор данных сохраним переменные в формате key|var foreach ($content as $key => $value) { // сохраним все переменные в файл txt, чтоб xls потом сам оттуда забрал // использем в качестве разделителя вертикальную черту, скорее всего её не будет в данных // если же, паче чаяния, она там окажется придется использовать тройную, скажем, и // переписывать скрипты в xls файле fwrite($file, sprintf("%s|%s\n",multibyte::utf8_to_cp1251($key),multibyte::utf8_to_cp1251(html_entity_decode($value)))); } } else { // иначе просто запишем текст fwrite($file, $content); } fclose($file); chmod($filename, 0777); return true; } else { return false; } }
public function storeFiles($files = false, $dir = '') { if ($files) { // файл если есть сохраним $curfile = array(); foreach ($files as $file) { if (!empty($file[size])) { $pathname = $_SERVER["DOCUMENT_ROOT"] . UPLOAD_FILES_DIR . "/" . multibyte::UTF_encode($dir); if (!file_exists($pathname)) { // содать каталог @mkdir($pathname, 0777); } $filename = $pathname . "/" . multibyte::UTF_encode($file["name"]); $i = 0; while (file_exists($filename)) { $i++; $filename = $pathname . "/{$i}_" . multibyte::UTF_encode($file["name"]); } if (@move_uploaded_file($file["tmp_name"], $filename)) { // переместилось удачно @chmod($filename, 0777); $filename = multibyte::UTF_decode($filename); $curfile[$this->getFileId($filename)] = 1; // сделаем структуру как уже существующие } else { return false; } } } return $curfile; } else { return array(); } }
/** * Сохраняет или обновляет данные о расчете цены в таблице orderformoney * @param array $rec * @return var */ public function moneyfororder($rec) { $rec = multibyte::cp1251_to_utf8($rec); extract($rec); $rec[hash] = hash('md5', $customer . $order . $board . $mater . $trud); $sql = "SELECT * FROM moneyfororder WHERE hash='{$rec[hash]}'"; $rs = sql::fetchOne($sql); if (!empty($rs)) { $rec[id] = $rs[id]; } //echo $sql; sql::insertUpdate("moneyfororder", array($rec)); return true; }
function checkboxes($name, $values, $value, $options = array()) { ob_start(); $value = $this->getValue($name, $value); $value = (@!is_array($value)) ? multibyte::Json_decode($value) : $value; list($optionsHTML, $options) = $this->parseOptions($options); list($block, $line) = $this->getBlock($options[nobr], $this->getId($name)); $options[nobr] = true; echo $block[begin]; if (is_array($values)) foreach ($values as $id => $label) { echo $line[begin]; $val = (@in_array($id, $value) || !empty($value[$id])) ? 1 : 0; echo $this->checkbox($name . "|" . $id, $label, $val, $options, true); echo $line[end]; } echo $block[end]; return ob_get_clean(); }
<?php require_once 'multibyte.inc'; $o = new multibyte(); $s = ""; $o->set_sjis(); $o->convert($s); $o->set_euc(); $o->convert($s); $o->set_jis(); $o->convert($s); $o->set_utf8(); $o->convert($s); $o->set_guess_string("Sjis"); print $o->get_charset_string() . "\n"; $o->set_guess_string("eUC"); print $o->get_charset_string() . "\n"; $o->set_guess_string("shift-jis"); print $o->get_charset_string() . "\n"; $o->set_guess_string("shift_jis"); print $o->get_charset_string() . "\n"; $o->set_guess_string("jis"); print $o->get_charset_string() . "\n"; $o->set_guess_string("utf-8"); print $o->get_charset_string() . "\n"; $o->set_guess_string("utf8"); $o->convert($s);
public function getSlMpp($rec) { extract($rec); // получить данные в переменные $sql = "SELECT\r\n blockname AS board_name,\r\n CONCAT(orders.number,CONCAT(' от ',CONCAT(DATE_FORMAT(orderdate,'%d.%m.%Y'),CONCAT(' - ',CONCAT(posintz.numbers,' шт.'))))) AS letter,\r\n fullname AS customerfullname,\r\n posintz.numbers AS numbers,\r\n drlname AS frezfile,\r\n scomp AS copperc,\r\n ssolder AS coppers,\r\n CONCAT(CEIL(blocks.sizex),CONCAT('x',CEIL(blocks.sizey))) AS sizez,\r\n priem,\r\n tz.id as tzid,\r\n blocks.id AS block_id,\r\n customers.id AS customer_id,\r\n blocks.comment_id AS comment_id1,\r\n posintz.comment_id AS comment_id2,\r\n posintz.posintz AS posintz\r\n\r\n FROM posintz\r\n JOIN (customers,blocks,tz,\r\n orders)\r\n ON (blocks.id=posintz.block_id\r\n AND customers.id=orders.customer_id\r\n AND posintz.tz_id=tz.id\r\n AND tz.order_id=orders.id\r\n )\r\n WHERE posintz.id='{$posid}'"; $rs = sql::fetchOne($sql); $rs = multibyte::UTF_encode($rs); $rec = array_merge($rec, $rs); extract($rs); $param = json_decode(multibyte::Unescape(sqltable_model::getComment($comment_id1)), true); if (empty($param)) { $param = array(); } // если коментарий не JSON или неправильный JSON $rec[customerfullname] = html_entity_decode($rec[customerfullname]); // кавычки в названии $rec = array_merge($rec, $param); $rec[mkrfile] = "{$rec[frezfile]}.{$param[filext]}"; $rec[comment1] = multibyte::UTF_encode($param["coment"]); $rec[comment2] = sqltable_model::getComment($comment_id2); $sql = "SELECT *, board_name AS boardname, sizex AS psizex,\r\n sizey AS psizey\r\n FROM blockpos\r\n JOIN (boards)\r\n ON (boards.id=blockpos.board_id)\r\n WHERE blockpos.block_id='{$block_id}'"; $res = sql::fetchOne($sql); extract($res); $platonblock = $res[nib]; $tolsh = $res[thickness]; $rec[sizep] = sprintf("%5.1fx%5.1f", $res[sizex], $res[sizey]); $mask = $res[mask]; $mark = $res[mark]; $rec = array_merge($rec, compact('platonblock', 'numlam', 'rmark', 'immer', 'mask', 'layers', 'mark', 'commentp')); if ($customer_id == '8') { // радар $zagotinparty = 1; } else { $zagotinparty = 5; } $rec[zagotinparty] = $zagotinparty; if ($dozap === true) { $zagotovokvsego = ceil($dozapnumbers / $platonblock); $zag = $zagotovokvsego; $ppart = $dozapnumbers; $numpl1 = $numbers = $dozapnumbers; $part = -2; //$party; } elseif ($dozap == "zadel") { $part = -1; $zagotovokvsego = ceil($dozapnumbers["use"] / $platonblock); $zag = $zagotovokvsego; $ppart = $dozapnumbers["use"]; $numpl1 = $numbers = $dozapnumbers["use"]; } else { // в дозапуске указано сколько запускать в реале $zagotovokvsego = ceil($dozap / $platonblock); // общее количество заготовок + 15% потом может быть $zag = $party * $zagotinparty >= $zagotovokvsego ? $zagotovokvsego - ($party - 1) * $zagotinparty : $zagotinparty; $ppart = ceil($zagotovokvsego / $zagotinparty) > 1 ? isset($last) ? $numbers - (ceil($numbers / $platonblock / $zagotinparty) - 1) * $platonblock * $zagotinparty . "({$numbers})" : $zag * $platonblock . "({$numbers})" : $numbers; } $rec[last] = ceil($zagotovokvsego / $zagotinparty) <= $party; // реорганизуем для запонения сл одной строчкой $rec[number] = sprintf("%08d", $lanch_id); $platonblock = $zagotovokvsego * $platonblock; $rec[numonzag] = "{$rec[platonblock]} ({$platonblock})"; $rec[znumbers] = "{$zag} ({$zagotovokvsego})"; $rec[marktype] = stristr($rec[mark], multibyte::UTF_encode('PR')) ? multibyte::UTF_encode('Маркировка на PRINTARе') : multibyte::UTF_encode('Фотомаркировка'); $rec[phm1] = strstr($rec[mark], '1') || strstr($rec[mark], '2') ? "+" : "-"; $rec[phm2] = strstr($rec[mark], '2') ? "+" : "-"; $rec[rmark] = $rec[rmark] == '1' ? "+" : "-"; $rec[sizex] = ceil($rec[sizex]); $rec[sizey] = ceil($rec[sizey]); $rec[dataz] = date("d.m.Y"); $rec[tolsh] = $tolsh; $rec[spm] = strstr($rec[mask], multibyte::UTF_encode('КМ')) ? "+" : "-"; $rec[zhpm] = strstr($rec[mask], multibyte::UTF_encode('ЖМ')) ? "+" : "-"; $rec[immer] = $rec[immer] == '1' ? "+" : "-"; $rec[priempz] = strstr($priem, multibyte::UTF_encode('ПЗ')) ? "+" : "-"; $rec[priemotk] = '+'; // всегда $rec[copperc] = sprintf("%3.2f", $rec[copperc] / 10000); $rec[coppers] = sprintf("%3.2f", $rec[coppers] / 10000); $rec[lamel] = $rec[numlam] > 0 ? "+" : "-"; // прокоментируем сопроводительный лист $rec[dozapcoment] = $rec[dozap] === true ? multibyte::UTF_encode('ДОЗАПУСК') : ($rec[dozap] == "zadel" ? multibyte::UTF_encode('ИЗ ЗАДЕЛА') : ''); $rec[comment] = $rec[comment1] . " " . $rec[comment2] . " " . $rec[dozapcoment]; $rec = array_merge($rec, compact('ppart', 'part', 'zagotovokvsego', 'zag')); return $rec; }
public function getDataForCalc($id) { $rec = array(); $sql = "SELECT *,CONCAT (number,' от ',DATE_FORMAT(orderdate,'%d.%m.%Y')) as letter, " . "boards.sizex/100.0 as psizex, " . "boards.sizey/100.0 as psizey, " . "blocks.sizex/100.0 as bsizex, " . "blocks.sizey/100.0 as bsizey, " . "immer*auarea as gold, " . "CONCAT(numlam,' ',lsizex,'x',lsizey) as lamel, " . "blocks.comment_id as bcid " . "FROM posintz JOIN (tz,orders,customers,blocks,blockpos,boards) " . "ON (posintz.tz_id=tz.id " . "AND tz.order_id=orders.id " . "AND posintz.block_id=blocks.id " . "AND orders.customer_id=customers.id " . "AND blockpos.block_id=blocks.id " . "AND blockpos.board_id=boards.id ) " . "WHERE posintz.id='{$id}'"; $rec = sql::fetchOne($sql); $params = json_decode(multibyte::Unescape(sqltable_model::getComment($rec["bcid"])), true); //получим текщий комент из блока $rec[eltest] = $params[eltest]; $rec[etpib] = $params[etpib]; $rec[etpoints] = $params[etpoints]; $rec[etcompl] = $params[etcompl]; $rec[thickness] = (double) $rec[thickness]; $rec[type] = $rec[layers] > 2 ? 'mpp' : 'dpp'; $rec[template] = "r{$rec[type]}.xls"; preg_match('/(?P<nummask>[+0-9]*)(?P<mask>.*)/i', $rec[mask], $matches); $rec[mask] = $matches[mask]; $rec[nummask] = empty($matches[nummask]) ? 2 : $matches[nummask]; $rec[frez_factor] = $rec[frez_factor] > 0 ? $rec[frez_factor] : 1.0; $orderstring = fileserver::removeOSsimbols($rec[letter] . " tz{$rec[tz_id]} posintz{$id}"); $rec[filename] = "t:\\\\Расчет стоимости плат\\\\{$rec[customer]}\\\\{$rec[blockname]}\\\\{$orderstring}.xls"; return $rec; }
public function action_addfilelink() { $edit = new ajaxform_edit($this->getName()); $edit->restore(); $filename = multibyte::UTF_decode($_REQUEST[filename]); $id = $this->model->getFileId($filename); $values[$id] = basename($this->model->getFileNameById($id)); $value[$id] = 1; $field = array("type" => AJAXFORM_TYPE_CHECKBOXES, "name" => "linkfile", "label" => '', "value" => $value, "values" => $values); $edit->addFieldAsArray($field); $edit->form->SessionSet(); $out = $edit->getFieldOut($edit->fields[$field[name]]); return $out; }
public function setRecord($data) { extract($data); // в скрытых параметрах формы есть идентификатор коментария, заберем текущий и заменим в нем собственно коментарий $param = json_decode(multibyte::Unescape($this->getComment($comment_id)), true); $param["class"] = $data["class"]; $param[basemat] = $data["basemat"]; $param[sttkan] = $data["sttkan"]; $param[sttkankl] = $data["sttkankl"]; $param[sttkanrasp] = $data["sttkanrasp"]; $param[rtolsh] = $data["rtolsh"]; $param[filext] = $data["filext"]; $param[elkon] = $data["elkon"]; for ($i = 1; $i < 11; $i++) { $param["sl{$i}"] = $data["sl{$i}"]; $param["pr{$i}"] = $data["pr{$i}"]; $param["mat{$i}"] = $data["mat{$i}"]; } $param["coment"] = $comment; $data["comment_id"] = $this->getCommentId(multibyte::Json_encode(multibyte::recursiveEscape($param))); return parent::setRecord($data); }
public function getJson($data) { //header("CONTENT-TYPE: TEXT/X-JSON; CHARSET={$_SERVER[Encoding]}"); header("CONTENT-TYPE: APPLICATION/JSON; CHARSET={$_SERVER[Encoding]}"); echo multibyte::Json_encode($data, true); }