Utils/WikiTagUtils.php
changeset 63 774ba82dca59
parent 60 984ba20c150b
child 67 989d9e117586
--- a/Utils/WikiTagUtils.php	Fri Dec 09 06:43:49 2011 +0100
+++ b/Utils/WikiTagUtils.php	Wed Dec 14 23:28:57 2011 +0100
@@ -49,6 +49,15 @@
      */
     public static function getWikipediaInfo($tag_label_normalized, $page_id=null)
     {
+        // get ignore_wikipedia_error parameter
+        $ignore_wikipedia_error = false;
+        
+        if(key_exists('kernel', $GLOBALS)) {
+            $kernel = $GLOBALS['kernel'];
+            $ignore_wikipedia_error = $kernel->getContainer()->getParameter('wiki_tag.ignore_wikipedia_error');
+        }
+        
+        
         $params = array('action'=>'query', 'prop'=>'info|categories|langlinks', 'inprop'=>'url', 'lllimit'=>'500', 'cllimit'=>'500', 'rvprop'=>'ids', 'format'=>'json');
         if($tag_label_normalized!=null){
             $params['titles'] = urlencode($tag_label_normalized);
@@ -60,7 +69,17 @@
             return WikiTagUtils::returnNullResult(null);
         }
         
-        $ar = WikiTagUtils::requestWikipedia($params);
+        try {
+            $ar = WikiTagUtils::requestWikipedia($params);
+        }
+        catch(\Exception $e) {
+            if($ignore_wikipedia_error) {
+                return WikiTagUtils::returnNullResult(null);
+            }
+            else {
+                throw $e;
+            }
+        }
 
         $res = $ar[0];
         $original_response = $res;
@@ -99,7 +118,18 @@
         if($status==Tag::$TAG_URL_STATUS_DICT["redirection"])
         {
             $params['redirects'] = "true";
-            $ar = WikiTagUtils::requestWikipedia($params);
+            try {
+                $ar = WikiTagUtils::requestWikipedia($params);
+            }
+            catch(\Exception $e) {
+                if($ignore_wikipedia_error) {
+                    return WikiTagUtils::returnNullResult(null);
+                }
+                else {
+                    throw $e;
+                }
+            }
+            
             $res = $ar[0];
             $pages = $ar[1];
             #we know that we have at least one answer
@@ -144,7 +174,7 @@
         	'dbpedia_uri'=>$dbpedia_uri,
         	'revision_id'=>$revision_id,
         	'response'=>$original_response);
-        //return $url." <br/>RES =  ".$res/*." <br/>DUMP =  ".var_dump($pages)*/." <br/>COUNT =  ".count($pages)." <br/>page =  ".var_dump($page);
+        
         return $wp_response;
     }
     
@@ -172,6 +202,7 @@
         $ch = curl_init();
         curl_setopt($ch, CURLOPT_URL, $url);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+        //TODO: change
         curl_setopt($ch, CURLOPT_USERAGENT, 'http://www.iri.centrepompidou.fr');
         curl_setopt($ch, CURLOPT_TIMEOUT_MS, 5000);
         $res = curl_exec($ch);
@@ -180,7 +211,7 @@
         curl_close($ch);
         
         if ($curl_errno > 0) {
-            throw new \Exception("Wikipedia request failed. cURLError #$curl_errno: $curl_error\n");
+            throw new \Exception("Wikipedia request failed. cURLError #$curl_errno: $curl_error\n", $curl_errno, null);
         }
         
         $val = json_decode($res, true);