Owl\Http\Controllers\ItemController::update PHP Method

update() public method

public update ( ItemUpdateRequest $request, string $openItemId, Illuminate\Contracts\Events\Dispatcher $event ) : mixed
$request Owl\Http\Requests\ItemUpdateRequest
$openItemId string
$event Illuminate\Contracts\Events\Dispatcher
return mixed
    public function update(ItemUpdateRequest $request, $openItemId, Dispatcher $event)
    {
        $user = $this->userService->getCurrentUser();
        $item = $this->itemService->getByOpenItemId($openItemId);
        if ($item->updated_at != \Input::get('updated_at')) {
            return \Redirect::back()->with("updated_at", "コンフリクトの可能性があるため更新できませんでした。")->withInput();
        }
        if ($item == null) {
            \App::abort(404);
        }
        $user_id = $user->id;
        if ($item->user_id !== $user->id) {
            $user_id = $item->user_id;
        }
        $object = app('stdClass');
        $object->user_id = $user_id;
        $object->title = \Input::get('title');
        $object->body = \Input::get('body');
        $object->published = \Input::get('published');
        $item = $this->itemService->update($item->id, $object);
        $result = $this->itemService->createHistory($item, $user);
        $tags = \Input::get('tags');
        if (!empty($tags)) {
            $tag_names = explode(",", $tags);
            $tag_ids = $this->tagService->getTagIdsByTagNames($tag_names);
            $item = $this->itemService->getById($item->id);
            $this->tagService->syncTags($item, $tag_ids);
        }
        // fire EditEvent
        // TODO: do not create instance in controller method
        $event->fire(new EditEvent($openItemId, (int) $user->id));
        return \Redirect::route('items.show', [$openItemId]);
    }