]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-13766, use exception model to report error.
authordongsheng <dongsheng>
Wed, 23 Jul 2008 04:43:53 +0000 (04:43 +0000)
committerdongsheng <dongsheng>
Wed, 23 Jul 2008 04:43:53 +0000 (04:43 +0000)
repository/ajax.php
repository/boxnet/boxlibphp5.php
repository/boxnet/repository.class.php
repository/flickr/repository.class.php
repository/lib.php
repository/ws.php

index 2229d8ebb13bf407c453f9b4978bd8264ff3c284..e327f5a8335cc96b8b7fa4d9fcbe502a8c21223d 100644 (file)
@@ -91,7 +91,7 @@ var viewbar  = null;
 var viewmode = 0;
 var repos = [];
 <?php
-$repos = repository_get_repositories();
+$repos = repository_instances();
 foreach($repos as $repo) {
     echo 'repos.push('.json_encode($repo).')';
     echo "\n";
@@ -248,7 +248,9 @@ function download(){
     var title = document.getElementById('newname').value;
     var file = document.getElementById('fileurl').value;
     loading();
-    var trans = YAHOO.util.Connect.asyncRequest('POST', 'ws.php?id='+repositoryid+'&action=download', loadfile, postdata({'file':file, 'title':title}));
+    var trans = YAHOO.util.Connect.asyncRequest('POST', 
+        'ws.php?id='+repositoryid+'&action=download', loadfile, 
+        postdata({'file':file, 'title':title}));
 }
 // produce thumbnail view
 function viewthumb(){
@@ -264,7 +266,10 @@ function viewthumb(){
         str += '<div class="t">';
         str += '<img title="'+obj[k].title+'" src="'+obj[k].thumbnail+'" />';
         str += '<div style="text-align:center">';
-        str += ('<input type="radio" title="'+obj[k].title+'" name="selected-files" value="'+obj[k].source+'" onclick=\'rename("'+obj[k].title+'", "'+obj[k].source+'")\' />');
+        str += ('<input type="radio" title="'+obj[k].title
+                +'" name="selected-files" value="'+obj[k].source
+                +'" onclick=\'rename("'+obj[k].title+'", "'
+                +obj[k].source+'")\' />');
         str += obj[k].title+'</div>';
         str += '</div>';
     }
@@ -318,11 +323,16 @@ function print_login(){
 
 var callback = {
 success: function(o) {
+    var panel = new YAHOO.util.Element('panel');
     try {
         var ret = YAHOO.lang.JSON.parse(o.responseText);
     } catch(e) {
         alert('Invalid JSON String\n'+o.responseText);
     }
+    if(ret.e){
+        panel.get('element').innerHTML = ret.e;
+        return;
+    }
     datasource = ret;
     if(datasource.l){
         print_login();
@@ -336,16 +346,21 @@ success: function(o) {
   }
 }
 var loadfile = {
-    success: function(o) {
-        try {
-            var ret = YAHOO.lang.JSON.parse(o.responseText);
-        } catch(e) {
-            alert('Invalid JSON String\n'+o.responseText);
-        }
-        var panel = new YAHOO.util.Element('panel');
-        var html = '<h1>Download Successfully!</h1>';
-        html += '<a href="###" onclick="viewfiles()">Back</a>';
-        panel.get('element').innerHTML = html;
+success: function(o) {
+    var panel = new YAHOO.util.Element('panel');
+    try {
+        var ret = YAHOO.lang.JSON.parse(o.responseText);
+    } catch(e) {
+        alert('Invalid JSON String\n'+o.responseText);
+    }
+    if(ret.e){
+        panel.get('element').innerHTML = ret.e;
+        return;
+    }
+    var panel = new YAHOO.util.Element('panel');
+    var html = '<h1>Download Successfully!</h1>';
+    html += '<a href="###" onclick="viewfiles()">Back</a>';
+    panel.get('element').innerHTML = html;
     }
 }
 
index 01fb2b480bfed49dad0b7fc00aa0114ade8a3f93..71536af547c9ebd726543b2a7383a348a0eb17f7 100755 (executable)
@@ -91,7 +91,7 @@ class boxclient {
         $ret = $c->post('http://www.box.net/api/1.0/auth/'.$ticket, $param);
         $header = $c->getResponse();
         if(empty($header['location'])) {
-            return false;
+            throw new repository_exception('invalidpassword', 'repository');
         }
         $location = $header['location'];
         preg_match('#auth_token=(.*)$#i', $location, $matches);
@@ -100,7 +100,7 @@ class boxclient {
             $this->auth_token = $auth_token;
             return $auth_token;
         } else {
-            return false;
+            throw new repository_exception('invalidtoken', 'repository');
         }
     }
 
index e3ff8869f99a173f62beebbf7f40901100739146..03bc50dcb443a6935028d00793027b301caf93f7 100755 (executable)
@@ -30,8 +30,12 @@ class repository_boxnet extends repository{
                     && !empty($options['ticket']) )
         {
             $this->box = new boxclient($options['api_key']);
-            $SESSION->box_token = $this->box->getAuthToken($options['ticket'], 
-                $options['username'], $options['password']);
+            try{
+                $SESSION->box_token = $this->box->getAuthToken($options['ticket'], 
+                    $options['username'], $options['password']);
+            } catch (repository_exception $e) {
+                throw $e;
+            }
         }
         // already logged
         if(!empty($SESSION->box_token)) {
@@ -85,7 +89,7 @@ class repository_boxnet extends repository{
             $ret['list']   = $list;
             return $ret;
         } else {
-            return null;
+            throw new repository_exception('nullfilelist', 'repository');
         }
     }
 
index 46290e49c9a701de25016f46b0adbefcb8f6ed81..d855e292115b130c362565ee3db5e69733e8b01d 100755 (executable)
@@ -46,6 +46,8 @@ class repository_flickr extends repository{
                     if(empty($action)) {
                         $action = 'list';
                     }
+                } else {
+                    throw new repository_exception('invalidemail', 'repository');
                 }
             } else {
                 if($account = get_user_preferences('flickrmail', '')){
@@ -108,7 +110,11 @@ EOD;
             $ret->list[] =
                 array('title'=>$p['title'],'source'=>$p['id'],'id'=>$p['id'],'thumbnail'=>$this->flickr->buildPhotoURL($p, 'Square'), 'date'=>'', 'size'=>'unknown');
         }
-        return $ret;
+        if(empty($ret)) {
+            throw new repository_exception('nullphotolist', 'repository');
+        } else {
+            return $ret;
+        }
     }
     public function print_listing(){
         if(empty($this->photos)){
index 90f36cb7383f7a6151d051f97070b23f7f361682..feb63827a21b37e01a4b1fb1a33018b606a6bc7b 100644 (file)
@@ -241,6 +241,13 @@ abstract class repository {
     }
 }
 
+/**
+ * exception class for repository api
+ *
+ */
+
+class repository_exception extends moodle_exception {
+}
 
 /**
  * Listing object describing a listing of files and directories
@@ -272,7 +279,7 @@ function repository_get_option($id, $position){
     $ret = (array)unserialize($entry->$option);
     return $ret;
 }
-function repository_get_repositories(){
+function repository_instances(){
     global $DB, $CFG, $USER;
     $contextid = 0;
     $params = array();
index abbdd1ef2a68eafd5974735eae7f54e9ba574240..e48ef03154cabb8d4886fa94d1c1c8d32fe276dc 100644 (file)
@@ -2,9 +2,10 @@
 set_time_limit(0);
 require_once('../config.php');
 require_once('lib.php');
-$CFG->repository_cache_expire = 12000;
+// set one hour here
+$CFG->repository_cache_expire = 60*60;
 // repository id
-$id     = optional_param('id', PARAM_INT);
+$id     = optional_param('id', 1, PARAM_INT);
 // action of client
 $action = optional_param('action', '', PARAM_RAW);
 // Search text
@@ -15,27 +16,43 @@ $title = optional_param('title', '', PARAM_RAW);
 $p     = optional_param('p', '', PARAM_RAW);
 
 if(!$repository = $DB->get_record('repository', array('id'=>$id))) {
-    echo json_encode('wrong');
-    die;
+    $err = new stdclass;
+    $err->e = get_string('invalidrepositoryid', 'repository');
+    die(json_encode($err));
 }
 
-if(is_file($CFG->dirroot.'/repository/'.$repository->repositorytype.'/repository.class.php')) {
-    require_once($CFG->dirroot.'/repository/'.$repository->repositorytype.'/repository.class.php');
+if(file_exists($CFG->dirroot.'/repository/'.
+    $repository->repositorytype.'/repository.class.php'))
+{
+    require_once($CFG->dirroot.'/repository/'.
+        $repository->repositorytype.'/repository.class.php');
     $classname = 'repository_' . $repository->repositorytype;
-    $repo = new $classname($id, SITEID, array('ajax'=>true));
+    try{
+        $repo = new $classname($id, SITEID, array('ajax'=>true));
+    } catch (repository_exception $e){
+        $err = new stdclass;
+        $err->e = $e->getMessage();
+        die(json_encode($err));
+    }
 } else {
-    print_error('invalidplugin', 'repository');
-    echo json_encode('invalidplugin');
-    die;
+    $err = new stdclass;
+    $err->e = get_string('invalidplugin', 'repository');
+    die(json_encode($err));
 }
 
 if($action == 'list') {
-    if(!empty($p)) {
-        echo json_encode($repo->get_listing($p));
-    } else if(!empty($search)) {
-        echo json_encode($repo->get_listing('', $search));
-    } else {
-        echo json_encode($repo->get_listing());
+    try {
+        if(!empty($p)) {
+            echo json_encode($repo->get_listing($p));
+        } else if(!empty($search)) {
+            echo json_encode($repo->get_listing('', $search));
+        } else {
+            echo json_encode($repo->get_listing());
+        }
+    } catch (repository_exception $e) {
+        $err = new stdclass;
+        $err->e = $e->getMessage();
+        die(json_encode($err));
     }
 
 } elseif($action == 'download') {
@@ -43,9 +60,21 @@ if($action == 'list') {
     // TODO
     // Need to communicate with FILE API
     // Copy the tmp file to final location
-    echo json_encode($ret);
+    try {
+        echo json_encode($ret);
+    } catch (repository_exception $e){
+        $err = new stdclass;
+        $err->e = $e->getMessage();
+        die(json_encode($err));
+    }
 } else {
-    echo json_encode($repo->print_login());
+    try {
+        echo json_encode($repo->print_login());
+    } catch (repository_exception $e){
+        $err = new stdclass;
+        $err->e = $e->getMessage();
+        die(json_encode($err));
+    }
 }
 
 ?>