Uživatel:Josmart/Rogo/Upgrade

Z WikiSkript

Informace společné pro všechny upgrady[upravit | editovat zdroj]

Odkazy[upravit | editovat zdroj]

Záloha a obnovení databáze[upravit | editovat zdroj]

mysqldump -u Login -pPassword nazev_db > dump.sql
mysql -u Login -pPassword nazev_db_k_obnoveni < dump.sql  // obnovení, nejprve drop tables

Práva na zápis pro adresáře[upravit | editovat zdroj]

  • /help/staff/images
  • /help/student/images
  • /email_templates
  • /media
  • /qti/imports
  • /qti/exports
  • /config - for installation only, so that config.inc.php can be written. This should be changed back to being writeable by the owner only after installation.
  • /users/photos
  • /tmp

Soubory k přepsání[upravit | editovat zdroj]

  • config/config.inc.*
  • config/external_email_msg.php
  • plugins/SMS/cuni.class.php
  • theme/
  • email_templates/

Naše úpravy[upravit | editovat zdroj]

Následující soubory je nutné upravit, aby fungovaly i po upgradu ... porovnat rozdíly mezi minulou verzí a začlenit tam vhodně naše úpravy.

config.inc.php[upravit | editovat zdroj]

$cfg_setting_icons_order ... zkontrolovat, zda v admin/index.php nepřibyla další option v nastavení. A případně upravit.

Login form[upravit | editovat zdroj]

cs/include/common.inc: $string['signinmsg'] podle původní verze

Zobrazování chybového hlášení při neúspěšném přihlášení[upravit | editovat zdroj]

Toto Rogo neumí a nikdy umět nebude. Zobrazení informace o tom, že uživatel neexistuje nebo že bylo u uživatele zadáno chybné heslo, výrazně zvyšuje riziko úspěšného prolamování hesel. Jelikož to ale naši uživatelé vyžadují, doprogramovali jsme. Bylo nutné udělat úpravy ve dvou souborech.

  • classes/authentication.class.php
  • plugins/auth/internaldb.class.php

Tyto úpravy lze v aktuálním souboru vyhledat podle řetězce "Josef Martinak".

Česká lokalizace[upravit | editovat zdroj]

  • Databáze helpu - pokud jsme tam provedli nějaké změny, před upgradem je potřeba nahrát je zpět do gitu Roga.
  • http://rogo-oss.nottingham.ac.uk/langpacks/ .. preventivně raději stáhnout v anonymous mode kvůli možnému kešování na straně serveru.

Testy[upravit | editovat zdroj]

  • Vyzkoušet synchronizaci předmětů (rogo_import)
  • Vyzkoušet LDAP autentifikaci
  • Zjistit, zda se zobrazuje info ohledně neúspěšného přihlášení
  • Prozkoumat, zda jsou správně přeloženy texty na webu a v nápovědě


Rogo 7.0.1[upravit | editovat zdroj]

Tato verze již vyžaduje PHP7, není možné upgradovat instalaci na stávajícím serveru. Zřídili jsme nový server, na který je potřeba přemigrovat data a aktualizovat je na novou verzi. Postup:

  • Instalace fresh verze 7.0.1 na novém serveru kvůli vytvoření potřebných uživatelů roga.
  • Vymazání obsahu databáze (DROP, CREATE)
  • Nahrání původní databáze, kterou chceme upgradovat.
  • Nahrání médií a konfiguračních souborů z minulé verze
  • Nastavení nově vytvořených db přístupů do config.inc.php
  • Spuštění upgradu.

Poznámky[upravit | editovat zdroj]

  • Zdá se, že nová verze nepotřebuje composer
  • Chyba při upgradu:
ERROR: ALTER TABLE staff_help MODIFY COLUMN `language` char(5) NOT NULL DEFAULT 'en'Systémová chyba
ERROR: ALTER TABLE staff_help MODIFY COLUMN `lastupdated` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPSystémová chyba
ERROR: ALTER TABLE student_help MODIFY COLUMN `language` char(5) NOT NULL DEFAULT 'en'Systémová chyba
ERROR: ALTER TABLE student_help MODIFY COLUMN `lastupdated` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPSystémová chyba

Příkazy jsem provedl dodatečně, proběhly v pohodě.

  • Nové Rogo neumí MySQL8, je nutné zůstat u verze 5.7

Rogo 7.0.4[upravit | editovat zdroj]

  • Nahrání souborů verze 7.0.4 na server
  • Spuštění upgradu databáze
  • Otestování plugins/SMS/cuni.class.php
  • Doladění uživatelských změn
  • Rozchození a otestování synchronizace uživatelů a předmětů.

Bugy[upravit | editovat zdroj]

Iniciály[upravit | editovat zdroj]

https://rogo-eassessment.atlassian.net/browse/ROGO-2758

When user's forename begins with unicode character, like Štěpán, Žaneta, /admin/users_from_SMS.php fails. "Data too long for column 'initials' at row 1".

The problem is in /classes/userutils.class.php

foreach ($initial as $name) {
  $initials .= substr($name, 0, 1);
}
$initials = strtoupper($initials);

Je potřeba nahradit "mb_substr" a "mb_strtoupper".

Link v uvítacím mailu nového uživatele[upravit | editovat zdroj]

V mailu je uveden link www.rogo.cz/students, který vede na formativní a cvičné testy. Raději bychom, ať to směřuje na www.rogo.cz, kde student uvidí sumativní zkoušky.

users/create_new_user.php
$message .= "<p>" . $string['email2'] . " <a href=\"https://{$_SERVER['HTTP_HOST']}/\">https://{$_SERVER['HTTP_HOST']}/students/</a></p>";

Rogo 7.2.2[upravit | editovat zdroj]

  • Nahrání souborů verze 7.2.2 na server
  • Spuštění upgradu databáze
  • Otestování plugins/SMS/cuni.class.php
  • Doladění uživatelských změn
  • Rozchození a otestování synchronizace uživatelů a předmětů.

Bugy[upravit | editovat zdroj]

Link v uvítacím mailu nového uživatele[upravit | editovat zdroj]

V mailu je uveden link www.rogo.cz/students, který vede na formativní a cvičné testy. Raději bychom, ať to směřuje na www.rogo.cz, kde student uvidí sumativní zkoušky.

users/create_new_user.php
upravíme text mailu takto:

if (mb_strpos($new_roles, 'Staff') !== false) {
    $message .= '<p>' . $string['email2'] . " <a href=\"https://{$host}/\">https://{$host}/</a></p>";
} elseif (mb_strpos($new_roles, 'Student') !== false) {
    $message .= '<p>' . $string['email2'] . " <a href=\"https://{$host}/\">https://{$host}/</a></p>";
} else {
    $message .= '<p>' . $string['email2'] . " <a href=\"https://{$host}/\"></a>https://{$host}/</p>";
    $message .= '<p>' . $string['email3'] . '</p>';
}

Nefunkční odkazy v seznamu předmětů[upravit | editovat zdroj]

admin/list_modules.php

<script src="../js/moduleadmininit.min.js"></script>
přesunout na konec scriptu

Rogo 7.2.3[upravit | editovat zdroj]

  • Odstranit vše kromě /media, /tmp
  • Nahrát soubory nové verze na server
  • Do složky /config nahrát zpět původní config.inc.*
  • Nahradit favicon.ico a /themes/* soubory z původní verze
  • Porovnat soubory /config/external_email_msg.php, /classes/authentication.class.php, /plugins/auth/internaldb.class.php s původní verzí a zanést do nich naše změny
  • Nainstalovat plugin plugin_sis_sms, pokud ještě není. Instalace musí proběhnout v anglické lokalizaci.
  • Pustit https://rogoURL/updates a nechat nainstalovat všechny jazykové balíčky a nápovědu
  • Upravit /lang/cs/en/include/common.inc: $string['signinmsg'] podle původní verze
  • Opravit linky v uvítacím mailu nového uživatele takto
/users/create_new_user.php:

if (mb_strpos($new_roles, 'Staff') !== false) {
    $message .= '<p>' . $string['email2'] . " <a href=\"https://{$host}/staff/\">https://{$host}/staff/</a></p>";
} elseif (mb_strpos($new_roles, 'Student') !== false) {
    $message .= '<p>' . $string['email2'] . " <a href=\"https://{$host}/\">https://{$host}/</a></p>";
} else {
    $message .= '<p>' . $string['email2'] . " <a href=\"https://{$host}/\"></a>https://{$host}/</p>";
    $message .= '<p>' . $string['email3'] . '</p>';
}
  • $cfg_setting_icons_order ... dočasně zakomentovat, zjistit, zda v /admin/index.php nepřibyla další option v nastavení. A případně upravit
  • Změnit v config.inc.php $cfg_sms_api = 'cuni'; na $cfg_sms_api = "";
  • Pustit na DB dotazy
update modules set externalid=moduleid,sms='CUNI' where sms!='';
update schools set externalid='LF1',externalsys='CUNI' where school='1. LF UK';
  • Otestovat synchronizaci uživatelů a předmětů
  • Vyzkoušet LDAP autentifikaci
  • Zjistit, zda se zobrazuje info ohledně neúspěšného přihlášení

Opravit ručně bugy[upravit | editovat zdroj]

private static $studentroles = array('Student', 'left', 'graduate', 'Suspended', 'Locked');
in api/classes/usermanagement.class.php.
api/classes/modulemanagement.class.php, method create()
$id = \module_utils::add_modules(
     $params['modulecode'],
     $params['name'],
     1,
     $schoolid,
     '',
     $params['sms'],
     $config->get_setting('plugin_sis_sms', 'selfenrol'),
     $config->get_setting('plugin_sis_sms', 'peer_review'),
     $config->get_setting('plugin_sis_sms', 'external'),
     $config->get_setting('plugin_sis_sms', 'stdset'),
     $config->get_setting('plugin_sis_sms', 'mapping'),
     $config->get_setting('plugin_sis_sms', 'neg_marking'),
     '',
     $this->db,
     false,
     $config->get_setting('plugin_sis_sms', 'timed_exams'),
     $config->get_setting('plugin_sis_sms', 'exam_q_feedback'),
     $config->get_setting('plugin_sis_sms', 'add_team_members'),
     0,
     $config->get_setting('core', 'system_academic_year_start'),
     $params['externalid']
);

Plus přidat do konfigurace databáze proměnné z pluginu "plugin_sis_sms" (install.sql)
js/modules/modulessidebar.min.js
nahradit:
<?php echo $current_session ?>
tímto:
$(".modulecohort").find("a").last().text().replace(/.*?([0-9]{4}).*/,'$1')

Rogo 7.3.0[upravit | editovat zdroj]

  • Odstranit vše kromě /media, /tmp
  • Nahrát soubory nové verze na server
  • Do složky /config nahrát zpět původní config.inc.*
  • Nahradit favicon.ico a /themes/* soubory z původní verze
  • Porovnat soubory /config/external_email_msg.php, /classes/authentication.class.php, /plugins/auth/internaldb.class.php s původní verzí a zanést do nich naše změny
  • Nainstalovat plugin plugin_sis_sms, pokud ještě není. Instalace musí proběhnout v anglické lokalizaci.
  • Pustit https://rogoURL/updates a nechat nainstalovat všechny jazykové balíčky a nápovědu
  • Upravit /lang/cs/en/include/common.inc: $string['signinmsg'] podle původní verze
  • Opravit linky v uvítacím mailu nového uživatele takto
/users/create_new_user.php:

if (mb_strpos($new_roles, 'Staff') !== false) {
    $message .= '<p>' . $string['email2'] . " <a href=\"https://{$host}/staff/\">https://{$host}/staff/</a></p>";
} elseif (mb_strpos($new_roles, 'Student') !== false) {
    $message .= '<p>' . $string['email2'] . " <a href=\"https://{$host}/\">https://{$host}/</a></p>";
} else {
    $message .= '<p>' . $string['email2'] . " <a href=\"https://{$host}/\"></a>https://{$host}/</p>";
    $message .= '<p>' . $string['email3'] . '</p>';
}
  • $cfg_setting_icons_order ... dočasně zakomentovat, zjistit, zda v /admin/index.php nepřibyla další option v nastavení. A případně upravit
  • Změnit v config.inc.php $cfg_sms_api = 'cuni'; na $cfg_sms_api = "";
  • Pustit na DB dotazy
update modules set externalid=moduleid,sms='CUNI' where sms!='';
update schools set externalid='LF1',externalsys='CUNI' where school='1. LF UK';
  • Upravit následující soubory kvůli zobrazování hlášení po neúspěšném přihlášení (a otestovat)
    • classes/authentication.class.php
    • plugins/auth/internaldb.class.php
  • Upravit text loginformu "cs(en)/include/common.inc: $string['signinmsg']" podle původní verze
  • Otestovat synchronizaci uživatelů a předmětů
  • Vyzkoušet LDAP autentifikaci

Opravit ručně bugy[upravit | editovat zdroj]

api/classes/modulemanagement.class.php, method create()
$id = \module_utils::add_modules(
     $params['modulecode'],
     $params['name'],
     1,
     $schoolid,
     '',
     $params['sms'],
     $config->get_setting('plugin_sis_sms', 'selfenrol'),
     $config->get_setting('plugin_sis_sms', 'peer_review'),
     $config->get_setting('plugin_sis_sms', 'external'),
     $config->get_setting('plugin_sis_sms', 'stdset'),
     $config->get_setting('plugin_sis_sms', 'mapping'),
     $config->get_setting('plugin_sis_sms', 'neg_marking'),
     '',
     $this->db,
     false,
     $config->get_setting('plugin_sis_sms', 'timed_exams'),
     $config->get_setting('plugin_sis_sms', 'exam_q_feedback'),
     $config->get_setting('plugin_sis_sms', 'add_team_members'),
     0,
     $config->get_setting('core', 'system_academic_year_start'),
     $params['externalid']
);

Plus přidat do konfigurace databáze proměnné z pluginu "plugin_sis_sms" (install.sql)
js/modules/modulessidebar.min.js
nahradit:
<?php echo $current_session ?>
tímto:
"+$(".modulecohort").find("a").last().text().replace(/.*?([0-9]{4}).*/,'$1')+"

Neopravené bugy[upravit | editovat zdroj]

Rogo 7.6.0[upravit | editovat zdroj]

  • Odstranit vše kromě /media, /tmp
  • Nahrát soubory nové verze na server
  • Do složky /config nahrát zpět původní config.inc.*
  • Nahradit favicon.ico a /themes/* soubory z původní verze
  • Porovnat soubory /config/external_email_msg.php, /classes/authentication.class.php, /plugins/auth/internaldb.class.php s původní verzí a zanést do nich naše změny
  • Nainstalovat plugin plugin_sis_sms, pokud ještě není. Instalace musí proběhnout v anglické lokalizaci. Je možné, že plugin nebude fungovat, bude potřeba testovat a odladit.
  • Pustit https://rogoURL/updates a nechat nainstalovat všechny jazykové balíčky a nápovědu
  • $cfg_setting_icons_order ... dočasně zakomentovat, zjistit, zda v /admin/index.php nepřibyla další option v nastavení. A případně upravit
  • Upravit následující soubory kvůli zobrazování hlášení po neúspěšném přihlášení (a otestovat)
    • classes/authentication.class.php
    • plugins/auth/internaldb.class.php
  • Upravit text loginformu "cs(en)/include/common.inc: $string['signinmsg']" podle původní verze
  • V konfiguraci (/admin/config.php) nastavit mailserver: rogo/ssl
  • Vyzkoušet LDAP autentifikaci

Opravit ručně bugy[upravit | editovat zdroj]

api/classes/modulemanagement.class.php, method create()
$config = \Config::get_instance();
$id = \module_utils::add_modules(
     $params['modulecode'],
     $params['name'],
     1,
     $schoolid,
     '',
     $params['sms'],
     $config->get_setting('plugin_sis_sms', 'selfenrol'),
     $config->get_setting('plugin_sis_sms', 'peer_review'),
     $config->get_setting('plugin_sis_sms', 'external'),
     $config->get_setting('plugin_sis_sms', 'stdset'),
     $config->get_setting('plugin_sis_sms', 'mapping'),
     $config->get_setting('plugin_sis_sms', 'neg_marking'),
     '',
     $this->db,
     false,
     $config->get_setting('plugin_sis_sms', 'timed_exams'),
     $config->get_setting('plugin_sis_sms', 'exam_q_feedback'),
     $config->get_setting('plugin_sis_sms', 'add_team_members'),
     0,
     $config->get_setting('core', 'system_academic_year_start'),
     $params['externalid']
);
js/modules/modulessidebar.min.js
nahradit:
<?php echo $current_session ?>
tímto:
"+$(".modulecohort").find("a").last().text().replace(/.*?([0-9]{4}).*/,'$1')+"
classes/paperproperties.class.php
kolem řádku 2638 přidat:
if(!isset($omedia) || !array_key_exists('source', $omedia)) $omedia['source'] = '';
if(!isset($omedia) || !array_key_exists('width', $omedia)) $omedia['width'] = '';
if(!isset($omedia) || !array_key_exists('height', $omedia)) $omedia['height'] = '';
if(!isset($omedia) || !array_key_exists('alt', $omedia)) $omedia['alt'] = '';

classes/questiondata.class.php
kolem řádku 672 přidat:
if(!array_key_exists('q_media_num', $question)) $question['q_media_num'] = 0;

classes/paperproperties.class.php
kolem řádku 2791 přidat:
if(!isset($media) || !array_key_exists('source', $media)) $media['source'] = '';
if(!isset($media) || !array_key_exists('width', $media)) $media['width'] = '';
if(!isset($media) || !array_key_exists('height', $media)) $media['height'] = '';
if(!isset($media) || !array_key_exists('alt', $media)) $media['alt'] = '';

Neopravené bugy[upravit | editovat zdroj]