Example #1
0
 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]);
         }
     }
 }
Example #2
0
 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']);
 }
Example #3
0
 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]);
             }
         }
     }
 }
Example #4
0
 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;
 }