Пример #1
0
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     $this->validate($request, ['title' => 'required|max:255', 'type' => 'required', 'begin_at' => 'required|date', 'end_at' => 'required|date', 'content' => 'required']);
     $ad = new Ad();
     $ad->uid = Auth::user()->id;
     $ad->uname = Auth::user()->name;
     $ad->longitude = Auth::user()->longitude;
     $ad->latitude = Auth::user()->latitude;
     $ad->title = Input::get('title');
     $ad->type = Input::get('type');
     $ad->status = 0;
     $ad->begin_at = Input::get('begin_at');
     $ad->end_at = Input::get('end_at');
     $ad->content = Input::get('content');
     // 广告封面图片
     if ($file = $_FILES['img']['name'] != '') {
         if (($_FILES['img']['type'] == 'image/gif' || $_FILES['img']['type'] == 'image/jpg' || $_FILES['img']['type'] == 'image/jpeg' || $_FILES['img']['type'] == 'image/bmp' || $_FILES['img']['type'] == 'image/png') && $_FILES['img']['size'] < 5120000) {
             $fname = date('Y-m-d-H-i-s', time()) . '-' . mt_rand(0, 1000);
             $info = pathinfo($_FILES['img']['name']);
             $extension = strtolower($info['extension']);
             if ($_FILES['img']['error'] > 0) {
                 return Redirect::back()->withInput()->withErrors('图片上传错误!');
             } else {
                 if (!file_exists('uploads/pictures/' . $fname . '.' . $extension)) {
                     $img_r = '';
                     if ($extension == 'gif') {
                         $img_r = imagecreatefromgif($_FILES['img']['tmp_name']);
                     } elseif ($extension == 'jpg' || $extension == 'jpeg') {
                         $img_r = imagecreatefromjpeg($_FILES['img']['tmp_name']);
                     } elseif ($extension == 'png') {
                         $img_r = imagecreatefrompng($_FILES['img']['tmp_name']);
                     } elseif ($extension == 'bmp') {
                         $img_r = imagecreatefromwbmp($_FILES['img']['tmp_name']);
                     }
                     list($width, $height) = getimagesize($_FILES['img']['tmp_name']);
                     $dst_r = ImageCreateTrueColor(200, 150);
                     imagecopyresampled($dst_r, $img_r, 0, 0, 0, 0, 200, 150, $width, $height);
                     header('Content-Type:' . $_FILES['img']['type']);
                     imagejpeg($dst_r, 'uploads/pictures/' . $fname . '.' . $extension, 100);
                     imagedestroy($img_r);
                     imagedestroy($dst_r);
                 } else {
                     return Redirect::back()->withInput()->withErrors('图片文件命名冲突,请重新上传!');
                 }
                 $ad->img_path = $fname . '.' . $extension;
             }
         } else {
             return Redirect::back()->withInput()->withErrors('图片格式不接受或文件太大!');
         }
     }
     if ($ad->save()) {
         return Redirect::to('user/ad/waiting-list');
     } else {
         return Redirect::back()->withInput()->withErrors('保存失败!');
     }
 }
Пример #2
0
 /**
  * Define the application's command schedule.
  *
  * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
  * @return void
  */
 protected function schedule(Schedule $schedule)
 {
     /*$schedule->command('inspire')
       ->hourly();*/
     $schedule->call(function () {
         $feeds = ['http://www.kijiji.ca/rss-srp-bikes/kitchener-waterloo/c644l1700212', 'http://www.kijiji.ca/rss-srp-kitchener-waterloo/l1700212?ad=offering&price-type=free'];
         foreach ($feeds as $feed) {
             \Log::info('Refreshing feeds: ' . $feed);
             /*$feed_key = md5($feed);  
             
                             \Log::info('Parsing feed' . $feed_key);
                             if (Cache::has($feed_key)){
                                 $feed = Cache::get($feed_key);            
                                 echo "Cached<br>";
                             }else{
                                 $feed = Feeds::make($feed);
                                 Cache::put($feed_key, $feed, 9); 
                                 echo "NOT cached<br>";
                             }*/
             $feed = Feeds::make($feed);
             $data = array('title' => $feed->get_title(), 'permalink' => $feed->get_permalink(), 'items' => $feed->get_items());
             $parser = new HtmlDomParser();
             foreach ($data['items'] as $item) {
                 $tokens = explode('/', $item->get_link());
                 $id = end($tokens);
                 if (!Ad::find($id)) {
                     $price = '';
                     $title = $item->get_title();
                     $description = $item->get_description() . "<br/>=================<br/>";
                     $link = $item->get_link();
                     $html = $parser->file_get_html($link);
                     foreach ($html->find('span[itemprop=price]') as $span) {
                         $price = $span->plaintext;
                     }
                     foreach ($html->find('div[id=ImageThumbnails] img') as $img) {
                         $src = str_replace('$_14', '$_27', $img->src);
                         $description .= "<img src='{$src}'> <br/>";
                     }
                     $ad = new Ad();
                     $ad->id = $id;
                     $ad->title = $title;
                     $ad->description = $description;
                     $ad->price = $price;
                     $ad->link = $link;
                     $ad->save();
                     \Log::info("Added " . $id . " {$price}");
                 } else {
                     #\Log::info("Item already on database " . $id);
                 }
             }
         }
     })->everyFiveMinutes();
     /*$schedule->call(function () {
                         $params = ['feed' => \Crypt::encrypt('http://www.kijiji.ca/rss-srp-bikes/kitchener-waterloo/c644l1700212')];
                         $request = Request::create('parsefeed', 'GET', $params);
                         \Log::info('Refreshing feeds: ' . $params['feed']);                    
     
                         return \Route::dispatch($request)->getContent();
                     })->everyMinute();*/
     $schedule->call(function () {
         \Log::info('Checking for new ads');
         $ads = Ad::whereEmailed(false)->get();
         foreach ($ads as $ad) {
             $data['ad'] = $ad;
             $blocked_keywords = "[scrap|removal|membership]";
             if (preg_match($blocked_keywords, strtolower($ad->title)) == 0) {
                 \Log::info('Emailing new ad: ' . $ad->title);
                 $ret = \Mail::send(['html' => 'emails.ad'], $data, function ($message) use($data) {
                     $message->to('*****@*****.**', 'Herbert Balagtas')->subject('Jijiki Alert: ' . $data['ad']->price . ' - ' . html_entity_decode(html_entity_decode($data['ad']->title)));
                     $message->from('*****@*****.**', 'Jijiki Alert');
                 });
             } else {
                 \Log::info('Skipping spam ad: ' . $ad->title);
             }
             $ad->emailed = true;
             $ad->save();
         }
     })->everyTenMinutes();
 }
Пример #3
0
 public function parsefeed($feed)
 {
     // start parsing feed
     $feed_key = md5($feed);
     $feed = \Crypt::decrypt($feed);
     \Log::info('Parsing feed' . $feed_key);
     if (Cache::has($feed_key)) {
         $feed = Cache::get($feed_key);
         echo "Cached<br>";
     } else {
         $feed = Feeds::make($feed);
         Cache::put($feed_key, $feed, 9);
         echo "NOT cached<br>";
     }
     $data = array('title' => $feed->get_title(), 'permalink' => $feed->get_permalink(), 'items' => $feed->get_items());
     $parser = new HtmlDomParser();
     foreach ($data['items'] as $item) {
         $tokens = explode('/', $item->get_link());
         $id = end($tokens);
         \Log::info($id);
         if (!Ad::find($id)) {
             $price = '';
             $title = $item->get_title();
             $description = $item->get_description() . "<br/>=================<br/>";
             $link = $item->get_link();
             $html = $parser->file_get_html($link);
             foreach ($html->find('span[itemprop=price]') as $span) {
                 $price = $span->plaintext;
             }
             foreach ($html->find('div[id=ImageThumbnails] img') as $img) {
                 $src = str_replace('$_14', '$_27', $img->src);
                 $description .= "<img src='{$src}'> <br/>";
             }
             $ad = new Ad();
             $ad->id = $id;
             $ad->title = $title;
             $ad->description = $description;
             $ad->price = $price;
             $ad->link = $link;
             $ad->save();
             echo "Added " . $id . " {$price}<br/>";
         } else {
             echo "Item already on database " . $id . "<br/>";
         }
     }
 }