/**
  * Remove the specified resource from storage.
  * DELETE /entries/{id}
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     $entry = Entry::find($id);
     $entry->delete();
     return Redirect::route('entries.index');
 }
 public function deleteEntryAction()
 {
     $entry = Entry::find(Route::input('id'));
     $entry->delete();
     return Redirect::route('blog/list');
 }
 private function getEntry()
 {
     $entry_id = $this->getEntryIdFromSession();
     if ($entry_id > 0) {
         $entry = Entry::find($entry_id);
         if ($entry) {
             return $entry;
         } else {
             $this->removeEntryIdFromSession();
         }
     }
     return NULL;
 }
 public function localize($file_id)
 {
     $contentClient = new \Guzzle\Service\Client('http://' . Config::get('app.content_host') . '/');
     $entry = Entry::find($file_id);
     if ($entry->is_dir) {
         return ['success' => false, 'error_message' => 'Cannot compute SHA1 of directory'];
     }
     $this->authenticate($entry->dropbox_id);
     $tmpfname = tempnam(sys_get_temp_dir(), $file_id);
     $fd = fopen($tmpfname, "w+");
     $meta = $this->active_client->getFile($entry->original_path, $fd);
     $sha1 = sha1_file($tmpfname);
     if (strrpos(basename($entry->original_path), '.')) {
         $extension = substr(basename($entry->original_path), strrpos(basename($entry->original_path), '.'));
     } else {
         $extension = ".extensionless";
     }
     $save_path = 'dropbox/' . $sha1 . $extension;
     // check the byte size of the cached file if it exists on the content server
     $request = $contentClient->head($save_path);
     try {
         $response = $request->send();
         $contentLength = $response->getContentLength();
     } catch (Guzzle\Http\Exception\BadResponseException $e) {
         $clientResponseException = $e->getResponse();
         $statusCode = $clientResponseException->getStatusCode();
         if ($statusCode !== 404) {
             return ['success' => false, 'error_message' => 'HEAD request from content server path ' . $save_path . ' raised http exception ' . $statusCode . "\n" . print_r($clientResponseException, true)];
         }
         $contentLength = false;
     }
     // Raise an exception if we are about to localize this file in place of another file with the same content SHA
     if ($contentLength && $contentLength > 0 && $contentLength != filesize($tmpfname)) {
         return ['success' => false, 'error_message' => "File exists on content server with same SHA but different byte count!"];
     }
     // Upload the file if it does not already exist on the content server
     if (!$contentLength) {
         $request = $contentClient->put($save_path);
         $request->getCurlOptions()->set(CURLOPT_SSL_VERIFYHOST, false);
         // for testing ONLY!
         $request->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, false);
         // for testing ONLY!
         // TODO: Determine which approach is best of these two:
         // Having a second pointer on same file, while first pointer is still open
         // (Temp files are deleted as soon as fclose called)
         $request->setBody(fopen($tmpfname, 'r'));
         // Or should we use....
         // rewind($fd);
         // $request->setBody($fd);
         // I'm not sure if guzzle would support that,
         // nor if w+ mode supports rewind
         // (Will it read from start without erasing after a rewind in w+?)
         $response = $request->send();
     }
     // Close the temp file pointer
     fclose($fd);
     // Update the database with the file size information
     $entry->file_sha = $sha1;
     $entry->etag = sha1($sha1 . $entry->bytes . $entry->service_updated_at . $entry->client_updated_at);
     $entry->save();
     // TODO: Error handling
     // TODO: Process abstraction from controller to classes
     return ['success' => true, 'local_url' => 'http://' . Config::get('app.content_host') . '/' . $save_path];
 }
 /**
  * Remove the specified resource from storage.
  * DELETE /entries/{id}
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     $entry = Entry::find($id);
     Entry::destroy($id);
     return Redirect::route('users.show', [$entry->author->slug]);
 }
 public function voteDown($id)
 {
     $userToken = $this->getUserToken();
     $voter = User::where('token', '=', $userToken)->first();
     $entry = Entry::find($id);
     if ($voter && $entry) {
         $vote = $entry->voteDown($voter);
         $vote->notifyAuthor();
         return Redirect::route('entries.showAsVoter', [$id]);
     } else {
         App::abort(404);
     }
 }
 /**
  * Display the specified resource.
  *
  * @param  int  $id
  * @return Response
  */
 public function show($id)
 {
     $entry = Entry::find($id);
     return View::make('entries.show', compact('entry'));
 }
Exemple #8
0
 public function checkEntries($data)
 {
     $values = array_values($data);
     if (!isset($values)) {
         return false;
     }
     $value = $values[0];
     $startdate = dateToSql($this->data['Setting']['fy_start']);
     $enddate = dateToSql($value);
     /* Load the Ledger model */
     App::import("Webzash.Model", "Entry");
     $Entry = new Entry();
     $count = $Entry->find('count', array('conditions' => array('OR' => array('Entry.date <' => $startdate, 'Entry.date >' => $enddate))));
     if ($count != 0) {
         return false;
     } else {
         return true;
     }
 }