Autoría | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - http://moodle.org/
//
// This program 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.
//
// This program 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 file keeps track of upgrades to the edusharing module
*
* Sometimes, changes between versions involve alterations to database
* structures and other major things that may break installations. The upgrade
* function in this file will attempt to perform all the necessary actions to
* upgrade your older installation to the current version. If there's something
* it cannot do itself, it will tell you what you need to do. The commands in
* here will all be database-neutral, using the functions defined in
* lib/ddllib.php
*
* @package mod_edusharing
* @copyright metaVentis GmbH — http://metaventis.com
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
use mod_edusharing\EduSharingService;
use mod_edusharing\InstallUpgradeLogic;
use mod_edusharing\MetadataLogic;
use mod_edusharing\PluginRegistration;
use mod_edusharing\UtilityFunctions;
/**
* xmldb_edusharing_upgrade
*
* @param int $oldversion
* @return bool
*/
function xmldb_edusharing_upgrade($oldversion=0): bool {
global $CFG, $DB;
$dbmanager = $DB->get_manager();
$result = true;
if ($oldversion < 2016011401) {
// Usage2.
try {
$xmldbtable = new xmldb_table('edusharing');
$sql = 'UPDATE {edusharing} SET object_version = 0 WHERE window_versionshow = 1';
$DB->execute($sql);
$sql = 'UPDATE {edusharing} SET object_version = window_version WHERE window_versionshow = 0';
$DB->execute($sql);
$xmldbfield = new xmldb_field('window_versionshow');
$dbmanager->drop_field($xmldbtable, $xmldbfield);
$xmldbfield = new xmldb_field('window_version');
$dbmanager->drop_field($xmldbtable, $xmldbfield);
} catch (Exception $e) {
trigger_error($e->getMessage(), E_USER_WARNING);
}
$homeconf = dirname(__FILE__).'/../conf/esmain/homeApplication.properties.xml';
if (file_exists($homeconf)) {
$app = new DOMDocument();
$app->load($homeconf);
$app->preserveWhiteSpace = false;
$entries = $app->getElementsByTagName('entry');
foreach ($entries as $entry) {
$homeappproperties[$entry->getAttribute('key')] = $entry->nodeValue;
}
$homeappproperties['blowfishkey'] = 'thetestkey';
$homeappproperties['blowfishiv'] = 'initvect';
set_config('appProperties', json_encode($homeappproperties), 'edusharing');
}
$repoconf = dirname(__FILE__).'/../conf/esmain/'.
'app-'. $homeappproperties['homerepid'] .'.properties.xml';
if (file_exists($repoconf)) {
$app = new DOMDocument();
$app->load($repoconf);
$app->preserveWhiteSpace = false;
$entrys = $app->getElementsByTagName('entry');
foreach ($entrys as $entry) {
$repoproperties[$entry->getAttribute('key')] = $entry->nodeValue;
}
$repoproperties['authenticationwebservice'] = str_replace(
'authentication',
'authbyapp',
$repoproperties['authenticationwebservice']
);
$repoproperties['authenticationwebservice_wsdl'] = str_replace('authentication',
'authbyapp',
$repoproperties['authenticationwebservice_wsdl']
);
if (mb_substr($repoproperties['usagewebservice'], -1) != '2') {
$repoproperties['usagewebservice'] = $repoproperties['usagewebservice'] . '2';
}
$repoproperties['usagewebservice_wsdl'] = str_replace('usage?wsdl',
'usage2?wsdl',
$repoproperties['usagewebservice_wsdl']
);
$repoproperties['contenturl'] = $repoproperties['clientprotocol'] . '://' . $repoproperties['domain'] . ':' .
$repoproperties['clientport'] . '/edu-sharing/renderingproxy';
set_config('repProperties', json_encode($repoproperties), 'edusharing');
}
try {
include(dirname(__FILE__).'/../conf/cs_conf.php');
set_config('EDU_AUTH_KEY', EDU_AUTH_KEY, 'edusharing');
set_config('EDU_AUTH_PARAM_NAME_USERID', EDU_AUTH_PARAM_NAME_USERID, 'edusharing');
set_config('EDU_AUTH_PARAM_NAME_LASTNAME', EDU_AUTH_PARAM_NAME_LASTNAME, 'edusharing');
set_config('EDU_AUTH_PARAM_NAME_FIRSTNAME', EDU_AUTH_PARAM_NAME_FIRSTNAME, 'edusharing');
set_config('EDU_AUTH_PARAM_NAME_EMAIL', EDU_AUTH_PARAM_NAME_EMAIL, 'edusharing');
upgrade_mod_savepoint(true, 2016011401, 'edusharing');
} catch (Exception $e) {
trigger_error($e->getMessage(), E_USER_WARNING);
}
}
if ($result) {
if ($oldversion < 2016120901) {
$appproperties = get_config('edusharing', 'appProperties');
if (!empty($appproperties)) {
foreach (json_decode($appproperties, true) as $key => $value) {
set_config('application_' . $key, $value, 'edusharing');
}
set_config('appProperties', null, 'edusharing');
}
$repproperties = get_config('edusharing', 'repProperties');
if (!empty($repproperties)) {
foreach (json_decode($repproperties, true) as $key => $value) {
set_config('repository_' . $key, $value, 'edusharing');
}
set_config('repProperties', null, 'edusharing');
}
try {
upgrade_mod_savepoint(true, 2016120901, 'edusharing');
} catch (Exception $exception) {
trigger_error($exception->getMessage(), E_USER_WARNING);
}
}
if ($oldversion < 2019062110) {
try {
$xmldbtable = new xmldb_table('edusharing');
$xmldbfield = new xmldb_field(
'module_id',
XMLDB_TYPE_INTEGER,
'10',
null,
false,
false,
null,
'name'
);
$dbmanager->add_field($xmldbtable, $xmldbfield);
upgrade_mod_savepoint(true, 2019062110, 'edusharing');
} catch (Exception $e) {
trigger_error($e->getMessage(), E_USER_WARNING);
}
}
if ($oldversion < 2019062401) {
try {
$xmldbtable = new xmldb_table('edusharing');
$xmldbfield = new xmldb_field(
'section_id',
XMLDB_TYPE_INTEGER,
'10',
null,
true,
false,
null,
'module_id'
);
$dbmanager->add_field($xmldbtable, $xmldbfield);
upgrade_mod_savepoint(true, 2019062401, 'edusharing');
} catch (Exception $e) {
trigger_error($e->getMessage(), E_USER_WARNING);
}
}
if ($oldversion < 2022042501) {
try {
$xmldbtable = new xmldb_table('edusharing');
$xmldbfield = new xmldb_field(
'usage_id',
XMLDB_TYPE_CHAR,
'255',
null,
false,
false,
null,
'section_id'
);
$dbmanager->add_field($xmldbtable, $xmldbfield);
upgrade_mod_savepoint(true, 2022042501, 'edusharing');
} catch (Exception $e) {
trigger_error($e->getMessage(), E_USER_WARNING);
}
}
if ($oldversion < 2023100100) {
unset_config('repository_restApi', 'edusharing');
try {
upgrade_mod_savepoint(true, 2023100100, 'edusharing');
} catch (Exception $exception) {
trigger_error($exception->getMessage(), E_USER_WARNING);
}
}
if ($oldversion < 2024050900) {
try {
$salt = get_config('vhb', 'salt');
if ($salt !== false) {
set_config('SALT', $salt, 'edusharing');
}
upgrade_mod_savepoint(true, 2024050900, 'edusharing');
} catch (Exception $exception) {
trigger_error($exception->getMessage(), E_USER_WARNING);
}
}
}
$logic = new InstallUpgradeLogic();
try {
$logic->parse_config_data();
} catch (Exception $exception) {
debugging($exception->getMessage());
return $result;
}
$utils = new UtilityFunctions();
$appid = $logic->discern_app_id();
$utils->set_config_entry('application_appid', $appid);
if (empty($data['repoUrl']) || empty($data['repoAdmin']) || empty($data['repoAdminPassword'])) {
return $result;
}
$service = new EduSharingService();
$metadatalogic = new MetadataLogic($service);
$metadatalogic->set_app_id($appid);
$registrationlogic = new PluginRegistration($service);
$logic->set_registration_logic($registrationlogic);
$logic->set_metadata_logic($metadatalogic);
$logic->perform(false);
return $result;
}