Example #1
0
 /**
  * Store a newly created post in storage.
  *
  * @return Response
  */
 public function store()
 {
     $validate = Validator::make(Input::all(), Question::$rules);
     if ($validate->passes()) {
         //save a new Question
         $question = new Question();
         $question->title = Input::get('title');
         $question->body = Input::get('body');
         $question->user_id = Auth::id();
         $question->save();
         $question_id = $question->id;
         //saving Tags in Tag Table
         /*	convert input to array 	*/
         $tags_arr = explode(',', Input::get('tag'));
         /*	
         save in Tag table and return object for saving in 
         Tagmap table
         */
         foreach ($tags_arr as $tag_str) {
             $tag_obj = Tag::firstOrCreate(array('title' => $tag_str));
             //this line will attach a tag ( insert and save automatically )
             $new_question->tags()->attach($tag_obj->id);
         }
         return Redirect::action('QuestionController@index');
     }
     return Redirect::back()->withErrors($validate)->withInput();
 }
Example #2
0
 public static function getTagIds($tags)
 {
     if (!is_array($tags)) {
         throw new TurnbackException('Tags incorrectas.');
     }
     $vdt = new Validate\Validator();
     $vdt->addRule('tags', new Validate\Rule\AlphaNumeric([' ']))->addRule('tags', new Validate\Rule\MinLength(2))->addRule('tags', new Validate\Rule\MaxLength(32));
     if (!$vdt->validate(['tags' => $tags])) {
         throw new TurnbackException($vdt->getErrors());
     } else {
         if (count($tags) > 8) {
             throw new TurnbackException('No pueden asignarse más de 8 tags.');
         }
     }
     $tagIds = array();
     foreach ($tags as $tag) {
         $tagIds[] = Tag::firstOrCreate(['nombre' => FilterFactory::normalizeWhitespace($tag)])->id;
     }
     return $tagIds;
 }
Example #3
0
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store()
 {
     // create the validator
     $validator = Validator::make(Input::all(), Post::$rules);
     // attempt validation
     if ($validator->fails()) {
         Session::flash('errorMessage', 'Something went wrong.');
         return Redirect::back()->withInput()->withErrors($validator);
     } else {
         $post = new Post();
         $title = Input::get('title');
         $body = Input::get('body');
         if (Request::hasFile('file')) {
             $img = Imageupload::upload(Request::file('file'));
             $post->img_url = $img['filename'];
         }
         $post->title = $title;
         $post->body = $body;
         $post->user_id = Auth::id();
         $post->save();
         $post_id = $post->id;
         $tags = Input::get('tags');
         if (isset($tags)) {
             $tags = strtolower(Input::get('tags'));
             $tags = explode(', ', $tags);
             foreach ($tags as $tag) {
                 $tag = trim($tag);
                 $tag_id = Tag::firstOrCreate(array('name' => $tag));
                 $post->tags()->attach($tag_id, array('post_id' => $post_id));
             }
         }
         Log::info('Success: ', ['title' => $post->title, 'body' => $post->body]);
         Session::flash('successMessage', 'You created a post successfully');
         return Redirect::action('PostsController@index');
     }
 }
Example #4
0
 public function postEditPost($id)
 {
     $input = Input::all();
     $validator = Post::validate($input);
     if ($validator->fails()) {
         FlashHelper::message("Null title", FlashHelper::DANGER);
         return Redirect::to(URL::action('BlogController@getNewPost'))->withInput();
     }
     // Post
     $Parsedown = new Parsedown();
     $post = Post::findOrFail($id);
     if ($post->created_by != Auth::id()) {
         return View::make('error.Unauthorized');
     }
     $post->title = Input::get('title');
     $post->makrdown = Input::get('makrdown');
     if (!is_null($post->makrdown)) {
         $post->HTML = $Parsedown->text($post->makrdown);
     }
     $post->privacy_level = Input::get('privacy_level');
     $post->can_comment = Input::get('can_comment');
     // tags
     $topics = trim(Input::get('tags'));
     if ($topics != "") {
         $topics = explode(";", $topics);
         $tagIds = array();
         // Topic Tags
         foreach ($topics as $topic) {
             $tag = Tag::firstOrCreate(array('name' => trim($topic)));
             $tagIds[] = $tag->id;
         }
         // post <=> Tags
         $post->tags()->sync($tagIds);
     }
     // privacy
     if ($post->privacy_level == Post::_CUSTOM) {
         $friends = trim(Input::get('friends'));
         if ($friends == "") {
             $post->privacy_level = Post::_PRIVATE;
         } else {
             $friends = explode(",", $friends);
             $post->friends()->sync($friends);
         }
     }
     $post->save();
     return Redirect::to($post->getShowLink());
 }
 /**
  * Display the specified resource.
  *
  * @param  int  $id
  * @return Response
  */
 public function setTagListAttribute($value, $post_id)
 {
     $post = Post::find($post_id);
     $tagIds = [];
     $tags = explode(',', $value);
     foreach ($tags as $tagName) {
         /* firstOrCreate uses first instance or creates a new instantiation - 
         			stops tags table from duplicating tag names*/
         $tag = Tag::firstOrCreate(array('name' => $tagName));
         $tagIds[] = $tag->id;
         /* sync is a Laravel method to attach related models; 
         			sync accepts array of ids to be placed on pivot table
         			only the ids in the array will be on the intermediate table post_tag_table.php*/
         $post->tags()->sync($tagIds);
     }
 }
Example #6
0
 /**
  * @param $title
  * @return \Tag
  */
 protected function createTag($title)
 {
     $tagCreate = \Tag::firstOrCreate(['title' => $title, 'user_id' => \Auth::user()->id, 'visibility' => 0]);
     return $tagCreate;
 }
Example #7
0
 public function upload()
 {
     if (!file_exists($_ENV['MALWARE_STORAGE_PATH'])) {
         mkdir($_ENV['MALWARE_STORAGE_PATH'], 0777, true);
     }
     $input = Input::all();
     $files = Input::file();
     foreach ($files as $file) {
         try {
             $filename = md5_file($file);
             $sample = Sample::firstOrNew(array('md5' => $filename));
             $sample->filename = $file->getClientOriginalName();
             $sample->filesize = $file->getSize();
             $file->move($_ENV['MALWARE_STORAGE_PATH'], $filename);
             if (isset($input['VTscan'])) {
                 $this->scanFileOnVirusTotal($sample, TRUE);
             } else {
                 $this->scanFileOnVirusTotal($sample, FALSE);
             }
             $sample->save();
             // tags processing
             $tag_name_str = 'tag_' . preg_replace('/[. ]/', "_", $sample->filename);
             if (isset($input[$tag_name_str])) {
                 $tags = trim($input[$tag_name_str]);
                 if ($tags != "") {
                     $tags = explode(";", $tags);
                     $tagIds = array();
                     // Tags
                     foreach ($tags as $tag) {
                         $tag = Tag::firstOrCreate(array('tag' => $tag));
                         $tagIds[] = $tag->id;
                     }
                     // Sample <=> Tags
                     $sample->tags()->sync($tagIds);
                 }
             }
             // writeups processing
             $writeup_name_str = 'writeup_' . preg_replace('/[. ]/', "_", $sample->filename);
             if (isset($input[$writeup_name_str])) {
                 $writeups = $input[$writeup_name_str];
                 foreach ($writeups as $url) {
                     if ($url == "") {
                         continue;
                     }
                     $writeup = new Writeup();
                     $writeup->url = $url;
                     $writeup->title = $this->getUrlTitle($url);
                     $writeup->sample()->associate($sample);
                     $writeup->save();
                 }
             }
             $samples[] = $sample;
         } catch (Exception $e) {
             Log::info($e);
             Response::json("Error occured :( Try to upload again");
         }
     }
     return $sample;
 }
Example #8
0
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store()
 {
     // create the validator
     $validator = Validator::make(Input::all(), Post::$rules);
     // attempt validation
     if ($validator->fails()) {
         // validation failed, redirect to the post create page with validation errors and old inputs
         Session::flash('errorMessage', 'Your new post was not successfully created. See errors below:');
         //log error to app/storage/logs/laravel.log
         Log::info('Unsuccessful attempt to create blog post: ', Input::all());
         return Redirect::back()->withInput()->withErrors($validator);
     } else {
         // validation succeeded, create and save the post
         //check to see if there is a cover image
         if (Input::hasFile('img_url')) {
             Input::file('img_url')->move(public_path() . '/img', Input::file('img_url')->getClientOriginalName());
             $post->img_url = '/img/' . Input::file('img_url')->getClientOriginalName();
         }
         $post = new Post();
         $post->title = strtoupper(Input::get('title'));
         $post->body = Input::get('body');
         $post->user_id = Auth::id();
         $post->save();
         Session::flash('successMessage', 'Your new post titled "' . $post->title . '" was successfully created.');
         //check to see if there are any tags
         if (Input::has('tags')) {
             $tagsArray = explode(",", Input::get('tags'));
             foreach ($tagsArray as $tagValue) {
                 //firstOrCreate keeps multiple tags with the same name of being made
                 $tag = Tag::firstOrCreate(array('name' => $tagValue));
                 $tagIds[] = $tag->id;
                 //sync also removes tags (only accepts array)
                 $post->tags()->sync($tagIds);
             }
         }
     }
     return Redirect::action('PostsController@index');
 }