MDL-58939 portfolio: Remove picasa portfolio
authorSara Arjona <sara@moodle.com>
Tue, 10 Aug 2021 14:41:35 +0000 (16:41 +0200)
committerSara Arjona <sara@moodle.com>
Fri, 17 Sep 2021 08:45:12 +0000 (10:45 +0200)
Picasa is discontinued since 2016 so portfolio_picasa has been
removed from core Moodle.

lib/classes/plugin_manager.php
lib/db/upgrade.php
portfolio/googledocs/lang/en/portfolio_googledocs.php
portfolio/picasa/classes/privacy/provider.php [deleted file]
portfolio/picasa/db/upgrade.php [deleted file]
portfolio/picasa/lang/en/portfolio_picasa.php [deleted file]
portfolio/picasa/lib.php [deleted file]
portfolio/picasa/tests/privacy_provider_test.php [deleted file]
portfolio/picasa/version.php [deleted file]
portfolio/upgrade.txt
version.php

index be2741a..132bbe4 100644 (file)
@@ -1725,6 +1725,7 @@ class core_plugin_manager {
             'block' => array('course_overview', 'messages', 'community', 'participants'),
             'cachestore' => array('memcache'),
             'enrol' => array('authorize'),
+            'portfolio' => array('picasa'),
             'qformat' => array('webct'),
             'message' => array('jabber'),
             'quizaccess' => array('safebrowser'),
@@ -1933,7 +1934,7 @@ class core_plugin_manager {
             ),
 
             'portfolio' => array(
-                'boxnet', 'download', 'flickr', 'googledocs', 'mahara', 'picasa'
+                'boxnet', 'download', 'flickr', 'googledocs', 'mahara'
             ),
 
             'profilefield' => array(
index 96e0dea..230cecd 100644 (file)
@@ -2778,5 +2778,29 @@ function xmldb_main_upgrade($oldversion) {
         upgrade_main_savepoint(true, 2021091100.02);
     }
 
+    if ($oldversion < 2021091700.01) {
+        // If portfolio_picasa is no longer present, remove it.
+        if (!file_exists($CFG->dirroot . '/portfolio/picasa/version.php')) {
+            $instance = $DB->get_record('portfolio_instance', ['plugin' => 'picasa']);
+            if (!empty($instance)) {
+                // Remove all records from portfolio_instance_config.
+                $DB->delete_records('portfolio_instance_config', ['instance' => $instance->id]);
+                // Remove all records from portfolio_instance_user.
+                $DB->delete_records('portfolio_instance_user', ['instance' => $instance->id]);
+                // Remove all records from portfolio_log.
+                $DB->delete_records('portfolio_log', ['portfolio' => $instance->id]);
+                // Remove all records from portfolio_tempdata.
+                $DB->delete_records('portfolio_tempdata', ['instance' => $instance->id]);
+                // Remove the record from the portfolio_instance table.
+                $DB->delete_records('portfolio_instance', ['id' => $instance->id]);
+            }
+
+            // Clean config.
+            unset_all_config_for_plugin('portfolio_picasa');
+        }
+
+        upgrade_main_savepoint(true, 2021091700.01);
+    }
+
     return true;
 }
index 2718370..f2ee175 100644 (file)
@@ -27,7 +27,7 @@ $string['noauthtoken'] = 'An authentication token has not been received from Goo
 $string['nooauthcredentials'] = 'OAuth credentials required.';
 $string['nooauthcredentials_help'] = 'To use the Google Drive portfolio plugin you must configure OAuth credentials in the portfolio settings.';
 $string['nosessiontoken'] = 'A session token does not exist preventing export to google.';
-$string['oauthinfo'] = '<p>To use this plugin, you must register your site with Google, as described in the documentation <a href="{$a->docsurl}">Google OAuth 2.0 setup</a>.</p><p>As part of the registration process, you will need to enter the following URL as \'Authorized Redirect URIs\':</p><p>{$a->callbackurl}</p><p>Once registered, you will be provided with a client ID and secret which can be used to configure all Google Drive and Picasa plugins.</p>';
+$string['oauthinfo'] = '<p>To use this plugin, you must register your site with Google, as described in the documentation <a href="{$a->docsurl}">Google OAuth 2.0 setup</a>.</p><p>As part of the registration process, you will need to enter the following URL as \'Authorized Redirect URIs\':</p><p>{$a->callbackurl}</p><p>Once registered, you will be provided with a client ID and secret which can be used to configure all Google Drive plugins.</p>';
 $string['pluginname'] = 'Google Drive';
 $string['privacy:metadata'] = 'This plugin sends data externally to a linked Google account. It does not store data locally.';
 $string['privacy:metadata:data'] = 'Personal data passed through from the portfolio subsystem.';
diff --git a/portfolio/picasa/classes/privacy/provider.php b/portfolio/picasa/classes/privacy/provider.php
deleted file mode 100644 (file)
index 4f2fafe..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?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 class for requesting user data.
- *
- * @package    portfolio_picasa
- * @copyright  2018 Jake Dallimore <jrhdallimore@gmail.com>
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-namespace portfolio_picasa\privacy;
-
-defined('MOODLE_INTERNAL') || die();
-
-use core_privacy\local\metadata\collection;
-
-/**
- * Provider for the portfolio_picasa plugin.
- *
- * @copyright  2018 Jake Dallimore <jrhdallimore@gmail.com>
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-class provider implements
-        // This portfolio plugin does not store any data itself.
-        // It has no database tables, and it purely acts as a conduit, sending data externally.
-        \core_privacy\local\metadata\provider,
-        \core_portfolio\privacy\portfolio_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 {
-        return $collection->add_external_location_link('picasa.google.com', ['data' => 'privacy:metadata:data'],
-                                                       'privacy:metadata');
-    }
-
-    /**
-     * Export all portfolio data from each portfolio plugin for the specified userid and context.
-     *
-     * @param   int $userid The user to export.
-     * @param   \context $context The context to export.
-     * @param   array $subcontext The subcontext within the context to export this information to.
-     * @param   array $linkarray The weird and wonderful link array used to display information for a specific item
-     */
-    public static function export_portfolio_user_data(int $userid, \context $context, array $subcontext, array $linkarray) {
-    }
-
-    /**
-     * Delete all user information for the provided context.
-     *
-     * @param  \context $context The context to delete user data for.
-     */
-    public static function delete_portfolio_for_context(\context $context) {
-    }
-
-    /**
-     * Delete all user information for the provided user and context.
-     *
-     * @param  int $userid The user to delete
-     * @param  \context $context The context to refine the deletion.
-     */
-    public static function delete_portfolio_for_user(int $userid, \context $context) {
-    }
-}
diff --git a/portfolio/picasa/db/upgrade.php b/portfolio/picasa/db/upgrade.php
deleted file mode 100644 (file)
index 430343b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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/>.
-
-defined('MOODLE_INTERNAL') || die();
-
-/**
- * @param int $oldversion the version we are upgrading from
- * @return bool result
- */
-function xmldb_portfolio_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/portfolio/picasa/lang/en/portfolio_picasa.php b/portfolio/picasa/lang/en/portfolio_picasa.php
deleted file mode 100644 (file)
index d447c94..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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 'portfolio_picasa', language 'en', branch 'MOODLE_20_STABLE'
- *
- * @package   portfolio_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['noauthtoken'] = 'An authentication token has not been received from Google. Please ensure you are allowing Moodle to access your Google account.';
-$string['nooauthcredentials'] = 'OAuth credentials required.';
-$string['nooauthcredentials_help'] = 'To use the Picasa portfolio plugin you must configure OAuth credentials in the portfolio settings.';
-$string['oauthinfo'] = '<p>To use this plugin, you must register your site with Google, as described in the documentation <a href="{$a->docsurl}">Google OAuth 2.0 setup</a>.</p><p>As part of the registration process, you will need to enter the following URL as \'Authorized Redirect URIs\':</p><p>{$a->callbackurl}</p><p>Once registered, you will be provided with a client ID and secret which can be used to configure all Google Drive and Picasa plugins.</p>';
-$string['pluginname'] = 'Picasa';
-$string['privacy:metadata'] = 'This plugin sends data externally to a linked Picasa account. It does not store data locally.';
-$string['privacy:metadata:data'] = 'Personal data passed through from the portfolio subsystem.';
-$string['sendfailed'] = 'The file {$a} failed to transfer to Picasa';
-$string['secret'] = 'Secret';
diff --git a/portfolio/picasa/lib.php b/portfolio/picasa/lib.php
deleted file mode 100644 (file)
index d760b12..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-<?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/>.
-
-/**
- * Picasa Portfolio Plugin
- *
- * @author Dan Poltawski <talktodan@gmail.com>
- * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
- */
-require_once($CFG->libdir.'/portfolio/plugin.php');
-require_once($CFG->libdir.'/googleapi.php');
-
-class portfolio_plugin_picasa extends portfolio_plugin_push_base {
-    private $googleoauth = null;
-
-    public function supported_formats() {
-        return array(PORTFOLIO_FORMAT_IMAGE, PORTFOLIO_FORMAT_VIDEO);
-    }
-
-    public static function get_name() {
-        return get_string('pluginname', 'portfolio_picasa');
-    }
-
-    public function prepare_package() {
-        // We send the files as they are, no prep required.
-        return true;
-    }
-
-    public function get_interactive_continue_url() {
-        return 'http://picasaweb.google.com/';
-    }
-
-    public function expected_time($callertime) {
-        // We're forcing this to be run 'interactively' because the plugin
-        // does not support running in cron.
-        return PORTFOLIO_TIME_LOW;
-    }
-
-    public function send_package() {
-        if (!$this->googleoauth) {
-            throw new portfolio_plugin_exception('noauthtoken', 'portfolio_picasa');
-        }
-
-        $picasa = new google_picasa($this->googleoauth);
-        foreach ($this->exporter->get_tempfiles() as $file) {
-
-            if (!$picasa->send_file($file)) {
-                throw new portfolio_plugin_exception('sendfailed', 'portfolio_picasa', $file->get_filename());
-            }
-        }
-    }
-
-    public function steal_control($stage) {
-        if ($stage != PORTFOLIO_STAGE_CONFIG) {
-            return false;
-        }
-
-        $this->initialize_oauth();
-
-        if ($this->googleoauth->is_logged_in()) {
-            return false;
-        } else {
-            return $this->googleoauth->get_login_url();
-        }
-    }
-
-    public function post_control($stage, $params) {
-        if ($stage != PORTFOLIO_STAGE_CONFIG) {
-            return;
-        }
-
-        $this->initialize_oauth();
-        if ($this->googleoauth->is_logged_in()) {
-            return false;
-        } else {
-            return $this->googleoauth->get_login_url();
-        }
-    }
-
-    public static function has_admin_config() {
-        return true;
-    }
-
-    public static function allows_multiple_instances() {
-        return false;
-    }
-
-    public static function get_allowed_config() {
-        return array('clientid', 'secret');
-    }
-
-    public static function admin_config_form(&$mform) {
-        $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', 'portfolio_picasa', $a));
-
-        $mform->addElement('text', 'clientid', get_string('clientid', 'portfolio_picasa'));
-        $mform->setType('clientid', PARAM_RAW_TRIMMED);
-        $mform->addElement('text', 'secret', get_string('secret', 'portfolio_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');
-    }
-
-    private function initialize_oauth() {
-        $returnurl = new moodle_url('/portfolio/add.php');
-        $returnurl->param('postcontrol', 1);
-        $returnurl->param('id', $this->exporter->get('id'));
-        $returnurl->param('sesskey', sesskey());
-
-        $clientid = $this->get_config('clientid');
-        $secret = $this->get_config('secret');
-
-        $this->googleoauth = new google_oauth($clientid, $secret, $returnurl, google_picasa::REALM);
-    }
-
-    public function instance_sanity_check() {
-        $clientid = $this->get_config('clientid');
-        $secret = $this->get_config('secret');
-
-        // If there is no oauth config (e.g. plugins upgraded from < 2.3 then
-        // there will be no config and this plugin should be disabled.
-        if (empty($clientid) or empty($secret)) {
-            return 'nooauthcredentials';
-        }
-        return 0;
-    }
-}
diff --git a/portfolio/picasa/tests/privacy_provider_test.php b/portfolio/picasa/tests/privacy_provider_test.php
deleted file mode 100644 (file)
index 8cd8d71..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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 provider tests.
- *
- * @package    portfolio_picasa
- * @copyright  2018 Jake Dallimore <jrhdallimore@gmail.com>
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-defined('MOODLE_INTERNAL') || die();
-
-/**
- * Privacy provider tests class.
- *
- * @copyright  2018 Jake Dallimore <jrhdallimore@gmail.com>
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-class portfolio_picasa_privacy_provider_test extends \core_privacy\tests\provider_testcase {
-
-    /**
-     *  Verify that a collection of metadata is returned for this component and that it just links to an external location.
-     */
-    public function test_get_metadata() {
-        $collection = new \core_privacy\local\metadata\collection('portfolio_picasa');
-        $collection = \portfolio_picasa\privacy\provider::get_metadata($collection);
-        $this->assertNotEmpty($collection);
-        $items = $collection->get_collection();
-        $this->assertEquals(1, count($items));
-        $this->assertInstanceOf(\core_privacy\local\metadata\types\external_location::class, $items[0]);
-    }
-}
diff --git a/portfolio/picasa/version.php b/portfolio/picasa/version.php
deleted file mode 100644 (file)
index a777592..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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    portfolio
- * @subpackage picasa
- * @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 = 'portfolio_picasa'; // Full name of the plugin (used for diagnostics).
-$plugin->cron      = 0;
index eda575d..9582880 100644 (file)
@@ -1,6 +1,10 @@
 This files describes API changes in /portfolio/ portfolio system,
 information provided here is intended especially for developers.
 
+=== 4.0 ===
+
+* The portfolio_picasa has been completely removed (Picasa is discontinued since 2016).
+
 === 3.7 ===
 
 * The portfolio_cron() function has been removed. Please use portfolio_cron_task scheduled task instead.
index 4135a3e..502ae75 100644 (file)
@@ -29,7 +29,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$version  = 2021091700.00;              // YYYYMMDD      = weekly release date of this DEV branch.
+$version  = 2021091700.01;              // 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