public function testFindCompositeKey() { if (!$this->storage->supportsCompositePrimaryKeys()) { $this->markTestSkipped('Composite keys need to be supported for this test to run.'); } $key = ['dist' => 'foo', 'range' => 100]; $this->mockFindCompositeKey($key); $data = $this->storage->find('stdClass', $key); $this->assertEquals(['dist' => 'foo', 'range' => '100', 'timestamp' => new \DateTime('2008-09-18 23:46:19', new \DateTimeZone('UTC')), 'name' => 'Test', 'value' => 23, 'amount' => 200.23, 'bool' => true], $data); }
public function postSave($id = false) { Allow::permission($this->module['group'], $this->module['name']); $json_request = array('status' => FALSE, 'responseText' => '', 'responseErrorText' => '', 'redirect' => FALSE); if (!Request::ajax()) { App::abort(404); } if ($id > 0 && NULL !== ($element = Storage::find($id))) { $exist = true; $rules = array(); $redirect = false; $input = $element->toArray(); $input['value'] = json_decode($input['value'], 1); } else { $exist = false; $rules = Storage::$rules; $redirect = true; $element = new Storage(); $input = array('module' => 'menu'); } #Helper::dd($input); #Helper::dd(is_null(Input::get('nesting_level2'))); /** * Основные параметры */ if (!is_null(Input::get('name'))) { $input['name'] = Input::get('name'); } if (!is_null(Input::get('title'))) { $input['value']['title'] = Input::get('title'); } if (!is_null(Input::get('nesting_level'))) { $input['value']['nesting_level'] = Input::get('nesting_level'); } /** * Дополнительные параметры */ if (!is_null(Input::get('container'))) { $input['value']['container'] = Input::get('container'); } if (!is_null(Input::get('element_container'))) { $input['value']['element_container'] = Input::get('element_container'); } if (!is_null(Input::get('element'))) { $input['value']['element'] = Input::get('element'); } if (!is_null(Input::get('active_class'))) { $input['value']['active_class'] = Input::get('active_class'); } /** * Элементы меню и их порядок */ if (!is_null(Input::get('items'))) { $input['value']['items'] = Input::get('items'); } if (!is_null(Input::get('order'))) { $input['value']['order'] = Input::get('order'); } #Helper::dd($input); $input['value'] = json_encode($input['value']); #Helper::dd($input); $validation = Validator::make($input, $rules); if ($validation->passes()) { ## CREATE OR UPDATE CURRENT MENU if ($exist) { $element->update($input); } else { $element = $element->create($input); } /** * Предустановленные места для меню */ if (!is_null(Input::get('update_placements'))) { $placements = (array) Input::get('placements'); #Helper::dd($placements); #dd($placements); $placements_values = array_flip($placements); #Helper::dd($placements_values); $layout_placements = Helper::getLayoutProperties(); $layout_placements = @(array) $layout_placements['MENU_PLACEMENTS']; #Helper::dd($layout_placements); $menu_placement = Storage::firstOrNew(array('module' => 'menu_placement', 'name' => 'menu_placement')); #Helper::dd($menu_placement); $menu_placement_value = is_object($menu_placement) ? json_decode($menu_placement->value, 1) : array(); $array = array(); foreach ($layout_placements as $layout_placement_key => $layout_placement_value) { #Helper::d("$layout_placement_key => $layout_placement_value"); $value = false; if (isset($placements_values[$layout_placement_key])) { $value = $element->name; } elseif (isset($menu_placement_value[$layout_placement_key]) && $menu_placement_value[$layout_placement_key] != $element->name) { $value = $menu_placement_value[$layout_placement_key]; } else { $value = false; } $array[$layout_placement_key] = $value; } #Helper::d($array); $menu_placement->value = json_encode($array); #Helper::ta($menu_placement); $menu_placement->save(); #Setting::where('module', 'menu_placement')->whereIn('name', $layout_placements); } $json_request['responseText'] = 'Сохранено'; if ($redirect && Input::get('redirect')) { $json_request['redirect'] = Input::get('redirect'); } $json_request['status'] = TRUE; } else { $json_request['responseText'] = 'Неверно заполнены поля'; $json_request['responseErrorText'] = implode($validation->messages()->all(), '<br />'); } return Response::json($json_request, 200); }