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); }
/** * Возвращает записи из словаря по системному имени словаря и набору 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; }