/** * Preview single entry * @param integer $id * @return Response */ public function show($id) { if (Channel::name()) { $entry = Entry::inChannel(Channel::name())->where('id', $id)->first(); } else { $entry = Entry::where('id', $id)->first(); } if ($entry) { return Response::json(array('entry' => $entry->toArray())); } else { return Response::json(array('error' => true, 'code' => 404), 404); } }
/** * Save all entry fields * @param integer $entryId * @param mixed $data * @return mixed */ public function saveAllForEntry($entryId, $data) { // Get entry and channel $entry = Entry::with(array('author', 'fields'))->where('id', $entryId)->first(); $entry = new Entities\EntryEntity($entry->toArray()); $channel = $this->channels->find($entry->channel); // Add specific entry fields $channel->addEntryFields($entry); foreach ($channel->fields as $field) { if ($field->save != 'direct') { // Get value from form $value = array_get($data, $field->name); // Set field entry $field->set('entry', $entry); // Pass through to field save method $value = $field->save($value); // And save accordinly $this->createOrUpdate($entryId, $field->name, $value, $field); } } }
/** * Update exiting content entry * @param integer $id * @param array $data * @return boolean */ public function update($id, $data = array()) { // First validate the input if ($this->validation->passes($data)) { // Set the data $entry = Entry::find($id); $entry->fill(array('title' => array_get($data, 'title'), 'body' => array_get($data, 'body'), 'channel' => array_get($data, 'channel'), 'status' => $this->inputStatus($data), 'meta_title' => array_get($data, 'meta_title'), 'meta_keywords' => array_get($data, 'meta_keywords'), 'meta_description' => array_get($data, 'meta_description'))); // Slug if ($slug = array_get($data, 'slug') and $slug != $entry->slug) { $entry->slug = Str::slug($slug); } // Template $entry->template = str_replace("-", "_", Str::slug(array_get($data, 'template'))); // Save custom fields $this->fields->saveAllForEntry($id, $data); // Also save taxonomies $this->terms->saveAllForEntry($id, $data); // Log it Log::debug('[KRUSTR] [ENTRYREPOSITORY] Entry [' . $id . '] was updated.'); return $entry->save(); } // Set errors $this->errors = $this->validation->errors(); return false; }