Example #1
0
             				'item'=>@$def['item']
             			);
             		}*/
         }
     }
 } else {
     if ($type == 'additem') {
         if (!$submit) {
             $seo = infrajs_seo_getSeo($id);
             unset($seo['items']);
             $ans['seo'] = $seo;
         } else {
             $name = $id;
             $seo = infrajs_seo_getSeo($name);
             $itemdata = $_REQUEST['itemdata'];
             $data = infra_json_decode($itemdata);
             $link = infra_template_parse(array($seo['link']), $data);
             $item = array('data' => $data);
             $r = false;
             foreach ($seo['items'] as $k => $i) {
                 if ($i['link'] == $link) {
                     $r = true;
                     $ans['msg'] = 'Cтраница "' . $link . '" уже есть в списке';
                     break;
                 }
             }
             if (!$r) {
                 $seo['items'][] = $item;
                 $ans['msg'] = 'Страница ' . $link . ' добавлена в список';
                 infrajs_seo_saveitem($name, $item);
             }
Example #2
0
 private function makeMark($data)
 {
     if (!$data) {
         return '';
     }
     self::rksort($data);
     $key = md5(serialize($data));
     $that = $this;
     $mark = infra_once($this->prefix . $key, function () use($data, $that, $key) {
         $isoutdate = true;
         $raise = $this->raise;
         //На сколько символов разрешено увеличивать хэш
         $note = $this->note;
         //При увеличении на сколько записывается сообщение в лог
         $len = $this->len - 1;
         while ($isoutdate && $len < $this->len + $raise) {
             $len++;
             $mark = substr($key, 0, $len);
             $src = infra_theme('~.marks/' . $that->prefix . $mark . '.json');
             if ($src) {
                 $otherdata = file_get_contents($src);
                 $otherdata = infra_json_decode($otherdata);
             } else {
                 $otherdata = false;
             }
             //$otherdata=infra_mem_get($that->prefix.$mark);
             if ($otherdata && is_array($otherdata['data']) && $otherdata['time']) {
                 if ($otherdata['data'] == $data) {
                     $isoutdate = false;
                     //Такая метка уже есть и она правильная
                 } else {
                     //Решается судьба старой метки
                     $isoutdate = time() > $data['time'] + $this->warrantytime;
                 }
             } else {
                 $isoutdate = false;
             }
         }
         if ($len >= $this->len + $note) {
             $that->notice = 'Mark adding to hash ' . ($len - $this->len) . ' symbol(s) for save time warranty ' . print_r($data, true);
             error_log($that->notice);
         }
         if ($isoutdate) {
             //Все метки актуальны... перезаписываем первую
             $that->error = 'Mark rewrite actual hashmark';
             error_log($that->error);
             $mark = substr($key, 0, $this->len);
         }
         $src = infra_theme('~.marks/');
         if (!$src) {
             die('Fatal error no marks dir');
         }
         $src = $src . $this->prefix . $mark . '.json';
         $data = infra_json_encode(array('time' => time(), 'data' => $data));
         $data = file_put_contents($src, $data);
         //infra_mem_set($that->prefix.$mark, array(
         //	'time'=>time(),
         //	'data'=>$data
         //));
         return $mark;
     });
     return $mark;
 }