--- /dev/null
+<map version="0.8.1">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node CREATED="1228443713170" ID="Freemind_Link_1016958583" MODIFIED="1228360017495" TEXT="Root">
+<node CREATED="1228443713170" MODIFIED="1228443713170" POSITION="right" TEXT="image">
+<node CREATED="1228443713170" MODIFIED="1228443713170" TEXT="web_image">
+<node CREATED="1228443713170" ID="Freemind_Link_750128103" MODIFIED="1228360048650" TEXT=".jpg"/>
+<node CREATED="1228443713170" ID="Freemind_Link_1840944189" MODIFIED="1228360051100" TEXT=".png"/>
+<node CREATED="1228443713170" ID="Freemind_Link_1710862996" MODIFIED="1228360052949" TEXT=".gif"/>
+</node>
+<node CREATED="1228443713170" MODIFIED="1228443713170" TEXT="non_web_image">
+<node CREATED="1228443713171" ID="Freemind_Link_481322493" MODIFIED="1228360054120" TEXT=".bmp"/>
+<node CREATED="1228443713171" ID="Freemind_Link_1948466853" MODIFIED="1228360055879" TEXT=".svg"/>
+<node CREATED="1228443713171" ID="Freemind_Link_82277447" MODIFIED="1228360058609" TEXT=".psd"/>
+</node>
+</node>
+<node CREATED="1228443713172" MODIFIED="1228443713172" POSITION="left" TEXT="audio">
+<node CREATED="1228443713172" ID="Freemind_Link_606456130" MODIFIED="1228444641257" TEXT="web_audio">
+<node CREATED="1228443713172" ID="Freemind_Link_59286792" MODIFIED="1228360024405" TEXT=".wav"/>
+<node CREATED="1228443713172" ID="Freemind_Link_618796935" MODIFIED="1228360026345" TEXT=".mp3"/>
+<node CREATED="1228443713172" ID="Freemind_Link_313976796" MODIFIED="1228360027884" TEXT=".ra"/>
+</node>
+<node CREATED="1228443713172" ID="Freemind_Link_1800832653" MODIFIED="1228444710126" TEXT="non_web_audio">
+<node CREATED="1228443713172" ID="Freemind_Link_1772266185" MODIFIED="1228360029556" TEXT=".ape"/>
+</node>
+</node>
+<node CREATED="1228443713171" ID="Freemind_Link_70165685" MODIFIED="1228443713171" POSITION="right" TEXT="video">
+<node CREATED="1228443713171" ID="Freemind_Link_164412832" MODIFIED="1228444732485" TEXT="web_video">
+<node CREATED="1228443713171" ID="Freemind_Link_1674188247" MODIFIED="1228360059808" TEXT=".flv"/>
+<node CREATED="1228443713171" ID="Freemind_Link_1109951130" MODIFIED="1228360062108" TEXT=".swf"/>
+<node CREATED="1228444776020" ID="Freemind_Link_441200481" MODIFIED="1228360063599" TEXT=".mov"/>
+<node CREATED="1228443713171" ID="Freemind_Link_1073677924" MODIFIED="1228360067059" TEXT=".rm"/>
+</node>
+<node CREATED="1228443713171" ID="Freemind_Link_1019644700" MODIFIED="1228444740884" TEXT="non_web_video">
+<node CREATED="1228443713171" ID="Freemind_Link_190589975" MODIFIED="1228360068448" TEXT=".avi"/>
+<node CREATED="1228444761093" ID="Freemind_Link_1728963308" MODIFIED="1228360070547" TEXT=".mpg"/>
+</node>
+</node>
+<node CREATED="1228443713171" ID="Freemind_Link_1159259702" MODIFIED="1228443713171" POSITION="left" TEXT="document">
+<node CREATED="1228443713171" ID="Freemind_Link_395227081" MODIFIED="1228443713171" TEXT="msoffice">
+<node CREATED="1228443713171" ID="Freemind_Link_1480546733" MODIFIED="1228360031084" TEXT=".doc"/>
+<node CREATED="1228443713171" ID="Freemind_Link_983591781" MODIFIED="1228360032344" TEXT=".ppt"/>
+<node CREATED="1228444842809" ID="Freemind_Link_922920573" MODIFIED="1228360034493" TEXT=".xls"/>
+</node>
+<node CREATED="1228443713171" MODIFIED="1228443713171" TEXT="openoffice">
+<node CREATED="1228443713171" ID="Freemind_Link_368708997" MODIFIED="1228360035753" TEXT=".odt"/>
+<node CREATED="1228443713171" ID="Freemind_Link_725490871" MODIFIED="1228360037712" TEXT=".odp"/>
+</node>
+<node CREATED="1228445046926" ID="Freemind_Link_1253224142" MODIFIED="1228445305915" TEXT="other">
+<node CREATED="1228445331815" ID="Freemind_Link_1202332406" MODIFIED="1228360039820" TEXT=".pdf"/>
+<node CREATED="1228445541872" ID="Freemind_Link_1229438606" MODIFIED="1228445547473" TEXT=".ps"/>
+</node>
+</node>
+<node CREATED="1228443713171" ID="Freemind_Link_525709024" MODIFIED="1228444608956" POSITION="right" TEXT="text">
+<node CREATED="1228443713171" ID="Freemind_Link_1252355401" MODIFIED="1228444954730" TEXT="source">
+<node CREATED="1228443713171" ID="Freemind_Link_1783454794" MODIFIED="1228360071977" TEXT=".c"/>
+<node CREATED="1228443713171" ID="Freemind_Link_603295666" MODIFIED="1228360073187" TEXT=".cpp"/>
+<node CREATED="1228443713171" ID="Freemind_Link_1939719884" MODIFIED="1228360075564" TEXT=".java"/>
+</node>
+<node CREATED="1228443713171" MODIFIED="1228443713171" TEXT="script">
+<node CREATED="1228443713171" ID="Freemind_Link_567551283" MODIFIED="1228360078936" TEXT=".php"/>
+<node CREATED="1228443713171" ID="Freemind_Link_829963573" MODIFIED="1228360081186" TEXT=".py"/>
+<node CREATED="1228443713171" ID="Freemind_Link_699741325" MODIFIED="1228360082595" TEXT=".lua"/>
+<node CREATED="1228443713171" ID="Freemind_Link_841176112" MODIFIED="1228360083825" TEXT=".rb"/>
+</node>
+<node CREATED="1228443713171" ID="Freemind_Link_466282865" MODIFIED="1228443713171" TEXT="markup">
+<node CREATED="1228443713171" ID="Freemind_Link_776860364" MODIFIED="1228360085205" TEXT=".xml"/>
+<node CREATED="1228443713171" ID="Freemind_Link_428374654" MODIFIED="1228360086825" TEXT=".html"/>
+<node CREATED="1228443713171" ID="Freemind_Link_1636201602" MODIFIED="1228360088364" TEXT=".xhtml"/>
+</node>
+<node CREATED="1228443713171" MODIFIED="1228443713171" TEXT="plaintext">
+<node CREATED="1228443713171" ID="Freemind_Link_304679617" MODIFIED="1228360090384" TEXT=".txt"/>
+<node CREATED="1228443713171" ID="Freemind_Link_988584709" MODIFIED="1228360091764" TEXT=".log"/>
+<node CREATED="1228443713171" ID="Freemind_Link_778232964" MODIFIED="1228360093272" TEXT=".csv"/>
+</node>
+</node>
+<node CREATED="1228444010861" ID="Freemind_Link_329759178" MODIFIED="1228444605452" POSITION="left" TEXT="moodle">
+<node CREATED="1228444424511" ID="Freemind_Link_864349088" MODIFIED="1228444427093" TEXT=".mb.zip"/>
+<node CREATED="1228444437566" ID="Freemind_Link_1509389480" MODIFIED="1228444447148" TEXT=".ld.zip"/>
+</node>
+<node CREATED="1228443713172" ID="Freemind_Link_907467024" MODIFIED="1228443933119" POSITION="right" TEXT="archive">
+<node CREATED="1228443713172" ID="Freemind_Link_637157755" MODIFIED="1228360096144" TEXT=".rar"/>
+<node CREATED="1228443713172" ID="Freemind_Link_628673054" MODIFIED="1228360097913" TEXT=".cab"/>
+<node CREATED="1228443713172" ID="Freemind_Link_1141513740" MODIFIED="1228360100154" TEXT=".iso"/>
+<node CREATED="1228443713172" ID="Freemind_Link_1269400334" MODIFIED="1228360101353" TEXT=".img"/>
+<node CREATED="1228443713172" ID="Freemind_Link_1973736841" MODIFIED="1228360102583" TEXT=".tar.gz"/>
+<node CREATED="1228444535473" ID="Freemind_Link_1525022758" MODIFIED="1228360105150" TEXT=".zip"/>
+</node>
+<node CREATED="1228443713172" ID="Freemind_Link_1332471247" MODIFIED="1228443713172" POSITION="left" TEXT="application">
+<node CREATED="1228443713172" MODIFIED="1228443713172" TEXT="windows">
+<node CREATED="1228443713172" ID="Freemind_Link_1154060414" MODIFIED="1228360041512" TEXT=".exe"/>
+<node CREATED="1228443713172" ID="Freemind_Link_1578063867" MODIFIED="1228360043052" TEXT=".dll"/>
+</node>
+<node CREATED="1228443713172" MODIFIED="1228443713172" TEXT="linux">
+<node CREATED="1228443713172" ID="Freemind_Link_68848485" MODIFIED="1228360045021" TEXT=".bin"/>
+</node>
+<node CREATED="1228443713172" ID="Freemind_Link_317684862" MODIFIED="1228443713172" TEXT="mac">
+<node CREATED="1228443920469" ID="_" MODIFIED="1228443922520" TEXT=".app"/>
+</node>
+</node>
+</node>
+</map>
}
}
}
+class file_type_to_ext {
+ public function __construct($file = '') {
+ global $CFG;
+ if (empty($file)) {
+ $this->file = $CFG->libdir.'/file/file_types.mm';
+ } else {
+ $this->file = $file;
+ }
+ $this->tree = array();
+ $this->result = array();
+ }
+ private function _browse_nodes($parent, $types) {
+ $key = (string)$parent['TEXT'];
+ if(isset($parent->node)) {
+ $this->tree[$key] = array();
+ if (in_array((string)$parent['TEXT'], $types)) {
+ $this->_select_nodes($parent, $this->result);
+ } else {
+ foreach($parent->node as $v){
+ $this->_browse_nodes($v, $types);
+ }
+ }
+ } else {
+ $this->tree[] = $key;
+ }
+ }
+ private function _select_nodes($parent){
+ if(isset($parent->node)) {
+ foreach($parent->node as $v){
+ $this->_select_nodes($v, $this->result);
+ }
+ } else {
+ $this->result[] = (string)$parent['TEXT'];
+ }
+ }
+
+ public function get_file_ext($types) {
+ $this->result = array();
+ if (in_array('*', $types)) {
+ return '*';
+ }
+ foreach ($types as $key=>$value){
+ if (strpos($value, '.') !== false) {
+ $this->result[] = $value;
+ unset($types[$key]);
+ }
+ }
+ if (file_exists($this->file)) {
+ $xml = simplexml_load_file($this->file);
+ foreach($xml->node->node as $v){
+ if (in_array((string)$v['TEXT'], $types)) {
+ $this->_select_nodes($v);
+ } else {
+ $this->_browse_nodes($v, $types);
+ }
+ }
+ } else {
+ exit('Failed to open test.xml.');
+ }
+ return $this->result;
+ }
+}
$this->_options[$name] = $value;
}
}
+ if (!empty($options['filetypes'])) {
+ $this->filetypes = $options['filetypes'];
+ } else {
+ $this->filetypes = '*';
+ }
+ if (!empty($options['returnvalue'])) {
+ $this->returnvalue = $options['returnvalue'];
+ } else {
+ $this->returnvalue = '*';
+ }
if (!empty($options['maxbytes'])) {
$this->_options['maxbytes'] = get_max_upload_file_size($CFG->maxbytes, $options['maxbytes']);
}
$context = get_context_instance(CONTEXT_COURSE, $COURSE->id);
}
- $repo_info = repository_get_client($context);
+ $repo_info = repository_get_client($context, $this->filetypes, $this->returnvalue);
$suffix = $repo_info['suffix'];
$html = $this->_get_draftfiles($draftitemid, $suffix);
$mform->addElement('static', null, '', get_string('information','repository_boxnet'));
}
}
-?>
\ No newline at end of file
+?>
public static function get_type_option_names() {
return array('api_key', 'secret');
}
+ public function supported_filetypes() {
+ return array('web_image');
+ }
}
repository::static_function('flickr_public','create', 'flickr_public', 0, get_system_context(), array('name' => get_string('repositoryname', 'repository_flickr_public'),'email_address' => null),1);
}
+ public function supported_filetypes() {
+ return array('web_image');
+ }
}
-
EOD;
$user_context = get_context_instance(CONTEXT_USER, $USER->id);
-$repos = repository::get_instances(array($user_context, $context, get_system_context()));
+if (is_array($filetypes) && in_array('*', $filetypes)) {
+ $filetypes = '*';
+}
+$repos = repository::get_instances(array($user_context, $context, get_system_context()), null, true, null, $filetypes, $returnvalue);
$js .= "\r\n".'repository_client_'.$suffix.'repos=[];'."\r\n";
foreach ($repos as $repo) {
$info = $repo->ajax_info();
* @param string $type a type name to retrieve
* @return array repository instances
*/
- public static function get_instances($contexts=array(), $userid = null, $onlyvisible = true, $type=null) {
+ public static function get_instances($contexts=array(), $userid = null, $onlyvisible = true, $type=null, $filetypes = '*', $returnvalue = '*') {
global $DB, $CFG, $USER;
$params = array();
$options['type'] = $repo->repositorytype;
$options['typeid'] = $repo->typeid;
$classname = 'repository_' . $repo->repositorytype;//
+ $is_supported = true;
$repository = new $classname($repo->id, $repo->contextid, $options, $repo->readonly);
+ $ft = new file_type_to_ext();
+ if ($filetypes !== '*' and $repository->supported_filetypes() !== '*') {
+ $filetypes = $ft->get_file_ext($filetypes);
+ $supported_filetypes = $ft->get_file_ext($repository->supported_filetypes());
+ $is_supported = false;
+ foreach ($supported_filetypes as $type) {
+ if (in_array($type, $filetypes)) {
+ $is_supported = true;
+ }
+ }
+ }
+ if ($returnvalue !== '*' and $repository->supported_return_value() !== '*') {
+ $tmp = $repository->supported_return_value();
+ if ($tmp != $returnvalue) {
+ $is_supported = false;
+ }
+ }
if (!$onlyvisible || ($repository->is_visible() && !$repository->disabled)) {
- $ret[] = $repository;
+ if ($is_supported) {
+ $ret[] = $repository;
+ }
}
}
return $ret;
* @return array return '*' means this repository support any files, otherwise
* return mimetypes of files, it can be an array
*/
- public function supported_mimetype() {
+ public function supported_filetypes() {
// return array('text/plain', 'image/gif');
return '*';
}
public function supported_return_value() {
// return 'link';
// return 'ref_id';
- return '*';
+ return 'ref_id';
}
/**
return $ret;
}
}
+ public function supported_return_value() {
+ // return 'link';
+ // return 'ref_id';
+ return 'link';
+ }
+ public function supported_filetypes() {
+ return array('web_video');
+ }
}