Exemplo n.º 1
0
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $ads = $this->getExpiredAds();
     $expiredStatus = Adstatus::whereTitle('expired')->firstOrFail();
     Ad::whereIn('id', $ads->lists('id')->toArray())->update(['adstatus_id' => $expiredStatus->id]);
     foreach ($ads as $ad) {
         event(new AdWasExpired($ad, 'ZEDx'));
     }
 }
Exemplo n.º 2
0
 protected function createAd($adtype, $data)
 {
     $geo = new Geolocation($data['geolocation_data']);
     $adstatus = Adstatus::whereTitle('pending')->first();
     $ad = new Ad();
     $ad->user_id = $data['user_id'];
     $ad->category_id = $data['category_id'];
     $ad->adstatus()->associate($adstatus);
     $ad->adtype()->associate($adtype);
     $ad->save();
     $ad->geolocation()->create($geo->get());
     $ad->content()->create($data['content']);
     if ($ad->adtype->can_add_pic) {
         $this->syncAdPhotos($ad, $data);
     }
     if ($ad->adtype->can_add_video) {
         $this->syncAdVideos($ad, $data);
     }
     $this->syncAdFields($ad, $data);
     event(new AdWasCreated($ad, 'ZEDx'));
     $this->validateAd($ad);
 }
Exemplo n.º 3
0
Arquivo: Widget.php Projeto: zedx/zedx
 /**
  * Display widget.
  *
  * @return Response
  */
 public function run()
 {
     return view('widget_backend_zedx_latestads::index', ['config' => $this->config, 'ads' => Ad::with('content')->limit(5)->get()]);
 }
Exemplo n.º 4
0
 /**
  * Remove the specified resource from storage.
  *
  * @param Ad $ad
  *
  * @return Response
  */
 protected function destroy(Ad $ad, $forceDelete)
 {
     $adstatus = Adstatus::whereTitle('trashed')->first();
     $ad->adstatus()->associate($adstatus);
     $ad->save();
     event(new AdWillBeDeleted($ad, $this->admin, $forceDelete));
     if ($forceDelete) {
         $ad->forceDelete();
     } else {
         $ad->delete();
     }
     event(new AdWasDeleted($ad, $this->admin, $forceDelete));
 }
Exemplo n.º 5
0
 /**
  * Remove the specified resource from storage.
  *
  * @param Ad $ad
  *
  * @return Response
  */
 public function destroy(Ad $ad)
 {
     $adstatus = Adstatus::whereTitle('trashed')->first();
     $ad->adstatus()->associate($adstatus);
     $ad->save();
     event(new AdWillBeDeleted($ad, $this->user));
     $ad->delete();
     event(new AdWasDeleted($ad, $this->user));
 }
Exemplo n.º 6
0
 /**
  * Define your route model bindings, pattern filters, etc.
  *
  * @param  \Illuminate\Routing\Router  $router
  *
  * @return void
  */
 public function boot(Router $router)
 {
     $router->bind('adWithTrashed', function ($id) {
         return Ad::with('content')->withTrashed()->findOrFail($id);
     });
     $router->bind('ad', function ($id) {
         return Ad::with('content')->findOrFail($id);
     });
     $router->bind('adCollection', function ($ids) {
         $ids = explode(',', $ids);
         return Ad::with('content')->withTrashed()->findMany($ids);
     });
     $router->bind('adstatus', function ($title) {
         return Adstatus::whereTitle($title)->firstOrFail();
     });
     $router->bind('adValidated', function ($id) {
         return Ad::with('content')->validate()->findOrFail($id);
     });
     $router->bind('adPreview', function ($id) {
         if (Auth::guard('admin')->check()) {
             return Ad::with('content')->withTrashed()->findOrFail($id);
         }
         if (Auth::guard('user')->check()) {
             return Auth::user()->ads()->with('content')->findOrFail($id);
         }
         abort(404);
     });
     $router->bind('adtypeNotCustomized', function ($id) {
         return Adtype::whereIsCustomized(0)->findOrFail($id);
     });
     $router->bind('adtypeCollection', function ($ids) {
         $ids = explode(',', $ids);
         return Adtype::findMany($ids);
     });
     $router->bind('templateCollection', function ($ids) {
         $ids = explode(',', $ids);
         return Template::findMany($ids);
     });
     $router->bind('encryptedOrderId', function ($enc) {
         $orderId = Crypt::decrypt($enc);
         return Order::findOrFail($orderId);
     });
     $router->bind('fieldCollection', function ($ids) {
         $ids = explode(',', $ids);
         return Field::findMany($ids);
     });
     $router->bind('subscriptionCollection', function ($ids) {
         $ids = explode(',', $ids);
         return Subscription::findMany($ids);
     });
     $router->bind('userCollection', function ($ids) {
         $ids = explode(',', $ids);
         return User::findMany($ids);
     });
     $router->bind('adUser', function ($id) {
         if (Auth::check()) {
             return Auth::user()->ads()->with('content')->findOrFail($id);
         } else {
             abort(404);
         }
     });
     $router->bind('field', function ($id) {
         return Field::with('search')->findOrFail($id);
     });
     $router->bind('visibleCategory', function ($id) {
         return Category::visible()->findOrFail($id);
     });
     $router->bind('templateblock', function ($identifier) use($router) {
         $page = $router->input('page');
         return Templateblock::whereIdentifier($identifier)->whereTemplateId($page->template->id)->firstOrFail();
     });
     $router->bind('widgetnode', function ($id) use($router) {
         $pageId = $router->input('page')->id;
         $templateblockId = $router->input('templateblock')->id;
         return Widgetnode::whereTemplateblockId($templateblockId)->wherePageId($pageId)->findOrFail($id);
     });
     $router->model('adtype', 'ZEDx\\Models\\Adtype');
     $router->model('template', 'ZEDx\\Models\\Template');
     $router->model('category', 'ZEDx\\Models\\Category');
     $router->model('country', 'ZEDx\\Models\\Country');
     $router->model('page', 'ZEDx\\Models\\Page');
     $router->model('menu', 'ZEDx\\Models\\Menu');
     $router->model('gateway', 'ZEDx\\Models\\Gateway');
     $router->model('themepartial', 'ZEDx\\Models\\Themepartial');
     $router->model('dashboardWidget', 'ZEDx\\Models\\Dashboardwidget');
     $router->model('searchfield', 'ZEDx\\Models\\SearchField');
     $router->model('selectfield', 'ZEDx\\Models\\SelectField');
     $router->model('subscription', 'ZEDx\\Models\\Subscription');
     $router->model('user', 'ZEDx\\Models\\User');
     parent::boot($router);
 }
Exemplo n.º 7
0
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function search($params)
 {
     $filters = (object) $this->getFilters($params);
     $ads = Ad::where('adstatus_id', '=', 1);
     if (!is_null($filters->user_status)) {
         $ads = $ads->join('users', function ($join) use($filters) {
             $join->on('ads.user_id', '=', 'users.id')->where('users.status', '=', $filters->user_status);
         });
     }
     if ($category = Category::visible()->find($filters->category_id)) {
         $categories = $category->getDescendantsAndSelf(['id'])->keyBy('id')->keys()->toArray();
         $ads = $ads->whereIn('category_id', $categories);
     }
     $ads = $ads->join('adcontents', function ($join) {
         $join->on('ads.id', '=', 'adcontents.ad_id')->on('ads.adstatus_id', '=', \DB::raw('1'));
     });
     /*
             // Fulltext (valid only on MySql)
             $ads = $query ? $ads->whereRaw('MATCH('.\DB::getTablePrefix().'adcontents.title,'.\DB::getTablePrefix().'adcontents.body) AGAINST(? IN BOOLEAN MODE)', [str_replace(' ', ' +', $query) . "*"]) : $ads;
     */
     // Like (valid on all SGBD)
     $ads = $filters->query ? $ads->where('adcontents.title', 'like', '%' . $filters->query . '%')->orWhere('adcontents.body', 'like', '%' . $filters->query . '%') : $ads;
     if (is_numeric($filters->lat) && is_numeric($filters->lng) && is_numeric($filters->radius)) {
         $ads = $ads->join('geolocations', 'ads.id', '=', 'geolocations.ad_id')->whereRaw('? >= (SELECT ((? - `location_lat`) * (? - `location_lat`)) + ((? - `location_lng`) * (? - `location_lng`)))', [pow($filters->radius, 2), $filters->lat, $filters->lat, $filters->lng, $filters->lng]);
     }
     $ads = $this->joinFields($ads, $filters->fields);
     $ads = $ads->join('adtypes', 'ads.adtype_id', '=', 'adtypes.id')->orderBy('is_headline', 'desc')->orderBy($filters->order['field'], $filters->order['type'])->select('ads.*', 'adcontents.title', 'is_headline')->groupBy('ads.id')->paginate(20);
     $fields = Collection::make($filters->fields);
     return ['data' => compact('ads', 'query', 'category_id', 'lat', 'lng', 'radius', 'location', 'fields')];
 }