/** * 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('保存失败!'); } }
/** * 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(); }
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/>"; } } }