public function postAjaxCheckDicvalSlugUnique()
 {
     $input = Input::all();
     #Helper::dd(Input::all());
     $json_request = array('status' => FALSE, 'responseText' => '');
     $dic_id = Input::get('_dic_id');
     $dic = Dic::find($dic_id);
     /**
      * Если словарь не найден - сообщаем об ошибке
      */
     if (!is_object($dic)) {
         $json_request['responseText'] = 'Вы пытаетесь добавить запись в несуществующую сущность';
         return Response::json($json_request, 200);
     }
     $id = Input::get('_id');
     $slug = trim(Input::get('slug'));
     $name = Input::get('name');
     $element = new DicVal();
     if ($id) {
         $element = DicVal::find($id);
     }
     if (!is_object($element)) {
         $element = new DicVal();
     }
     switch ((int) $dic->make_slug_from_name) {
         case 1:
             $input['slug'] = Helper::translit($input['name']);
             break;
         case 2:
             if (!$dic->hide_slug && !@$input['slug']) {
                 $input['slug'] = Helper::translit($input['name']);
             }
             break;
         case 3:
             if ($dic->hide_slug && $element->slug == '') {
                 $input['slug'] = Helper::translit($input['name']);
             }
             break;
         case 4:
             $input['slug'] = Helper::translit($input['name'], false);
             break;
         case 5:
             if (!$dic->hide_slug && !@$input['slug']) {
                 $input['slug'] = Helper::translit($input['name'], false);
             }
             break;
         case 6:
             if ($dic->hide_slug && $element->slug == '') {
                 $input['slug'] = Helper::translit($input['name'], false);
             }
             break;
         case 7:
             $input['slug'] = $input['name'];
             break;
         case 8:
             if (!$dic->hide_slug && !@$input['slug']) {
                 $input['slug'] = $input['name'];
             }
             break;
         case 9:
             if ($dic->hide_slug && $element->slug == '') {
                 $input['slug'] = $input['name'];
             }
             break;
     }
     $new_slug = $input['slug'];
     $json_request['new_slug'] = $new_slug;
     #Helper::d($new_slug);
     #Helper::tad($input);
     /**
      * Ищем записи в текущем словаре с новым системным именем
      */
     $dicval = DicVal::where('slug', $new_slug)->where('dic_id', $dic_id);
     /**
      * Если мы редактируем существующую запись - исключаем ее ID из проверки
      */
     if ($element->id) {
         $dicval = $dicval->where('id', '!=', $element->id);
     }
     $dicval = $dicval->first();
     #Helper::ta($dicval);
     if (is_object($dicval)) {
         $json_request['responseText'] = 'Запись с таким системным именем уже существует';
         $json_request['also_exists'] = $dicval->id;
     } else {
         $json_request['status'] = TRUE;
     }
     return Response::json($json_request, 200);
 }
Esempio n. 2
0
 /**
  * Возвращает записи из словаря по системному имени словаря и набору IDs нужных записей.
  * Третьим параметром можно передать метку, указывающую на необходимость сделать экстракт каждой записи.
  *
  * @param $slug
  * @param $val_ids
  * @param string $with
  * @param bool $extract
  * @param bool $unset
  * @return $this|Collection|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|null|static
  */
 public static function valuesBySlugAndIds($slug, $val_ids, $with = 'all', $extract = true, $unset = true, $extract_ids = false)
 {
     $return = new Collection();
     #$dic = Dic::where('slug', $slug)->first();
     #$dic = @Config::get(self::$cache_key)['by_slug'][$slug];
     $dic = Dic::by_slug($slug);
     if (!is_object($dic) || !is_array($val_ids) || !count($val_ids)) {
         return $return;
     }
     $values = DicVal::where('dic_id', $dic->id)->where('version_of', NULL)->whereIn('id', $val_ids);
     if ($with == 'all') {
         $with = ['meta', 'fields', 'textfields', 'seo', 'related_dicvals'];
     } else {
         $with = (array) $with;
     }
     $db_remember_timeout = Config::get('app.settings.main.db_remember_timeout');
     if (count($with)) {
         ##
         ## Cache relations
         ##
         if (NULL != $db_remember_timeout && is_numeric($db_remember_timeout) && $db_remember_timeout > 0) {
             $temp = [];
             foreach ($with as $relation) {
                 $temp[$relation] = function ($query) use($db_remember_timeout) {
                     $query->remember($db_remember_timeout);
                 };
             }
             $with = $temp;
         }
         $values = $values->with($with);
     }
     ##
     ## Cache query
     ##
     if (NULL != $db_remember_timeout && is_numeric($db_remember_timeout) && $db_remember_timeout > 0) {
         $values->remember($db_remember_timeout);
     }
     $values = $values->get();
     #Helper::tad($values);
     if ($extract) {
         $values = DicLib::extracts($values, null, $unset, $extract_ids);
     }
     #Helper::tad($values);
     return $values;
 }