diff --git a/lib/classes/plugin_manager.php b/lib/classes/plugin_manager.php index 132bbe40071..cbb3adfe804 100644 --- a/lib/classes/plugin_manager.php +++ b/lib/classes/plugin_manager.php @@ -1730,7 +1730,7 @@ class core_plugin_manager { 'message' => array('jabber'), 'quizaccess' => array('safebrowser'), 'report' => array('search'), - 'repository' => array('alfresco'), + 'repository' => array('alfresco', 'picasa'), 'tinymce' => array('dragmath'), 'tool' => array('bloglevelupgrade', 'qeupgradehelper', 'timezoneimport', 'assignmentupgrade'), 'theme' => array('bootstrapbase', 'clean', 'more', 'afterburner', 'anomaly', 'arialist', 'base', @@ -1995,7 +1995,7 @@ class core_plugin_manager { 'repository' => array( 'areafiles', 'boxnet', 'contentbank', 'coursefiles', 'dropbox', 'equella', 'filesystem', 'flickr', 'flickr_public', 'googledocs', 'local', 'merlot', 'nextcloud', - 'onedrive', 'picasa', 'recent', 'skydrive', 's3', 'upload', 'url', 'user', 'webdav', + 'onedrive', 'recent', 'skydrive', 's3', 'upload', 'url', 'user', 'webdav', 'wikimedia', 'youtube' ), diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 230cecd3516..a9c875821bc 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2802,5 +2802,28 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2021091700.01); } + if ($oldversion < 2021091700.02) { + // If repository_picasa is no longer present, remove it. + if (!file_exists($CFG->dirroot . '/repository/picasa/version.php')) { + $instance = $DB->get_record('repository', ['type' => 'picasa']); + if (!empty($instance)) { + // Remove all records from repository_instance_config table. + $DB->delete_records('repository_instance_config', ['instanceid' => $instance->id]); + // Remove all records from repository_instances table. + $DB->delete_records('repository_instances', ['typeid' => $instance->id]); + // Remove the record from the repository table. + $DB->delete_records('repository', ['id' => $instance->id]); + } + + // Clean config. + unset_all_config_for_plugin('picasa'); + + // Remove orphaned files. + upgrade_delete_orphaned_file_records(); + } + + upgrade_main_savepoint(true, 2021091700.02); + } + return true; } diff --git a/repository/picasa/classes/privacy/provider.php b/repository/picasa/classes/privacy/provider.php deleted file mode 100644 index 885e6f92571..00000000000 --- a/repository/picasa/classes/privacy/provider.php +++ /dev/null @@ -1,114 +0,0 @@ -. - -/** - * Privacy Subsystem implementation for repository_picasa. - * - * @package repository_picasa - * @copyright 2018 Zig Tan - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -namespace repository_picasa\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_picasa implementing metadata and plugin providers. - * - * @copyright 2018 Zig Tan - * @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( - 'picasa.google.com', - [ - 'search_text' => 'privacy:metadata:repository_picasa:searchtext' - ], - 'privacy:metadata:repository_picasa' - ); - - 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) { - } -} diff --git a/repository/picasa/db/access.php b/repository/picasa/db/access.php deleted file mode 100644 index 16a7c5bb17d..00000000000 --- a/repository/picasa/db/access.php +++ /dev/null @@ -1,37 +0,0 @@ -. - -/** - * Plugin capabilities. - * - * @package repository_picasa - * @copyright 2009 Dan Poltawski - * @author Dan Poltawski - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -defined('MOODLE_INTERNAL') || die(); - -$capabilities = array( - - 'repository/picasa:view' => array( - 'captype' => 'read', - 'contextlevel' => CONTEXT_MODULE, - 'archetypes' => array( - 'user' => CAP_ALLOW - ) - ) -); diff --git a/repository/picasa/db/upgrade.php b/repository/picasa/db/upgrade.php deleted file mode 100644 index b0d2f7e70ae..00000000000 --- a/repository/picasa/db/upgrade.php +++ /dev/null @@ -1,39 +0,0 @@ -. - -defined('MOODLE_INTERNAL') || die(); - -/** - * @param int $oldversion the version we are upgrading from - * @return bool result - */ -function xmldb_repository_picasa_upgrade($oldversion) { - global $CFG; - - // Automatically generated Moodle v3.6.0 release upgrade line. - // Put any upgrade step following this. - - // Automatically generated Moodle v3.7.0 release upgrade line. - // Put any upgrade step following this. - - // Automatically generated Moodle v3.8.0 release upgrade line. - // Put any upgrade step following this. - - // Automatically generated Moodle v3.9.0 release upgrade line. - // Put any upgrade step following this. - - return true; -} diff --git a/repository/picasa/lang/en/repository_picasa.php b/repository/picasa/lang/en/repository_picasa.php deleted file mode 100644 index 598f8a18a61..00000000000 --- a/repository/picasa/lang/en/repository_picasa.php +++ /dev/null @@ -1,32 +0,0 @@ -. - -/** - * Strings for component 'repository_picasa', language 'en', branch 'MOODLE_20_STABLE' - * - * @package repository_picasa - * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com} - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -$string['clientid'] = 'Client ID'; -$string['configplugin'] = 'Picasa repository configuration'; -$string['oauthinfo'] = '

To use this plugin, you must register your site with Google, as described in the documentation Google OAuth 2.0 setup.

As part of the registration process, you will need to enter the following URL as \'Authorized Redirect URIs\':

{$a->callbackurl}

Once registered, you will be provided with a client ID and secret which can be used to configure all Google Drive and Picasa plugins.

'; -$string['picasa:view'] = 'View picasa repository'; -$string['pluginname'] = 'Picasa web album'; -$string['secret'] = 'Secret'; -$string['privacy:metadata:repository_picasa'] = 'The Picasa web album repository plugin does not store any personal data, but does transmit user data from Moodle to the remote system.'; -$string['privacy:metadata:repository_picasa:searchtext'] = 'The Picasa repository user search text query.'; diff --git a/repository/picasa/lib.php b/repository/picasa/lib.php deleted file mode 100644 index 362289bf1f1..00000000000 --- a/repository/picasa/lib.php +++ /dev/null @@ -1,132 +0,0 @@ -. - -/** - * This plugin is used to access picasa pictures - * - * @since Moodle 2.0 - * @package repository_picasa - * @copyright 2009 Dan Poltawski - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -require_once($CFG->dirroot . '/repository/lib.php'); -require_once($CFG->libdir.'/googleapi.php'); - -/** - * Picasa Repository Plugin - * - * @since Moodle 2.0 - * @package repository - * @subpackage picasa - * @copyright 2009 Dan Poltawski - * @author Dan Poltawski - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class repository_picasa extends repository { - private $googleoauth = null; - - public function __construct($repositoryid, $context = SYSCONTEXTID, $options = array()) { - parent::__construct($repositoryid, $context, $options); - - $returnurl = new moodle_url('/repository/repository_callback.php'); - $returnurl->param('callback', 'yes'); - $returnurl->param('repo_id', $this->id); - $returnurl->param('sesskey', sesskey()); - - $clientid = get_config('picasa', 'clientid'); - $secret = get_config('picasa', 'secret'); - $this->googleoauth = new google_oauth($clientid, $secret, $returnurl, google_picasa::REALM); - - $this->check_login(); - } - - public function check_login() { - return $this->googleoauth->is_logged_in(); - } - - public function print_login() { - $url = $this->googleoauth->get_login_url(); - - if ($this->options['ajax']) { - $popup = new stdClass(); - $popup->type = 'popup'; - $popup->url = $url->out(false); - return array('login' => array($popup)); - } else { - echo ''.get_string('login', 'repository').''; - } - } - - public function get_listing($path='', $page = '') { - $picasa = new google_picasa($this->googleoauth); - - $ret = array(); - $ret['dynload'] = true; - $ret['manage'] = google_picasa::MANAGE_URL; - $ret['list'] = $picasa->get_file_list($path); - $ret['path'] = array((object)array('name'=>get_string('home'), 'path' => '')); - if ($path) { - $ret['path'][] = (object)array('name'=>$picasa->get_last_album_name(), 'path' => $path); - } - return $ret; - } - - public function search($search_text, $page = 0) { - $picasa = new google_picasa($this->googleoauth); - - $ret = array(); - $ret['manage'] = google_picasa::MANAGE_URL; - $ret['list'] = $picasa->do_photo_search($search_text); - return $ret; - } - - public function logout() { - $this->googleoauth->log_out(); - return parent::logout(); - } - - public function supported_filetypes() { - return array('web_image'); - } - public function supported_returntypes() { - return (FILE_INTERNAL | FILE_EXTERNAL); - } - - public static function get_type_option_names() { - return array('clientid', 'secret', 'pluginname'); - } - - public static function type_config_form($mform, $classname = 'repository') { - $a = new stdClass; - $a->docsurl = get_docs_url('Google_OAuth_2.0_setup'); - $a->callbackurl = google_oauth::callback_url()->out(false); - - $mform->addElement('static', null, '', get_string('oauthinfo', 'repository_picasa', $a)); - - parent::type_config_form($mform); - $mform->addElement('text', 'clientid', get_string('clientid', 'repository_picasa')); - $mform->setType('clientid', PARAM_RAW_TRIMMED); - $mform->addElement('text', 'secret', get_string('secret', 'repository_picasa')); - $mform->setType('secret', PARAM_RAW_TRIMMED); - - $strrequired = get_string('required'); - $mform->addRule('clientid', $strrequired, 'required', null, 'client'); - $mform->addRule('secret', $strrequired, 'required', null, 'client'); - } -} - -// Icon for this plugin retrieved from http://www.iconspedia.com/icon/picasa-2711.html -// Where the license is said documented to be Free. diff --git a/repository/picasa/pix/icon.png b/repository/picasa/pix/icon.png deleted file mode 100644 index a8ec4105f81..00000000000 Binary files a/repository/picasa/pix/icon.png and /dev/null differ diff --git a/repository/picasa/tests/generator/lib.php b/repository/picasa/tests/generator/lib.php deleted file mode 100644 index c8fe1864a59..00000000000 --- a/repository/picasa/tests/generator/lib.php +++ /dev/null @@ -1,53 +0,0 @@ -. - -/** - * Picasa repository data generator - * - * @package repository_picasa - * @category test - * @copyright 2013 Frédéric Massart - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -/** - * Picasa repository data generator class - * - * @package repository_picasa - * @category test - * @copyright 2013 Frédéric Massart - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class repository_picasa_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['clientid'])) { - $record['clientid'] = 'clientid'; - } - if (!isset($record['secret'])) { - $record['secret'] = 'secret'; - } - return $record; - } - -} diff --git a/repository/picasa/version.php b/repository/picasa/version.php deleted file mode 100644 index f8440981cad..00000000000 --- a/repository/picasa/version.php +++ /dev/null @@ -1,31 +0,0 @@ -. - -/** - * Version details - * - * @package repository - * @subpackage picasa - * @copyright 2009 Dan Poltawski - * @author Dan Poltawski - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -defined('MOODLE_INTERNAL') || die(); - -$plugin->version = 2021052500; // The current plugin version (Date: YYYYMMDDXX). -$plugin->requires = 2021052500; // Requires this Moodle version. -$plugin->component = 'repository_picasa'; // Full name of the plugin (used for diagnostics). diff --git a/repository/tests/generator_test.php b/repository/tests/generator_test.php index a94ef34bf8e..3405817eacb 100644 --- a/repository/tests/generator_test.php +++ b/repository/tests/generator_test.php @@ -46,7 +46,7 @@ class core_repository_generator_testcase extends advanced_testcase { // All the repository types. $all = array('boxnet', 'coursefiles', 'dropbox', 'equella', 'filesystem', 'flickr', - 'flickr_public', 'googledocs', 'local', 'nextcloud', 'merlot', 'picasa', 'recent', 's3', 'upload', 'url', + 'flickr_public', 'googledocs', 'local', 'nextcloud', 'merlot', 'recent', 's3', 'upload', 'url', 'user', 'webdav', 'wikimedia', 'youtube'); // The ones enabled during installation. diff --git a/repository/upgrade.txt b/repository/upgrade.txt index 339d05e1200..c9e32b8d04f 100644 --- a/repository/upgrade.txt +++ b/repository/upgrade.txt @@ -3,6 +3,9 @@ information provided here is intended especially for developers. Full details of the repository API are available on Moodle docs: http://docs.moodle.org/dev/Repository_API +=== 4.0 === +* The repository_picasa has been completely removed (Picasa is discontinued since 2016). + === 3.11 === * The Google Drive repository now includes a new rest API function 'shared_drives_list', which can be used to fetch a list of existing shared drives. diff --git a/version.php b/version.php index 502ae758dab..a345b126a1e 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2021091700.01; // YYYYMMDD = weekly release date of this DEV branch. +$version = 2021091700.02; // YYYYMMDD = weekly release date of this DEV branch. // RR = release increments - 00 in DEV branches. // .XX = incremental changes. $release = '4.0dev (Build: 20210917)'; // Human-friendly version name