/** * * Display single advert. * @throws HTTP_Exception_404 * */ public function action_view() { $seotitle = $this->request->param('seotitle', NULL); if ($seotitle !== NULL) { $ad = new Model_Ad(); $ad->where('seotitle', '=', $seotitle)->where('status', '!=', Model_Ad::STATUS_SPAM)->limit(1)->cached()->find(); if ($ad->loaded()) { Breadcrumbs::add(Breadcrumb::factory()->set_title(__('Home'))->set_url(Route::url('default'))); $location = NULL; $location_parent = NULL; if ($ad->location->loaded() and $ad->id_location != 1) { $location = $ad->location; //adding the location parent if ($location->id_location_parent != 1 and $location->parent->loaded()) { $location_parent = $location->parent; } } $category = NULL; $category_parent = NULL; if ($ad->category->loaded()) { $category = $ad->category; //adding the category parent if ($category->id_category_parent != 1 and $category->parent->loaded()) { $category_parent = $category->parent; } } //base category title if ($category !== NULL) { $this->template->title = $category->name; } else { $this->template->title = ''; } //adding location titles and breadcrumbs if ($location !== NULL) { $this->template->title .= ' - ' . $location->name; if ($location_parent !== NULL) { $this->template->title .= ' (' . $location_parent->name . ')'; Breadcrumbs::add(Breadcrumb::factory()->set_title($location_parent->name)->set_url(Route::url('list', array('location' => $location_parent->seoname)))); } Breadcrumbs::add(Breadcrumb::factory()->set_title($location->name)->set_url(Route::url('list', array('location' => $location->seoname)))); if ($category_parent !== NULL) { Breadcrumbs::add(Breadcrumb::factory()->set_title($category_parent->name)->set_url(Route::url('list', array('category' => $category_parent->seoname, 'location' => $location->seoname)))); } if ($category !== NULL) { Breadcrumbs::add(Breadcrumb::factory()->set_title($category->name)->set_url(Route::url('list', array('category' => $category->seoname, 'location' => $location->seoname)))); } } else { if ($category_parent !== NULL) { $this->template->title .= ' (' . $category_parent->name . ')'; Breadcrumbs::add(Breadcrumb::factory()->set_title($category_parent->name)->set_url(Route::url('list', array('category' => $category_parent->seoname)))); } if ($category !== NULL) { Breadcrumbs::add(Breadcrumb::factory()->set_title($category->name)->set_url(Route::url('list', array('category' => $category->seoname)))); } } $this->template->title = $ad->title . ' - ' . $this->template->title; Breadcrumbs::add(Breadcrumb::factory()->set_title($ad->title)); $this->template->meta_description = $ad->title . ' ' . __('in') . ' ' . $category->name . ' ' . __('on') . ' ' . core::config('general.site_name'); $permission = TRUE; //permission to add hit to advert and give access rights. $auth_user = Auth::instance(); if (!$auth_user->logged_in() or $auth_user->get_user()->id_user != $ad->id_user and ($auth_user->get_user()->id_role != Model_Role::ROLE_ADMIN and $auth_user->get_user()->id_role != Model_Role::ROLE_MODERATOR) or $auth_user->get_user()->id_role != Model_Role::ROLE_ADMIN and $auth_user->get_user()->id_role != Model_Role::ROLE_MODERATOR) { $permission = FALSE; $user = NULL; } else { $user = $auth_user->get_user()->id_user; } $hits = $ad->count_ad_hit(); $captcha_show = core::config('advertisement.captcha'); if ($ad->get_first_image() !== NULL) { Controller::$image = $ad->get_first_image(); } $this->template->bind('content', $content); $this->template->content = View::factory('pages/ad/single', array('ad' => $ad, 'permission' => $permission, 'hits' => $hits, 'captcha_show' => $captcha_show, 'user' => $user, 'cf_list' => $ad->custom_columns())); } else { //throw 404 throw HTTP_Exception::factory(404, __('Page not found')); } } else { //throw 404 throw HTTP_Exception::factory(404, __('Page not found')); } }
public function action_index() { $this->auto_render = FALSE; $info = array('title' => 'RSS ' . Core::config('general.site_name'), 'pubDate' => date("D, d M Y H:i:s T"), 'description' => __('Latest published'), 'generator' => 'Open Classifieds'); $items = array(); //last ads, you can modify this value at: general.feed_elements $ads = DB::select('a.seotitle')->select(array('c.seoname', 'category'), 'a.id_ad', 'a.title', 'a.description', 'a.published', 'a.address', 'a.price', 'a.phone', 'a.website')->from(array('ads', 'a'))->join(array('categories', 'c'), 'INNER')->on('a.id_category', '=', 'c.id_category')->where('a.status', '=', Model_Ad::STATUS_PUBLISHED)->order_by('published', 'desc')->limit(Core::config('general.feed_elements')); //filter by category aor location if (Controller::$category !== NULL) { if (Controller::$category->loaded()) { $ads->where('a.id_category', '=', Controller::$category->id_category); } } if (Controller::$location !== NULL) { if (Controller::$location->loaded()) { $ads->where('a.id_location', '=', Controller::$location->id_location); } } $ads = $ads->as_object()->cached()->execute(); foreach ($ads as $a) { $url = Route::url('ad', array('category' => $a->category, 'seotitle' => $a->seotitle)); // This is idiotic $feed_entry = array('id' => $a->id_ad, 'title' => preg_replace('/&(?!\\w+;)/', '&', $a->title), 'link' => $url, 'pubDate' => Date::mysql2unix($a->published), 'description' => preg_replace('/&(?!\\w+;)/', '&', $a->description), 'category' => $a->category, 'address' => $a->address, 'website' => $a->website, 'phone' => $a->phone, 'price' => $a->price); $ad_obj = new Model_Ad($a->id_ad); $cc = $ad_obj->custom_columns(); foreach ($cc as $k => $v) { if ($v['value']) { $feed_entry[$k] = $v['value']; } } // define('QR_DIR', ROOT.'qrs/'); $cur_qr_dir = QR_DIR . $a->id_ad; if (is_dir($cur_qr_dir)) { $qr_dir = opendir($cur_qr_dir); $qrs = array(); $qr_url = "http://" . $_SERVER['HTTP_HOST'] . "/qrs/" . $a->id_ad . "/"; if ($qr_dir) { while (($file = readdir($qr_dir)) !== false) { if ($file == "." || $file == "..") { continue; } $type = str_replace($a->id_ad . "_", "", $file); $type = str_replace(".png", "", $type); $feed_entry['qr_' . $type] = $qr_url . $file; } } } $imgs = $ad_obj->get_images(); $img_cnt = 0; foreach ($imgs as $img) { $dir = $img['image']; $url = 'http://' . $_SERVER['HTTP_HOST'] . "/" . $dir; $img_key = 'image' . $img_cnt; $feed_entry[$img_key] = trim($url); $img_cnt++; } $items[] = $feed_entry; } $xml = Feed::create($info, $items); $this->response->headers('Content-type', 'text/xml'); $this->response->body($xml); }
/** * * Display single advert. * @throws HTTP_Exception_404 * */ public function action_view() { $seotitle = $this->request->param('seotitle', NULL); if ($seotitle !== NULL) { $ad = new Model_Ad(); $ad->where('seotitle', '=', $seotitle)->where('status', '!=', Model_Ad::STATUS_SPAM)->limit(1)->cached()->find(); if ($ad->loaded()) { //throw 404 if ($ad->status == Model_Ad::STATUS_UNAVAILABLE or $ad->status == Model_Ad::STATUS_NOPUBLISHED) { throw HTTP_Exception::factory(404, __('This advertisement doesn´t exist, or is not yet published!')); } Breadcrumbs::add(Breadcrumb::factory()->set_title(__('Home'))->set_url(Route::url('default'))); $location = NULL; $location_parent = NULL; if ($ad->location->loaded() and $ad->id_location != 1) { $location = $ad->location; //adding the location parent if ($location->id_location_parent != 1 and $location->parent->loaded()) { $location_parent = $location->parent; } } $category = NULL; $category_parent = NULL; if ($ad->category->loaded()) { $category = $ad->category; //adding the category parent if ($category->id_category_parent != 1 and $category->parent->loaded()) { $category_parent = $category->parent; } } //base category title if ($category !== NULL) { $this->template->title = $category->name; } else { $this->template->title = ''; } //adding location titles and breadcrumbs if ($location !== NULL) { $this->template->title .= ' - ' . $location->name; if ($location_parent !== NULL) { $this->template->title .= ' (' . $location_parent->name . ')'; Breadcrumbs::add(Breadcrumb::factory()->set_title($location_parent->name)->set_url(Route::url('list', array('location' => $location_parent->seoname)))); } Breadcrumbs::add(Breadcrumb::factory()->set_title($location->name)->set_url(Route::url('list', array('location' => $location->seoname)))); if ($category_parent !== NULL) { Breadcrumbs::add(Breadcrumb::factory()->set_title($category_parent->name)->set_url(Route::url('list', array('category' => $category_parent->seoname, 'location' => $location->seoname)))); } if ($category !== NULL) { Breadcrumbs::add(Breadcrumb::factory()->set_title($category->name)->set_url(Route::url('list', array('category' => $category->seoname, 'location' => $location->seoname)))); } } else { if ($category_parent !== NULL) { $this->template->title .= ' (' . $category_parent->name . ')'; Breadcrumbs::add(Breadcrumb::factory()->set_title($category_parent->name)->set_url(Route::url('list', array('category' => $category_parent->seoname)))); } if ($category !== NULL) { Breadcrumbs::add(Breadcrumb::factory()->set_title($category->name)->set_url(Route::url('list', array('category' => $category->seoname)))); } } $this->template->title = $ad->title . ' - ' . $this->template->title; Breadcrumbs::add(Breadcrumb::factory()->set_title($ad->title)); $this->template->meta_description = $ad->title . ' ' . __('in') . ' ' . $category->name . ' ' . __('on') . ' ' . core::config('general.site_name'); $permission = TRUE; //permission to add hit to advert and give access rights. $auth_user = Auth::instance(); if (!$auth_user->logged_in() or $auth_user->get_user()->id_user != $ad->id_user and (!$auth_user->get_user()->is_admin() and !$auth_user->get_user()->is_moderator()) or !$auth_user->get_user()->is_admin() and !$auth_user->get_user()->is_moderator()) { $permission = FALSE; $user = NULL; } else { $user = $auth_user->get_user()->id_user; } Model_Visit::hit_ad($ad->id_ad); $hits = $ad->count_ad_hit(); $captcha_show = core::config('advertisement.captcha'); if ($ad->get_first_image() !== NULL) { Controller::$image = $ad->get_first_image(); } $view_file = 'pages/ad/single'; if (Core::get('amp') == '1') { $this->template = 'amp/main'; $this->before(); $this->template->canonical = Route::url('ad', array('controller' => 'ad', 'category' => $ad->category->seoname, 'seotitle' => $ad->seotitle)); $this->template->structured_data = $ad->structured_data(); $view_file = 'amp/pages/ad/single'; } $cf_list = $ad->custom_columns(); $this->template->amphtml = Route::url('ad', array('controller' => 'ad', 'category' => $ad->category->seoname, 'seotitle' => $ad->seotitle)) . '?amp=1'; $this->template->bind('content', $content); $this->template->content = View::factory($view_file, compact('ad', 'permission', 'hits', 'captcha_show', 'user', 'cf_list')); } else { //throw 404 throw HTTP_Exception::factory(404, __('Page not found')); } } else { //throw 404 throw HTTP_Exception::factory(404, __('Page not found')); } }
/** * * Display single advert. * @throws HTTP_Exception_404 * */ public function action_view() { $seotitle = $this->request->param('seotitle', NULL); if ($seotitle !== NULL) { $ad = new Model_Ad(); $ad->where('seotitle', '=', $seotitle)->where('status', '!=', Model_Ad::STATUS_SPAM)->limit(1)->cached()->find(); if ($ad->loaded()) { Breadcrumbs::add(Breadcrumb::factory()->set_title(__('Home'))->set_url(Route::url('default'))); $location = NULL; $location_parent = NULL; if ($ad->location->loaded() and $ad->id_location != 1) { $location = $ad->location; //adding the location parent if ($location->id_location_parent != 1 and $location->parent->loaded()) { $location_parent = $location->parent; } } $category = NULL; $category_parent = NULL; if ($ad->category->loaded()) { $category = $ad->category; //adding the category parent if ($category->id_category_parent != 1 and $category->parent->loaded()) { $category_parent = $category->parent; } } //base category title if ($category !== NULL) { $this->template->title = $category->name; } else { $this->template->title = ''; } //adding location titles and breadcrumbs if ($location !== NULL) { $this->template->title .= ' - ' . $location->name; if ($location_parent !== NULL) { $this->template->title .= ' (' . $location_parent->name . ')'; Breadcrumbs::add(Breadcrumb::factory()->set_title($location_parent->name)->set_url(Route::url('list', array('location' => $location_parent->seoname)))); } Breadcrumbs::add(Breadcrumb::factory()->set_title($location->name)->set_url(Route::url('list', array('location' => $location->seoname)))); if ($category_parent !== NULL) { Breadcrumbs::add(Breadcrumb::factory()->set_title($category_parent->name)->set_url(Route::url('list', array('category' => $category_parent->seoname, 'location' => $location->seoname)))); } if ($category !== NULL) { Breadcrumbs::add(Breadcrumb::factory()->set_title($category->name)->set_url(Route::url('list', array('category' => $category->seoname, 'location' => $location->seoname)))); } } else { if ($category_parent !== NULL) { $this->template->title .= ' (' . $category_parent->name . ')'; Breadcrumbs::add(Breadcrumb::factory()->set_title($category_parent->name)->set_url(Route::url('list', array('category' => $category_parent->seoname)))); } if ($category !== NULL) { Breadcrumbs::add(Breadcrumb::factory()->set_title($category->name)->set_url(Route::url('list', array('category' => $category->seoname)))); } } $this->template->title = $ad->title . ' - ' . $this->template->title; Breadcrumbs::add(Breadcrumb::factory()->set_title($ad->title)); $this->template->meta_description = text::removebbcode($ad->description); $permission = TRUE; //permission to add hit to advert and give access rights. if (!Auth::instance()->logged_in() || Auth::instance()->get_user()->id_user != $ad->id_user && Auth::instance()->get_user()->id_role != Model_Role::ROLE_ADMIN || Auth::instance()->get_user()->id_role != Model_Role::ROLE_ADMIN) { if (!Auth::instance()->logged_in()) { $visitor_id = NULL; } else { $visitor_id = Auth::instance()->get_user()->id_user; } $do_hit = $ad->count_ad_hit($ad->id_ad, $visitor_id, ip2long(Request::$client_ip)); // hits counter $permission = FALSE; $user = NULL; } else { $user = Auth::instance()->get_user()->id_user; } //count how many matches are found $hits = new Model_Visit(); $hits = $hits->where('id_ad', '=', $ad->id_ad)->count_all(); $captcha_show = core::config('advertisement.captcha'); $this->template->bind('content', $content); $this->template->content = View::factory('pages/ad/single', array('ad' => $ad, 'permission' => $permission, 'hits' => $hits, 'captcha_show' => $captcha_show, 'user' => $user, 'custom_fields' => $ad->custom_columns())); } else { //throw 404 throw new HTTP_Exception_404(); } } else { //throw 404 throw new HTTP_Exception_404(); } }