public function action_get() { try { if (is_numeric($id_ad = $this->request->param('id'))) { $ad = new Model_Ad($id_ad); if ($ad->loaded()) { if ($ad->id_user == $this->user->id_user) { $a = $ad->as_array(); $a['price'] = i18n::money_format($ad->price); $a['images'] = array_values($ad->get_images()); $a['category'] = $ad->category->as_array(); $a['location'] = $ad->location->as_array(); $a['customfields'] = Model_Field::get_by_category($ad->id_category); $this->rest_output(array('ad' => $a)); } else { $this->_error(__('Not your advertisement'), 401); } } else { $this->_error(__('Advertisement not found'), 404); } } else { $this->_error(__('Advertisement not found'), 404); } } catch (Kohana_HTTP_Exception $khe) { $this->_error($khe); return; } }
public function action_get() { try { if (is_numeric($id_ad = $this->request->param('id'))) { $ad = new Model_Ad(); //get distance to the ad if (isset($this->_params['latitude']) and isset($this->_params['longitude'])) { $ad->select(array(DB::expr('degrees(acos(sin(radians(' . $this->_params['latitude'] . ')) * sin(radians(`latitude`)) + cos(radians(' . $this->_params['latitude'] . ')) * cos(radians(`latitude`)) * cos(radians(abs(' . $this->_params['longitude'] . ' - `longitude`))))) * 69.172'), 'distance')); } $ad->where('id_ad', '=', $id_ad)->where('status', '=', Model_Ad::STATUS_PUBLISHED)->cached()->find(); if ($ad->loaded()) { $a = $ad->as_array(); $a['price'] = i18n::money_format($ad->price); $a['images'] = array_values($ad->get_images()); $a['category'] = $ad->category->as_array(); $a['location'] = $ad->location->as_array(); $a['user'] = Controller_Api_Users::get_user_array($ad->user); $a['customfields'] = Model_Field::get_by_category($ad->id_category); //sorting by distance, lets add it! if (isset($ad->distance)) { $a['distance'] = i18n::format_measurement($ad->distance); } $a['url'] = Route::url('ad', array('category' => $ad->category->seoname, 'seotitle' => $ad->seotitle)); $this->rest_output(array('ad' => $a)); } else { $this->_error(__('Advertisement not found'), 404); } } else { $this->_error(__('Advertisement not found'), 404); } } catch (Kohana_HTTP_Exception $khe) { $this->_error($khe); return; } }
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); }