private function __construct($mark) { $this->warrantytime = 60 * 60 * 24 * 60; //60 дней $mark = preg_replace("/:(.+)::\\./U", ":\$1::\$1.", $mark); $r = explode($this->sym, $mark); $this->mark = array_shift($r); if ($this->mark != '') { $data = infra_mem_get($this->prefix . $this->mark); if (!$data || !is_array($data['data'])) { $this->mark = ''; } else { if (!$data['time']) { $data['time'] = time(); } $this->isold = true; $this->isoutdate = time() > $data['time'] + $this->warrantytime; $this->old = $data['data']; } } $this->data = $this->old; $add = implode($this->sym, $r); if ($add !== '') { $r = explode($this->sym, $add); $l = sizeof($r); if ($l % 2) { $l++; $r[] = ''; } for ($i = 0; $i < $l; $i = $i + 2) { if (!$r[$i]) { continue; } infra_seq_set($this->data, infra_seq_right($r[$i]), $r[$i + 1]); } } }
public static function addFiles(&$pos, $dir = false) { $conf = infra_config(); $props = array('producer', 'article'); if (!isset($pos['images'])) { $pos['images'] = array(); } if (!isset($pos['texts'])) { $pos['texts'] = array(); } if (!isset($pos['files'])) { $pos['files'] = array(); } if (!$dir) { $dir = array(); $pth = $conf['catalog']['dir']; if (infra_forr($props, function &($name) use(&$dir, &$pos) { $rname = infra_seq_right($name); $val = infra_seq_get($pos, $rname); if (!$val) { return true; } $dir[] = $val; $r = null; return $r; })) { return; } if ($dir) { $dir = implode('/', $dir) . '/'; $dir = $pth . $dir; } else { $dir = $pth; } } $dir = infra_theme($dir); if (!$dir) { return false; } if (is_dir($dir)) { $paths = glob($dir . '*'); } elseif (is_file($dir)) { $paths = array($dir); $p = infra_srcinfo($dir); $dir = $p['folder']; } infra_forr($paths, function &($p) use(&$pos, $dir) { $d = explode('/', $p); $name = array_pop($d); $n = infra_strtolower($name); $fd = infra_nameinfo($n); $ext = $fd['ext']; //if(!$ext)return; if (!is_file($dir . $name)) { return; } //$name=preg_replace('/\.\w{0,4}$/','',$name); /*$p=pathinfo($p); $name=$p['basename']; $ext=strtolower($p['extension']);*/ $dirs = infra_dirs(); $dir = preg_replace('/^' . str_replace('/', '\\/', $dirs['data']) . '/', '*', $dir); $name = infra_toutf($dir . $name); if ($name[0] == '.') { return; } $im = array('png', 'gif', 'jpg'); $te = array('html', 'tpl', 'mht', 'docx'); if (infra_forr($im, function ($e) use($ext) { if ($ext == $e) { return true; } })) { $pos['images'][] = $name; } elseif (infra_forr($te, function ($e) use($ext) { if ($ext == $e) { return true; } })) { $pos['texts'][] = $name; } else { if ($ext != 'db') { $pos['files'][] = $name; } } $r = null; return $r; }); $pos['images'] = array_unique($pos['images']); $pos['texts'] = array_unique($pos['texts']); $pos['files'] = array_unique($pos['files']); }
private function __construct($mark) { $this->warrantytime = 60 * 60 * 24 * 60; //60 дней $mark = preg_replace("/:(.+)::\\./U", ":\$1::\$1.", $mark); $r = explode($this->sym, $mark); $this->mark = array_shift($r); if ($this->mark != '') { $src = infra_theme('~.marks/' . $this->prefix . $this->mark . '.json'); if ($src) { $data = file_get_contents($src); $data = infra_json_decode($data); } else { $data = false; } //$data=infra_mem_get($this->prefix.$this->mark); if (!$data || !is_array($data['data'])) { $this->mark = ''; } else { if (!$data['time']) { $data['time'] = time(); } $this->isold = true; $this->isoutdate = time() > $data['time'] + $this->warrantytime; $this->old = $data['data']; } } $this->data = $this->old; $add = implode($this->sym, $r); if ($add !== '') { $r = explode($this->sym, $add); $l = sizeof($r); if ($this->sym == $this->symeq) { if ($l % 2) { $l++; $r[] = ''; } for ($i = 0; $i < $l; $i = $i + 2) { if (!$r[$i]) { continue; } infra_seq_set($this->data, infra_seq_right($r[$i]), $r[$i + 1]); } } else { for ($i = 0; $i < $l; $i = $i + 1) { if (!$r[$i]) { continue; } $rr = explode($this->symeq, $r[$i], 2); if (!$rr[0]) { continue; } infra_seq_set($this->data, infra_seq_right($rr[0]), $rr[1]); } } } }
public static function initMark(&$ans = array()) { //Нельзя добавлять в скрипте к метке новые значения. так как метка приходит во многие скрипты и везде должен получится один результат и все должны получить одинаковую новую метку содержающую изменения $mark = infra_toutf(infra_seq_get($_GET, infra_seq_right('m'))); $mark = Mark::getInstance($mark); $md = $mark->getData(); $conf = infra_config(); $defmd = array_merge(Catalog::$md, $conf['catalog']['md']); $admit = array_keys($defmd); $md = array_intersect_key($md, array_flip($admit)); Catalog::markData($md); $ans['m'] = $mark->setData($md); $md = array_merge($defmd, $md); $ans['md'] = $md; return $md; }