/**
  * Функция сохраняет текущее состояние записи,
  * восстанавливает состояние записи из резервной копии
  * и удаляет все резервные копии, превысившие лимит
  *
  * @param $id
  *
  * @return string
  * @throws Exception
  */
 public function restore($id)
 {
     /**
      * Находим запись резервной копии для восстановления
      */
     $version = $this->essence->where('id', $id)->with(['metas', 'blocks.metas', 'seos'])->first();
     if (!isset($version) || !is_object($version) || $version->version_of == NULL) {
         return Redirect::to(URL::previous());
     }
     #Helper::tad($version);
     /**
      * Находим запись оригинала
      */
     $element = $this->essence->where('id', $version->version_of)->with(['metas', 'blocks.metas', 'seos', 'versions'])->first();
     if (!isset($element) || !is_object($element) || $element->version_of != NULL) {
         return Redirect::to(URL::previous());
     }
     #Helper::ta($version);
     #Helper::ta($element);
     #dd();
     #Helper::ta($element->versions);
     /**
      * Создаем резервную копию оригинальной записи
      */
     $create_backup_result = $this->create_backup($version->version_of, FALSE);
     if (!$create_backup_result) {
         throw new Exception("Can't create backup of original record");
     }
     #Helper::tad($element->versions);
     /**
      * Восстанавливаем содержимое записи из резервной копии
      */
     $restore_backup_result = $this->restore_backup($version->id);
     if (!$restore_backup_result) {
         throw new Exception("Can't restore backup of original record");
     }
     /**
      * Удаляем старые резервные копии (если их больше лимита)
      */
     $delete_backup_result = $this->delete_backups($element->id);
     if (!$delete_backup_result) {
         throw new Exception("Can't delete over backups of original record");
     }
     #Helper::dd((int)$create_backup_result . ' / ' . (int)$restore_backup_result . ' / ' . (int)$delete_backup_result);
     $url = action('page.edit', array('id' => $element->id)) . (Request::getQueryString() ? '?' . Request::getQueryString() : '');
     #Helper::d($element);
     #Helper::dd($url);
     ## Clear & reload pages cache
     Page::drop_cache();
     Page::preload();
     #return Redirect::to($url);
     Redirect($url);
     return '';
 }