public function destroy($dic_id, $id, $check_ajax = true) { if ($check_ajax && !Request::ajax()) { App::abort(404); } $dic = Dictionary::where(is_numeric($dic_id) ? 'id' : 'slug', $dic_id)->first(); if (!$this->checkDicPermission($dic)) { App::abort(404); } $this->dicval_permission($dic, 'dicval_delete'); $json_request = array('status' => FALSE, 'responseText' => ''); $element = DicVal::where('id', $id)->with('allfields', 'alltextfields', 'metas', 'seos', 'related_dicvals')->first(); $this->callHook('before_all', $dic); $this->callHook('before_destroy', $dic, $element); if (is_object($element)) { #Helper::dd("UPDATE " . (new DicVal())->getTable() . " SET lft = lft - 1, rgt = rgt - 1 WHERE dic_id = '" . $element->dic_id . "' AND lft > " . $element->rgt . ""); #Helper::tad($element); if (@count($element->allfields)) { #foreach ($element->allfields as $el) # $el->delete(); $temp_ids = Dic::makeLists($element->allfields, false, 'id'); DicFieldVal::whereIn('id', $temp_ids)->delete(); } if (@count($element->alltextfields)) { $temp_ids = Dic::makeLists($element->alltextfields, false, 'id'); DicTextFieldVal::whereIn('id', $temp_ids)->delete(); } if (@count($element->metas)) { #foreach ($element->metas as $el) # $el->delete(); $temp_ids = Dic::makeLists($element->metas, false, 'id'); DicValMeta::whereIn('id', $temp_ids)->delete(); } if (@count($element->seos)) { $temp_ids = Dic::makeLists($element->seos, false, 'id'); Seo::whereIn('id', $temp_ids)->delete(); } if (@count($element->related_dicvals)) { foreach ($element->related_dicvals as $el) { if (is_object($el) && isset($el->pivot) && is_object($el->pivot)) { $el->pivot->delete(); } } } if ((int) $element->rgt > 0) { DB::update(DB::raw("UPDATE " . (new DicVal())->getTable() . " SET lft = lft - 2, rgt = rgt - 2 WHERE dic_id = '" . $element->dic_id . "' AND lft > " . $element->rgt . "")); } $element->delete(); } $this->callHook('after_destroy', $dic, $element); $this->callHook('after_store_update_destroy', $dic, $element); $this->callHook('after_store_update_destroy_order', $dic, $element); $json_request['responseText'] = 'Удалено'; $json_request['status'] = TRUE; return Response::json($json_request, 200); }