MDL-13766, use exception model to report error.
This commit is contained in:
+28
-13
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)){
|
||||
|
||||
+8
-1
@@ -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();
|
||||
|
||||
+47
-18
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user