e48ef03154cabb8d4886fa94d1c1c8d32fe276dc
[moodle.git] / repository / ws.php
1 <?php
2 set_time_limit(0);
3 require_once('../config.php');
4 require_once('lib.php');
5 // set one hour here
6 $CFG->repository_cache_expire = 60*60;
7 // repository id
8 $id     = optional_param('id', 1, PARAM_INT);
9 // action of client
10 $action = optional_param('action', '', PARAM_RAW);
11 // Search text
12 $search = optional_param('s', '', PARAM_RAW);
13 // files to be downloaded
14 $file  = optional_param('file', '', PARAM_RAW);
15 $title = optional_param('title', '', PARAM_RAW);
16 $p     = optional_param('p', '', PARAM_RAW);
18 if(!$repository = $DB->get_record('repository', array('id'=>$id))) {
19     $err = new stdclass;
20     $err->e = get_string('invalidrepositoryid', 'repository');
21     die(json_encode($err));
22 }
24 if(file_exists($CFG->dirroot.'/repository/'.
25     $repository->repositorytype.'/repository.class.php'))
26 {
27     require_once($CFG->dirroot.'/repository/'.
28         $repository->repositorytype.'/repository.class.php');
29     $classname = 'repository_' . $repository->repositorytype;
30     try{
31         $repo = new $classname($id, SITEID, array('ajax'=>true));
32     } catch (repository_exception $e){
33         $err = new stdclass;
34         $err->e = $e->getMessage();
35         die(json_encode($err));
36     }
37 } else {
38     $err = new stdclass;
39     $err->e = get_string('invalidplugin', 'repository');
40     die(json_encode($err));
41 }
43 if($action == 'list') {
44     try {
45         if(!empty($p)) {
46             echo json_encode($repo->get_listing($p));
47         } else if(!empty($search)) {
48             echo json_encode($repo->get_listing('', $search));
49         } else {
50             echo json_encode($repo->get_listing());
51         }
52     } catch (repository_exception $e) {
53         $err = new stdclass;
54         $err->e = $e->getMessage();
55         die(json_encode($err));
56     }
58 } elseif($action == 'download') {
59     $ret = $repo->get_file($file, $title);
60     // TODO
61     // Need to communicate with FILE API
62     // Copy the tmp file to final location
63     try {
64         echo json_encode($ret);
65     } catch (repository_exception $e){
66         $err = new stdclass;
67         $err->e = $e->getMessage();
68         die(json_encode($err));
69     }
70 } else {
71     try {
72         echo json_encode($repo->print_login());
73     } catch (repository_exception $e){
74         $err = new stdclass;
75         $err->e = $e->getMessage();
76         die(json_encode($err));
77     }
78 }
80 ?>