diff -r b403086580f7 -r 0e57c730bb18 Utils/WikiTagUtils.php --- a/Utils/WikiTagUtils.php Fri Nov 18 17:54:30 2011 +0100 +++ b/Utils/WikiTagUtils.php Fri Nov 25 18:55:42 2011 +0100 @@ -13,106 +13,6 @@ /** - * Get or create tag. Returns an array(tag:WikiTagTag, revision_id=int, created:Boolean) - */ - - /** - * - * Enter description here ... - * @param unknown_type $tag_label - * @param unknown_type $doctrine - * @return multitype:boolean Ambigous Ambigous (array(\IRI\Bundle\WikiTagBundle\Model\TagInterface, revision_id=int, created:Boolean)) - */ - public static function getOrCreateTag($tag_label, $doctrine) - { - $tag_label_normalized = WikiTagUtils::normalizeTag($tag_label); - // We get the wikipedia references for the tag_label - // We get or create the tag object - $tags = $doctrine->getRepository('WikiTagBundle:Tag')->findBy(array('normalizedLabel' => $tag_label_normalized)); - $tag = null; - foreach ($tags as $t){ - if($tag==null || $t->getUrlStatus()!=Tag::$TAG_URL_STATUS_DICT['null_result']){ - $tag = $t; - if($t->getUrlStatus()!=Tag::$TAG_URL_STATUS_DICT['null_result']){ - break; - } - } - } - $wp_request_done = false; - if($tag==null){ - $tag = new Tag(); - $tag->setLabel($tag_label_normalized); - $tag->setOriginalLabel($tag_label); - $tag->setNormalizedLabel($tag_label_normalized); - $created = true; - } - else{ - $created = false; - $match_exists = false; - // Even if a tag with the normalised label exists, IF this tag is not wikipedia semantised, - // we search if a wikipedia semantised version exists in the base - foreach ($tags as $t){ - if($t->getUrlStatus()==Tag::$TAG_URL_STATUS_DICT['match']){ - $tag = $t; - $match_exists = true; - break; - } - } - if($match_exists==false){ - $wp_response = WikiTagUtils::getWikipediaInfo($tag_label_normalized); - $status = $wp_response['status']; - if($status==Tag::$TAG_URL_STATUS_DICT['match']){ - $tag = new Tag(); - $tag->setLabel($tag_label_normalized); - $tag->setOriginalLabel($tag_label); - $tag->setNormalizedLabel($tag_label_normalized); - $created = true; - $wp_request_done = true; - } - } - } - - // We request Wikipedia if the tag is created - if($created==true){ - if($wp_request_done==false){ - $wp_response = WikiTagUtils::getWikipediaInfo($tag_label_normalized); - } - $new_label = $wp_response['new_label']; - $status = $wp_response['status']; - $url = $wp_response['wikipedia_url']; - $pageid = $wp_response['pageid']; - $dbpedia_uri = $wp_response["dbpedia_uri"]; - $wikipedia_revision_id = $wp_response['revision_id']; - - # We save the datas - if($new_label!=null){ - $tag->setLabel($new_label); - } - if($status!=null){ - $tag->setUrlStatus($status); - } - $tag->setWikipediaUrl($url); - $tag->setWikipediaPageId($pageid); - $tag->setDbpediaUri($dbpedia_uri); - - // Save datas. - $em = $doctrine->getEntityManager(); - $em->persist($tag); - $em->flush(); - - } - else if($tag!=null && $tag->getWikipediaPageId()!=null){ - $wp_response = WikiTagUtils::getWikipediaInfo(null, $tag->getWikipediaPageId()); - $wikipedia_revision_id = $wp_response['revision_id']; - } - else{ - $wikipedia_revision_id = null; - } - - return array($tag, $wikipedia_revision_id, $created);//, $wpReponse); - } - - /** * Cleans the tag label */ public static function normalizeTag($tag_label) @@ -181,7 +81,12 @@ $status = Tag::$TAG_URL_STATUS_DICT["match"]; } // In redirection, we have to get more datas by adding redirects=true to the params - if($status==Tag::$TAG_URL_STATUS_DICT["redirection"]){ + $alternative_label = null; + $alternative_url = null; + $alternative_pageid = null; + if($status==Tag::$TAG_URL_STATUS_DICT["redirection"]) + { + //TODO: add alternative label $params['redirects'] = "true"; $ar = WikiTagUtils::requestWikipedia($params); $res = $ar[0]; @@ -192,6 +97,9 @@ } // get first result $page = reset($pages); + $alternative_label = array_key_exists('title', $page) ? $page['title'] : null; + $alternative_url = array_key_exists('fullurl', $page) ? $page['fullurl'] : null; + $alternative_pageid = array_key_exists('pageid', $page) ? $page['pageid'] : null; } $revision_id = $page['lastrevid']; @@ -214,7 +122,17 @@ $dbpedia_uri = WikiTagUtils::getDbpediaUri($english_label); } - $wp_response = array('new_label'=>$new_label, 'status'=>$status, 'wikipedia_url'=>$url, 'pageid'=>$pageid, 'dbpedia_uri'=>$dbpedia_uri, 'revision_id'=>$revision_id, 'response'=>$original_response); + $wp_response = array( + 'new_label'=>$new_label, + 'alternative_label'=>$alternative_label, + 'status'=>$status, + 'wikipedia_url'=>$url, + 'wikipedia_alternative_url'=>$alternative_url, + 'pageid'=>$pageid, + 'alternative_pageid'=>$alternative_pageid, + 'dbpedia_uri'=>$dbpedia_uri, + 'revision_id'=>$revision_id, + 'response'=>$original_response); //return $url."
RES = ".$res/*."
DUMP = ".var_dump($pages)*/."
COUNT = ".count($pages)."
page = ".var_dump($page); return $wp_response; }