Esempio n. 1
0
 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));
     }
 }