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";
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(){
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>';
}
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();
}
}
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;
}
}
$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);
$this->auth_token = $auth_token;
return $auth_token;
} else {
- return false;
+ throw new repository_exception('invalidtoken', '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)) {
$ret['list'] = $list;
return $ret;
} else {
- return null;
+ throw new repository_exception('nullfilelist', 'repository');
}
}
if(empty($action)) {
$action = 'list';
}
+ } else {
+ throw new repository_exception('invalidemail', 'repository');
}
} else {
if($account = get_user_preferences('flickrmail', '')){
$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)){
}
}
+/**
+ * exception class for repository api
+ *
+ */
+
+class repository_exception extends moodle_exception {
+}
/**
* Listing object describing a listing of files and directories
$ret = (array)unserialize($entry->$option);
return $ret;
}
-function repository_get_repositories(){
+function repository_instances(){
global $DB, $CFG, $USER;
$contextid = 0;
$params = array();
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
$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') {
// 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));
+ }
}
?>