/** * Функция удаляет резервные копии, превысившие лимит * * @param int $dicval_id * @return bool */ private function delete_backups($dicval_id = 0) { /** * Находим запись словаря для удаления ее бэкапов * Запись должна быть оригиналом, т.е. иметь version_of = NULL */ $element = DicVal::where('id', $dicval_id)->with('dic', 'metas', 'allfields', 'seos', 'versions')->first(); if (!isset($element) || !is_object($element) || $element->version_of != NULL) { return false; } #Helper::tad($element); $dic = $element->dic; $versions = Config::get('dic/' . $dic->slug . '.versions'); $element_versions = $element->versions; $result = true; if (count($element_versions) > 0 && count($element_versions) >= $versions) { /** * Вычисляем ID записей, подлежащих удалению */ $for_delete = $element_versions->lists('id'); krsort($for_delete); $for_delete = array_slice($for_delete, 0, count($element_versions) - $versions); #Helper::dd($for_delete); if (count($for_delete)) { $result = false; /** * Открываем транзакцию */ DB::transaction(function () use($element, $for_delete, $result) { /** * Удаляем старые резервные копии и их доп. поля, META и SEO-данные */ DicFieldVal::whereIn('dicval_id', $for_delete)->delete(); DicValMeta::whereIn('dicval_id', $for_delete)->delete(); if (Allow::module('seo')) { Seo::where('module', 'DicVal')->whereIn('unit_id', $for_delete)->delete(); } $deleted = DicVal::where('version_of', $element->id)->whereIn('id', $for_delete)->delete(); #Helper::d($deleted); #Helper::dd($for_delete); if ($deleted) { $result = true; } }); } } return $result; }
/** * Функция удаляет резервные копии, превысившие лимит * * @param int $page_id * * @return bool */ private function delete_backups($page_id = 0) { /** * Находим запись для удаления ее бэкапов * Запись должна быть оригиналом, т.е. иметь version_of = NULL */ $element = $this->essence->where('id', $page_id)->with(['metas', 'blocks.metas', 'seos', 'versions'])->first(); if (!isset($element) || !is_object($element) || $element->version_of != NULL) { return FALSE; } #Helper::tad($element); $versions = Config::get('pages.versions'); $element_versions = $element->versions; $result = TRUE; if (count($element_versions) > 0 && count($element_versions) >= $versions) { /** * Вычисляем ID записей, подлежащих удалению */ $for_delete = $element_versions->lists('id'); krsort($for_delete); $for_delete = array_slice($for_delete, 0, count($element_versions) - $versions); #Helper::dd($for_delete); if (count($for_delete)) { $result = FALSE; /** * Открываем транзакцию */ DB::transaction(function () use($element, $for_delete, $result) { /** * Удаляем старые резервные копии и META данные, блоки (и их META данные) и SEO-данные */ $this->pages_meta->whereIn('page_id', $for_delete)->delete(); $element_blocks = $this->pages_blocks->whereIn('page_id', $for_delete)->get(); if (isset($element_blocks) && count($element_blocks)) { $element_blocks_ids = $element_blocks->lists('id'); $element_blocks_metas = $this->pages_blocks_meta->whereIn('block_id', $element_blocks_ids)->delete(); } $this->pages_blocks->whereIn('page_id', $for_delete)->delete(); if (Allow::module('seo')) { Seo::where('module', 'Page')->whereIn('unit_id', $for_delete)->delete(); } $deleted = $this->essence->where('version_of', $element->id)->whereIn('id', $for_delete)->delete(); #Helper::d($deleted); #Helper::dd($for_delete); if ($deleted) { $result = TRUE; } }); } } return $result; }
private function getRightPageUrl($parameters = array()) { if (!$parameters) { return false; } $return_mode = 1; ## Get page slug... if (is_string($parameters)) { $return_mode = 1; $url = $parameters; } elseif (is_array($parameters)) { if (isset($parameters['url'])) { $return_mode = 2; $url = $parameters['url']; } else { $return_mode = 3; ## First param is slug foreach ($parameters as $p => $param) { $url = $param; break; } } } #Helper::dd("Page->getRightPageUrl() -> url = " . $url); $return = $parameters; $locales = Config::get('locales'); $locale = Config::get('locale'); $default_locale = Config::get('default_locale'); $page = $this->page->where('publication', 1); ## Search slug in SEO URL $page_seo = Seo::where('module', 'Page')->where('url', $url)->first(); #Helper::tad($page_meta_seo); ## If page not found by slug in SEO URL... if (is_object($page_seo) && is_numeric($page_seo->unit_id)) { $page = $this->page->where('id', $page_seo->unit_id)->with(array('meta' => function ($query) use($locales, $default_locale) { #if (@is_array($locales) && count($locales) > 1) { $query->where('language', $default_locale); #} }))->with('seo'); /* ->with(array('page' => function($query) use ($locales, $default_locale) { $query->with(array('meta' => function($query) use ($locales, $default_locale) { if (@is_array($locales) && count($locales) > 1) { $query->where('language', $default_locale); } $query->with('seo'); })); })); */ $page = $page->first(); #Helper::ta($page); } else { ## Search slug in PAGE SLUG $page = $this->page->where('slug', $url)->with(array('meta' => function ($query) use($locales, $default_locale) { #if (@is_array($locales) && count($locales) > 1) { #$query->where('language', $default_locale); #} #$query->with('seo'); }))->with('seo')->first(); #Helper::ta($page); } ## Compare SEO url & gettin' $url if (@is_object($page) && @is_object($page->seo) && $page->seo->url != '' && $page->seo->url != $url) { $return_url = $page->seo->url; switch ($return_mode) { case 1: $return = $return_url; break; case 2: $return['url'] = $return_url; break; case 3: foreach ($return as $r => $ret) { $return[$r] = $return_url; break; } break; } #$redirect = URL::route('page', array('url' => $page->meta->seo->url)); #Helper::dd($redirect); #return Redirect::to($redirect, 301); } #Helper::dd($url . ' -> ' . $return); return $return; }
public function showFullNews($url = false) { if (!Allow::module($this->module['group'])) { App::abort(404); } if (!@$url) { $url = Input::get('url'); } else { $url = (int) $url; } $news = $this->news->where('publication', 1); ## News by ID if (is_numeric($url)) { $slug = false; $news = $news->where('id', $url); $news = $news->with('meta.seo', 'meta.photo', 'meta.gallery.photos')->first(); if (@is_object($news)) { if (@is_object($news->meta) && @is_object($news->meta->seo)) { $slug = $news->meta->seo->url; } else { $slug = $news->slug; } #$slug = false; #Helper::dd($slug); if ($slug) { $redirect = URL::route('news_full', array('url' => $slug)); #Helper::dd($redirect); return Redirect::to($redirect, 301); } } } else { ## News by SLUG ## Search slug in SEO URL $news_meta_seo = Seo::where('module', 'news_meta')->where('url', $url)->first(); #Helper::tad($news_meta_seo); if (is_object($news_meta_seo) && is_numeric($news_meta_seo->unit_id)) { $news = $this->news_meta->where('id', $news_meta_seo->unit_id)->with(array('news' => function ($query) { $query->with('meta.seo', 'meta.photo', 'meta.gallery.photos'); }))->first()->news; #Helper::tad($news); } else { ## Search slug in SLUG $news = $this->news->where('slug', $url)->with('meta.seo', 'meta.photo', 'meta.gallery.photos')->first(); ## Check SEO url & gettin' $url ## and make 301 redirect if need it if (@is_object($news->meta) && @is_object($news->meta->seo) && $news->meta->seo->url != '' && $news->meta->seo->url != $url) { $redirect = URL::route('news_full', array('url' => $news->meta->seo->url)); #Helper::dd($redirect); return Redirect::to($redirect, 301); } } } #Helper::tad($news->template); if (!@is_object($news) || !@is_object($news->meta)) { App::abort(404); } if (!$news->template) { $news->template = 'default'; } #Helper::tad($news); if (empty($news->template) || !View::exists($this->module['gtpl'] . $news->template)) { throw new Exception('Template [' . $this->module['gtpl'] . $news->template . '] not found.'); } return View::make($this->module['gtpl'] . $news->template, compact('news')); }