public function executeUserNews()
 {
     $this->session = $this->getUser();
     // legge sempre i filtri dalla sessione utente
     $filters['tag_id'] = $this->session->getAttribute('tag_id', '0', 'monitoring_filter');
     $filters['act_type_id'] = $this->session->getAttribute('act_type_id', '0', 'monitoring_filter');
     $filters['act_ramo'] = $this->session->getAttribute('act_ramo', '0', 'monitoring_filter');
     $filters['date'] = $this->session->getAttribute('date', '0', 'monitoring_filter');
     $filters['main_all'] = $this->session->getAttribute('main_all', 'main', 'news_filter');
     $token = $this->getRequestParameter('token');
     // se utente non loggato, cerca l'id con il token
     if (!$this->session->isAuthenticated()) {
         $remote_guard_host = sfConfig::get('sf_remote_guard_host', 'op_accesso.openpolis.it');
         $key = sfConfig::get('sf_internal_api_key', 'XXX');
         $api_uri = "http://{$remote_guard_host}/index.php/getUserIdFromToken/{$token}/{$key}";
         $xml = simplexml_load_file($api_uri);
         if ($xml->user instanceof SimpleXMLElement && $xml->user->asXML() != '') {
             $user_id = $xml->user->id;
         } else {
             $this->forward404("Utente non loggato e token non riconosciuto: {$api_uri}");
         }
     } else {
         $user_id = $this->session->getId();
     }
     $user = OppUserPeer::retrieveByPK($user_id);
     // costruisce criterio di fetch delle news relative agli oggetti monitorati, con filtro
     $c = oppNewsPeer::getMyMonitoredItemsNewsWithFiltersCriteria($user, $filters);
     $c->setLimit(50);
     $this->pager = new deppNewsPager('News', 50);
     $this->pager->setCriteria($c);
     $this->pager->setPage($this->getRequestParameter('page', 1));
     $this->pager->init();
     $feed = $this->_make_feed_from_pager('Ultime notizie per te', '@monitoring_news?user_token=' . $this->getUser()->getToken(), $this->pager);
     $this->_send_output($feed);
     return sfView::NONE;
 }
 public function executeNews()
 {
     $this->session = $this->getUser();
     $this->user_id = $this->session->getId();
     $this->user = OppUserPeer::retrieveByPK($this->user_id);
     $this->redirectUnless($this->user instanceof OppUser, '/');
     $format = $this->getRequestParameter('format', 'html');
     $this->getResponse()->setTitle('le mie notizie - ' . sfConfig::get('app_main_title'));
     $filters = array();
     if ($this->getRequest()->getMethod() == sfRequest::POST || $this->getRequest()->getMethod() == sfRequest::GET) {
         // reset dei filtri se richiesto esplicitamente
         if ($this->getRequestParameter('reset_filters', 'false') == 'true') {
             $this->getRequest()->getParameterHolder()->set('filter_tag_id', '0');
             $this->getRequest()->getParameterHolder()->set('filter_act_type_id', '0');
             $this->getRequest()->getParameterHolder()->set('filter_act_ramo', '0');
             $this->getRequest()->getParameterHolder()->set('filter_date', '0');
             $this->getRequest()->getParameterHolder()->set('filter_main_all', 'main');
         }
         // legge i filtri dalla request e li scrive nella sessione utente
         if ($this->hasRequestParameter('filter_tag_id')) {
             $this->session->setAttribute('tag_id', $this->getRequestParameter('filter_tag_id'), 'monitoring_filter');
         }
         if ($this->hasRequestParameter('filter_act_type_id')) {
             $this->session->setAttribute('act_type_id', $this->getRequestParameter('filter_act_type_id'), 'monitoring_filter');
         }
         if ($this->hasRequestParameter('filter_act_ramo')) {
             $this->session->setAttribute('act_ramo', $this->getRequestParameter('filter_act_ramo'), 'monitoring_filter');
         }
         if ($this->hasRequestParameter('filter_date')) {
             $this->session->setAttribute('date', $this->getRequestParameter('filter_date'), 'monitoring_filter');
         }
         if ($this->hasRequestParameter('filter_main_all')) {
             $this->session->setAttribute('main_all', $this->getRequestParameter('filter_main_all'), 'news_filter');
         }
         if ($this->getRequestParameter('filter_tag_id') == '0' && $this->getRequestParameter('filter_act_type_id') == '0' && $this->getRequestParameter('filter_act_ramo') == '0' && $this->getRequestParameter('filter_date') == '0' && $this->getRequestParameter('filter_main_all') == 'main') {
             $this->redirect('@monitoring_news?user_token=' . $this->getUser()->getToken());
         }
     }
     // legge sempre i filtri dalla sessione utente
     $filters['tag_id'] = $this->session->getAttribute('tag_id', '0', 'monitoring_filter');
     $filters['act_type_id'] = $this->session->getAttribute('act_type_id', '0', 'monitoring_filter');
     $filters['act_ramo'] = $this->session->getAttribute('act_ramo', '0', 'monitoring_filter');
     $filters['date'] = $this->session->getAttribute('date', '0', 'monitoring_filter');
     $filters['main_all'] = $this->session->getAttribute('main_all', 'main', 'news_filter');
     // passa la variabile filters alla view
     $this->filters = $filters;
     // costruisce criterio di fetch delle news relative agli oggetti monitorati, con filtro
     $c = oppNewsPeer::getMyMonitoredItemsNewsWithFiltersCriteria($this->user, $this->filters);
     // estrae tutti gli atti monitorati dall'utente, per costruire la select
     $this->all_monitored_tags = $this->user->getMonitoredObjects('Tag');
     // estrae tutti i tipi di atti monitorati dall'utente (senza filtri), per la select
     $indirectly_monitored_acts_types = OppTipoAttoPeer::doSelectIndirectlyMonitoredByUser($this->user, $this->type);
     $directly_monitored_acts_types = OppTipoAttoPeer::doSelectDirectlyMonitoredByUser($this->user, $this->type);
     $this->all_monitored_acts_types = OppTipoAttoPeer::merge($indirectly_monitored_acts_types, $directly_monitored_acts_types);
     if ($this->hasRequestParameter('itemsperpage')) {
         $this->getUser()->setAttribute('itemsperpage', $this->getRequestParameter('itemsperpage'));
     }
     $itemsperpage = $this->getUser()->getAttribute('itemsperpage', sfConfig::get('app_pagination_limit'));
     $this->pager = new deppNewsPager('News', $itemsperpage);
     $this->pager->setCriteria($c);
     $this->pager->setPage($this->getRequestParameter('page', 1));
     $this->pager->init();
 }