/** * create as many news as the number of monitorable objects related to the * generating object * * @param BaseObject $object - the generator object * @param int $priority - the priority (it's an override if not null) * @param bool $isSuccNews - flag to generate a succNews (only called from batch script) * * @return int - the number of generated news * @author Guglielmo Celata **/ public function generateNews(BaseObject $object, $priority = null, $isSuccNews = null) { $n_gen_news = 0; // fetch the monitorable objects related to this generator $monitorable_objects = $this->getRelatedMonitorableObjects($object); foreach ($monitorable_objects as $obj) { // temporarily skip news generation when tagging emendamento if (get_class($object) == 'Tagging' && $object->getTaggableModel() == 'OppEmendamento') { continue; } $n = new News(); $n->setGeneratorModel(get_class($object)); $n->setGeneratorPrimaryKeys(serialize($this->getPrimaryKeysArray($object))); $n->setRelatedMonitorableModel(get_class($obj)); $n->setRelatedMonitorableId($obj->getPrimaryKey()); // the following methods store data related to the generating object in the cache // only data needed to sort, sum, average, or count, are cached if ($object->getCreatedAt() != null) { $n->setCreatedAt($object->getCreatedAt()); } $n->setDate($object->getNewsDate()); if (!is_null($priority)) { $n->setPriority($priority); } else { $n->setPriority($object->getNewsPriority()); } # TODO: spostare le eccezioni fuori dal plugin, in un contesto di applicazione // eccezioni // eccezione per non generare notizia alla presentazione di un decreto legge if ($object instanceof OppAtto && $object->getTipoAttoId() == 12) { continue; } if ($obj instanceof OppAtto) { $n->setDataPresentazioneAtto($obj->getDataPres()); $n->setTipoAttoId($obj->getOppTipoAtto()->getId()); $n->setRamoVotazione($obj->getRamo()); } // eccezione per modifica valore campo succ (opp_atto) if (isset($this->succNews) && $this->succNews || $isSuccNews) { $n->setSucc($object->getSucc()); $succ_obj = OppAttoPeer::retrieveByPK($object->getSucc()); $n->setDate($succ_obj->getDataPres('Y-m-d h:i:s')); } // eccezione per news generate dal tagging if ($object instanceof Tagging) { $n->setTagId($object->getTagId()); } $n->save(); $n_gen_news++; } return $n_gen_news; }
public function generateNewsForPolitico() { // force generation of another news related to politico in case skip is activated // we need the news related to the politician for the politician page $n = new News(); $n->setGeneratorModel(get_class($this)); $n->setGeneratorPrimaryKeys(serialize($this->getPrimaryKeysArray())); $n->setRelatedMonitorableModel('OppPolitico'); $n->setRelatedMonitorableId($this->getOppCarica()->getPoliticoId()); if ($this->getCreatedAt() != null) { $n->setCreatedAt($this->getCreatedAt()); } $n->setDate($this->getNewsDate()); $n->setPriority(2); $n->save(); }
define('SF_ENVIRONMENT', 'prod'); define('SF_DEBUG', false); require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php'; sfContext::getInstance(); /* duplica le notizie generate dal Tagging, relative a un OppAtto per ogni notizia, genera una notizia relativa a Tag, con data equivalente in questo modo, l'estrazione di notizie relative a un tag è semplificata */ echo "Fetching news to duplicate\n"; $c = new Criteria(); $c->add(NewsPeer::GENERATOR_MODEL, 'Tagging'); $c->add(NewsPeer::RELATED_MONITORABLE_MODEL, 'OppAtto'); $news = NewsPeer::doSelect($c); echo "Found " . count($news) . " news\n"; foreach ($news as $i => $n) { $nn = new News(); $nn->setGeneratorModel($n->getGeneratorModel()); $nn->setGeneratorPrimaryKeys($n->getGeneratorPrimaryKeys()); $nn->setRelatedMonitorableModel('Tag'); $nn->setRelatedMonitorableId($n->getTagId()); $nn->setCreatedAt($n->getCreatedAt()); $nn->setDate($n->getDate()); $nn->setPriority(1); $nn->setTagId($n->getTagId()); $nn->save(); if ($i % 100 == 0) { echo $i . " "; } } echo "\n{$i} news processed and fixed\n";