mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 04:22:07 +02:00
Merge branch 'MDL-72348-master' of git://github.com/sarjona/moodle
This commit is contained in:
commit
04ff28f00c
@ -1731,7 +1731,7 @@ class core_plugin_manager {
|
||||
'message' => array('jabber'),
|
||||
'quizaccess' => array('safebrowser'),
|
||||
'report' => array('search'),
|
||||
'repository' => array('alfresco', 'picasa'),
|
||||
'repository' => array('alfresco', 'picasa', 'skydrive'),
|
||||
'tinymce' => array('dragmath'),
|
||||
'tool' => array('bloglevelupgrade', 'qeupgradehelper', 'timezoneimport', 'assignmentupgrade', 'health'),
|
||||
'theme' => array('bootstrapbase', 'clean', 'more', 'afterburner', 'anomaly', 'arialist', 'base',
|
||||
@ -1996,7 +1996,7 @@ class core_plugin_manager {
|
||||
'repository' => array(
|
||||
'areafiles', 'boxnet', 'contentbank', 'coursefiles', 'dropbox', 'equella', 'filesystem',
|
||||
'flickr', 'flickr_public', 'googledocs', 'local', 'merlot', 'nextcloud',
|
||||
'onedrive', 'recent', 'skydrive', 's3', 'upload', 'url', 'user', 'webdav',
|
||||
'onedrive', 'recent', 's3', 'upload', 'url', 'user', 'webdav',
|
||||
'wikimedia', 'youtube'
|
||||
),
|
||||
|
||||
|
@ -2862,5 +2862,15 @@ function xmldb_main_upgrade($oldversion) {
|
||||
upgrade_main_savepoint(true, 2021092400.03);
|
||||
}
|
||||
|
||||
if ($oldversion < 2021100300.01) {
|
||||
// Remove repository_skydrive (unless it has manually been added back).
|
||||
if (!file_exists($CFG->dirroot . '/repository/skydrive/lib.php')) {
|
||||
unset_all_config_for_plugin('repository_skydrive');
|
||||
}
|
||||
|
||||
// Main savepoint reached.
|
||||
upgrade_main_savepoint(true, 2021100300.01);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ $string['pluginname'] = 'Microsoft OneDrive';
|
||||
$string['removetempaccesstask'] = 'Remove temporary write access from controlled links';
|
||||
$string['searchfor'] = 'Search for {$a}';
|
||||
$string['servicenotenabled'] = 'Access not configured.';
|
||||
$string['skydrivefilesexist'] = 'Files found in the Microsoft SkyDrive repository. This repository has been deprecated by Microsoft, however the files may be imported to the Microsoft OneDrive repository.';
|
||||
$string['skydrivefilesexist'] = 'The Microsoft SkyDrive repository is enabled but it has been deprecated, however, the files may be imported to the Microsoft OneDrive repository. If you haven\'t migrated the files from the SkyDrive repository yet, please migrate them before upgrading to Moodle 4.4, because by then it will not be possible to import them so they will be completely lost.';
|
||||
$string['skydrivefilesimported'] = 'All files were imported from the Microsoft SkyDrive repository.';
|
||||
$string['skydrivefilesnotimported'] = 'Some files could not be imported from the Microsoft SkyDrive repository.';
|
||||
$string['onedrive:view'] = 'View OneDrive repository';
|
||||
|
@ -1008,6 +1008,8 @@ class repository_onedrive extends repository {
|
||||
* Return true if any instances of the skydrive repo exist - and we can import them.
|
||||
*
|
||||
* @return bool
|
||||
* @deprecated since Moodle 4.0
|
||||
* @todo MDL-72620 This will be deleted in Moodle 4.4.
|
||||
*/
|
||||
public static function can_import_skydrive_files() {
|
||||
global $DB;
|
||||
@ -1046,10 +1048,15 @@ class repository_onedrive extends repository {
|
||||
* Import all the files that were created with the skydrive repo to this repo.
|
||||
*
|
||||
* @return bool
|
||||
* @deprecated since Moodle 4.0
|
||||
* @todo MDL-72620 This will be deleted in Moodle 4.4.
|
||||
*/
|
||||
public static function import_skydrive_files() {
|
||||
global $DB;
|
||||
|
||||
debugging('import_skydrive_files() is deprecated. Please migrate your files from repository_skydrive to ' .
|
||||
'repository_onedrive before it will be completely removed.', DEBUG_DEVELOPER);
|
||||
|
||||
if (!self::can_import_skydrive_files()) {
|
||||
return false;
|
||||
}
|
||||
@ -1090,6 +1097,9 @@ class repository_onedrive extends repository {
|
||||
$mform->addElement('static', null, '', get_string('oauth2serviceslink', 'repository_onedrive', $url));
|
||||
|
||||
if (self::can_import_skydrive_files()) {
|
||||
debugging('can_import_skydrive_files() is deprecated. Please migrate your files from repository_skydrive to ' .
|
||||
'repository_onedrive before it will be completely removed.', DEBUG_DEVELOPER);
|
||||
|
||||
$notice = get_string('skydrivefilesexist', 'repository_onedrive');
|
||||
$url = new moodle_url('/repository/onedrive/importskydrive.php');
|
||||
$attrs = ['class' => 'btn btn-primary'];
|
||||
|
@ -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 Subsystem implementation for repository_skydrive.
|
||||
*
|
||||
* @package repository_skydrive
|
||||
* @copyright 2018 Zig Tan <zig@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace repository_skydrive\privacy;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
* Privacy Subsystem for repository_skydrive implementing null_provider.
|
||||
*
|
||||
* @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\null_provider {
|
||||
|
||||
/**
|
||||
* Get the language string identifier with the component's language
|
||||
* file to explain why this plugin stores no data.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_reason() : string {
|
||||
return 'privacy:metadata';
|
||||
}
|
||||
}
|
@ -1,33 +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/>.
|
||||
|
||||
/**
|
||||
* Capability definitions for skydrive repository
|
||||
*
|
||||
* @package repository_skydrive
|
||||
* @copyright 2012 Lancaster University Network Services Ltd
|
||||
* @author Dan Poltawski <dan.poltawski@luns.net.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
$capabilities = array(
|
||||
'repository/skydrive:view' => array(
|
||||
'captype' => 'read',
|
||||
'contextlevel' => CONTEXT_MODULE,
|
||||
'archetypes' => array(
|
||||
'user' => CAP_ALLOW
|
||||
)
|
||||
)
|
||||
);
|
@ -1,31 +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/>.
|
||||
|
||||
/**
|
||||
* Cache definitions.
|
||||
*
|
||||
* @package repository_skydrive
|
||||
* @copyright 2013 Dan Poltawski <dan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$definitions = array(
|
||||
'foldername' => array(
|
||||
'mode' => cache_store::MODE_SESSION,
|
||||
)
|
||||
);
|
@ -1,33 +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/>.
|
||||
|
||||
/**
|
||||
* Language file definitions for skydrive repository
|
||||
*
|
||||
* @package repository_skydrive
|
||||
* @copyright 2012 Lancaster University Network Services Ltd
|
||||
* @author Dan Poltawski <dan.poltawski@luns.net.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
$string['cachedef_foldername'] = 'Folder name cache';
|
||||
$string['clientid'] = 'Client ID';
|
||||
$string['configplugin'] = 'Configure Microsoft OneDrive (legacy)';
|
||||
$string['oauthinfo'] = '<p>To use this plugin, you must register your site <a href="https://account.live.com/developers/applications">with Microsoft</a>.<p>As part of the registration process, you will need to enter the following URL as \'Redirect domain\':</p><p>{$a->callbackurl}</p>Once registered, you will be provided with a client ID and secret which can be entered here.</p>';
|
||||
$string['pluginname'] = 'Microsoft OneDrive (legacy)';
|
||||
$string['secret'] = 'Secret';
|
||||
$string['skydrive:view'] = 'View OneDrive (legacy)';
|
||||
$string['deprecatedwarning'] = 'Warning: The API used by this repository plugin has been deprecated by Microsoft and it will stop working eventually. Please migrate to the newer "Microsoft OneDrive" repository.';
|
||||
$string['privacy:metadata'] = 'The Microsoft OneDrive (legacy) repository plugin does not store any personal data, but does transmit user data from Moodle to the remote system.';
|
@ -1,215 +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/>.
|
||||
|
||||
/**
|
||||
* Microsoft Live Skydrive Repository Plugin
|
||||
*
|
||||
* @package repository_skydrive
|
||||
* @copyright 2012 Lancaster University Network Services Ltd
|
||||
* @author Dan Poltawski <dan.poltawski@luns.net.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
require_once('microsoftliveapi.php');
|
||||
|
||||
/**
|
||||
* Microsoft skydrive repository plugin.
|
||||
*
|
||||
* @package repository_skydrive
|
||||
* @copyright 2012 Lancaster University Network Services Ltd
|
||||
* @author Dan Poltawski <dan.poltawski@luns.net.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class repository_skydrive extends repository {
|
||||
/** @var microsoft_skydrive skydrive oauth2 api helper object */
|
||||
private $skydrive = null;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param int $repositoryid repository instance id.
|
||||
* @param int|stdClass $context a context id or context object.
|
||||
* @param array $options repository options.
|
||||
*/
|
||||
public function __construct($repositoryid, $context = SYSCONTEXTID, $options = array()) {
|
||||
parent::__construct($repositoryid, $context, $options);
|
||||
|
||||
$clientid = get_config('skydrive', 'clientid');
|
||||
$secret = get_config('skydrive', 'secret');
|
||||
$returnurl = new moodle_url('/repository/repository_callback.php');
|
||||
$returnurl->param('callback', 'yes');
|
||||
$returnurl->param('repo_id', $this->id);
|
||||
$returnurl->param('sesskey', sesskey());
|
||||
|
||||
$this->skydrive = new microsoft_skydrive($clientid, $secret, $returnurl);
|
||||
$this->check_login();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the user is logged in or not.
|
||||
*
|
||||
* @return bool true when logged in
|
||||
*/
|
||||
public function check_login() {
|
||||
return $this->skydrive->is_logged_in();
|
||||
}
|
||||
|
||||
/**
|
||||
* Print the login form, if required
|
||||
*
|
||||
* @return array of login options
|
||||
*/
|
||||
public function print_login() {
|
||||
$url = $this->skydrive->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 '<a target="_blank" href="'.$url->out(false).'">'.get_string('login', 'repository').'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a path, and perhaps a search, get a list of files.
|
||||
*
|
||||
* See details on {@link http://docs.moodle.org/dev/Repository_plugins}
|
||||
*
|
||||
* @param string $path identifier for current path
|
||||
* @param string $page the page number of file list
|
||||
* @return array list of files including meta information as specified by parent.
|
||||
*/
|
||||
public function get_listing($path='', $page = '') {
|
||||
$ret = array();
|
||||
$ret['dynload'] = true;
|
||||
$ret['nosearch'] = true;
|
||||
$ret['manage'] = 'https://skydrive.live.com/';
|
||||
|
||||
$fileslist = $this->skydrive->get_file_list($path);
|
||||
// Filter list for accepted types. Hopefully this will be done by core some day.
|
||||
$fileslist = array_filter($fileslist, array($this, 'filter'));
|
||||
$ret['list'] = $fileslist;
|
||||
|
||||
// Generate path bar, always start with the plugin name.
|
||||
$ret['path'] = array();
|
||||
$ret['path'][] = array('name'=> $this->name, 'path'=>'');
|
||||
|
||||
// Now add each level folder.
|
||||
$trail = '';
|
||||
if (!empty($path)) {
|
||||
$parts = explode('/', $path);
|
||||
foreach ($parts as $folderid) {
|
||||
if (!empty($folderid)) {
|
||||
$trail .= ('/'.$folderid);
|
||||
$ret['path'][] = array('name' => $this->skydrive->get_folder_name($folderid),
|
||||
'path' => $trail);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Downloads a repository file and saves to a path.
|
||||
*
|
||||
* @param string $id identifier of file
|
||||
* @param string $filename to save file as
|
||||
* @return array with keys:
|
||||
* path: internal location of the file
|
||||
* url: URL to the source
|
||||
*/
|
||||
public function get_file($id, $filename = '') {
|
||||
$path = $this->prepare_file($filename);
|
||||
return $this->skydrive->download_file($id, $path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return names of the options to display in the repository form
|
||||
*
|
||||
* @return array of option names
|
||||
*/
|
||||
public static function get_type_option_names() {
|
||||
return array('clientid', 'secret', 'pluginname');
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup repistory form.
|
||||
*
|
||||
* @param moodleform $mform Moodle form (passed by reference)
|
||||
* @param string $classname repository class name
|
||||
*/
|
||||
public static function type_config_form($mform, $classname = 'repository') {
|
||||
global $OUTPUT;
|
||||
|
||||
$a = new stdClass;
|
||||
$a->callbackurl = microsoft_skydrive::callback_url()->out(false);
|
||||
$mform->addElement('static', null, '', get_string('oauthinfo', 'repository_skydrive', $a));
|
||||
|
||||
$mform->addElement('static', null, '', $OUTPUT->notification(get_string('deprecatedwarning', 'repository_skydrive', $a)));
|
||||
|
||||
parent::type_config_form($mform);
|
||||
$strrequired = get_string('required');
|
||||
$mform->addElement('text', 'clientid', get_string('clientid', 'repository_skydrive'));
|
||||
$mform->addElement('text', 'secret', get_string('secret', 'repository_skydrive'));
|
||||
$mform->addRule('clientid', $strrequired, 'required', null, 'client');
|
||||
$mform->addRule('secret', $strrequired, 'required', null, 'client');
|
||||
$mform->setType('clientid', PARAM_RAW_TRIMMED);
|
||||
$mform->setType('secret', PARAM_RAW_TRIMMED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Logout from repository instance and return
|
||||
* login form.
|
||||
*
|
||||
* @return page to display
|
||||
*/
|
||||
public function logout() {
|
||||
$this->skydrive->log_out();
|
||||
return $this->print_login();
|
||||
}
|
||||
|
||||
/**
|
||||
* This repository doesn't support global search.
|
||||
*
|
||||
* @return bool if supports global search
|
||||
*/
|
||||
public function global_search() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* This repoistory supports any filetype.
|
||||
*
|
||||
* @return string '*' means this repository support any files
|
||||
*/
|
||||
public function supported_filetypes() {
|
||||
return '*';
|
||||
}
|
||||
|
||||
/**
|
||||
* This repostiory only supports internal files
|
||||
*
|
||||
* @return int return type bitmask supported
|
||||
*/
|
||||
public function supported_returntypes() {
|
||||
return FILE_INTERNAL;
|
||||
}
|
||||
}
|
@ -1,245 +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/>.
|
||||
|
||||
/**
|
||||
* Functions for operating with the skydrive API
|
||||
*
|
||||
* @package repository_skydrive
|
||||
* @copyright 2012 Lancaster University Network Services Ltd
|
||||
* @author Dan Poltawski <dan.poltawski@luns.net.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
require_once($CFG->libdir.'/oauthlib.php');
|
||||
|
||||
/**
|
||||
* A helper class to access microsoft live resources using the api.
|
||||
*
|
||||
* This uses the microsfot API defined in
|
||||
* http://msdn.microsoft.com/en-us/library/hh243648.aspx
|
||||
*
|
||||
* @package repository_skydrive
|
||||
* @copyright 2012 Lancaster University Network Services Ltd
|
||||
* @author Dan Poltawski <dan.poltawski@luns.net.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class microsoft_skydrive extends oauth2_client {
|
||||
/** @var string OAuth 2.0 scope */
|
||||
const SCOPE = 'wl.skydrive';
|
||||
/** @var string Base url to access API */
|
||||
const API = 'https://apis.live.net/v5.0';
|
||||
/** @var cache_session cache of foldernames */
|
||||
var $foldernamecache = null;
|
||||
|
||||
/**
|
||||
* Construct a skydrive request object
|
||||
*
|
||||
* @param string $clientid client id for OAuth 2.0 provided by microsoft
|
||||
* @param string $clientsecret secret for OAuth 2.0 provided by microsoft
|
||||
* @param moodle_url $returnurl url to return to after succseful auth
|
||||
*/
|
||||
public function __construct($clientid, $clientsecret, $returnurl) {
|
||||
parent::__construct($clientid, $clientsecret, $returnurl, self::SCOPE);
|
||||
// Make a session cache
|
||||
$this->foldernamecache = cache::make('repository_skydrive', 'foldername');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the auth url for OAuth 2.0 request
|
||||
* @return string the auth url
|
||||
*/
|
||||
protected function auth_url() {
|
||||
return 'https://login.live.com/oauth20_authorize.srf';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the token url for OAuth 2.0 request
|
||||
* @return string the auth url
|
||||
*/
|
||||
protected function token_url() {
|
||||
return 'https://login.live.com/oauth20_token.srf';
|
||||
}
|
||||
|
||||
/**
|
||||
* Post request.
|
||||
*
|
||||
* Overridden to convert the data to a string, else curl will set the wrong headers.
|
||||
*
|
||||
* @param string $url The URL.
|
||||
* @param array|string $params The parameters.
|
||||
* @param array $options The options.
|
||||
* @return bool
|
||||
*/
|
||||
public function post($url, $params = '', $options = array()) {
|
||||
return parent::post($url, format_postdata_for_curlcall($params), $options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Downloads a file to a file from skydrive using authenticated request
|
||||
*
|
||||
* @param string $id id of file
|
||||
* @param string $path path to save file to
|
||||
* @return array stucture for repository download_file
|
||||
*/
|
||||
public function download_file($id, $path) {
|
||||
$url = self::API."/${id}/content";
|
||||
// Microsoft live redirects to the real download location..
|
||||
$this->setopt(array('CURLOPT_FOLLOWLOCATION' => true, 'CURLOPT_MAXREDIRS' => 3));
|
||||
$content = $this->get($url);
|
||||
file_put_contents($path, $content);
|
||||
return array('path'=>$path, 'url'=>$url);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a folder name property for a given folderid.
|
||||
*
|
||||
* @param string $folderid the folder id which is passed
|
||||
* @return mixed folder name or false in case of error
|
||||
*/
|
||||
public function get_folder_name($folderid) {
|
||||
if (empty($folderid)) {
|
||||
throw new coding_exception('Empty folderid passed to get_folder_name');
|
||||
}
|
||||
|
||||
// Cache based on oauthtoken and folderid.
|
||||
$cachekey = $this->folder_cache_key($folderid);
|
||||
|
||||
if ($foldername = $this->foldernamecache->get($cachekey)) {
|
||||
return $foldername;
|
||||
}
|
||||
|
||||
$url = self::API."/{$folderid}";
|
||||
$ret = json_decode($this->get($url));
|
||||
if (isset($ret->error)) {
|
||||
$this->log_out();
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->foldernamecache->set($cachekey, $ret->name);
|
||||
return $ret->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of files the user has formated for files api
|
||||
*
|
||||
* @param string $path the path which we are in
|
||||
* @return mixed Array of files formated for fileapoi
|
||||
*/
|
||||
public function get_file_list($path = '') {
|
||||
global $OUTPUT;
|
||||
|
||||
$precedingpath = '';
|
||||
if (empty($path)) {
|
||||
$url = self::API."/me/skydrive/files/";
|
||||
} else {
|
||||
$parts = explode('/', $path);
|
||||
$currentfolder = array_pop($parts);
|
||||
$url = self::API."/{$currentfolder}/files/";
|
||||
}
|
||||
|
||||
$ret = json_decode($this->get($url));
|
||||
|
||||
if (isset($ret->error)) {
|
||||
$this->log_out();
|
||||
return false;
|
||||
}
|
||||
|
||||
$files = array();
|
||||
|
||||
foreach ($ret->data as $file) {
|
||||
switch($file->type) {
|
||||
case 'folder':
|
||||
case 'album':
|
||||
// Cache the foldername for future requests.
|
||||
$cachekey = $this->folder_cache_key($file->id);
|
||||
$this->foldernamecache->set($cachekey, $file->name);
|
||||
|
||||
$files[] = array(
|
||||
'title' => $file->name,
|
||||
'path' => $path.'/'.$file->id,
|
||||
'size' => 0,
|
||||
'date' => strtotime($file->updated_time),
|
||||
'thumbnail' => $OUTPUT->image_url(file_folder_icon(90))->out(false),
|
||||
'children' => array(),
|
||||
);
|
||||
break;
|
||||
case 'photo':
|
||||
$files[] = array(
|
||||
'title' => $file->name,
|
||||
'size' => $file->size,
|
||||
'date' => strtotime($file->updated_time),
|
||||
'thumbnail' => $OUTPUT->image_url(file_extension_icon($file->name, 90))->out(false),
|
||||
'realthumbnail' => $file->picture,
|
||||
'source' => $file->id,
|
||||
'url' => $file->link,
|
||||
'image_height' => $file->height,
|
||||
'image_width' => $file->width,
|
||||
'author' => $file->from->name,
|
||||
);
|
||||
break;
|
||||
case 'video':
|
||||
$files[] = array(
|
||||
'title' => $file->name,
|
||||
'size' => $file->size,
|
||||
'date' => strtotime($file->updated_time),
|
||||
'thumbnail' => $OUTPUT->image_url(file_extension_icon($file->name, 90))->out(false),
|
||||
'realthumbnail' => $file->picture,
|
||||
'source' => $file->id,
|
||||
'url' => $file->link,
|
||||
'author' => $file->from->name,
|
||||
);
|
||||
break;
|
||||
case 'audio':
|
||||
$files[] = array(
|
||||
'title' => $file->name,
|
||||
'size' => $file->size,
|
||||
'date' => strtotime($file->updated_time),
|
||||
'thumbnail' => $OUTPUT->image_url(file_extension_icon($file->name, 90))->out(false),
|
||||
'source' => $file->id,
|
||||
'url' => $file->link,
|
||||
'author' => $file->from->name,
|
||||
);
|
||||
break;
|
||||
case 'file':
|
||||
$files[] = array(
|
||||
'title' => $file->name,
|
||||
'size' => $file->size,
|
||||
'date' => strtotime($file->updated_time),
|
||||
'thumbnail' => $OUTPUT->image_url(file_extension_icon($file->name, 90))->out(false),
|
||||
'source' => $file->id,
|
||||
'url' => $file->link,
|
||||
'author' => $file->from->name,
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a key for foldernane cache
|
||||
*
|
||||
* @param string $folderid the folder id which is to be cached
|
||||
* @return string the cache key to use
|
||||
*/
|
||||
private function folder_cache_key($folderid) {
|
||||
// Cache based on oauthtoken and folderid.
|
||||
return $this->get_tokenname().'_'.$folderid;
|
||||
}
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 1.6 KiB |
@ -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 for skydrive repository
|
||||
*
|
||||
* @package repository_skydrive
|
||||
* @copyright 2012 Lancaster University Network Services Ltd
|
||||
* @author Dan Poltawski <dan.poltawski@luns.net.uk>
|
||||
* @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_skydrive'; // Full name of the plugin (used for diagnostics).
|
@ -5,6 +5,10 @@ http://docs.moodle.org/dev/Repository_API
|
||||
|
||||
=== 4.0 ===
|
||||
* The repository_picasa has been completely removed (Picasa is discontinued since 2016).
|
||||
* The skydrive repository has been completely removed from core. It has been moved to the plugins database repository, so
|
||||
it can still be installed as a third-party plugin.
|
||||
* Methods can_import_skydrive_files() and import_skydrive_files have been deprecated from repository_onedrive. The feature For
|
||||
importing files from repository_skydrive to repository_onedrive will be completely removed in Moodle 4.4.
|
||||
|
||||
=== 3.11 ===
|
||||
* The Google Drive repository now includes a new rest API function 'shared_drives_list', which can be used to fetch
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$version = 2021100300.00; // YYYYMMDD = weekly release date of this DEV branch.
|
||||
$version = 2021100300.01; // YYYYMMDD = weekly release date of this DEV branch.
|
||||
// RR = release increments - 00 in DEV branches.
|
||||
// .XX = incremental changes.
|
||||
$release = '4.0dev (Build: 20211003)'; // Human-friendly version name
|
||||
|
Loading…
x
Reference in New Issue
Block a user