first commit

This commit is contained in:
CHIEFSOFT\ameye
2024-09-30 18:11:26 -04:00
commit e592ca6823
27270 changed files with 5002257 additions and 0 deletions
@@ -0,0 +1,116 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Privacy Subsystem implementation for repository_merlot.
*
* @package repository_merlot
* @copyright 2018 Zig Tan <zig@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace repository_merlot\privacy;
use core_privacy\local\metadata\collection;
use core_privacy\local\request\approved_contextlist;
use core_privacy\local\request\approved_userlist;
use core_privacy\local\request\context;
use core_privacy\local\request\contextlist;
use core_privacy\local\request\userlist;
defined('MOODLE_INTERNAL') || die();
/**
* Privacy Subsystem for repository_merlot implementing metadata and plugin providers.
*
* @copyright 2018 Zig Tan <zig@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class provider implements
\core_privacy\local\metadata\provider,
\core_privacy\local\request\core_userlist_provider,
\core_privacy\local\request\plugin\provider {
/**
* Returns meta data about this system.
*
* @param collection $collection The initialised collection to add items to.
* @return collection A listing of user data stored through this system.
*/
public static function get_metadata(collection $collection): collection {
$collection->add_external_location_link(
'merlot.org',
[
'author' => 'privacy:metadata:repository_merlot:author',
'keywords' => 'privacy:metadata:repository_merlot:keywords',
'licencekey' => 'privacy:metadata:repository_merlot:licencekey'
],
'privacy:metadata:repository_merlot'
);
return $collection;
}
/**
* Get the list of contexts that contain user information for the specified user.
*
* @param int $userid The user to search.
* @return contextlist $contextlist The contextlist containing the list of contexts used in this plugin.
*/
public static function get_contexts_for_userid(int $userid): contextlist {
return new contextlist();
}
/**
* Get the list of users who have data within a context.
*
* @param userlist $userlist The userlist containing the list of users who have data in this context/plugin combination.
*/
public static function get_users_in_context(userlist $userlist) {
}
/**
* Export all user data for the specified user, in the specified contexts.
*
* @param approved_contextlist $contextlist The approved contexts to export information for.
*/
public static function export_user_data(approved_contextlist $contextlist) {
}
/**
* Delete all data for all users in the specified context.
*
* @param context $context The specific context to delete data for.
*/
public static function delete_data_for_all_users_in_context(\context $context) {
}
/**
* Delete all user data for the specified user, in the specified contexts.
*
* @param approved_contextlist $contextlist The approved contexts and user information to delete information for.
*/
public static function delete_data_for_user(approved_contextlist $contextlist) {
}
/**
* Delete multiple users within a single context.
*
* @param approved_userlist $userlist The approved context and user information to delete information for.
*/
public static function delete_data_for_users(approved_userlist $userlist) {
}
}
+37
View File
@@ -0,0 +1,37 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Plugin capabilities.
*
* @package repository_merlot
* @copyright 2009 Dongsheng Cai
* @author Dongsheng Cai <dongsheng@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'repository/merlot:view' => array(
'captype' => 'read',
'contextlevel' => CONTEXT_MODULE,
'archetypes' => array(
'user' => CAP_ALLOW
)
)
);
@@ -0,0 +1,34 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Strings for component 'repository_merlot', language 'en', branch 'MOODLE_20_STABLE'
*
* @package repository_merlot
* @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['configplugin'] = 'Merlot.org configuration';
$string['licensekey'] = 'Licence key';
$string['pluginname_help'] = 'Merlot.org';
$string['pluginname'] = 'Merlot.org';
$string['merlot:view'] = 'View the Merlot repository';
$string['privacy:metadata:repository_merlot'] = 'The Merlot.org repository plugin does not store any personal data, but does transmit user data from Moodle to the remote system.';
$string['privacy:metadata:repository_merlot:author'] = 'The Merlot.org repository content author.';
$string['privacy:metadata:repository_merlot:keywords'] = 'The Merlot.org repository user search text query.';
$string['privacy:metadata:repository_merlot:licencekey'] = 'The Merlot.org repository licence key.';
+186
View File
@@ -0,0 +1,186 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* This plugin is used to access merlot files
*
* @since Moodle 2.0
* @package repository_merlot
* @copyright 2010 Dongsheng Cai {@link http://dongsheng.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once($CFG->dirroot . '/repository/lib.php');
/**
* repository_merlot is used to search merlot.org in moodle
*
* @since Moodle 2.0
* @package repository_merlot
* @copyright 2009 Dongsheng Cai {@link http://dongsheng.org}
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class repository_merlot extends repository {
/** @var string merlot keyword. */
protected $keyword;
/** @var string merlot author. */
protected $author;
/** @var string merlot license key. */
protected $licensekey;
/** @var string API URL. */
protected $api;
public function __construct($repositoryid, $context = SYSCONTEXTID, $options = array()) {
parent::__construct($repositoryid, $context, $options);
$this->keyword = optional_param('merlot_keyword', '', PARAM_RAW);
$this->author = optional_param('merlot_author', '', PARAM_RAW);
$this->licensekey = trim(get_config('merlot', 'licensekey'));
}
/**
* Display login screen or not
*
* @return boolean
*/
public function check_login() {
return !empty($this->keyword);
}
/**
* Doesn't support global search
*
* @return boolean
*/
public function global_search() {
return false;
}
/**
* Look for a link in merlot.org
* @param string $search_text
* @return array
*/
public function search($search_text, $page = 0) {
$ret = array();
$ret['nologin'] = true;
$ret['list'] = $this->_get_collection($this->keyword, $this->author);
return $ret;
}
/**
* Get a list of links
* @return array
*/
public function get_listing($path = '', $page = '') {
$ret = array();
$ret['nologin'] = true;
$ret['list'] = $this->_get_collection($this->keyword);
return $ret;
}
private function _get_collection($keyword) {
global $OUTPUT;
$list = array();
$this->api = 'https://www.merlot.org/merlot/materials.rest?keywords=' . urlencode($keyword) . '&licenseKey='.$this->licensekey;
$c = new curl(array('cache'=>true, 'module_cache'=>'repository'));
$content = $c->get($this->api);
$xml = simplexml_load_string($content);
foreach ($xml->results->material as $entry) {
$list[] = array(
'title' => (string)$entry->title,
'thumbnail' => $OUTPUT->image_url(file_extension_icon($entry->title))->out(false),
'date' => userdate((int)$entry->creationDate),
'size' => '',
'source' => (string)$entry->URL,
);
}
return $list;
}
/**
* Define a search form
*
* @return array
*/
public function print_login(){
$ret = array();
$search = new stdClass();
$search->type = 'text';
$search->id = 'merlog_search';
$search->name = 'merlot_keyword';
$search->label = get_string('search').': ';
$author = new stdClass();
$author->type = 'text';
$author->id = 'merlog_author';
$author->name = 'merlot_author';
$author->label = get_string('author', 'search').': ';
$ret['login'] = array($search, $author);
$ret['login_btn_label'] = get_string('search');
$ret['login_btn_action'] = 'search';
return $ret;
}
/**
* Names of the plugin settings
*
* @return array
*/
public static function get_type_option_names() {
return array('licensekey', 'pluginname');
}
/**
* Add Plugin settings input to Moodle form
*
* @param object $mform
*/
public static function type_config_form($mform, $classname = 'repository') {
parent::type_config_form($mform);
$licensekey = get_config('merlot', 'licensekey');
if (empty($licensekey)) {
$licensekey = '';
}
$strrequired = get_string('required');
$mform->addElement('text', 'licensekey', get_string('licensekey', 'repository_merlot'), array('value'=>$licensekey,'size' => '40'));
$mform->setType('licensekey', PARAM_RAW_TRIMMED);
$mform->addRule('licensekey', $strrequired, 'required', null, 'client');
}
/**
* Support external link only
*
* @return int
*/
public function supported_returntypes() {
return FILE_EXTERNAL;
}
public function supported_filetypes() {
return array('link');
}
/**
* Is this repository accessing private data?
*
* @return bool
*/
public function contains_private_data() {
return false;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

+50
View File
@@ -0,0 +1,50 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Merlot repository data generator
*
* @package repository_merlot
* @category test
* @copyright 2013 Frédéric Massart
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Merlot repository data generator class
*
* @package repository_merlot
* @category test
* @copyright 2013 Frédéric Massart
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class repository_merlot_generator extends testing_repository_generator {
/**
* Fill in type record defaults.
*
* @param array $record
* @return array
*/
protected function prepare_type_record(array $record) {
$record = parent::prepare_type_record($record);
if (!isset($record['licensekey'])) {
$record['licensekey'] = 'licensekey';
}
return $record;
}
}
+31
View File
@@ -0,0 +1,31 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Version details
*
* @package repository
* @subpackage merlot
* @copyright 2009 Dongsheng Cai
* @author Dongsheng Cai <dongsheng@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2024042200; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2024041600; // Requires this Moodle version.
$plugin->component = 'repository_merlot'; // Full name of the plugin (used for diagnostics)