/** * Captura les dades de biblioteques per afegir-les a l'Hospici. * * */ public function executeImportData(sfWebRequest $request) { //Carreguem l'arxiu de coincidències amb els tipus d'activitats de la biblioteca $XML_T = simplexml_load_file('./documents/RelacioTipusActivitatsBiblioteques.txt'); $TAA = array(); foreach ($XML_T->t as $T) { $TAA[(string) $T->ext] = (string) $T->ccg; } $RET = array('NOVES' => 0, 'TROBADES' => 0); $XML = simplexml_load_file("http://www.bibgirona.cat/api/vhospici/events/event_items.xml?page=1&per_page=10"); $total = (int) $XML->info->paginesTotals; for ($i = 1; $i < $total; $i++) { $XML = simplexml_load_file("http://www.bibgirona.cat/api/vhospici/events/event_items.xml?page={$i}&per_page=10"); foreach ($XML->caixa as $C) { //Canviem el lloc pel que toca de la nostra bdd. Si no el trobem hi posem "altres" list($lloc, $entitat) = explode(' - ', $C->espais); if ($lloc == 'Vilobí dOnyar') { $lloc = 'Vilobí d\'Onyar'; } elseif ($lloc == 'La Jonquera') { $lloc = 'Jonquera, la'; } $SQL = new Criteria(); $SQL->add(PoblacionsPeer::NOM, '%' . $lloc . '%', Criteria::LIKE); $OP = PoblacionsPeer::doSelectOne($SQL); if (!$OP instanceof Poblacions) { $OP = PoblacionsPeer::retrieveByPK(1); } $idA = ActivitatsExternesPeer::ExisteixActivitat($OP->getIdPoblacio(), $C->data_inicial, $C->hora_inici, $C->url); if ($idA == 0) { $OA = new ActivitatsExternes(); $RET['NOVES']++; } else { $OA = ActivitatsExternesPeer::retrieveByPK($idA); $RET['TROBADES']++; } $OA->setTitol($C->titol); $OA->setDescripcio($C->text); $OA->setDatainicial($C->data_inicial); $OA->setDatafinal($C->data_fi); $OA->setHora($C->hora_inici); $OA->setUrl($C->url); $OA->setPoblacio($OP->getIdpoblacio()); $OA->setAdreca($entitat); $OA->setEntitat('Biblioteca ' . $entitat); $OA->setCategoria($TAA[(string) $C->tipus_activitat]); $OA->setActiu(true); $OA->save(); } } echo 'Noves: ' . $RET['NOVES'] . '<br />' . 'Trobades: ' . $RET['TROBADES']; return sfView::NONE; }