function yml_init() { infra_require('*cart/catalog.inc.php'); $data = cat_init(); xls_runGroups($data, function (&$group, $i, &$parent) { $group['data'] = array_filter($group['data'], function (&$pos) { //Убираем позиции у которых не указана цена if ($pos['Синхронизация'] != 'Да') { return false; } if (!$pos['Цена']) { return false; } return true; }); $group['data'] = array_values($group['data']); }); xls_runGroups($data, function (&$group, $i, &$parent) { if ($group['childs']) { $group['childs'] = array_filter($group['childs'], function (&$g) { if (!$g['data'] && !$g['childs']) { return false; } return true; }); $group['childs'] = array_values($group['childs']); } }, array(), true); xls_runPoss($data, function (&$pos) { $conf = infra_config(); xls_preparePosFiles($pos, $conf['cart']['dir'], array('Производитель', 'article')); foreach ($pos['images'] as $k => $v) { $src = $pos['images'][$k]; $p = explode('/', $src); foreach ($p as $i => $n) { $p[$i] = urlencode($n); $p[$i] = preg_replace('/\\+/', '%20', $p[$i]); } $pos['images'][$k] = implode('/', $p); } }); return yml_parse($data); }
$gray = isset($_GET['gray']); $args = array($src, $ignoremark, $mark, $default, $getorig, $w, $h, $crop, $top, $gray); $data = infra_cache(array($isrc), 'imager.php', function ($src, $ignoremark, $mark, $default, $getorig, $w, $h, $crop, $top, $gray, $re) use($isrc) { $p1 = infra_srcinfo($isrc); //Нужна папка со звёздочкой $p = infra_srcinfo($src); if (in_array($p['ext'], array('docx', 'mht'))) { die("docx, mht TODO"); /* TODO: Смотрим подключён ли плагин files для того чтобы достать картинку и файла */ if (!infra_theme('*files/files.inc.php')) { $default = true; $src = infra_theme('*imager/noimage.png'); } else { infra_require('*files/files.inc.php'); if ($re) { $re = '&re'; } else { $re = ''; } if ($p['ext'] == 'docx') { $p = files_get(infra_toutf($p1['folder']), infra_toutf($p['id'])); if (!$p['images'][0]) { $default = true; $src = infra_theme('*imager/noimage.png'); //header('HTTP/1.1 404 Not Found'); //return; } else { $src = $p['images'][0]['src']; }
<?php namespace itlife\user; infra_require('*session/session.php'); class User { public static function is($group = false) { $email = infra_session_getEmail(); if (!$email) { return false; } $verify = infra_session_getVerify(); if (!$verify) { return false; } $conf = infra_config(); infra_cache_no(); if (!$group) { return true; } if (empty($conf['user'][$group])) { return false; } return in_array($email, $conf['user'][$group]); } public static function isAdmin() { return self::is('admin'); }
<?php infra_require('*seo/seo.inc.php'); $type = infra_toutf(@$_REQUEST['type']); $id = infra_toutf(@$_REQUEST['id']); $submit = (bool) @$_REQUEST['submit']; $layers = infra_toutf(urldecode(@$_REQUEST['layers'])); @set_time_limit(300); //может быть отключена на хостинге $ans = array('result' => 0, 'id' => $id, 'type' => $type); if ($type == 'item') { $ans = infra_admin_cache('seoitemopt', function ($id) { $ans['result'] = 1; $p = explode('|', $id); $name = array_shift($p); $link = implode('|', $p); $seo = infrajs_seo_getSeo($name); if (isset($seo['all'][$link])) { $item = $seo['all'][$link]; } else { $item = array(); } $ans['item'] = $item; return $ans; }, array($id)); return infra_echo($ans); } else { if ($type == 'sitemap') { $html = infra_admin_cache('sitemap', function () { $data = array(); $all = array();
//Создаём объект с вложенными группами root->book->sheet данные на страницах ещё не изменялись, //но сгрупировались //descr - всё что до head //head - первая строка в которой больше 2х заполненых ячеек //data - всё что после head xls_processDescr($data);//descr приводится к виду ключ значение xls_run($data,function($group){//Бежим по всем группам unset($group['parent']);//Удалили рекурсивное свойсто parent for($i=0,$l=sizeof($group['data']);$i<$l;$i++){ $pos=$group['data'][$i]; unset($pos['group']);//Удалили рекурсивное свойсто group } }); $data=xls_init(path,conf) */ infra_require('*infra/ext/seq.php'); /*var pathlib=require('path'); var util=require('util'); var csv=require('node-csv'); var crypto=require('crypto'); var fs=require('fs'); csv=csv.createParser(',','"','"');*/ function &xls_parseTable($path, $list) { $data = xls_parse($path, $list); } function &xls_parseAll($path) { $data = infra_cache(array($path), 'xls_parseAll', function &($path) { $file = infra_theme($path); $data = array();
<?php /* Copyright 2008-2011 ITLife, Ltd. Togliatti, Samara Oblast, Russian Federation. http://itlife-studio.ru */ infra_require('*imager/imager.inc.php'); infra_admin(true); if (!function_exists('runfolder')) { function runfolder($dir, $f = 1, $d = 0, $sub = false, $exts = false, &$filelist = array(), $pre = '') { if (is_dir($dir) && ($dh = opendir($dir))) { while (($file = readdir($dh)) !== false) { if ($file[0] == '.') { continue; } if ($file == 'vendor') { continue; } if ($file[0] == '~') { continue; } $path = $dir . $file; if (is_file($path) && $exts) { preg_match('/\\.(\\w{0,4})$/', $file, $math); //Расширение при поиске не учитываем $ext = strtolower($math[1]); if (!in_array($ext, $exts)) { continue; } } //$count++;
<?php namespace itlife\catalog; use itlife\files\Xlsx; infra_require('*catalog/Extend.php'); class Catalog { public static $md = array("count" => 10, "reverse" => false, "sort" => false, "producer" => array(), "group" => array(), "search" => false, "more" => array(), "cost" => array()); public static function init() { return self::cache('cat_init', function () { $conf = infra_config(); $columns = array_merge(array("Наименование", "Артикул", "Производитель", "Цена", "Описание"), $conf['catalog']['columns']); $data =& Xlsx::init($conf['catalog']['dir'], array('more' => true, 'Имя файла' => $conf['catalog']['filename'], 'Известные колонки' => $columns)); Xlsx::runGroups($data, function (&$gr) { $gr['data'] = array_reverse($gr['data']); // Возвращает массив с элементами в обратном порядке }); Extend::init($data); return $data; }); } public static function getProducer($producer) { return Catalog::cache('getProducer', function &($producer) { $data = Catalog::init(); $pos = Xlsx::runPoss($data, function &($pos) use($producer) { if ($pos['producer'] == $producer) { return $pos; }