/** * calcola l'indice di rilevanza accumulato fino a una certa data, per un tag * come somma degli indici di rilevanza di tutti gli atti taggati con quel tag * * @param integer $tag_id * @param date $data * @param SimpleXMLElement $xml_node * @param boolean $verbose * @return float * @author Guglielmo Celata */ public static function calcolaRilevanzaTag($tag_id, $data, $xml_node, $verbose = false) { $tag_node = $xml_node->addChild('tag', null, self::$opp_ns); // estrazione array atti taggati con un tag $atti_ids = TaggingPeer::getTaggableIds($tag_id, 'OppAtto'); if ($verbose) { printf("tag: %10s\n", $tag_id); } $tag_node->addAttribute('id', $tag_id); $tag_node->addAttribute('n_atti', count($atti_ids)); $punteggio = 0.0; // --- estrazione rilevanza singoli atti --- foreach ($atti_ids as $cnt => $atto_id) { $punteggio += $d_punteggio = OppActHistoryCachePeer::getIndiceForAttoData($atto_id, $data); $atto_node = $tag_node->addChild('atto', null, self::$opp_ns); $atto_node->addAttribute('totale', $d_punteggio); $atto_node->addAttribute('atto_id', $atto_id); if ($verbose) { printf("atto: %10s totale: %7.2f\n", $atto_id, $d_punteggio); } } $tag_node->addAttribute('totale', $punteggio); return $punteggio; }