'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); }
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; }