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(); }