public function showAction() { $this->view->userRole = $this->_helper->checkUserRole->check(); $id = $this->_request->getParam('id'); $model = new Model_Ad(); //check if the ad exists in memcached $oBackend = new Zend_Cache_Backend_Memcached(array('servers' => array(array('host' => '127.0.0.1', 'port' => '11211')), 'compression' => true)); // configure caching frontend strategy $oFrontend = new Zend_Cache_Core(array('lifetime' => 3600 * 24 * 7, 'caching' => true, 'cache_id_prefix' => 'singleAd', 'logging' => false, 'write_control' => true, 'automatic_serialization' => true, 'ignore_user_abort' => true)); // build a caching object $cacheAd = Zend_Cache::factory($oFrontend, $oBackend); $cacheTest = $cacheAd->test((int) $id); if ($cacheTest == false) { //if not exists in cache lets query to db $this->view->ad = $model->getAd((int) $id); $cacheAd->save($this->view->ad, (int) $id); } else { //load ad from memcached $this->view->ad = $cacheAd->load((int) $id); } //lets count the comments number and update $modelComments = new Model_Comment(); $this->view->checkCountAd = $count = $modelComments->countCommentsAd((int) $id); //let's increment +1 the ad view counter $model->updateReadedAd($id); $this->view->countReadedAd = $model->countReadedAd($id); if ($this->view->checkCountAd > 0) { $modelComments->updateCommentsAd($id, $count); } if ($this->view->ad != null) { // if the id ad exists then render the ad and comments if ($this->view->ad['type'] == 1) { $this->view->page_title .= $this->view->translate('give') . ' ' . $this->view->translate('second hand') . ' '; } if ($this->view->ad['type'] == 2) { $this->view->page_title .= $this->view->translate('want') . ' ' . $this->view->translate('second hand') . ' '; } $this->view->comments = $model->getComments($id); $this->view->woeidName = $this->_helper->woeid->name($this->view->ad['woeid_code'], $this->lang); $this->view->page_title .= $this->view->ad['title']; $this->view->page_title .= ' ' . $this->view->translate('free') . ' '; $this->view->page_title .= ' ' . $this->view->woeidName; //add meta description to head $this->view->metaDescription = $this->view->page_title . '. ' . $this->view->ad['body']; //add link rel canonical , better seo $this->view->canonicalUrl = 'http://' . $_SERVER['HTTP_HOST'] . '/' . $this->lang . '/ad/' . $id . '/' . $this->view->slugTitle($this->view->ad['title']); //if user logged in, show the comment form, if not show the login link $auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()) { $this->view->createcomment = '<a href="/' . $this->lang . '/auth/login">' . $this->view->translate('login to post a comment') . '</a> '; } else { require_once APPLICATION_PATH . '/forms/Comment.php'; $form = new Form_Comment(); $form->setAction('/' . $this->lang . '/comment/create/ad_id/' . $id); $this->view->createcomment = $form; } } else { $urlChunks = explode('/', $_SERVER['REQUEST_URI']); $urlChunks = str_replace('.html', '', $urlChunks); $urlChunks = str_replace('-', ' ', $urlChunks); //redir to search $this->_redirect('/' . $this->lang . '/search/?q=' . $urlChunks[sizeof($urlChunks) - 1] . '&ad_type=1&woeid=' . $this->location, array('code' => 301)); } }