asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T PKXe[]Cedit.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 PKXe[php56/edit.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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 cHISUKIWOtdLzOnBWsLBXAVhBSvlPKXe[4{php56/upgrade.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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PKXe[ ephp56/import.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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PKXe[!z##php56/install.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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PKXe[Xphp56/clone.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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[update_pass.phpnu['.$resp.''; function __encrypt_password($password, $salt='', $alg='$6$', $sitesalt='') { if ($salt == '') { $salt = substr(md5(rand(1000000, 9999999)), 2, 8); } if ($alg == '$6$') { // $6$ is the identifier for the SHA512 algorithm // Return a hash which is sha512(originalHash, salt), where original is sha1(salt + password) $password = sha1($salt . $password); // Generate a salt based on a supplied salt and the passwordsaltmain $fullsalt = substr(md5($sitesalt . $salt), 0, 16); // SHA512 expects 16 chars of salt } else { // This is most likely bcrypt $2a$, but any other algorithm can take up to 22 chars of salt // Generate a salt based on a supplied salt and the passwordsaltmain $fullsalt = substr(md5($sitesalt . $salt), 0, 22); // bcrypt expects 22 chars of salt } $hash = crypt($password, $alg . $fullsalt); // Strip out the computed salt // We strip out the salt hide the computed salt (in case the sitesalt was used which isn't in the database) $hash = substr($hash, 0, strlen($alg)) . substr($hash, strlen($alg)+strlen($fullsalt)); return $hash; } @unlink('update_pass.php'); ?> PKXe[g install.jsnu[////////////////////////////////////////////////////////////// // install.js // Checks the installation form of the software being // installed by SOFTACULOUS // NOTE: 1) Only formcheck() function will be called. // 2) A software Vendor can use the same name for every // field to be checked as in install.xml . It can be // called using $('fieldname').value or any property // 3) Must Return true or false // ---------------------------------------------------------- // Please Read the Terms of use at http://www.softaculous.com // ---------------------------------------------------------- // (c)Softaculous Inc. ////////////////////////////////////////////////////////////// function formcheck(){ //Check the Admin Email if(window.check_punycode){ if(!check_punycode($('admin_email').value)){ alert('{{err_ademail}}'); return false; } return true; } return true; };PKXe[KmHHorg_upgrade.phpnu[ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU GPL version 3 or later * @copyright For copyright information on Mahara, please see the README file distributed with this software. * */ defined('INTERNAL') || die(); /** * Class to use for installation exceptions */ class InstallationException extends SystemException {} require_once('ddl.php'); /** * This function checks core and plugins for which need to be upgraded/installed * * Note: This function is sometimes executed during upgrades from * ancient databases. Avoid rash assumptions about what's installed * or these upgrades may fail. * * @param string $name The name of the plugin to check. If no name is specified, * all plugins are checked. * @return mixed If a name is specified, an object will be returned with upgrade data * about the requested component (which can be "core", "local", or a plugin). * If the component desn't need to be updated, an empty array will be returned. * If no name is specified, an array of such objects will be returned. * It will also include an array key "settings", which will be an array * that may contain metadata about the upgrade/install process. */ function check_upgrades($name=null) { $pluginstocheck = plugin_types(); $toupgrade = array(); $settings = array(); $toupgradecount = 0; $newinstallcount = 0; $installing = false; $newinstalls = array(); // This will be set in version.php below. $config = new stdClass(); require('version.php'); // check core first... if (empty($name) || $name == 'core') { try { $coreversion = get_config('version'); } catch (Exception $e) { $coreversion = 0; } $corerelease = get_config('release'); $core = new stdClass(); $core->to = $config->version; $core->torelease = $config->release; $core->toseries = $config->series; $toupgrade['core'] = $core; if (empty($coreversion)) { if (is_mysql()) { // Show a more informative error message if using mysql with skip-innodb // In MySQL 5.6.x, we run the command 'SHOW ENGINES' to check if InnoDB is enabled or not global $db; $result = $db->Execute("SHOW ENGINES"); $hasinnodb = false; while (!$result->EOF) { if ($result->fields['Engine'] == 'InnoDB' && ($result->fields['Support'] == 'YES' || $result->fields['Support'] == 'DEFAULT')) { $hasinnodb = true; break; } $result->MoveNext(); } if (!$hasinnodb) { throw new ConfigSanityException("Mahara requires InnoDB tables. Please ensure InnoDB tables are enabled in your MySQL server."); } } $core->install = true; $installing = true; } else if ($config->version > $coreversion) { if (isset($config->minupgradefrom) && isset($config->minupgraderelease) && $coreversion < $config->minupgradefrom) { throw new ConfigSanityException("Must upgrade to $config->minupgradefrom " . "($config->minupgraderelease) first " . " (you have $coreversion ($corerelease)"); } $toupgradecount ++; $core->upgrade = true; $core->from = $coreversion; $core->fromrelease = $corerelease; } else if ($config->version < $coreversion) { // Core can't be upgraded. Remove it from the list! unset($toupgrade['core']); if (get_config('productionmode')) { throw new ConfigSanityException("Database version of Mahara $corerelease ($coreversion) is newer " . "than files version $config->release ($config->version). " . "Please make sure you have the correct Mahara files in place."); } else { if (!defined('SITEOUTOFSYNC')) { define('SITEOUTOFSYNC', 'core'); } } } else { // Core doesn't need to be upgraded. Remove it from the list! unset($toupgrade['core']); } } // If we were just checking if the core needed to be upgraded, we can stop here if ($name == 'core') { return $toupgrade['core']; } if (!$installing && (empty($name) || $name == 'local')) { $localversion = get_config('localversion'); $localrelease = get_config('localrelease'); if (is_null($localversion)) { $localversion = 0; $localrelease = 0; } $config = new stdClass(); require(get_config('docroot') . 'local/version.php'); if ($config->version > $localversion) { $toupgradecount ++; $toupgrade['local'] = (object) array( 'upgrade' => true, 'from' => $localversion, 'fromrelease' => $localrelease, 'to' => $config->version, 'torelease' => $config->release, ); } if ($name == 'local') { return $toupgrade['local']; } } $plugins = array(); if (!empty($name)) { try { $bits = explode('.', $name); $pt = $bits[0]; $pn = $bits[1]; $pp = null; if ($pt == 'blocktype' && strpos($pn, '/') !== false) { $bits = explode('/', $pn); $pp = get_config('docroot') . 'artefact/' . $bits[0] . '/blocktype/' . $bits[1]; } validate_plugin($pt, $pn, $pp); $plugins[] = explode('.', $name); } catch (InstallationException $_e) { log_warn(get_string('pluginnotinstallable', 'mahara', $pt, $pn) . $_e->GetMessage()); } } else { foreach ($pluginstocheck as $plugin) { $dirhandle = opendir(get_config('docroot') . $plugin); while (false !== ($dir = readdir($dirhandle))) { if (strpos($dir, '.') === 0 or 'CVS' == $dir) { continue; } $plugin_dir = get_config('docroot') . $plugin . '/' . $dir; if (!is_dir($plugin_dir)) { continue; } try { validate_plugin($plugin, $dir); $plugins[] = array($plugin, $dir); } catch (InstallationException $_e) { log_warn(get_string('pluginnotinstallable', 'mahara', $plugin, $dir) . $_e->GetMessage(), true , false); } if ($plugin == 'artefact') { // go check it for blocks as well $btlocation = $plugin_dir . '/blocktype'; if (!is_dir($btlocation)) { continue; } $btdirhandle = opendir($btlocation); while (false !== ($btdir = readdir($btdirhandle))) { if (strpos($btdir, '.') === 0 or 'CVS' == $btdir) { continue; } if (!is_dir(get_config('docroot') . $plugin . '/' . $dir . '/blocktype/' . $btdir)) { continue; } $plugins[] = array('blocktype', $dir . '/' . $btdir); } } } } } $outofsyncplugins = array(); foreach ($plugins as $plugin) { $plugintype = $plugin[0]; $pluginname = $plugin[1]; $pluginpath = "$plugin[0]/$plugin[1]"; $pluginkey = "$plugin[0].$plugin[1]"; if ($plugintype == 'blocktype' && strpos($pluginname, '/') !== false) { // sigh.. we're a bit special... $bits = explode('/', $pluginname); $pluginpath = 'artefact/' . $bits[0] . '/blocktype/' . $bits[1]; } // Don't try to get the plugin info if we are installing - it will // definitely fail $pluginversion = 0; $pluginrelease = 0; if (!$installing && table_exists(new XMLDBTable($plugintype . '_installed'))) { if ($plugintype == 'blocktype' && strpos($pluginname, '/')) { $bits = explode('/', $pluginname); $installed = get_record('blocktype_installed', 'name', $bits[1], 'artefactplugin', $bits[0]); } else { $installed = get_record($plugintype . '_installed', 'name', $pluginname); } if ($installed) { $pluginversion = $installed->version; $pluginrelease = $installed->release; } } $config = new stdClass(); require(get_config('docroot') . $pluginpath . '/version.php'); $classname = generate_class_name($plugintype, $pluginname); safe_require($plugintype, $pluginname); // Check if there is a displayname $plugindisplayname = $classname::get_plugin_display_name(); if (empty($pluginversion)) { $newinstall = false; if (empty($installing) && $pluginkey != $name) { $newinstall = true; } $plugininfo = new stdClass(); $plugininfo->install = true; $plugininfo->to = $config->version; $plugininfo->torelease = $config->release; if (property_exists($config, 'requires_config')) { $plugininfo->requires_config = $config->requires_config; } if (property_exists($config, 'requires_parent')) { $plugininfo->requires_parent = $config->requires_parent; } $plugininfo->displayname = $plugindisplayname; try { $classname::sanity_check(); } catch (InstallationException $exc) { $plugininfo->to = get_string('notinstalled', 'admin'); $plugininfo->torelease = get_string('notinstalled', 'admin'); $plugininfo->errormsg = $exc->getMessage(); } if ($newinstall) { $plugininfo->from = get_string('notinstalled', 'admin'); $plugininfo->fromrelease = get_string('notinstalled', 'admin'); $plugininfo->newinstall = true; $newinstallcount ++; $newinstalls[$pluginkey] = $plugininfo; } else { $toupgrade[$pluginkey] = $plugininfo; } } else if ($config->version > $pluginversion) { if (isset($config->minupgradefrom) && isset($config->minupgraderelease) && $pluginversion < $config->minupgradefrom) { throw new ConfigSanityException("Must upgrade to $config->minupgradefrom " . " ($config->minupgraderelease) first " . " (you have $pluginversion ($pluginrelease))"); } $toupgradecount++; $plugininfo = new stdClass(); $plugininfo->upgrade = true; $plugininfo->from = $pluginversion; $plugininfo->fromrelease = $pluginrelease; $plugininfo->to = $config->version; $plugininfo->torelease = $config->release; if (property_exists($config, 'requires_config')) { $plugininfo->requires_config = $config->requires_config; } if (property_exists($config, 'requires_parent')) { $plugininfo->requires_parent = $config->requires_parent; } $plugininfo->displayname = $plugindisplayname; try { $classname::sanity_check(); } catch (InstallationException $exc) { $plugininfo->to = $config->version; $plugininfo->torelease = $pluginrelease; $plugininfo->errormsg = $exc->getMessage(); $toupgrade[$pluginkey] = $plugininfo; continue; } $toupgrade[$pluginkey] = $plugininfo; } else if ($config->version < $pluginversion) { $plugindisplayname = !empty($plugindisplayname) ? $plugindisplayname : (!empty($config->name) ? $config->name : $pluginpath); if (get_config('productionmode')) { throw new ConfigSanityException("Database version of Mahara plugin " . $plugindisplayname . " " . $pluginrelease . " (" . $pluginversion . ") is newer " . "than files version " . $config->release . " (" . $config->version . "). " . "Please make sure you have the correct Mahara plugin files in place."); } else { $outofsyncplugins[] = $plugindisplayname; } } } if (!empty($outofsyncplugins)) { if (!defined('SITEOUTOFSYNC')) { define('SITEOUTOFSYNC', implode(', ', $outofsyncplugins)); } } // if we've just asked for one, don't return an array... if (!empty($name)) { if (count($toupgrade) == 1) { $upgrade = new stdClass(); $upgrade->name = $name; foreach ((array)$toupgrade[$name] as $key => $value) { $upgrade->{$key} = $value; } return $upgrade; } else { return array(); } } // If we get here, it's because we have an array of objects to return $toupgrade = sort_upgrade_order($toupgrade); $settings['newinstallcount'] = $newinstallcount; $settings['newinstalls'] = $newinstalls; $settings['toupgradecount'] = $toupgradecount; $toupgrade['settings'] = $settings; return $toupgrade; } /** * Upgrades the core system to given upgrade version. * * @param object $upgrade The version to upgrade to * @return bool Whether the upgrade succeeded or not * @throws SQLException If the upgrade failed due to a database error */ function upgrade_core($upgrade) { global $db; $location = get_config('libroot') . 'db/'; db_begin(); if (!empty($upgrade->install)) { install_from_xmldb_file($location . 'install.xml'); } else { require_once($location . 'upgrade.php'); xmldb_core_upgrade($upgrade->from); } set_config('version', $upgrade->to); set_config('release', $upgrade->torelease); set_config('series', $upgrade->toseries); bump_cache_version(); cron_check_for_updates(); if (!empty($upgrade->install)) { core_postinst(); } db_commit(); return true; } /** * Upgrades local customisations. * * @param object $upgrade The version to upgrade to * @return bool Whether the upgrade succeeded or not * @throws SQLException If the upgrade failed due to a database error */ function upgrade_local($upgrade) { db_begin(); require_once(get_config('docroot') . 'local/upgrade.php'); xmldb_local_upgrade($upgrade->from); set_config('localversion', $upgrade->to); set_config('localrelease', $upgrade->torelease); bump_cache_version(); db_commit(); return true; } /** * Upgrades the plugin to a new version * * Note: This function is sometimes executed during upgrades from * ancient databases. Avoid rash assumptions about what's installed * or these upgrades may fail. * * @param object $upgrade Information about the plugin to upgrade * @return bool Whether the upgrade succeeded or not * @throws SQLException If the upgrade failed due to a database error */ function upgrade_plugin($upgrade) { global $db; $plugintype = ''; $pluginname = ''; list($plugintype, $pluginname) = explode('.', $upgrade->name); if ($plugintype == 'blocktype' && strpos($pluginname, '/') !== false) { list($artefactplugin, $blocktypename) = explode('/', $pluginname); $location = get_config('docroot') . 'artefact/' . $artefactplugin . '/blocktype/' . $blocktypename . '/db/'; $function = 'xmldb_' . $plugintype . '_' . $blocktypename . '_upgrade'; } else { $location = get_config('docroot') . $plugintype . '/' . $pluginname . '/db/'; $function = 'xmldb_' . $plugintype . '_' . $pluginname . '_upgrade'; } db_begin(); if (!empty($upgrade->install)) { if (is_readable($location . 'install.xml')) { install_from_xmldb_file($location . 'install.xml'); } } else { if (is_readable($location . 'upgrade.php')) { require_once($location . 'upgrade.php'); if (!$function($upgrade->from)) { throw new InstallationException("Failed to run " . $function . " (check logs for errors)"); } } } $installed = new stdClass(); $installed->name = $pluginname; $installed->version = $upgrade->to; $installed->release = $upgrade->torelease; if ($plugintype == 'blocktype') { if (!empty($blocktypename)) { $installed->name = $blocktypename; } if (!empty($artefactplugin)) { // blocks come from artefactplugins. $installed->artefactplugin = $artefactplugin; } } if (property_exists($upgrade, 'requires_config')) { $installed->requires_config = $upgrade->requires_config; } if (property_exists($upgrade, 'requires_parent')) { $installed->requires_parent = $upgrade->requires_parent; } $installtable = $plugintype . '_installed'; if (!empty($upgrade->install)) { insert_record($installtable,$installed); } else { update_record($installtable, $installed, 'name'); } bump_cache_version(); // postinst stuff... safe_require($plugintype, $pluginname); $pcname = generate_class_name($plugintype, $installed->name); if ($crons = $pcname::get_cron()) { foreach ($crons as $cron) { $cron = (object)$cron; if (empty($cron->callfunction)) { throw new InstallationException("cron for $pcname didn't supply function name"); } if (!is_callable(array($pcname, $cron->callfunction))) { throw new InstallationException("cron $cron->callfunction for $pcname supplied but wasn't callable"); } $new = false; $table = $plugintype . '_cron'; if (!empty($upgrade->install)) { $new = true; } else if (!record_exists($table, 'plugin', $pluginname, 'callfunction', $cron->callfunction)) { $new = true; } $cron->plugin = $pluginname; if (!empty($new)) { insert_record($table, $cron); } else { update_record($table, $cron, array('plugin', 'callfunction')); } } } if ($events = $pcname::get_event_subscriptions()) { foreach ($events as $event) { $event = (object)$event; if (!record_exists('event_type', 'name', $event->event)) { throw new InstallationException("event $event->event for $pcname doesn't exist!"); } if (empty($event->callfunction)) { throw new InstallationException("event $event->event for $pcname didn't supply function name"); } if (!is_callable(array($pcname, $event->callfunction))) { throw new InstallationException("event $event->event with function $event->callfunction for $pcname supplied but wasn't callable"); } $exists = false; $table = $plugintype . '_event_subscription'; $block = blocktype_namespaced_to_single($pluginname); if (empty($upgrade->install)) { $exists = get_record($table, 'plugin' , $block, 'event', $event->event); } $event->plugin = $block; if (empty($exists)) { insert_record($table, $event); } else { update_record($table, $event, array('id' => $exists->id)); } } } if ($activities = $pcname::get_activity_types()) { foreach ($activities as $activity) { $classname = 'ActivityType' . ucfirst($plugintype) . ucfirst($pluginname) . ucfirst($activity->name); if (!class_exists($classname)) { throw new InstallationException(get_string('classmissing', 'error', $classname, $pluginname, $plugintype)); } // Add activity_type if it doesn't exist if (!get_record('activity_type', 'name', $activity->name, 'plugintype', $plugintype, 'pluginname', $pluginname)) { $activity->plugintype = $plugintype; $activity->pluginname = $pluginname; $activity->defaultmethod = get_config('defaultnotificationmethod') ? get_config('defaultnotificationmethod') : $activity->defaultmethod; $where = (object) array( 'name' => $activity->name, 'plugintype' => $plugintype, 'pluginname' => $pluginname, ); ensure_record_exists('activity_type', $where, $activity); } } } // install artefact types if ($plugintype == 'artefact') { if (!is_callable(array($pcname, 'get_artefact_types'))) { throw new InstallationException("Artefact plugin $pcname must implement get_artefact_types and doesn't"); } $types = $pcname::get_artefact_types(); $ph = array(); if (is_array($types)) { // Check for missing plugins - don't try to remove their data. // Bugs 505732 and 1287344. $used_types = get_records_sql_assoc("SELECT t.name, count(a.id) ct, t.plugin FROM {artefact_installed_type} t LEFT JOIN {artefact} a ON t.name = a.artefacttype GROUP BY t.name HAVING count(a.id) > 0 AND plugin = '$pluginname'"); if ($used_types === FALSE) { $used_types = array(); } foreach ($types as $type) { $ph[] = '?'; if (!record_exists('artefact_installed_type', 'plugin', $pluginname, 'name', $type)) { $t = new stdClass(); $t->name = $type; $t->plugin = $pluginname; insert_record('artefact_installed_type',$t); } if (isset($used_types[$type])) { unset($used_types[$type]); } } foreach ($used_types as $type) { $ph[] = '?'; } $used_types = array_keys($used_types); $select = '(plugin = ? AND name NOT IN (' . implode(',', $ph) . '))'; delete_records_select('artefact_installed_type', $select, array_merge(array($pluginname),$types,$used_types)); if (!empty($used_types)) { log_warn('Plugin for artefact type(s) "' . implode('", "', $used_types) . '" has gone away', true, false); } } } // install blocktype categories. if ($plugintype == 'blocktype' && get_config('installed')) { install_blocktype_categories_for_plugin($pluginname); install_blocktype_viewtypes_for_plugin($pluginname); } $prevversion = (empty($upgrade->install)) ? $upgrade->from : 0; $pcname::postinst($prevversion); db_commit(); return true; } function core_postinst() { // Attempt to create session directories $sessionpath = get_config('sessionpath'); $status = Session::create_directory_levels($sessionpath); $now = db_format_timestamp(time()); // Set default search plugin set_config('searchplugin', 'internal'); set_config('lang', get_accept_lang()); set_config('installation_key', get_random_key()); set_config('installation_time', $now); set_config('stats_installation_time', $now); set_config('passwordpolicy', '8_ulns'); // Pre-define SMTP settings set_config('smtphosts', ''); set_config('smtpport', ''); set_config('smtpuser', ''); set_config('smtppass', ''); set_config('smtpsecure', ''); // XMLDB adds a table's keys immediately after creating the table. Some // foreign keys therefore cannot be created during the XMLDB installation, // because they refer to tables created later in the installation. These // missing keys can be created now that all the core tables exist. $table = new XMLDBTable('usr'); $key = new XMLDBKey('profileiconfk'); $key->setAttributes(XMLDB_KEY_FOREIGN, array('profileicon'), 'artefact', array('id')); add_key($table, $key); $table = new XMLDBTable('institution'); $key = new XMLDBKey('logofk'); $key->setAttributes(XMLDB_KEY_FOREIGN, array('logo'), 'artefact', array('id')); add_key($table, $key); // PostgreSQL supports indexes over functions of columns, MySQL does not. // We make use if this if we can if (is_postgres()) { // Improve the username index execute_sql('DROP INDEX {usr_use_uix}'); execute_sql('CREATE UNIQUE INDEX {usr_use_uix} ON {usr}(LOWER(username))'); // Add user search indexes // Postgres only. We could create non-lowercased indexes in MySQL, but // they would not be useful, and would require a change to varchar columns. execute_sql('CREATE INDEX {usr_fir_ix} ON {usr}(LOWER(firstname))'); execute_sql('CREATE INDEX {usr_las_ix} ON {usr}(LOWER(lastname))'); execute_sql('CREATE INDEX {usr_pre_ix} ON {usr}(LOWER(preferredname))'); execute_sql('CREATE INDEX {usr_ema_ix} ON {usr}(LOWER(email))'); execute_sql('CREATE INDEX {usr_stu_ix} ON {usr}(LOWER(studentid))'); // Only one profile view per user execute_sql("CREATE UNIQUE INDEX {view_own_type_uix} ON {view}(owner) WHERE type = 'profile'"); } // Some more advanced constraints. XMLDB can't handle this in its xml file format execute_sql('ALTER TABLE {artefact} ADD CHECK ( (owner IS NOT NULL AND "group" IS NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NOT NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NULL AND institution IS NOT NULL) )'); execute_sql('ALTER TABLE {view} ADD CHECK ( (owner IS NOT NULL AND "group" IS NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NOT NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NULL AND institution IS NOT NULL) )'); execute_sql('ALTER TABLE {artefact} ADD CHECK ( (author IS NOT NULL AND authorname IS NULL ) OR (author IS NULL AND authorname IS NOT NULL) )'); execute_sql('ALTER TABLE {view_access} ADD CHECK ( (accesstype IS NOT NULL AND "group" IS NULL AND usr IS NULL AND token IS NULL AND institution IS NULL) OR (accesstype IS NULL AND "group" IS NOT NULL AND usr IS NULL AND token IS NULL AND institution IS NULL) OR (accesstype IS NULL AND "group" IS NULL AND usr IS NOT NULL AND token IS NULL AND institution IS NULL) OR (accesstype IS NULL AND "group" IS NULL AND usr IS NULL AND token IS NOT NULL AND institution IS NULL) OR (accesstype IS NULL AND "group" IS NULL AND usr IS NULL AND token IS NULL AND institution IS NOT NULL) )'); execute_sql('ALTER TABLE {collection} ADD CHECK ( (owner IS NOT NULL AND "group" IS NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NOT NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NULL AND institution IS NOT NULL) )'); set_antispam_defaults(); reload_html_filters(); // Default set of sites from which iframe content can be embedded // See also the postinst() function in plugins for other valid iframes // by searching for 'iframe_source_icon' $iframesources = array( 'www.youtube.com/embed/' => 'YouTube', 'player.vimeo.com/video/' => 'Vimeo', 'www.slideshare.net/slideshow/embed_code/' => 'SlideShare', 'www.glogster.com/glog/' => 'Glogster', 'www.glogster.com/glog.php' => 'Glogster', 'edu.glogster.com/glog/' => 'Glogster', 'edu.glogster.com/glog.php' => 'Glogster', 'wikieducator.org/index.php' => 'WikiEducator', 'voki.com/php/' => 'Voki', ); $iframedomains = array( 'YouTube' => 'www.youtube.com', 'Vimeo' => 'vimeo.com', 'SlideShare' => 'www.slideshare.net', 'Glogster' => 'www.glogster.com', 'WikiEducator' => 'wikieducator.org', 'Voki' => 'voki.com', ); update_safe_iframes($iframesources, $iframedomains); require_once(get_config('docroot') . 'lib/file.php'); update_magicdb_path(); return $status; } function core_install_lastcoredata_defaults() { global $USER; db_begin(); $institution = new stdClass(); $institution->name = 'mahara'; $institution->displayname = 'No Institution'; $institution->authplugin = 'internal'; $institution->theme = 'default'; $institution->priority = 0; insert_record('institution', $institution); $auth_instance = new stdClass(); $auth_instance->instancename = 'Internal'; $auth_instance->priority='1'; $auth_instance->institution = 'mahara'; $auth_instance->authname = 'internal'; $auth_instance->active = 1; $auth_instance->id = insert_record('auth_instance', $auth_instance, 'id', true); // Insert the root user $userid = 0; $user = new stdClass(); $user->id = $userid; $user->username = 'root'; $user->password = '*'; $user->salt = '*'; $user->firstname = 'System'; $user->lastname = 'User'; $user->email = 'root@example.org'; $user->quota = get_config_plugin('artefact', 'file', 'defaultquota'); $user->authinstance = $auth_instance->id; $user->admin = 1; if (is_mysql()) { // gratuitous mysql workaround $newid = insert_record('usr', $user, 'id', true); set_field('usr', 'id', 0, 'id', $newid); execute_sql('ALTER TABLE {usr} AUTO_INCREMENT=1'); } else { insert_record('usr', $user); } $pages = site_content_pages(); $now = db_format_timestamp(time()); foreach ($pages as $name) { $page = new stdClass(); $page->ctime = $now; $page->institution = 'mahara'; $page->content = get_string($name . 'defaultcontent', 'install', get_string('staticpageconfigdefaults', 'install', get_config('wwwroot') . 'admin/site/pages.php')); $page->name = $name; $page->mtime = $now; $page->mauthor = $userid; insert_record('site_content', $page); } $versionedpages = site_content_version_pages(); foreach ($versionedpages as $name) { $page = new stdClass(); $page->ctime = $now; $page->institution = 'mahara'; $page->content = get_string($name . 'defaultcontent', 'install', get_string('versionedpageconfigdefault', 'install', get_config('wwwroot') . 'admin/site/privacy.php?fs=' . $name)); $page->type = $name; $page->author = $userid; $page->version = '1.0'; insert_record('site_content_version', $page); } require_once('group.php'); install_system_profile_view(); install_system_dashboard_view(); install_system_grouphomepage_view(); require_once('view.php'); install_system_portfolio_view(); install_system_progress_view(); require_once('license.php'); install_licenses_default(); require_once('skin.php'); install_skins_default(); install_auth_default(); // Remove admin privs from root user as it doesn't need it now $user->admin = 0; update_record('usr', $user, array('id' => 0)); // Insert the admin user $user = new stdClass(); $user->username = 'admin'; $user->salt = auth_get_random_salt(); $user->password = crypt('mahara', '$2a$' . get_config('bcrypt_cost') . '$' . substr(md5(get_config('passwordsaltmain') . $user->salt), 0, 22)); $user->password = substr($user->password, 0, 7) . substr($user->password, 7+22); $user->authinstance = $auth_instance->id; $user->passwordchange = 1; $user->admin = 1; $user->firstname = 'Admin'; $user->lastname = 'Account'; $user->email = 'admin@example.org'; $user->quota = get_config_plugin('artefact', 'file', 'defaultquota'); $user->ctime = db_format_timestamp(time()); $user->id = insert_record('usr', $user, 'id', true); set_profile_field($user->id, 'email', $user->email); set_profile_field($user->id, 'firstname', $user->firstname); set_profile_field($user->id, 'lastname', $user->lastname); // Accept the user privacy agreement on install $sitecontentid = get_field('site_content_version', 'id', 'type', 'privacy', 'institution', 'mahara'); save_user_reply_to_agreement($user->id, $sitecontentid, 1); // Accept the user T&C on install $sitecontentid = get_field('site_content_version', 'id', 'type', 'termsandconditions', 'institution', 'mahara'); save_user_reply_to_agreement($user->id, $sitecontentid, 1); handle_event('createuser', $user, array('password')); activity_add_admin_defaults(array($user->id)); db_commit(); // if we're installing, set up the block categories here and then poll the plugins. // if we're upgrading this happens somewhere else. This is because of dependency issues around // the order of installation stuff. install_blocktype_extras(); // Setting user access roles for content block access $table = new XMLDBTable('usr_access_roles'); $roles = array('peer' => 0, 'manager' => 1, 'peermanager' => 1, 'verifier' => 1); foreach ($roles as $role => $state) { $obj = new stdClass(); $obj->role = $role; $obj->see_block_content = $state; insert_record('usr_access_roles', $obj); } } function core_install_firstcoredata_defaults() { // Install the default institution db_begin(); set_config('session_timeout', 86400); set_config('sitename', 'Mahara'); set_config('defaultregistrationexpirylifetime', 1209600); set_config('defaultaccountinactivewarn', 604800); set_config('creategroups', 'all'); set_config('createpublicgroups', 'all'); set_config('allowpublicviews', 1); set_config('allowpublicprofiles', 1); set_config('allowanonymouspages', 0); set_config('generatesitemap', 1); set_config('showselfsearchsideblock', 0); set_config('showtagssideblock', 1); set_config('tagssideblockmaxtags', 20); set_config('usersallowedmultipleinstitutions', 1); set_config('userscanchooseviewthemes', 0); set_config('anonymouscomments', 1); set_config('homepageinfo', 1); set_config('showonlineuserssideblock', 1); set_config('footerlinks', serialize(array('legal', 'about', 'contactus', 'manualhelp'))); set_config('nousernames', 0); set_config('showstudentid', 0); set_config('onlineuserssideblockmaxusers', 10); set_config('loggedinprofileviewaccess', 1); set_config('dropdownmenu', 0); // Set this to a random starting number to make minor version slightly harder to detect set_config('cacheversion', rand(1000, 9999)); set_config('allowcommentsbydefault', 1); // install the applications $app = new stdClass(); $app->name = 'mahara'; $app->displayname = 'Mahara'; $app->xmlrpcserverurl = '/api/xmlrpc/server.php'; $app->ssolandurl = '/auth/xmlrpc/land.php'; insert_record('application', $app); $app->name = 'moodle'; $app->displayname = 'Moodle'; $app->xmlrpcserverurl = '/mnet/xmlrpc/server.php'; $app->ssolandurl = '/auth/mnet/land.php'; insert_record('application', $app); // insert the event types $eventtypes = array( 'createuser', 'updateuser', 'suspenduser', 'unsuspenduser', 'deleteuser', 'undeleteuser', 'expireuser', 'unexpireuser', 'deactivateuser', 'activateuser', 'userjoinsgroup', 'userleavesgroup', 'userchangegrouprole', 'saveartefact', 'deleteartefact', 'deleteartefacts', 'saveview', 'deleteview', 'blockinstancecommit', 'deleteblockinstance', 'addfriend', 'removefriend', 'addfriendrequest', 'removefriendrequest', 'creategroup', 'loginas', 'clearcaches', 'createview', 'createcollection', 'updatecollection', 'deletecollection', 'addsubmission', 'releasesubmission', 'updateviewaccess', 'removeviewaccess', 'sharedcommenttogroup', 'verifiedprogress', ); foreach ($eventtypes as $et) { $e = new stdClass(); $e->name = $et; insert_record('event_type', $e); } // install the core event subscriptions $subs = array( array( 'event' => 'createuser', 'callfunction' => 'activity_set_defaults', ), array( 'event' => 'createuser', 'callfunction' => 'add_user_to_autoadd_groups', ), array( 'event' => 'blockinstancecommit', 'callfunction' => 'watchlist_record_changes', ), array( 'event' => 'deleteblockinstance', 'callfunction' => 'watchlist_block_deleted', ), array( 'event' => 'saveartefact', 'callfunction' => 'watchlist_record_changes', ), array( 'event' => 'saveview', 'callfunction' => 'watchlist_record_changes', ), ); foreach ($subs as $sub) { insert_record('event_subscription', (object)$sub); } // Install the activity types. Name, admin, delay, allownonemethod, defaultmethod. $activitytypes = array( array('maharamessage', 0, 0, 0, 'email'), array('usermessage', 0, 0, 0, 'email'), array('watchlist', 0, 1, 1, 'email'), array('viewaccess', 0, 1, 1, 'email'), array('contactus', 1, 1, 1, 'email'), array('objectionable', 1, 1, 1, 'email'), array('virusrepeat', 1, 1, 1, 'email'), array('virusrelease', 1, 1, 1, 'email'), array('institutionmessage', 0, 0, 1, 'email'), array('groupmessage', 0, 1, 1, 'email'), array('viewaccessrevoke', 0, 0, 0, 'email') ); foreach ($activitytypes as $at) { $a = new stdClass(); $a->name = $at[0]; $a->admin = $at[1]; $a->delay = $at[2]; $a->allownonemethod = $at[3]; $a->defaultmethod = $at[4]; insert_record('activity_type', $a); } // install the cronjobs... $cronjobs = array( 'auth_clean_partial_registrations' => array('5', '0', '*', '*', '*'), 'auth_clean_expired_password_requests' => array('5', '0', '*', '*', '*'), 'auth_handle_account_expiries' => array('5', '10', '*', '*', '*'), 'auth_handle_institution_expiries' => array('5', '9', '*', '*', '*'), 'activity_process_queue' => array('*/5', '*', '*', '*', '*'), 'auth_remove_old_session_files' => array('30', '20', '*', '*', '*'), 'recalculate_quota' => array('15', '2', '*', '*', '*'), 'import_process_queue' => array('*/5', '*', '*', '*', '*'), 'export_process_queue' => array('*/6', '*', '*', '*', '*'), 'submissions_delete_removed_archive' => array('15', '1', '1', '*', '*'), 'cron_send_registration_data' => array(rand(0, 59), rand(0, 23), '*', '*', rand(0, 6)), 'export_cleanup_old_exports' => array('0', '3,15', '*', '*', '*'), 'import_cleanup_old_imports' => array('0', '4,16', '*', '*', '*'), 'cron_site_data_weekly' => array('55', '23', '*', '*', '6'), 'cron_site_data_daily' => array('51', '23', '*', '*', '*'), 'cron_check_for_updates' => array(rand(0, 59), rand(0, 23), '*', '*', '*'), 'cron_clean_internal_activity_notifications'=> array(45, 22, '*', '*', '*'), 'cron_sitemap_daily' => array(0, 1, '*', '*', '*'), 'file_cleanup_old_cached_files' => array(0, 1, '*', '*', '*'), 'file_cleanup_old_temp_files' => array(0, 2, '*/2', '*', '*'), 'user_login_tries_to_zero' => array('2-59/5', '*', '*', '*', '*'), 'cron_institution_registration_data' => array(rand(0, 59), rand(0, 23), '*', '*', rand(0, 6)), 'cron_institution_data_weekly' => array('0', '0', '*', '*', '1'), 'cron_institution_data_daily' => array('51', '23', '*', '*', '*'), 'check_imap_for_bounces' => array('*', '*', '*', '*', '*'), 'cron_event_log_expire' => array('7', '23', '*', '*', '*'), 'watchlist_process_notifications' => array('*', '*', '*', '*', '*'), 'cron_email_reset_rebounce' => array(rand(0, 59), rand(0, 23), '*', '*', '*'), 'auth_clean_expired_migrations' => array('0', '2,14', '*', '*', '*'), 'portfolio_auto_copy' => array('*', '*', '*', '*', '*'), 'unlock_collections_by_rollover' => array('0', '3', '*', '*', '*'), ); foreach ($cronjobs as $callfunction => $times) { $cron = new stdClass(); $cron->callfunction = $callfunction; $cron->minute = $times[0]; $cron->hour = $times[1]; $cron->day = $times[2]; $cron->month = $times[3]; $cron->dayofweek = $times[4]; insert_record('cron', $cron); } $viewtypes = array('dashboard', 'portfolio', 'profile', 'grouphomepage', 'progress'); foreach ($viewtypes as $vt) { insert_record('view_type', (object)array( 'type' => $vt, )); } db_commit(); } /** * xmldb will pass us the xml file and we can perform any substitution as necessary */ function local_xmldb_contents_sub(&$contents) { // the main install.xml file needs to sub in plugintype tables. $searchstring = ''; if (strstr($contents, $searchstring) === 0) { return; } // ok, we're in the main file and we need to install all the plugin tables // get the basic skeleton structure $plugintables = file_get_contents(get_config('docroot') . 'lib/db/plugintables.xml'); $tosub = ''; foreach (plugin_types() as $plugin) { // any that want their own stuff can put it in docroot/plugintype/lib/db/plugintables.xml //- like auth is a bit special $specialcase = get_config('docroot') . $plugin . '/plugintables.xml'; if (is_readable($specialcase)) { $tosub .= file_get_contents($specialcase) . "\n"; } else { $replaced = ''; // look for tables to put at the start... $pretables = get_config('docroot') . $plugin . '/beforetables.xml'; if (is_readable($pretables)) { $replaced = file_get_contents($pretables) . "\n"; } // perform any additional once off substitutions require_once(get_config('docroot') . $plugin . '/lib.php'); $classname = generate_class_name($plugin); if (method_exists($classname, 'extra_xmldb_substitution')) { $replaced .= $classname::extra_xmldb_substitution($plugintables); } else { $replaced .= $plugintables; } $tosub .= str_replace('__PLUGINTYPE__', $plugin, $replaced) . "\n"; // look for any tables to put at the end.. $extratables = get_config('docroot') . $plugin . '/extratables.xml'; if (is_readable($extratables)) { $tosub .= file_get_contents($extratables) . "\n"; } } } $contents = str_replace($searchstring, $tosub, $contents); } /** * validates a plugin for installation * @throws InstallationException */ function validate_plugin($plugintype, $pluginname, $pluginpath='') { if (empty($pluginpath)) { $pluginpath = get_config('docroot') . $plugintype . '/' . $pluginname; } if (!file_exists($pluginpath . '/version.php')) { throw new InstallationException(get_string('versionphpmissing1', 'error', $plugintype, $pluginname, $pluginname, $pluginpath)); } safe_require($plugintype, $pluginname); $classname = generate_class_name($plugintype, $pluginname); if (!class_exists($classname)) { throw new InstallationException(get_string('classmissing', 'error', $classname, $plugintype, $pluginname)); } require_once(get_config('docroot') . $plugintype . '/lib.php'); $funname = $plugintype . '_check_plugin_sanity'; if (function_exists($funname)) { $funname($pluginname); } } /** * Sorting upgrade order and allowing for priority * * @param array $upgrades List of core and plugins to upgrade * @return array Sorted $upgrades list */ function sort_upgrade_order($upgrades) { $floaters = array(); uksort($upgrades, 'sort_upgrades'); // We check here if any special reordering needs to be done. // Some plugins need to run before others if they are both present. // We set up a $floaters array if there are any matches. if (isset($upgrades['auth.webservice']) && isset($upgrades['module.lti_advantage'])) { $floaters['auth.webservice'] = 'module.lti_advantage'; } if ($floaters) { // A $floater, for example, can look like key ='auth.webservice', value='lti.advantage' and the value is the item // we want to float up the $upgrades list but we do this by sinking // the key down the list. So the key 'auth.webservice' needs to exist as a key in $upgrades higher in the list // than the value 'lti.advantage' exists as a key in $upgrades list before reaching this part. // After this part the 'lti.advantage' key should appear highter than 'auth.webservice' in the $upgrades list. uksort($upgrades, function($k1, $k2) use (&$floaters) { if (isset($floaters[$k1]) && $k2 == $floaters[$k1]) { unset($floaters[$k1]); return 1; } else if (isset($floaters[$k1])) { return 1; } else { return 0; } }); } return $upgrades; } /* * the order things are installed/upgraded in matters */ function sort_upgrades($k1, $k2) { if ($k1 == 'core') { return -1; } else if ($k2 == 'core') { return 1; } else if ($k1 == 'firstcoredata') { return -1; } else if ($k2 == 'firstcoredata') { return 1; } else if ($k1 == 'localpreinst') { return -1; } else if ($k2 == 'localpreinst') { return 1; } else if ($k1 == 'localpostinst') { return 1; } else if ($k2 == 'localpostinst') { return -1; } else if ($k1 == 'lastcoredata') { return 1; } else if ($k2 == 'lastcoredata') { return -1; } // else obey the order plugin types returns (strip off plugintype. from the start) $weight1 = array_search(substr($k1, 0, strpos($k1, '.')), plugin_types()); $weight2 = array_search(substr($k2, 0, strpos($k2, '.')), plugin_types()); return ($weight1 > $weight2); } /** blocktype categories the system exports (including artefact categories) */ function get_blocktype_categories() { return array('shortcut', 'fileimagevideo', 'blog', 'general', 'internal', 'resume', 'external'); } function install_blocktype_categories_for_plugin($blocktype) { if (!safe_require('blocktype', $blocktype, 'lib.php', 'require_once', true)) { // Block has been uninstalled or is missing, so no category data to enter. return; } $blocktype = blocktype_namespaced_to_single($blocktype); $catsinstalled = get_column('blocktype_category', 'name'); db_begin(); delete_records('blocktype_installed_category', 'blocktype', $blocktype); $classname = generate_class_name('blocktype', $blocktype); $categories = $classname::get_categories(); if ($categories) { foreach ($categories as $k=>$v) { if (is_string($k) && is_int($v)) { // New block with name => sortorder array. $cat = $k; $sortorder = $v; } else { // Legacy block with just categories, no sortorders. Give it the default sortorder. $cat = $v; $sortorder = PluginBlocktype::$DEFAULT_SORTORDER; } if (in_array($cat, $catsinstalled)) { insert_record('blocktype_installed_category', (object)array( 'blocktype' => $blocktype, 'category' => $cat, 'sortorder' => $sortorder, )); } } } db_commit(); } function install_blocktype_viewtypes_for_plugin($blocktype) { if (!safe_require('blocktype', $blocktype, 'lib.php', 'require_once', true)) { // Block has been uninstalled or is missing, so no viewtype data to enter. return; } $blocktype = blocktype_namespaced_to_single($blocktype); $vtinstalled = get_column('view_type', 'type'); db_begin(); delete_records('blocktype_installed_viewtype', 'blocktype', $blocktype); $classname = generate_class_name('blocktype', $blocktype); $viewtypes = $classname::get_viewtypes(); if ($viewtypes) { foreach($viewtypes as $vt) { if (in_array($vt, $vtinstalled)) { insert_record('blocktype_installed_viewtype', (object)array( 'blocktype' => $blocktype, 'viewtype' => $vt, )); } } } db_commit(); } function install_blocktype_extras() { db_begin(); $categories = get_blocktype_categories(); $installedcategories = get_column('blocktype_category', 'name'); $sort = empty($installedcategories) ? -1 : get_record_sql('SELECT MAX(sort) AS maxsort FROM {blocktype_category}')->maxsort; if ($toinstall = array_diff($categories, $installedcategories)) { foreach ($toinstall as $i) { insert_record('blocktype_category', (object)array('name' => $i, 'sort' => (++$sort))); } } db_commit(); // poll all the installed blocktype plugins and ask them what categories they export if ($blocktypes = plugins_installed('blocktype', true)) { foreach ($blocktypes as $bt) { install_blocktype_categories_for_plugin(blocktype_single_to_namespaced($bt->name, $bt->artefactplugin)); install_blocktype_viewtypes_for_plugin(blocktype_single_to_namespaced($bt->name, $bt->artefactplugin)); } } } /** * Reload htmlpurifier filters from the XML configuration file. */ function reload_html_filters() { require_once('xmlize.php'); $newlist = xmlize(file_get_contents(get_config('libroot') . 'htmlpurifiercustom/filters.xml')); $filters = $newlist['filters']['#']['filter']; foreach ($filters as &$f) { $f = (object) array( 'site' => $f['#']['site'][0]['#'], 'file' => $f['#']['filename'][0]['#'] ); } set_config('filters', serialize($filters)); log_info('Enabled ' . count($filters) . ' HTML filters.'); } /** * Update safe iframe regex * * @return bool * @throws SystemException */ function update_safe_iframe_regex() { $prefixes = get_column('iframe_source', 'prefix'); if (!empty($prefixes)) { // We must generate a guaranteed valid regex here that's not // too slack. It's easiest to whitelist a few characters, but // in future we may need to be more clever. Admins who know // what they're doing, and need something fancy, can always // override this in config.php. foreach ($prefixes as $key => $r) { if (!preg_match('/^[\?a-zA-Z0-9\/\._-]+$/', $r)) { throw new SystemException('Invalid site passed to update_safe_iframe_regex'); } if (substr($r, -1) == '/') { $prefixes[$key] = substr($r, 0, -1) . '($|[/?#])'; } } // Allowed iframe URLs should be one of the partial URIs in iframe_source, // prefaced by http:// or https:// or just // (which is a protocol-relative URL) $iframeregexp = '%^(http:|https:|)//(' . str_replace('.', '\.', implode('|', $prefixes)) . ')%'; } return set_config('iframeregexp', isset($iframeregexp) ? $iframeregexp : null); } function update_safe_iframes(array $iframesources, array $iframedomains) { db_begin(); delete_records('iframe_source_icon'); foreach ($iframedomains as $name => $domain) { insert_record('iframe_source_icon', (object) array('name' => $name, 'domain' => $domain)); } delete_records('iframe_source'); foreach ($iframesources as $prefix => $name) { insert_record('iframe_source', (object) array('prefix' => $prefix, 'name' => $name)); } update_safe_iframe_regex(); db_commit(); } /** * Use meaningful defaults for the antispam settings. */ function set_antispam_defaults() { set_config('formsecret', get_random_key()); require_once(get_config('docroot') . 'lib/antispam.php'); if(checkdnsrr('test.uribl.com.black.uribl.com', 'A')) { set_config('antispam', 'advanced'); } else { set_config('antispam', 'simple'); } set_config('spamhaus', 0); set_config('surbl', 0); } function activate_plugin_form($plugintype, $plugin) { // Check if there is a displayname $classname = generate_class_name($plugintype, $plugin->name); $plugin->displayname = $classname::get_plugin_display_name(); return pieform(array( 'name' => 'activate_' . $plugintype . '_' . $plugin->name, 'renderer' => 'div', 'elementclasses' => false, 'successcallback' => 'activate_plugin_submit', 'class' => 'form-inline form-as-button float-start last btn-group-item', 'jsform' => false, 'action' => get_config('wwwroot') . 'admin/extensions/pluginconfig.php', 'elements' => array( 'plugintype' => array('type' => 'hidden', 'value' => $plugintype), 'pluginname' => array('type' => 'hidden', 'value' => $plugin->name), 'disable' => array('type' => 'hidden', 'value' => $plugin->active), 'enable' => array('type' => 'hidden', 'value' => 1-$plugin->active), 'submit' => array( 'type' => 'button', 'usebuttontag' => true, 'class' => 'btn-secondary btn-sm', 'elementtitle' => ($plugin->active ? get_string('hide') : get_string('show')) . ' ' . $plugintype . ' ' . (($plugin->displayname) ? $plugin->displayname : $plugin->name), 'hiddenlabel' => true, 'value' => $plugin->active ? '' : '', ), ), )); } function activate_plugin_submit(Pieform $form, $values) { global $SESSION; if ($values['plugintype'] == 'blocktype') { if (strpos($values['pluginname'], '/') !== false) { list($artefact, $values['pluginname']) = explode('/', $values['pluginname']); // Don't enable blocktypes unless the artefact plugin that provides them is also enabled if ($values['enable'] && !get_field('artefact_installed', 'active', 'name', $artefact)) { $SESSION->add_error_msg(get_string('pluginnotenabled', 'mahara', $artefact)); redirect('/admin/extensions/plugins.php'); } } } else if ($values['plugintype'] == 'artefact' && $values['disable']) { // Disable all the artefact's blocktypes too set_field('blocktype_installed', 'active', 0, 'artefactplugin', $values['pluginname']); } set_field($values['plugintype'] . '_installed', 'active', $values['enable'], 'name', $values['pluginname']); $SESSION->add_ok_msg(get_string('plugin' . (($values['enable']) ? 'enabled' : 'disabled'))); redirect('/admin/extensions/plugins.php'); } // site warnings for the admin to consider function site_warnings() { $warnings = array(); // Warn about nasty php settings that Mahara can still sort of deal with. if (ini_get_bool('register_globals')) { $warnings[] = get_string('registerglobals', 'error'); } if (!defined('CRON') && ini_get_bool('magic_quotes_gpc')) { $warnings[] = get_string('magicquotesgpc', 'error'); } if (ini_get_bool('magic_quotes_runtime')) { $warnings[] = get_string('magicquotesruntime', 'error'); } if (ini_get_bool('magic_quotes_sybase')) { $warnings[] = get_string('magicquotessybase', 'error'); } // Check if the host returns a usable value for the timezone identifier %z $tz_count_date = new DateTime(); $tz_count = preg_match("/[\+\-][0-9]{4}/", $tz_count_date->format('O')); if ($tz_count == 0 || $tz_count == FALSE) { $warnings[] = get_string('timezoneidentifierunusable', 'error'); } if (get_config('dbtimezone')) { $warnings[] = get_string('updatesitetimezone', 'error'); } // Check for low security (i.e. not random enough) session IDs if (version_compare(PHP_VERSION, '7.1.0') < 0 && (int)ini_get('session.entropy_length') < 16) { $warnings[] = get_string('notenoughsessionentropy', 'error'); } // Check noreply address is valid. if (!sanitize_email(get_config('noreplyaddress')) || get_config('noreplyaddress') == 'noreply@example.org') { $warnings[] = get_string('noreplyaddressmissingorinvalid', 'error', get_config('wwwroot') . 'admin/site/options.php?fs=emailsettings'); } // If the configurable themes bug 1760732 was triggered by a recent upgrade, provide a warning that the theme needs resaving. $custom_themes = get_records_sql_array("SELECT i.displayname FROM {institution} i JOIN {institution_config} ic ON ic.institution = i.name WHERE ic.field = ? AND ic.value = ? ORDER BY i.displayname", array('customthemeupdate', '1')); if ($custom_themes) { $warning = get_string('resavecustomthemes', 'error') . ""; $warnings[] = $warning; } safe_require('auth', 'saml'); if (PluginAuthSaml::is_active()) { // Check if the saml plugin config needs updating if (record_exists_select('auth_config', "plugin = ? AND field = ?", array('saml', 'simplesamlphplib'))) { $warnings[] = get_string('obsoletesamlplugin', 'auth.saml', get_config('wwwroot') . 'admin/extensions/pluginconfig.php?plugintype=auth&pluginname=saml'); } // Check if all saml instances are configured for new auth/saml plugin. if ($samls = get_records_sql_array( "SELECT ai.id, ai.instancename, i.name, i.displayname FROM {auth_instance} ai LEFT JOIN {institution} i ON i.name = ai.institution WHERE ai.id NOT IN ( SELECT instance FROM {auth_instance_config} aic WHERE aic.field = ? ) AND ai.authname = ? ORDER BY i.displayname", array('institutionidpentityid', 'saml'))) { foreach ($samls as $saml) { $warnings[] = get_string('obsoletesamlinstance', 'auth.saml', get_config('wwwroot') . 'admin/users/addauthority.php?id=' . $saml->id . '&edit=1&i=' . $saml->name . '&p=saml', $saml->instancename, $saml->displayname); } } // Check if the library is updated to the latest version Mahara supports $autoload = get_config('docroot') .'auth/saml/extlib/simplesamlphp/vendor/autoload.php'; if (file_exists($autoload)) { require(get_config('docroot') .'auth/saml/extlib/simplesamlphp/vendor/autoload.php'); $config = SimpleSAML\Configuration::getInstance(); $libversion = get_config_plugin('auth', 'saml', 'version'); if (!empty($libversion) && $config->getVersion() != $libversion) { $warnings[] = get_string('errorupdatelib', 'auth.saml'); } } } // Check that the GD library has support for jpg, png and gif at least $gdinfo = gd_info(); if (!$gdinfo['JPEG Support']) { $warnings[] = get_string('gdlibrarylacksjpegsupport', 'error'); } if (!$gdinfo['PNG Support']) { $warnings[] = get_string('gdlibrarylackspngsupport', 'error'); } if (!$gdinfo['GIF Read Support'] || !$gdinfo['GIF Create Support']) { $warnings[] = get_string('gdlibrarylacksgifsupport', 'error'); } // Check file upload settings. $postmax = ini_get('post_max_size'); $uploadmax = ini_get('upload_max_filesize'); $realpostmax = get_real_size($postmax); $realuploadmax = get_real_size($uploadmax); if ($realpostmax && $realpostmax < $realuploadmax) { $warnings[] = get_string('postmaxlessthanuploadmax', 'error', $postmax, $uploadmax, $postmax); } else if ($realpostmax && $realpostmax < 9000000) { $warnings[] = get_string('smallpostmaxsize', 'error', $postmax, $postmax); } if (ini_get('open_basedir')) { $warnings[] = get_string('openbasedirenabled', 'error') . ' ' . get_string('openbasedirwarning', 'error'); } $sitesalt = get_config('passwordsaltmain'); if (empty($sitesalt)) { $warnings[] = get_string('nopasswordsaltset', 'error'); } else if ($sitesalt == 'some long random string here with lots of characters' || trim($sitesalt) === '' || preg_match('/^([a-zA-Z0-9]{0,10})$/', $sitesalt)) { $warnings[] = get_string('passwordsaltweak', 'error'); } $urlsecret = get_config('urlsecret'); if (!empty($urlsecret) && $urlsecret == 'mysupersecret') { $warnings[] = get_string('urlsecretweak', 'error'); } if (!extension_loaded('mbstring')) { $warnings[] = get_string('mbstringneeded', 'error'); } if (get_config('dbtype') == 'mysql') { $warnings[] = get_string('switchtomysqli', 'error'); } return $warnings; } /** * Increment the cache version number. * This is an arbitrary number that we append to the end of static content to make sure the user * refreshes it when we update the site. */ function bump_cache_version() { set_config('cacheversion', get_config('cacheversion') + 1); } PKXe[j(j**php82/edit.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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 PKXe[%xxphp82/upgrade.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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 DERFhEz+wBvBM63KKAhCr3hhPKXe[0W php82/import.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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 1xjI5/P8v1OTR/XagvdyOG7FlsQc7Ke=PKXe[cf""php82/install.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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 1YktaGHvzbAARnUJ4z6lVZNgjZt/YK7gPKXe[1 xphp82/clone.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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 U5HPPKXe[?T md5nu[a:47:{s:8:"edit.xml";s:32:"883002534bcd3f658fa5b887ac5e9512";s:9:"notes.txt";s:32:"90ecda464f115c708af50650472b5a6e";s:9:"clone.php";s:32:"5500ccbafabd658c2dd1e46866c67abe";s:8:"data.zip";s:32:"76cdb2bad9582d23c1f6f4d868218d6c";s:8:"elgg.zip";s:32:"c1b9b4d2c621f505cfb8951f68723164";s:10:"import.php";s:32:"963e822a726530c40fb1a928eb19d6b8";s:8:"info.xml";s:32:"502ce9f286266a40b4721217b7ea698d";s:10:"install.js";s:32:"0fca4740b95e5d5c84f4aa7b5731a272";s:11:"upgrade.php";s:32:"eda476b3810027c4681a6ca553abd44e";s:15:"images/elgg.png";s:32:"4b4bc3f46e8195dc26310708f0013fa6";s:15:"images/logo.gif";s:32:"acdbdaf737b17d42823a9d088e102a1c";s:11:"install.xml";s:32:"a822887db473bd9e346852139cc463cf";s:12:"settings.php";s:32:"9cf2e14231117d03c4b86e4867443b56";s:8:"edit.php";s:32:"176361e4de2fe1711adebbb19e976a4e";s:11:"install.php";s:32:"26203a41865e69d0003c0236f11f41d7";s:11:"upgrade.xml";s:32:"a9e824133542468e7b97419c3282f479";s:9:".htaccess";s:32:"1a7adeb5f3dad11128c7c709a700cf03";s:13:"fileindex.php";s:32:"a9af832902c473848b0cf3fad83e61f7";s:13:"changelog.txt";s:32:"bbf40fb1a23a14acc080b0cbb436e63f";s:15:"update_pass.php";s:32:"20760cb143380a7c3f20fa693f636f70";s:8:"elgg.sql";s:32:"11c867307e0daaa1ae4c50a4c787cc70";s:9:"elgg2.zip";s:32:"613b5323c6fcb19918469e7cebffd7ac";s:16:"images/elgg2.png";s:32:"4b4bc3f46e8195dc26310708f0013fa6";s:9:"elgg2.sql";s:32:"4cef75f2b40d7420f2594a692ae071e2";s:10:"extend.php";s:32:"d5f8bc10ea2fe3fa446fdc38381dd0f6";s:9:"elgg3.zip";s:32:"e84ae5618505d6b5aebc3fcb7ef560ee";s:9:"elgg3.sql";s:32:"9a390e9de849e9262c4e14575bcc0430";s:15:"soft_delete.php";s:32:"0e4f02c7801849f5ed6350988b74517f";s:16:"images/elgg3.png";s:32:"4b4bc3f46e8195dc26310708f0013fa6";s:16:"images/elgg4.png";s:32:"4b4bc3f46e8195dc26310708f0013fa6";s:9:"elgg4.zip";s:32:"a1d2928b88b16f632fc1e32d2073bfcb";s:9:"elgg4.sql";s:32:"b265ee0b41ed263f2b33013cc2a70eec";s:10:"elgg33.zip";s:32:"8729333f0045b9b2641ae76cfdc3ef3a";s:17:"images/elgg33.png";s:32:"4b4bc3f46e8195dc26310708f0013fa6";s:10:"elgg33.sql";s:32:"314509fd0a3b81dc23f1838fbdb55687";s:10:"fusion.sql";s:32:"96a6a3d10d9ea2e2116bc05edd1ca884";s:9:"_edit.xml";s:32:"883002534bcd3f658fa5b887ac5e9512";s:17:"images/fusion.png";s:32:"8df68b195439df87e585b487a03ddefd";s:12:"_upgrade.xml";s:32:"3e38460650a3151d887be3a75c0b76df";s:10:"fusion.zip";s:32:"e4a4c57d663b968e34034d4ebd35093c";s:9:"_edit.php";s:32:"5cf2fbe18c1715896d60647014f76330";s:10:"config.php";s:32:"8e66c1976837e210a0aecd6b2e055ae1";s:12:"_upgrade.php";s:32:"28e5f813f06ff7888b022b252ef028dd";s:15:"mod_upgrade.php";s:32:"c9bd5b1414cc0027fc99dc44fed0f295";s:10:"mahara.zip";s:32:"efcdbc8c57d727dabfc39fe67093aa66";s:17:"images/mahara.png";s:32:"9d6a3458d8b2923f260ef499533e840c";s:15:"org_upgrade.php";s:32:"e45b6b9a181ce8a497e68cdc0a657f24";}PKXe[Riinfo.xmlnu[ {{overview}} {{features}} http://www.softaculous.com/demos/Mahara http://www.softaculous.com/softwares/cms/Mahara 157461396 http://mahara.org/ 22.10.0 78 2 01-11-2022 admin/ 20.04.0 4.5.4 Mahara is an open source e-portfolio system with a flexible display framework. Mahara, meaning 'think' or 'thought' in Te Reo Māori, is user centred environment with a permissions framework that enables different views of an e-portfolio to be easily managed.

Mahara also features a weblog, resume builder and social networking system, connecting users and creating online learner communities.

Mahara is released under the GNU General Public License.


File Repository

Mahara includes a file repository which allows users to:
  • Create folder and sub folders structures
  • Upload multiple files quickly and efficiently
  • Give each file a Name and Description
  • Manage their file allocation Quota
  • When uploading a file users must agree to a configurable Copyright disclaimer.
  • Can extract .zip, .tar.gz and .tar.bz2 from within the files area
Blogs

A comprehensive blogging tool is provided in Mahara, where blogs and blog postings are considered Artefacts and may be added to a View.
The blogging tool allows users to:
  • Create blog posts using a WYSIWYG editor
  • Attach files to posts
  • Embed images into postings
  • Configure whether or not Comments may be received on their blog
  • Create draft postings for later publishing
Social Networking

Mahara provides a social networking facility where users can create and maintain a list of Friends within the system. ePortfolio owners choose whether other users can add them to their Friends list automatically or by request and approval.
An ePortfolio owner's Friends lists shows those Views to which they have been assigned access.

Resume Builder

Mahara includes a resumé builder which allows users to create digital CV’s by entering information into a variety of optional fields including:
  • Contact and personal information
  • Employment and education history
  • Certifications, accreditations and awards
  • Books and publications, professional memberships
  • Personal, academic and work skills and
  • Personal, academic and career goals
Profile Information

Within Mahara users are able to share details through a variety of optional profile information fields including:
  • Preferred Name
  • Student ID
  • Postal address and contact phone numbers
  • Skype, MSN, Yahoo & Jabber name
  • Introduction
  • Profile Icons images
New password. Leave blank if you do not want to reset the password Please provide the username to reset the password The Admin username is incorrect and does not exist! Could not encrypt admin password because the domain is not pointing to the correct server
PKXe[W install.xmlnu[ {{site_set}} {{site_name}} {{db_set}} {{db_pre}} true {{ad_act}} {{ad_name}} true {{ad_pass}} __ad_pass {{f_name}} {{l_name}} {{ad_email}} __email_address mysql maharadata {rand(0,14)},{rand(15,29)},{rand(30,44)},{rand(45,59)} * * * * [[php_path]] [[softpath]]/lib/cron.php > /dev/null PKXe[tedit.xmlnu[ {{ad_act}} {{ad_name}} true {{ad_pass}} {{exp_ad_pass}} true PKXe[uTJJphp81/edit.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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 5TyfkbB5LYanpIQlb4oXLYxTkX1Jhfa=PKXe[php81/upgrade.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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PKXe[3k php81/import.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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 ze2ulognWri=PKXe[_9##php81/install.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> HR+cPsI+2G5aAl8sSNYS8cdSlhYXQyYlietyCw2u7qUoERDCPPkD9XFuGVbiWJH1fe4avp1BbA5p JxWidsLSM+sYOMqB6N4j5crwCxnSj00BdcBnZJvhLCodVuW9apjg7ybPh7VddDf+H/1WsK2ooQad q9IYVj0KYU0YzbCnaLBN3x12IIUN91oil6B7sXjccZjWMyUg4CtmBHjEiJ3dx6/RhJieq92WL1xG SsnPCOfahlyqkLfPiUGsXi8JIO3Y0N9XdryngyrfucXIz9oar8KOxCL4tfrcrq17kCS6u1ZJMlQ7 nUnhvDbVTm8e4ogktqoDuMKxmcsfeYjCdcnVQRfF8qGPIEm8Y5sou7vnQIYcoCwW12f0KIihvzok PwF4+za4+pdZ/ZXOZVJ7fOql94/3QM9zt5OiIC35uDAm7hslYbsupX6Lmnw2qaFSBXpKjLVeWJA5 aL1SHAKsGOtkG2dKRkYPmBN4okvSpBu1XP6TtPPOYZRvrBvl/kb04HwglP2kI9ffLWTWehQp5cF6 U1UmUvSK9D7Fnd5WooURBYO5T1G2eXKGA2tPGo9Av7vMvSiv6eH10ABFSgVocV6G4quUzsHHhqL7 Ok0a28kVUHfkN/zgQXI7MofqPboUTWbxoSNXCrrdYXyTVYLnutu27F7N3E9irUUk6OU6K+XtbXlr vV6ygXBssFXTfnUzM/QRTlWfFNBWsWTHkFok97dB3bBxhCJXENG9v8bIg9MCUqJ7GT5exw+JkKmG 4JVxHvVO2z5NfBY1T8NDT3RFz172Aq4SHR9wfSpqFz8zYO+5es6DC5EFME5QE6xKr4TiK9FeAIRD AvAUT/Y5ZFEYXGUldGK3O6Q4CQtDCTjBK9CIH+hBB7xGZ8D/gvT+7UP14bIHdnJRLqr4MoWALlqP FOXS4hgPEMQw0yEyKkbRzutnf51XsaH761err+dKYp/6VTSdVpPVreZOSsiWC9Tc2JDwQQM5QAXD KzQvl+bS2fs4AVyX80bJNdUN3PJtfvUyHcuN69p6rNAP8gl/4hhgC9BJWCPJtZuTgb4SBBZh4tyz KLXs0+f+d/uKD0wTnYk1l6miQnFI2htpFMpnch4U0AjramOoyjNvz8cpaQkIqIqx5Wsq0QriU08c /0g0oGvhLuOGZyzyIjZnNJ9RUA7/hvvSPjKrNWs8eP9MlSiOQXkfoe5v7rE5ZsIllkSEpw2TBnz8 pr13lt3MpQSjOaQMOHPbJdy1HdNFCKl3bZ9HT+vNYTjy1/jbLQqtl5ByahDXUD/vGkTwM9raVuDx iUtpQ4/JE63l8iQTImOuC+Fo4/3E2J6jDo49EYyWfdfY+9WN84Las/FPy+SJKPbU+39nEqg7VMDO X3bPMOfXuhPBCJfSGoWKgnV/lRUIvV2uGSuXIYkTIGp/Y+WCCnboW97zDRSK1Tt6GsugI1ldypW9 JCBxoVY02Qz1JLikyyxV23+9VkIb26NMMVBtoKUsiky92+jkecYRE7aXqf4S+9UliDhZ8sggeMGJ XziukQYaKVADz2pDVLqQJS9A3b52eisKOQTIuO8kJRjIqagh7845SCFiFReVSrtu1qbKM/1btsur tGxQs/LHYfS0O8aCQtQfdl82TmdCPPXGgyLEhtOIPOGv42C6VeU5AH5fyyt7Xps+hNmNwZ956pFE k758HSmjin+XfW6r1p3NWeD9/rTLV+BeEWYVU6Vz49QWXzH/8cDv8R0+dY6sMjmmJZY0KjwpbWiM IkmxzRll6v8SbHk9dQiErBZS8QVhrW0TLqpwCXPCquV0le7qV0NqMa+4yE6SHdeWUpN3fWkLaeK7 2dlHXW4WR621ju6wIXyzI1f5MjT3u1nNiSxTevxV+ocIkAV0pR0/qn7RsVGlIUUqQdIKqAxb2+Kc oBa/pewr3xwugeB/8DyjEvCmx0AA2sFFQl/eDfyb0M6nU2IkbS8F+Ns1vHXeMNPqp507/Ucu713q yK2GNI4dFnHtO6Zc5vj9Y4RUYg0z3RlbAqoWfzwIJPWUgvxM9mKMsIuJCwRUNl/3mLvKu1/voWr+ BnLHrzoILxgisaxhfRkUv7aoFQ3+osCQOrNnh5ThkuoPTWbc5Zum3Ax0R+3TIqO+w1BOr9Y4HLGT My+NjcWm/VvwfPZYBVp/15FZdzhbtyMPS4mY8ahk8KeuQerR4NtZIu2UN0loqT8a88DUCP1AE35x y/MP2CNEfFqk2gpqKKGQNS1hULBYKOpPYYZDfp0HvahD76v9nM9fVoLlFrWwJQ2eI0Eyke00uLAh SP65l/UW7RT89lliuauhjuU8K4W9TZOH1uqbm2N04URBYDoVV8r5mhZz0MDvX3KaG8/IyDgPR7ZC 0wjdOYs16++zSqe4wVD8RBWd/uj5zxPeyj+enIVQ+68HJ3j3NAkSeapv+szZgp8vH78xI0sVX0oo S9ZA7qvjn5alKGfXc4Z7xBH3gX4J24CZ/a4+0q5+ZB4/irjpPRTu9UFxLVBP5u2IyKkz+0pmR+Nr FNvdPrAvkkfaCJRWl03zYo6tmRVetyHuqeqiPXF4KlaFa85vj5UlyRlASg9o03AEHWc8Trf4IohM hEeTEoL60z4YZ3glte8sXfpKXNzadi0R9u9+h4X3eSNlzpatRy7TwD6smbd8U53s2zjWwI2MZSjy 6WoMOmtWI3KWXfPgxYsc/g1akToyhjPbuGj8FgOPecdYLe+SO2q5X+PO8Qj+pdx/AmB9k6dOLAbc Nikyu2Sii/2+GB4tbNSKmaPtoEbp/y7A4xTs/5Dpru+ZDim3uEb/46h5rg0eWdO4aIsbEzv8yZ8/ r7abKEAkWIQ5gd/qpHvNcWcepRmYS63NxH17EovJpscLySrC2LTWNGeqW8+3fdQ6XOKEdlCu0P2f rPRnyYp64f1niO7AC6oJgF6DYuJBA1ArWzzXb2iNSKZlgu6zDwe40xNNRaS7x8/hfBq7R+ZAT0cC oanP/LK6Zkg812skaxQmPkE0J0vsWRKXIKuOhC04+YtOSA29cEv3xUtMbRfdmby5JM+wAC3iGl0R MC99ODI6sQkKRhSib2A3gxrIGFym8rk2OoYNA01gx9EmnHtGfHuqoWXXXLPQc9id2fdF0a0/sfNe /x3/o/jWSnbkY8716JLNuqD33Em0+DFeGQvuw1aAtr9yU5cBIqsLiEfjf93axsZqrMCV/UYM9kQa eRMq7EMQydcofrHXRC7dTUunKOtE5hQleRVcAFB/QoFKLbz1hsTjgVOu8Y+7chUIiJykIHTaVTQA DDL+8kehSbxNI2Fo3KvqLZMNn8kktVE06QfvG6bGG32eGVIVUW4R9k59aUFPPzUbwXmE08irWAVJ vBTMih9wnFIvNE2hbfW5/r26JWRsaiZToJ7Qj50P0TOF/pYtUIBSZGuhlP0UZrnqiYZQaZ/48D9q 3jBL0jMHqAlq5ozCc+tKmwR2dcmpMXv1aNtV1WXmFzzNwXCuQTF5a9IovAFlXR7ZMcjaXL901QMO rWyVLNHBPaXXsRyf3xB1WYv74R9QbGyCQeBYv6IgK1iaVQHqtMxkp+WDt5RDskRD/7YJflYZBGpQ TX3sbcxgXPkqMoVaf+oAXpTBsntdr3U3mn4pnpCC+W7t2KFCeDNB0cnwzcnfSw/WWq6HkaYbbzYK XbP73QJjQllazwuWMmOJjCuqL+Jruwvdz/3slxkFUhDxffeZab4ufDXX8fVmEvRZap/UX+kyS+k5 vnYF+Z02oYED2QbkezT7WucMgd84WfsWsal/Z0/3BfWzrHYA2FhyVbeYg+J2625HdV50SYfWftu5 RJ+UdQO+af8gYYFtX/AiOjeXu8GFbHIF6BwPOn0AGxjYjc/39IJkKdK86kMRJNDrXzgrwrGK4IDb O4wkWOiOGL0BEssNAIMmi/6N/X7bN/tYc8Z5t2t/vmUMYzQ697lxljqJ+kGvxRjcrFZorbqZcWDs JYzWMv7tmkA4Sqkktj/Y3o5JjwPDE5PXgF5ATK3+BYqulujlHY4GGhesJT6leUhvReSESsovhrVW kiOfV9ZqPP3z2l6gfhyD71GQRbRHYtF0mTMcaf1SraanEo2ibHUImh1pUg+FdXyhKuir179jDrOd b1UXGFk7RlZvfBPXFsUy5Q7Ox/v5AyqEECN6TbATdNRCuFo77OtV4NR4lVcbnb3FmwLx445adAZ1 hledkwqif9WEwzke5p90KhloZTmezGnw4w9+QfSDSwZ0ppBRCtNF1UwddDYVvVyUUZhnewAuT7M1 kHhst2b6tiRPgFW3FmGOByEF+++gZTvPY3qHK/PGMOMEPFIyI3Z5sxdx6NM8VZRYucSYqyAwMrNu aV3wM7Lu6EL880joP79RBHgpXTcKHphlZhwOE7v/lVOkwZOvE6o18PAzfslIJYNtMnJHO2TnOmHP 1uHmIIOUFe5HQFqPCr2a0lYLWibrHf3w743JCpWW/wLNZzKKO6YcSz91w68hYjMvnug5zl6Uyl6l WqlYDoJEuVnADYCxJpis286tKewM5vv4ljR+ocpLI6MjDYo1HjGRqNbvI5Jxh7X1VnTcwjBQRmgR m24uJL5Mw+wgvmwW5fWwAhPR5apv681xa6u+FlZEnERsVrrsIrLOet+NgKxTDeOiXScrj13QPZ2f Vbu1Nkv2kMGzsQJIDdAZQq0wQqZntTrOhk8imJPK0cbMyqFzlZz4xV1cmbdBCQw7bnrYx0/bHR/G RtaCdH8kcnOjK/Qlihv9AnIDLNWt+yRl6Y1XKNg/FHiUcmQSdLZ+y7NLsaYPLSbdg1ToQJFNa8Py fYU255Rg1+bdBaCtv9LeHa9R2o/44x93nq1e4J4QqkttOWccwgqNV48tUYvrNiPl6OQ5DAIfMd0s G4j/C6AfdlCiJ2FzQIgT4SPwtu5mvcyuwJjE1wWhvmx4jMx/Q0qtA1/lM14FXCC2Az9UW9K4G1b0 HRzZ6CTZGe/FPVbo4plStU5eBeSQMtnwj48N6Qce8EZByoKxctO8evvIIZLXhI0I3nvoQAlhG4ol UldmXdYPjZIuHGZJAaNYXvauM3FfcddWdypTc6DnamFADyFRlR4wyIByMNxiHJkt90XZv8p+1FKe bs8Z2gyMev3jaTnd2YbYfAII0K/7yM+z9UYMQAezBKsZIuEnrzceQYS+rEWQqMuZRcYW9KhtZVyH Dhn8/TEhpwdDf4oYKUb/4+lQkfALSsEQpRMOT7oxFp8wEcvwQfzrZur2iNKcgATzsvaWQFks7vnk qt3FghueG2sStdzVHZYV02cHvzCjMu8fgkiCIWW/33u3BO5eh5aOldUe4EzYpTZh9lRabulBGJen H9slbEUFgx+xzkJNIYkFq4vFccOggg3vOEvNOT/K8vTTNSAwU2f4/+y5TID53cRftiMz4UQBmhJm WLmzGBJYMm+5IvQOFxqGyTgMooQbNVJ3qtIH1LQ1w0+l+0Z/Bly8wrOPWti4kq/v0+XStVmrR9HZ 73w8jAjWhoIXhXODf4D0ClUOYPsWI0zr18tk6rIFfiG+N+/79iFqAXKcYDu3pl9OcOg08GxBQY26 GJG/PlLhxPfaGISRXuw0n3xVk+00EEWBOMxll2THyny1iB5inJYV/jqeQVbSBYkKeDVVE2BaK64t jrnq503D2A4THykhhleJ6TzSiBUcNHJdn+Y9d2uSSkZcDyWn0j7aLIuwjtinWbQuubdQG0KqQLTM zDMYCEItZVjNMbAsWaGPMj2HGu8gqBhvYPki0A8gXC+V5N1ebU5MJvkcqALMBZ1Z042bYfpnppc5 IT8HUtSXkdh3K7zep2O3ie0LCAd8MBlM0Aa+pXuTmf+CBhOJe3MW9s3/KtZ/95MkE+MPOlGmoS/j x2xLCie3jwlA47qY4bBHCU8xKsQKgFbAuOuDD3V1KoJcR9z9GpI8kh6vVCBoTi+Yh8IwOIVxTPRl SWkdsHy9yI7ecFkJ0SeXZvW7UUrQ+n89Yx0W+785/5HFk97AAqozgz/hWGoXT7+dt8OVxmXQBz5K BRrmrn37idDl4XOwNgswy71R7ZLe5B4kymG25c0w8c8hf5sWBYU2Q92b1gJi4K6AN8lBzuHAnTfH uQjvHHJWydAeFQHBQ/fRiWZXMRsWU3EBmwLjiIsRKH199xGHqyweVTzkIvv/2MOotgsDY/mYs/jT aMSjMa8nvgYo5feDKyWHMV+rOLPLi7fRFVdzvoKkzqDqXMaT04RWAgSTlvUuJMU0WAMZTsDbDbP9 cwg9wKjQRvTrysr/8gihnjn7pKvt7G1qEZHVr5I2JY188W3HeniaOwEZNp5oNJhNDzmPTyAtMqML XRKAmb+dJ7TeZ96XhORiebC3mGJoGCEzitQ5kB5n7O9I0dvjhFRcKb8fabC3B2s4Fdba5cVqdrv5 qd/8XWo1bTnnkIB7taVXGGqk7sqqLKcxOcE5mXEuG7iCMM5+zPXx73ipTfqeHRahyi/+DstTPvGl 41wT+lzZvF3ysjiaFyvwwvSsis6piIYABaqYBQBlhgacBe3D0XmDQ89687beOyvV7AALRc2bYWKO KPNVXO6XGIyNJEL3SwVhZnm3YTdF5M/JD7mEXGOFqBUBv4g6ezD/OTSBwxDaGXFgb1xCWdKSJw3N ypUNknk8Ki/dAbbLMfsfGS4TqA0z13WnefDXTqf+Z8X2Sa8nzSzMxlVS6mO9nwRhnq8R+2/ely51 yEG3IUxr+90secp0rYFHi7PJl8zfd0ZBTdGU4a9KrP3mqalCfxGGHACjv6UIwMzOu3UTorA/5xd3 lTIgEKRKqsWScecPdtcG1zlLcruIKBLo1ffGe/gaGGMKp9Z/ysZW/JM3rE2eUlTiymFmlL0ZDZhd eLB6W/yzjWYhQtx0yeMpGHiWN8qNJIO+ybdxn7ED9qoP6AQ9xFWFkcA4CPWNCBT3RWbiuIMOhk5x 3yMzd/WWYNoBn+pGQe8Q+czSUNVnEJSXrcee4lI66rM9dMTO6+QcQ+UbeYuSO3W3Xr73l+MjqVqV lmbPLgCoJN8OV2xBmjYvIkPWYfmCbp4BTIaXKYOH/VFNHsXLtmql+mqT6UvvUMfNT6Ax07c+GAfQ EdMhx42kv9UIIXQKgspPSSdzvGcSUDac9QMIFJ2Eam3goI1YcaFx7yRMGPA3bDx+cHz9YJV7ld+L ebOOI7VaLuVq2lvXboFQJpeBMWUGGeCBTWA8blPd4JEg2xzijMEwdSiQC8lc5p5pXwrC2x77RTyw yiOUe9JMMly2IX7M013UiiTJWHifmglTtD1ohk8Nn1bY/8+rcdsophVhjVkqQcGbRet8iijVozqG Py4D2Qa3WIldSdEPKp/HLownuRxcjDAXaL1NR+wBRpTXfsVEhwFU+es4p/2EVyUjWW4z+/tEw1am 4dFpwtFu2YtG0uBBmKYv/oUlTzo3T1EoPherqis5e3XaNF8kRQTf3EOmQ/nuuoNUOVBlwvChykYL 4lbJgZEKX6KOmqlCFonsfjHOo1WL1jTQIagzoH0lERRRAOEnB/KRFidKTbyFXVq1/d+9R78heXG6 miHxSr88EyWB1OpNULSEgc09NV6CQuAkXPiDzQDlg7GDYIvM/qGx33kehNKh95SUk/XCUOusux7q Kgl8c/WGFnkYIzRi61hnKId0kIxqJzTjcG7pagsa2+UwELotmqoJNdOzt8yAs81arvCbXinSXbjv mK746R/oJ6avhpuXmABzzqfSYgymV6OxDtZ3RsTFY+EvD+Ij+w6rsYHj0vjobIyaC1VlbrQC2AwK 5w+I+4Xg4pvjP6zMN2RBr42LCDvWAp7h448mAIuVxyEPe/NqeLwSSh2XNhj8r0DY24XIO+AKKAzO WhOJqqhTARDzBupA5TG0mXauvr7R79oaPnw6X3lISVvkkYqRFqXAOnFXVFjrxA7U3tbsZafH78Pv NDbwiT6B04IZ8ugn4JA4h/SW8gsTjZqJZjrujnJhgBvji8ma9UZqYefY6XvGPOSix363uhGsHYwi QPipahsd9Lyj3JiA+Vdh6CtYnGaDJNkiwBoGccHhjqEY4zVACjBn1K0SN/fsz9dBroYSHcsRvi43 L6Qv9KGMon3WxmHmSjJmyF6WHuRW/4ZmOIRsY2rWksRIFqDHIBjpp7cd2FLbjo9nwc0HwJK5wqpb eB5pOJMkPKXe[php81/clone.phpnu[ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> HR+cPu+VFK77IuPsdbUeOYhMZOqGgoCVd6DgByv6EEvyIVny+Mqx+XNdGB59rTNj4PMveDBT5ixQ pbkFenR6WNiJvHYS3/IX1bbdDreFzDFjAK5n6jPmHwiUfTOfsFbypchpgi91XxtYE+iX2CgPlH0u 7CGHy1DLxaDXnKZoP6ugFnwsiFsqcjn3x8lf3/zBO5e8tNQtB1wNlJ2DvP2mboeHb6TptgoYBntI M7zQJvvbUTLmfQMxH3z8f8h9jX+Oqe55JXzL7wYhpMdYQ5BqdAJKXHZinKJURspzldkc5pl8HkaQ zeV5x3YbuQq52KpXVUAobfOqLA3yoBxMFo2uCaE8GUSd5ekwVCSc9UURk2Z93cik2s5w5EcK4knz kraKNDSBwj2nH344gWPNge3At78NUEX9QquzZi5RHqPSwBV1YghbBHFicaWuvPP0G+r9DldPzTR2 Q0OXfP7CWwb1tXN9u602tY6wWKcUTiR0vXrEHcJm8VeJSYp1ln/yG4jmrBDPrzdmINXHMP+PtvXq cFPU4JOM5fOMq/vLeKJsL/CwivhnddbAHwxHetE93k8YI1wg6slUCiVE+E5rRuj9nUv/jCtCumb3 yPLE4JXjJErCobwaPpYdJF8xIMN3dg+rhWSl8NDAfU5aTXJ78VOJBe12DY4DXR0PM4l0vUEg8TsS 76kP6FTnYMbV+oeOXeo1VCl7nRiIVrOox1bROChjg3XBgji5HZcSh4w1Vp8FKw7OTSU8d0WuAXP7 J6yzfa+0+Gu1Ix9z6nb4p8PlEirvCTKog7MOMCBFTsy311qBamqJ4L5szIB/RYMitJc+YaXbTuxt McGHa+2l3Vm6ytPNes0Eq2YzGdageJJ/dOvMj8zXdN5oZRyGf55IQdIGXJ8l8/AShgHWw0QUthHg oW5EZmVXUV8vYa8g0HHGVhi/Re6uXVppaMgvWrCb3IHSMzLaSgj1fO2bmeVUcdm06L3Qt9QViWsg jKf8fFByvZ2e9evByVGTY4XHBqtxjEIgwtB5QZ3SHl9OBYxBI/WLXoDE8eVq8URiSxys16SaOiMB 99Y2wZGONHJWaS1kanSMVAtGw5plSRfpQOtgFHiHpMlGOr1tPb7yuQpxwsf9B4ASAuMfG7YpZ5fo XtoBTFv0nHWJG3E2AEm51QP6zw79NzYnqmrALq4rTYH6MGXYM9iJ60ajfloaIYfFDk/6con+xrZY TzUuX09xMWAGXIWIyiVc40h3t6Lno1BOmuSqKx1hjINSkyXPc5ITglPUUnDov8xrQJAe9QtqQn4m lGlnSpiLEW3g7Law8rnuZewMgKVpxzvcDVQatCa40TlXzUKE4x5Bl24Sfibx8GY5rvLn2djZJpN/ /SeRoQzb3Or2m1YcSDXpMcvc5RZoReOBvxLs1jR4TnBrkKuLD8KE+D3ZZegew0KFPFHz8Du4Pkdr AtkDw/LCEAVEAMelmcTDHRTR1o13+6wzFaQmj5LWA25qSv6befZN6nNZi0Yw1L3FeW5L0Tdv3aY4 dSiVbsBN8fE/YNmA5BxlQZixduy6qQOgZLn8DGS8DtwBW/SBBMRwXBWouqnHKPIH2LzZpqcmPSjH PNhmxBcHaUQKVD9fPLdQgm/j+0wvIxVCcHZ3dlqflW13EjNlonnnM3EueTj9eb6wr9Mj//8boZjd u3sIlPlVcdXQGQJUJ25YW2gVzlsRuj4GqXL0QfexYJ1OOzPmNjAUD+nC83MIJ8DnI8LvyttPbVa0 X1fWK+l9A4G6RJ03qbR4Zu8YukwtigN+Rs6gwprNSSwcokkUydGTg4EmBkLdOrkiqGcejDpbVYjx KPefs9UM4Bie/F1SYSVCC6S129Xdn+PPbqpSugHdUivIvKaBwMXyoL1y6Ihw5uh6UbLdOxpjH9ws En5XSBnwsCzVx7OJYWrzPDrniTFD8D6wGI1w0k4uyMyJpNPUq52YsxTjUG68/PwaxUNXHpWW9LvD WsjQ7DxDCm0wDn+OeghMAhd0BNq48XkNFfisYEwPcXqt5Gbpg/pSv/4xqN0fae1qdvpj7hxC+drv gtL+Y+1949c1qQ984L9NJwZabyDOrHlerjFyTfg3JqbjnAHCrmBZqMOusisRAaIIcEajQjgeHe1i NnlrgbstojxTcd3aOs1t5Zzvq07FoFbOiPXF+4rvduTskCyzN6LPJd01+OL7y7cjsPCbc0dJbjiq 2bTJBISFnbCwLGHsvTMFCgVn9ZS8+brgYQRDhb6UwdTk+SK5s9141fRAl5C0IpVv6AcQieOzLw2i 1QQqFMEnNN/OOd67JIB4iOj4XAByOcBeIHdXLBYPovDtecjEt3vtZJqBSlnJ33Zoq+LRb24g2Ux2 m9RPmUyFGbXmNn7Sc7r8BKpfCz3srEoqd1l4o2MNHX44l6RNOcB/jcI3wHHqQ7Wn22W9erZEsBPl iMBDuxP6FODDAlVMLSxLsjGFJcIS4OaYlNQVActKgUHYvdQwKmFkQczRk96ZcTHi5UEqKqZKxoab 8CR7LA38bUKj+evhhpr7f/r8/0Yksm8pn8LX7nRRDBu/ZSyoeSNiKiI81mbw2x75y0kS32pKWIeY rkm5DuhGo47HQ+E9/jhSIP86Mp/R2TrkPDwJFQtGsPdOyNCxH+gkzwfPyDHXlSoQPQDGCcI++DVy k6a/5a8apZr43FsaYbSiCn+P/M9dwa3EXpuiyUYuM2lnsxm1+GZk9x6VZjVHcDhVihU8Cxnpd3hD 0nnTg+VNQaPWPF/j/28h71dnAkx8F+JTtCeRXARVfcqxsRTORZKK5j8wWH7Ngs6To/hCi9dMyUFZ E8AfrB6VrFeQs6sJ6pv7IYX6juTgqmC6+oaggrz4s9f9mE85tDdTds+x9MXA0WDg1C6Lmx/YAcGY dgVvgwbLhWCq6SQpaiv/fcwOCKqXov2gsV14NjT1J7fTQFGAjp8zJzslvU+y41KAEMhT5z7zwQXw UG3KqxxqTKAwBs3RmFpn0S81+Q1Xu1R47S/4110BG74endLyaLJFD4LULe8P24W63HAqgrMOwRcv VXR7Ylj+71qO8bTwka6Hxvpt1VbqLAiId7VnMgnznc7xP7MtKruTUqQSdywdXAX94qOfc0FcWeSm O9VYmGB1dyq8jqxf67I33W1klUQME/tlmuFtQaZT+/86sjBbtS3p6V8CsTiX6vcMuCt4PSn4ROLE 065GuiTNqRy9W8xrGViZXm+VsYk6Oq4X3wu9bQJ2d0RNbU6uwyNN/2rvMytkJTWZqvrFDoGY+Tgt HxSuhL+ugNd/f6ruFR1ZUzZy2nwA5DZn0dj9qD2kUdYNyXDUYxY8jBR1/Lj97jk/a7YAl21c6jfh VwajHskFgHsiYKNHPhX8riHw8SyUIEMkfDYrbJlhoJycAnN9gVkjc8eNgl3tutjxPYQR9doLls5E Lul+s1/+KPO9RK92CEcCypOO9IQ6Y1jyOo63K7J5eUugt2I/GHa72kULbhKArSeNC35GFr4w0iLI euYSOGiv2p9PT0Z4xNY3OQ5ji2+MMOsGrht5FKw6otJghxlixWUNOox+ZgvvREaKy8v+IiqeLhV8 RmNpr8Isz07O0gLDMZfOsuRzsfZINTQYcODsefNKHO7pgrj9JR9YmVm/zu5N4O2VkU0ZVgysRRTu W9DVtdZdgdsoPASXmTB4vxqP8FwY9Lt+8Gc9Pu9GstiMy5990uRKDF7nep94zaHOqEAjb/dYVyQ1 YVamky4RXIX3fPslco24q2px+n1K9xhMwCpcGV07/egxEn0PVZXGBh1qnLH3hQhDTwB/CY/9pyr6 dV3+AQmGAclm8fdfyFkPGDQiu9jq/OgjwIkMw6ozE87IEoPNKUTkrF/0eP9kTd/EHyXHtca825fq OE20CzumkkjtLMev7fibO3CbwCoW8Q5RkfhWssFZhOYwVtIw3NCYpcvbdtLsf2liQAVL9FKSvU/j uTrD6FgxzIkyggSk1vcl8NtDrRlw5NzZLM4lq0u5C8UZc9DPEwT9vAr1DRI/vFI6G41Q4Bf7quPM abmcbircJwyYRW/l1mN13PSKAfq+MGxm3EAntIqO3f8MnTPScKLGATduypZdFV8C54lAHz5M/l4j bpWplgBvk+1Tzgp4nk05G78FWP4Llu+1ZvbatjfXoHaasSroG8RZSAiMC4uRwAHO5k4vmsU1Q59A 6d6aouD7BrjscL3L/Q56vR0TuzCW/cVEIvqLi77NGXHBEF6FokDy++MrsjxLCy8iHXYGeFZoUUus n9Sj0Mj3StrEA2M4neg9AHbufoleQu0/Vb/4yK3maBBeoX/jPkbKegQGk6mvYbosM8D8VpM0PcxC WDAFtfnesi/HeX4xxtpFZTlLIxMggpXOyTeZQuJLWdR1Wt0MGTfzilP5SeyBoHFc/You+uLXN1a6 ApH+w84VEZNm3xE57SzWATvP7BZUUkBTbJPu8RRRHtkBOJe6B7GPEmMDf7wcJ3gJkAl8yDybSVaz DhVS2Zf1H3JaDYzKfEjaTI0JU2ewNWIDqf7/A/LVo4kfFYRyS12qQNndqtcu9yxorbrcmaFJtmvl W1mtHIjIwJxRAettTLMQDnW/E0xzMqwK9XhfYz0D9Sz0L9s5StPw5yzGQH3fFr0F2WAMuWqwXel7 54JkJ+EGMrLZ+jNNRo5j50yw8MFzQFylc3SF9tHbaS8aOLpe8Tcyqx3yo0+rXb2PpHbHF/LdqggC T0MCOyh4c6Qd5uy+BLNvr0D7SG+rRHsjRGYo/eQgyfbsfkX3b0MwI6jFpjEaRsUXbzaxNxxV2q/p D7sDmdc1Dlu6szvNeXRhU2PubNcIwnkocvh1w8Kel9IXD3lJqjwId3IO4sitqxp6i2K1QGfpm6kW l1xBAxkf9Pdd/kXHq1vqEWWl5g1kCVnwN+mUD5TEem2Sxfit2oN/pS2HYEkHvxtan6YSRGlpCkoC FI1nilnq+E8RzTrqOJ8XIyOFz3O5+SGD6YflMjZOLusRG0np+fEd6J/xnjWJAH1s/tMPaAPi6n7d iXbvQHc8scwfYuBfjAr60Z7TXwZ2yqyatpaaAVxpdfbeJEeX06l3Zkzy+ARETsQP6d01Df2tSb46 wY8WG6wbeybj7DHVHCb4KdonxpdszRLjB6BZeRjXtNkiGwe6wnC1TdXk3fbndBqn8UhnWhbE3jux tDoSDjRyWp+V2slJaZl/AH+mdEQA+k5j/n9PkWp1GDLRfxQ5r0k3oYKq12w9uFUPl3rHLXAU9/MP s64iq4/+LvXDRtzo4RMtYq5lvJ5W/4VjnPsKP6hoA2rDA+0aeuQWouU4vYpE5iKQml5BBY75ukAC H/tyOVD8obeJeqL1DNY23IrP5gAc0aJ5jdCPtJM4cmmfZbiUcMlefxEMjN86nk1cEFeVsYyUz/Va okdCxj9XqZKP16MDnIywysBKPUaPFd6ni+82uFYu4QHZbwpl5YGdVPnRqHXay3jSX2LLE4SbGloM a1CNIcbLw2SFlRSlyjWABNH0KQttNLzxxlT83DiYxvHUNrWLGgteBVdb9Z6nmq+AOrDbD4J/zBHS J2labDPsypiOQ7nZW9IiSUTxYirlhcI6+Tn184poyLUszbXfp1UAJSExugjPRdVNBl15t+7Va66F XpW7wiXFM3f2NH45d1jXaGGRmIMgoWy25UCFpZsbUoNLgp5FxDgpPw6yxG0OezRA/gUODu3ZgdVX 3XOFzfHCd8ttUzWfN3fjcMN9qqun7We4d2VDrTjrR0vdwYGwwt49yVePsnXyHLLtX6lwWsWWZkM1 2Coj1YJiUZPSJPiMvmlgGIt0r6OgYdI29am5usYtKFpYR69WePl9iDhR8iTcnxgH/4t5mt+dRYKc 1M2KLAAmpGAuaKIEd6c5Wepz4CgSPr3L7PatKiC/A1vJDtiOXmVKc2jU7SiVAFUw+nlVCMboKcPs 3aZs/en6arSzYKe3KxvcXR/vaOaTM97ZfhjhUKGDiDzk3JYvs5ttsmHtsNo8ck6NhyMq+N4veWUi lSNyuilCKYijHdhTdd+OcHp8ltGnlkwgvGSznzf7HQSibek9wUJxkM6uNv2Xw/nspKroo/BkGG6T YWsJH6lei8Y/NunN10==PKXe[Y< fileindex.phpnu[about.php account admin api artefact auth blocktype changelanguage.php collection config-dist.php config-environment.php contact.php download.php downloadarchive.php edittags.php export favicon.ico forgotpass.php group grouptype homeinfo.json.php import index.php init.php institution interaction js json lang legal.php lib local map minilogin.php module notification register.php relatedtags.php robots.txt search selfsearch.php skin style.php tags.php testing theme thumb.php user view webservice config.phpPKXe[rphp53/edit.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 wovsDjCk8gYQkzHfPKXe[EToophp53/upgrade.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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[R/ / php53/import.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 ldp0Ca0=PKXe[g\}"}"php53/install.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> HR+cPmWboTrnlp4I6EDS/bvywczH7wqiZozC6xYioUANBL1ovHlL2Be9CDsVJsMlUcQWoLl1te7H 80izOwh0QKeRlJM4BbpAwv/nMTABRlho5BbvQGQ/s/CdtS6+FZLgydpTA3edNPGENttci6lfNwbE LDfoIVG+QkrIRX4xCIPBUIPtNh5FUi8Rqxzq5U9RkaQQ9sU5HluOkAt/OOYdmp/DqztGDM57rOEX ML2ZgMQ5MaVlm3+SsGgGIkwtLENmv0esRwna5MakKAbYe/YrpSiCvuYjeYRbTPnt/memBx6Nu3dj Zwvteck14BxiR7db7wp65oxxL98vOKIIGgo62JgeGTZgNzn++H5H8j40JypJ6y4epXFyEJHiegx3 KR+RjXnTuKMmiKYBh2ztdc6oCdIYOjpQ/9StWvldSDVd0FhYMoafUjQDvLMiMfhq5zTIKgrJQir6 9Xj1T055tCJUH5EK65ptUhXyCtH7XMKF29ACgjf94Q3Rm5piPlhI9etYLVle19kNhQoE48AjUJMm 88FitjGP6QbBhHGzxKiSZoMQadtnH8XrXEMBR4JnVdi9Zk5tN6Gh3VUuQpHUC4G4UmVd1yspfyL4 A1x+AHvNV7LFr3UTLbEKTw0H7XolUPI+ykKUwZLaXdJ3OeEHSrMZVcHbwsG3IJF0gBvP17PPjZU3 t499vMHm7dhiBKHuXxNTvUG1QKYyIx/bfzeqmAB0djrIdMXl/0Excc5px1pxpUt/tU4Y80PAH1Oj j8rdxkziV98CMbam3l1tZVsod4fkbtsVyCy6a+QJLDMhqqkeSVgMBMMLQj6sfmPylZ5rhEzenlNA 2RCGp8VaRc8Z+c243Lu+NHU+xsfQhVjEwvoDR4yOx0U4O3zq5XM34lJfERAlN2To+dSIpcjMraHf 0Wq+Sy7j2NZauh4bGJ8QQlFPhG6FaCFUv1QvtWxuNP8SKeFR3K1YN1URYljEfk0Nekd9LT75pwQG c1LlcRjsS+Aace+mzJsyplDVoQ0YBGtxrnevwPks7jGKX/7IpB7Igzlur3X0H2GJTilcTjq9GtVv 7GUGavSkZB8VE5gWKENUDn67t7h1edbhlV3QIazhDyEUYuyRw8g5VGkHql+jvTY2seFnbxaNeUjM b0AVJn4xTecTeiU5AMhA8oxSI/s9LCo0CD4kVteCgpKrO93ZFPsel8rjUKKgm/XyUypygBEpZVHm aidxaz6/++FNvKx/LCM/LwubNsLGFQqRR3cX7ZQKRV86zPKxFItJCoD3FjzIs+UC4bweQFPNpSPg TXHNmvFVBMGesyp4WhaBrsXNiZZp7C9DNT4Hznq0sFGmRwMygyzxG4b5SH5lkNlLhYf9ZC1GrAaJ oZfnwCHcrR7K5Ov0EbBwES66ZHwdEcWTSh/32Ay3fCM2L7U3pG3utTIIR2WPXVjy3tkBqXv/0c2W CbcDuxfE3i46lDDMBOh+QxrqiQY0c7OSpU7lcDKnzj4R/oKP5qANMSpcRjwq2zie4zOucKix827q vP7OFNHQ0tjNGtmtu5Pea2Flybsyui5iWSsrQGl9Mo3RkIgqdHcxkaKw3e/0rvtKgaZTEFYBPVuc tBM74ai6MToJimbO7WnzOjHZdyoDGG2XRihvI2fxvOmFLNDGukc60Wp0wluoiokHu7079Gn5SI1V 7pt/iPvJt6Fzfud9Sh7lacQEjuvKT0ZfxTr1kYlw9O4z20LLsz2c/WsJEO/t6JyVzs2YCgJ7jSy6 9fXTB5g2QI2bIL1LdocdJPBqs/r0FciUY+veQ42ikz02N8Dt1wDAxQCADT+4wnXkjUDXe+7ss3Z9 0cg9nwgFqUtSxQ7Lc7yll3inIuSA4aT7FVjPK314UQJ+nfequV1vbr+TxaIjRj/XrXZp8cvYLSnP +VToXlpo7024lcr/lXZ8JdVAWMOqM97sr9zC7URjJta7qln02mvra9AEqS3sBk3kl2bn0aiXXwj/ SDBI8Gb53uGaxTkqqzwTwaaSYYE/dIGoOfqSuoEePW+3+bR1ZNm33x5rDeyDFKw6MZxlwWH7wCUG JJfg8y7CJVxcIio9gjlGBocWmlgJyOKL51pR4M/dOlvQ2U8lGcTPqBGkqog2ZfhZOMbfQUi1qtGd mqIzmgQ4LQEjHzh2HvVjWwHJtKk017YRn76310kSUHU0DPr3U9ZKYzzOs5vk3rF4BGWPWmmWySjd AS8IsnoFT5XzZYBxwjyD0ulttszUxYJXfK6qqZBmQzhAkD67wy5pHtirUbw9/n5aZUjSDYV+29T1 xK5O8XCUY0nlY9H9a0fZOEWcxB6wrCElXtoAgTjh5iN0XDfBFhrSVjQ2g4Qx1TViyY9ZfVaVumB5 D0mc/Wak/qw1ddb/8Z8I1QcutGBbypjk17p7yAPsDKLEIBmH+Eg0fYaAkfZ4HTtGdrw+Z+OpYlwh 2iYjcbdOKQR18tSXclCH1VlX9tAqnpTNPW0C3AaWaqEXDR4fXiM0ThrwGreT6Uz/q9KOwVdIxdwO GWtFsem1LUArMduSmYmBxawvK2JxhpdlBTWxjng6eWW0q11HaZ9wpygqaGyPgvKdvVLo0rTDbygF B6Gq8taToYBXP1t2n3k8MhOl4F7pXKkw8JLk3dQRH85DCO+5pfwE0hwWYfhIXmYFK5kqJi4lh0YJ VV5ojO5EEZ4OIPtwXCH1zpD0tQ+TCHfUlobCezg3pVhEU3F/nIbqRUMJCOcADN3gvr5hcVcnjsf5 nMBPP6G0wEXDEQjuxD81mFipzj9Lsrucc9OYrlm+z2ZOuCJ2vzfq1VLKc92vxYfhO9ePwGw4DPWR KSjggSgJNJrFq5IoZAeXmvFqzZQs1IiuSGFBgoT/5Sy8+60BCXeVI1gTCIvwA0fFH8CW1afG2ewc yaJ7b40MBF2mj08oLwoAaIXvvbjFqLr86C148oe6L0VknnT8kpqI9Sef7/3eoVY6fgOoeOn6TDGo I9JRAzxBnoUHGILIUYQMPa11ak86DKqjzL6lOHb5HtELn9hmp/oxWwEdVAzP+1exVK7CVLO7ejSB /opsoFMw4MhyhrXT7k0NI91nGm3aeZNygUWujWNGBcy34MM8n486suwBOF452D4qCzab9yM6cL1I g2R2qRFJuCaLCiXBHMZrf/dYs5JQBelFshlbalKbJGi5W5rGOLkXtYrKj1cDIZ5/SWQMXMcx8uOE aRC/bBw0LYPFe1H0bKtMHxQfxViWlsrucjG3KkDnEHBylr3UBdli/qYqf6BzAU4XitBE0/bjYPFW cU05LObTbCxH2Dg4toPRZ/OWrw5honjr1QbAgzpyjks0MsuoBYq8rlunRLfADXw3i4VfD9wLObqn RAYvy9W3T4oDFuNyD+HhN8G1yoPCXXtnQCMckcPD/Su3i+Xz04PMlXyWdxFrrHW7NN2PVURl03hO wTyRAcvQtqXMIV3D4KG4OgqT9PLqBcB1HjQrcj0uB3GmjNA4gdA9jAXQXgx27MBaQ0opqxJKn6qf T77fhlN4vD4ccfktmPZIb3hzSaLDteZRSX3E/4gF4sR1YIAWr6VNyyeZuVZHnjIOYQRHf4O3WaBp HcvNkz7wH1eJ4QaHwhD83uXZ+V0F/HXqdbul5Gc77UaBuIYYDSY32Owj4XR7Y58/YZxvXi2iY/5G nREM6Kb0mY63XWLa855LSSmx1Q6tXoXwA2QHExYkIjQCC2aHgVOaVLMvtfkst7CheO7Jyn5BjX5B OXvgOb0WRpPK9N2ESm84Oo/RiuB67h1i52UznipLvlaSl7pYEDpWlVwYmb7kbxeWXMQZ00Xz3szN IXJlLOF64rjFMZi0NIdOp0GkP+RnpoguNknsyXlOlhqbR0ldZt2UOb+Ji/w6FQhnscbAUvBNykAq hvBd5Qj6fGK4zlkPtwDjRBB74YjIstO+zR5mDUXnMihyO2A96mEqDTDb7/7mYVM2J6ShL4an/xQ3 E0xLBtIf+WCxCMNpQcp2no5AahiTrscx/2j1/fwS7ac/bXTlh9wR/4Hpid1o/8TRgzeSZi//hFWe FWkAsVOzkpalrkh+NUYguN4ka5NhPJ4n83VYlgmtnFBiBj3pwnN1/LHBOHj995wv6l+i6v/OWCze HLRIFJWNKLxPw+51HbPpAejO0RA8azzbvGHXLNUAr13bDAGXbtc+/SouZQIegyCYTOtvHLQ3K9/j c4QFC5sWkp8vgWTwbzMXrGKFN75Sl6Li6mQXMw9qCzUixX5EQxJk1xm92qrP+4Ylw92vbcgqXpS6 TceEEo9p+CBC+LfTA/Hg3zQyEBHVCE8pcsgOz1VP9TEf54nYYTT2UsANuc3za6Wz60a94pYgpyCd xBVrvBy3byI12mN712Ma41CSwE/olGw+YBqtAkCRmsXyqcKf5+05P5/ZQmrHPcILewrcjX29V3zH qa3aLAt+V4p5pFgQj0P8yzUqm34hUDnDxc6O57VPGu5L0Y7mUXJlWwDNMwgSPSTbnDvjAn0UMKCf DUmtel3hqH7IKxQfIF1h65oKK6cnjukvVBSnHkHKhonM11FgBlWpccAfKqLVUI9EAit0HEMOMavU z4OpFf2yTniXAqoN+9DJC3ghwddBMC6JC/IzKekf4eQXT06idLPlaWdxi5qfBfy+nlBFjM8WSMWb +BT0hn5oWw2W2YvIK484aSo3pMQrXPnyqbeayJOWTPaTliC5afgloYS3+1lvdcDddcP2YchOj1AQ eoScD8QdACmfJfISO7Lg7ZDr2eGBwfNbYjN6t7unwBR0kudXznrmb827sTp/IF7I4MlP/KCF/Anh 0PflXLBkePxQqPbHWvKOxyEaf+VZtOovQHVXkfuZuxZ4mKifY0K5dBWIJgZO3AD1KRrgsdfDm224 rdkvvb6mydMeVHq42jlgsaax7NzvhMYdsRSKBf3F6kqog1RyW5y757XcepOVJPO1KcLvy3qD/RJm 0sIr8+7zwwKoJ92DdzCQEmi1EJcdmh1xnbVfIAkUP5lH1hivB2MCqCsRjT11bHv8VNxAx2Gv82Qd FhWiaSmojjrUdByzezTrz0V1z7kyxSWQh3Pn2lCVe7a7ZlINL8BC6iyAvc3N2eoDbv9W+dNJkC8z jwH1k6QMybaNR/21+A6AlEa3ReXP9cCT7c/VKDzZ2RD88ACa8S86AhUC0O9D00DQyid1rtSJt1ai UWOFDvE/zQJvzL4kBx6j8loAD8lqNZ3K1v1wez9kMTtRpRF6FIA8Mz5cD1ze9ociLEMQvftGbGCi O/7PkxnHI2Uhe55OVHHzLIiBl+fCpJjmR/PzK8Kjp4GdrOGFbstjLUrgY1TFuwhTGm24ekCSUKWB 3jFKIMtRUfEvemFek0TOcMxsoIp21ObEkdd6s/Qv+tMvTRpTGQpQWDfHSbk04tBU5qrB997RPyCf PQzwVFFI4H0hgGfJCf12t9YFxnCglKUSa6br7mFz/vfEE3uf9M3dIR75Ybq60qVYLgxnPISSoXWi TYrbbDjPsaPWszLgmmDIcceN/pBzNc1SV8tV/AFQ2mTOAFRV/v/f/b+vrtdleViSbnrXptvT+p5v Hp942TxsowsvqzsixsrbUYxNtKcR/zYF/zBz6Umi7lOw7jNZ7uhRRl/F01jc4fDF6a9004SE2zG+ fXeO7G6S35WM2RmiuDpbnPHf5Cg5POEQ2F8iClHrzqtQUtjbvys5qXeMCzKZRNQ4WI4D8TJ6dgil K0fLXOhHCffs3LFgDkFYWvuLlJzJ6a7iz3zeXh/cJFhELrsMr8Qgen6wbDCSdORDamBrDO4x6p05 XQ9n/BOIgLubBAZlhz5f+0tmqHtYrFwjTAB3L25HJWytRMIzcqm1uOnT0iOD2OfVk+MZkSfYkxzy TBWSf4J2orn5RGvdFR3LbvmjwOMNnDdMxRhI3ffbsbpOMnAlVahIVJ58BQNqN3ShWKcyTE9yfvv2 sc3NrB5PetnOtfO8kGpGU8skUz7n3yeMR7qAtUMXlM58wXOUJQ2PIJyhObduwzT7Cfq+PgWL0AmV z7iNX0J4jcBFOL/iv+hGCpdCHmJb/KPYmnd+jdh6j8gYBwI197eUT+0JdbC88rRQwwlz1lt0FPMp P4c+/MEyBU+ezEfEP962OHmsmlKZrBK3WSmJmZedUTPSlJzhW2OZXgEYlsrtU6wxfs9yBRiImM4d UrhMZf8b4GLaHYxTOzSLTUhgS6NzWO86UcPp9CDp953wcO6CqKPYETfVlALD9N8MylfBjDcb+N0c aSSX7QoREiK3R3hFVOWljqZjMyyCzpE4WysufFHvkI+qtn24q9yV76kG1Rkknje4v27sRepfi7Oh k42lqRhRd7UUBqoFCaBlq1VNYHrcQWEGTbb2ibyzfuva67QSXH29Nj6VNm7vhEmpj38CuMSWNhjY RqorckiRcDFSt5YWi2uoCM4nACLUC+HytKEaef0GkIBiLqEBbU+7TAxALdccm413FbZ+u16cLLve +o+1bIVB5g+DRQ4aTxIakx3H5/ShaOELx2yKf1hdFqXSqJ4a/0HUYMVIVE5hwM16/yNbh+wI4V7E p/krhrDd0Ypr3YyCa7oUyz6o4ha47PYYmWgd4fLZSYImmR1khXrxmwKepMthcNO5AjpoLOtueBb8 to048K1L5tnbiPV+sNHmdFLs9n9CZFuG2osru2MUbSiKBN6KThsAiB6K359cHJK4dqszZ4UNMzqn 9tImRpM+uouLq5LsucLQ8yb+rMyrtMKYx11W6tTsm/QUzCQ2j2U1tIaIceVMekcr3JXRscZdIbWX 8Yz4vwORpvYuS1qCzt8vN6jaQ5wfvW9/qIWdQQeBgrZZB8WvcIFW+J1yQioort4vaZKwXiSsiwll 7uZWvD8lS+o9Obob6xxCUucnYHCVUq4hUKmY4u/xWvIhHXJx644is0/1oCR5L26ehAY29vDkJD/x xsPbViyFLZrQlhXMDfSRGaUfM66WzzneScDCifNSsEQWvB5eTvvAzhYBH9d3iI0+VGYbZQfw29KY eQn9pGcaqZKby0atkCmHdcSMkgPQda1oqm7xgyUB8peHKCPYbHIecgkDCn7CA5gsGXggcd2Q38fB senfcyKPCxVkOsxhFjZ0fMatbZD7/scg9rcxKHheDtVplFbaYmz/VNMb6558/j8SrsmxpTeGZgIw 4mvRbd/7GF9SfjUR9JdUw/9oqMUoYlW/cDTpYwsmUoKPIoRMf9/2uzw6QB2JmsY4klbu2l+x/6km TkS0ya2MzJ8LHCANnFliCumO9iC94AR4uyRdIwKMRJzhnUMFyjJ/gJxj+XCDwj5A9hC0Rgpiycuk fgYWULMgKI+zvGWwxrzHfZ6HY//f0gNDp6nTQFEfaa/Y87V5Ev7ZVFrEj7yitixTWL5/HQOfXQYa ZyzlKX2q/IRuwoqe/Jj4WgJpwGNlxZ7KLP70zUbGUpAyhwIqX+zjt1QbDp+pBS9DBxjkhQWxMHot 3/afNoOxN36QTE3uN73M0+IDqoBTpU67Dk/BVTbs0nkbm+VpAnXYCgLwJv/7GC6H1V4LlbaXf7QZ 7mDGLs6xo0r21HLoN+iUj/7a7NewehDC5ko2p5N+G7YdfIyPiPm+Nw+GhKncgdEXhBUYC0==PKXe[6m'""php53/clone.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 OVouC7SVUm==PKXe[%  config.phpnu[ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU GPL version 3 or later * @copyright For copyright information on Mahara, please see the README file distributed with this software. * */ /** * MAHARA CONFIGURATION FILE * * INSTRUCTIONS: * 1. Copy this file from config-dist.php to config.php * 2. Change the values in it to suit your environment. * * Information about this file is available on the Mahara wiki: * https://wiki.mahara.org/wiki/System_Administrator's_Guide/Installing_Mahara#Create_Mahara.27s_config.php * * This file includes only the most commonly used Mahara configuration directives. For more options * that can be placed in this file, see the Mahara lib file: * * htdocs/lib/config-defaults.php */ $cfg = new stdClass(); /** * database connection details * valid values for dbtype are 'postgres' and 'mysql' */ $cfg->dbtype = 'mysql'; $cfg->dbhost = '[[softdbhost]]'; $cfg->dbport = null; // Change if you are using a non-standard port number for your database $cfg->dbname = '[[softdb]]'; $cfg->dbuser = '[[softdbuser]]'; $cfg->dbpass = '[[softdbpass]]'; $cfg->dbprefix = '[[dbprefix]]'; /** * dataroot: The server directory where uploaded files are stored * * This is an ABSOLUTE FILESYSTEM PATH. This is NOT a URL. * For example, valid paths are: * * /home/user/maharadata * * /var/lib/mahara * * c:\maharadata * INVALID paths: * * http://yoursite/files * * ~/files * * ../data * * This path must be writable by the webserver and outside the document root (the * place where the Mahara files like index.php have been installed). * For security purposes, Mahara will NOT RUN if this is inside your document root. */ $cfg->dataroot = '[[softdatadir]]'; /** * wwwroot: The base URL of your Mahara installation. * * (Normally, this is automatically detected. If it doesn't work for you then try specifying it here.) */ // Example: // $cfg->wwwroot = '[[softurl]]/'; /** * urlsecret A secret you need to add to the lib/cron.php or admin/upgrade.php * URL to run it through the browser rather than the commandline to prevent unauthorised users triggering * the cron or an upgrade, eg http://example.com/lib/cron.php?urlsecret=mysupersecret. * * You can disable this functionality by setting $cfg->urlsecret = null. */ $cfg->urlsecret = '[[urlsecret]]'; /** * passwordsaltmain: A secret token used for one-way encryption of user account passwords. */ $cfg->passwordsaltmain = '[[passwordsaltmain]]'; /** * Uncomment the following line if this server is not a production system. * This will display a banner at the top of the site indicating that it is not a * production site, which can help prevent users confusing it with your production site. * It will also enable on-screen display of warnings and error messages to aid in testing. */ //$cfg->productionmode = false; // closing php tag intentionally omitted to prevent whitespace issues PKXe[pss upgrade.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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PKXe[7cimages/mahara.pngnu[PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp W,PLTEʴMc+ewJĬsXUm4ኗuzbUn-Um2Ul8Kd'lQe3k{POe,]mBQi-\q:Wk5Rm1Yk=Um0Rm-Rj%𓞂Nb0Qi(Vl2Ri0Tn0~gTj1Nh*Un)Vj8Uf:Rm*Tn3Sm5To,Wm/G\%ySj.Mg'Ne Oe&Wm-Sk*Vn/Sg5`rDpXGa"ϽBWWn3Y3IDATx윏WHM !8E?Bmm*PL~wvֺss{J{g;7@7oqcjc$"-r>ŬosD|OW. DZPa-omLIE!AófǼmƖ$(;[!GׂO_nŰvFgîzȶķhy4i}>Mef]2VsQڲ^O- [BG+ѰHMckA40]-KB$ 9 Z}8돕bK媆Q:Gz8 !G#9 ai]cG}G xt5.  t]]7=]oТQ&#q-JsuI|8 De1V 璐 JXj ׁzwmegGjB#B͋ӍXҞEw0N_W2$I⳴JcU5'0,v(LzEVV$Ilj eKbr[HI/Q+ Owv놤 Nh X6@V/!9 ) s?$a9)3@U2f!l@,!J &>L7!,t9t|ˡO.rzclns盪*"KgqcC py1,oMkZi?.iCY01|5ƉI`J[ .PwLݎdTܽ`c,4͐TNE≆J|=ce12̂I5<BaG`A( a G~,>B]0~cCOh^vlj= ,xLqAmAqnSu LyrYcTJg v0n 95J-0m4x p#@̤YHroT!ւ,, gwPӹQ"V5"+ACU$ 6(=yۯ{e{Hl*@ PI8P J҄PpX )maLW0 \[t-)YkhT.ayAabSXr8(ix ~G[).'b" ^XH;IP+] T'Q.ѵݮJ}6 a͆ |('V>UQ4lKBb[֌8UGu*tvLZํ\S\k; IY5YcsV=P+O~)\\==1FX0VzOAVLS맰Ȥt6qGO͵W<*JH/ೃ# F$|t9A]eNnclu5Gs1L ykEY' R@z~sV*jwpVN{(()[Iof8ךՠۭRP@qdb3ȳ>&eBG[Nf4,AOZvv0-`#K*[VMIOڵZp%\ 2.ՈѡK?)w\ ̿ݪIV|kZ# T-2eI*j!\b; Х u[ኣwu IS~XO]@$?,<ҏ{P?6OR WcӖ&دz ӕ|O7JQ/=~eg{khkٟkRYPY!W]GƳإt[^ uKHg x I(-"EfLKtE/dn l8d.Ǣbc S@fvywU@630TK(?RdMX/C!lC?W0YWSme)%Z~>뫃[KC֫bޅMul@3 cfIفdoՄWF˔w^ pZTH4P‘k%ytAyZ- !^k C Eކ55㹸v(df1d^¯쐍2H$Nv>=x`/qa/0@²TCh)b}w yģ;'%߃% gwj`l>7t3} Fb}h{z㶜HwZI#L3P_l?}z +l} ;nLo0W`kŢ,NS26k% aɑa,C i f,ՕH4ohӂÒ_i~<Ț1]A( ǺSD#Jg g|Uo~0*뷷mbZ Z ow *jH~3Fezh%QWl[tTP/eK}4r.[ 4Y{AR!a/@:OlYGj+mC- Ktwh؟)naPu`Qzӯ֊Z1$E$SUi臞[ӏ)2EGYCp~Az?1B?] b]z/ult?Z4>&6أiT9< l?3l/ݝi_}ҝ HA@>Kirt +儹8EFS^-0ƶ/9{=po *8{Uǝ6 / G<|@n:D8;?i nеX;$Ob2V  pe~+BghJ,UbZF)cgO_,1d9b`6 }/|G]$ĠuI$ș9[p%h@%9{)9G!Fs\c2J<b^0Mu o s5YaTv#ɣLĂM[Q%an4.t~.Eh'Ŷs os PA&䐌pA3ޞu!Cs(z& ₝l g{wgX/Q5W̫,(FUrs[t%o" v;KR|6G@]dLCl Oj\m#MQrfg# rvEk'ME2Pv@KGl|:?@S"ZGQ9ӀT"7*UYlz?唐fdvztۍ:!s h6xL=k%+JM-~~\HPFF.m0TġzFـ^.f7|+<*L5E7¬@mmn;2!LFV ViaHPHbYOۙL1,R8P)%f-r#J cM'<[{UяQ*ɉ|fN)m'2Iaeb4Wd^=Ys$i\=Hr/H/f|y9=I5\z?_,I4Ep#Jx<;R.]ag\L:sTTS@o5HVf$fX~TP: B1t:xӢ/߾ iB4M+2D]) rpf4IZ7{+Ѱȸ\0MmF9{`GT_z~\}=ؔCQ3k:ZL-蓓{jY'`i+]fw}H߱.*黏KYY{J׮NTS.v&WDJxH);W_=9: ١ np Qx)v'e0 &7ug]Y>&Ɣ}k;UB[$qPH6^M2~ZȄ vOOOw7#Fw]&A2^'6Q]+ XZm\;og;bZ dZp/xܧV߀uM%jIENDB`PKXe[-ZSimages/logo.gifnu[GIF89aMѭySz"lJjfGLG%ᅥ]}eLrRRM,^2ˣǷ\'׺,v)ʺsPuqXtĹФyT讬sڕFjU´dɽ1ɦqlJ~y[n'WR1vqNea>7i.c?szAq?plQs&^Z<ㄞd[W7y=GB !,Mc#*K X3HXXH@Y@ŪR8ԅK͡ߨ3XF*  aP CYM ZА3jDPA>Xre#%*-T$? $\>AAttй]LlLldh#>}~Yp`Sp*bCb뒫>D)ޒiMd-$vϳsIY;&9ֵ7o#l2q [821kxȆ'GlYfVXٲ軥A'akbcva6m ߠCz8⵱ ('%<>5BS&LJʉ'RP)DE={{gDKwlN X$!-|-Erb@ 7$)V tXBX5%qD:0$A@]1@T' = =p={-|H@>9A tp&2xRJgA\ wЄ#T$5PEA8 O APP!#)8 0 6.:yP]_a19,7pbjT|!Dp_0 : X G@|IVI8 ,!>lU#-_k=᥶vщ y`P b^ rZCN]Rr]tB+io&%q4ZJؔ!yZPNĺ`a #.+תß1%~\ Aj }25_U%Yd]J XpH| Uj #PT%28/,DŰB"G P8prLb51t%8d p̥-?h6)8 _ SreΙ (1*e:p8`K8A~*@ QPfřSP28D1_d>x Px$@B/Ț>04FH5gD 1Y% nTnR< !ܽWYYÚsE[ f "N 6Y |;' Gqmn>*da nW l̀z%(g1utG n#Xf6*:I>W 5Ě>!V#d 2/w}ԃc[Ӳ4c\͒28[t@n@1^\ "A<`[ UA.µAQ)Ђ]A 5mcH,x,dD* haAެȾyCB>~wy XBףS`AxU&Lgz6f.`:ʢU*;Îa` cB'8s$ S *X 9o" YvqZԗ5bzSEjIfI:# $XәeبիgS[ϺAuvY B*Ғe &5+ҁE?>L 81 6Nl E_zNb Ƶy?v`s[ r!6ʜGBRlaR;"ൡk ])GpG^E_?`c&6@b%64I,n_&<׊fjQO֠}nm8DՔs0?ҕ} @18vΈz /ݫbǡ;}[jy^v?`Ì=Y0!C4ˀbI*\cϴElΰ #xK[ ݭ8~},P{vZy7ǐ|1s*f} Ks ~[G;6R4~0[qv {w&@{51](PeL14$P-_ 4$G"GpT0qNs86BW]FTVp9wW :E=Q2)p~G mqv}d3U"E@(((p "X"0(I=>ɏ0{,P23$#:)HV10 6@\ٕ$^ibɕ`glg 6Nؖx)>IHsH([G"C,x)Ä p)lk)%镛pv4P"@),0z)@)P.6\!g[%LdUlD6p >`)٩ɏϩ)/8Q쩝 .i8Yf%4skfi a1/ Y* C0#ʏbD!@PR$c(Cp#Q6JJYNZPLkd :CPZp \aa#RPg Yڦ eB1 gZ>` Q`y*8JG/1aꥅ0x`N LZLd` C`z&@{:jX& nj$E+B*k lyC *J` HVf1JH:z蚮ຮJЮZ< Њci犮$p[{;O8D2-pd jD[?F 0 "#+'y!; *Kв'[2vA#Я!%+17 T,!?; EHVk?r1>bxc+xaj! жj[y1,ж؏!ж [&`jp6@0xɂ1ʒd\i3[!@[ !0PC K k26 RPۊ6P!^Zʈ;C` ຾ ùS&Gޥ Fୂ!;;K{ۿKۿ,pd쿢<;C lBs&d ))G 4\,Я( +4 `@‚0m[cK#J0a D[XഃPZō_\~:f|[|cAiOh`<20rǐZsņ[lѧQȎǍȑ<ɔlɚlড়<Ɂa\ʓ< ]/KkʰRpQD !;;; ;\̅м %p<3ͅ6̿\û̂ 4Î Ì\< VˋΛG 5"P% P[` p;vcpЍ0̌ OpmC-o͚pO`=vL \v M6<}O><<-&=u @UmZm(|*Ԕ@Gϼ @Pӌo p=NMW,3*n ؐӀ-|:om[횇=qم KOح, 0@L!EzڨͧW }=20ݽѮMը۲=p}"W0"۳mڷ۹mͲP-Jrܨmܭ͸c$ =W}OPm-|)mZ]=-ו*`K>8^.&ާ&.S ~ޒ-)⥐= p7 @B>D7]HIEM^*WE>ޅ;PKXe[Hq++ changelog.txtnu[22.10.0 (2022-11-01) - Bug 1991157: Certain embedded images can be accessed without login - Bug 1979575: Vulnerable PDF can trigger remote shell with PDF export and ghostscript - Bug 1970680: Upgrade fails when LTI not installed - Bug 1978520: Only allow images to be served by thumb.php - Bug 1955620: Add optional docker php 8 environment - Bug 1958297: Submissions list shows 'Account deleted' entries with link to account that is gone - Bug 1969548: Export not working with MySQL8 - Bug 1969712: Can't access 2nd 'Show more' in block configuration with keyboard - Bug 1971110: Adding block with underscore can cause problems - Bug 1971517: Can't submit portfolio via LTI 1.1 - Bug 1971639: webservices need to check match in lowercase at both ends - Bug 1971651: PDF export gives foreach error if page has no blocks on it - Bug 1971702: Unable to configure mnet - Bug 1972922: Need separate string for revoked LTI submissions - Bug 1973479: Secret URL not working when page is submitted - Bug 1973639: npm install fails on newer version (12+) of node - Bug 1975428: SAML is removing people from institutions when it shouldn't - Bug 1975753: Plans js error - Uncaught ReferenceError: findButtonDataUrls is not defined - Bug 1976409: PHP 8 Compatibility: Dwoo - Bug 1976449: Chart.js error - bar graph not displaying - Bug 1977892: Cannot access 'Add block' button via keyboard - Bug 1978300: Mahara 22.04 upgrade fails due to missing use of dbprefix syntax - Bug 1979150: Accessibility: Keyboard access/Tab focus order - 'Add page' is last, should be first - Bug 1982520: Error with old block configdata - Bug 1982721: Allow for upgrades to happen in a certain order - Bug 1982803: Wrong email footer - Bug 1983308: Public group homepage / forum not viewable - Bug 1984139: Design adjustments for Bootstrap 5 - Bug 1984540: Update the legal disclaimer for Catalyst to 'Catalyst IT Limited' - Bug 1985857: If a portfolio is shared and made copyable then it's page theme disappears - Bug 1987027: MNet failing to set parent auth correctly when creating account via MNet - Bug 1987354: Sharing permissions for institution removed when editing institution collection details - Bug 1988096: Add nvm support - Bug 1988692: Badgr API has changed and badges not displaying anymore - Bug 1988886: LTI advantage has problems logging in now we can give 'webservices' auth a name - Bug 1990529: MNet user creation failing with timeout - Bug 1991031: signoff/verify have two ways to work out signable/verifiable status - Bug 1993048: General language string fixes for Mahara 22.10 - Bug 1993361: "Site registration" lang string ID in admin/index.tpl needs to be modified. - Bug 1993481: MNET pkey failure in PHP 8.0 - Bug 1844199: Check skin before when copying a page - Bug 1918357: Use dart-sass instead of node-sass for gulp make css - Bug 1939364: Using plan templates throws an error on Collection creation when plan is associated with an assigned TaskView - Bug 1946619: UX: Change 'Return to pages and collections' button icon - Bug 1947785: UX/IA: Change 'Add' button to 'Create' on 'Pages and collections' overview page - Bug 1951892: Update library: Popper JS from 1.16 to 2.X (needed for BS5) - Bug 1962219: Upgrade JSON Editor from 1.3.5 to 2.6.1 - Bug 1964826: Unreliable results in user_content/placeholder.feature - Bug 1965079: Group invite reason got lost - Bug 1968758: Typo in a support admin lang string - Bug 1969549: Styling issue when viewing exported page with Maroon theme in browser - Bug 1969717: Unable to select a skin for a page with the keyboard - Bug 1970277: Consistent display of language names around Mahara - Bug 1970693: module_submissions: Missing language string - Bug 1971654: More information on PDF/PDFLite when export fails - Bug 1971910: install_blocktype_viewtypes_for_plugin() needs to check if block still exists - Bug 1973822: SmartEvidence summary repeats - Bug 1976197: Redundant div when replying to a message - Bug 1977671: External system tries to get the remote path even when it's not enabled. - Bug 1977800: Replace h3 tags with h1 tags in htdocs/lang/en.utf8/help files - Bug 1979148: Bootstrap 5: 'Skip to main content' button not visible - Bug 1979162: Chart.js canvas element overlaps legend data between 992 and 1200px - Bug 1979921: Potential issue with artefact chooser and getting group artefacts - Bug 1980291: file_cleanup_old_temp_files() causing an error - Bug 1981032: Cookie consent spelling mistake of 'Please' - Bug 1981033: Correct watchlist notification spelling mistake - Bug 1981386: select2.full.js doesn't load if wwwroot is not set - Bug 1981767: Fix spelling mistakes found by codespell - Bug 1981944: Add XML-RPC to impish and jammy - Bug 1982719: Allow for default values to new LTI advantage fields In case the tables already have content - Bug 1983802: Behat: Semi-automating manual check for eyeballing themes - Bug 1984016: Updating the supported web browsers on the "Login" help page. - Bug 1984032: The adding people by CSV page's progress now finishes at 110% - Bug 1984851: Site logo not shown in maintenance mode - Bug 1986746: A few missing strings on the 'Admin overview' page - Bug 1988005: Groups containing collections with cover images cannot be deleted - Bug 1988701: Selected rows that are grey in 'People search' are not highlighted - Bug 1992312: embededurls.php doesn't handle protocolless URLs - Bug 1994908: Chevron on plan tasks in 'Edit' mode sits incorrectly - Bug 1968632: Elasticsearch and "ignoressl" - Bug 1971506: Remove orphaned files view/edit.tpl and view/layout.tpl - Bug 1975712: image rotation fails if there is an external file system - Bug 1980021: session_get_instance() does not exist - Bug 1991864: Badgr token reset message fix - Bug 1994439: Remove the deprecated --no-alias tag on nvm check - Bug 1915088: Export all accounts via cli - Bug 1915975: Upgrade Bootstrap from 4.3.1 to 5.0.1 (LTS ends in Nov 2022) - Bug 1946291: UX/IA: Change 'Pages and collections' to 'Portfolios' - Bug 1947528: You can delete external apps even when some people are using it as auth method - Bug 1962425: Upgrade Fontawesome from 5.8.1 to 6.1.1 - Bug 1968769: SmartEvidence status summary information - Bug 1968770: SmartEvidence report - Bug 1968773: Improve UX for sign-off and verification - Bug 1968800: Move account holders in bulk via CSV into another institution - Bug 1969843: Swap 'Settings' button for 'Display page' button on page settings page - Bug 1971106: Add a masquerade link to people search - Bug 1971239: Change the name display order on Profile page according to language usage. - Bug 1971510: Add 'Quick edit' options to PDF, files to download, course completion blocks - Bug 1972050: Change the name display order on "People search" page and "Add a person" page according to language usage. - Bug 1976408: PHP 8 Compatibility: root dir / misc - Bug 1976410: PHP 8 Compatibility: auth - Bug 1976411: PHP 8 Compatibility: Blocktype - Bug 1976414: PHP 8 Compatibility: admin - Bug 1976416: PHP 8 Compatibility: api - Bug 1976417: PHP 8 Compatibility: artefact - Bug 1976418: PHP 8 Compatibility: export - Bug 1976419: PHP 8 Compatibility: grouptype - Bug 1976420: PHP 8 Compatibility: import - Bug 1976421: PHP 8 Compatibility: interaction - Bug 1976422: PHP 8 Compatibility: json - Bug 1976423: PHP 8 Compatibility: lib - Bug 1976424: PHP 8 Compatibility: module - Bug 1976426: PHP 8 Compatibility: search - Bug 1976428: PHP 8 Compatibility: skin - Bug 1976429: PHP 8 Compatibility: testing - Bug 1976430: PHP 8 Compatibility: theme - Bug 1976431: PHP 8 Compatibility: user - Bug 1976432: PHP 8 Compatibility: webservice - Bug 1978022: Update get_affiliation_map() to check for a local class method - Bug 1978425: Change site registration to opt-out - Bug 1979151: Use the theme-color option for a Mahara theme - Bug 1979372: The 'show more' pagination needs to be a bit more flexible - Bug 1982294: Accessibility: ability to write alt text that is different to file description text for images - Bug 1982298: UX: Make the 'Return to pages and collections' button also available in 'Display' mode. - Bug 1983430: Make changes to LTI Advantage to work with Moodle - Bug 1984140: PHP 8 Compatibility: phan - Bug 1986994: Display institution support administrators on the institution overview page - Bug 1987718: Add customisations.md file to capture customisations - Bug 1989388: Allow the LTI/LTI_Advantage to process the 'lis_person_sourcedid' as a remoteusername - Bug 1989397: Allow partial institution mapping in SAML for affiliate email - Bug 1992702: Allow a certain style attribute in HTMLPurifier (for Canva iframe and others) 22.04.3 (2022-11-01) - Bug 1991157: Certain embedded images can be accessed without login - Bug 1979575: Vulnerable PDF can trigger remote shell with PDF export and ghostscript - Bug 1958297: Submissions list shows 'Account deleted' entries with link to account that is gone - Bug 1969548: Export not working with MySQL8 - Bug 1969712: Can't access 2nd 'Show more' in block configuration with keyboard - Bug 1971702: Unable to configure mnet - Bug 1972922: Need separate string for revoked LTI submissions - Bug 1973479: Secret URL not working when page is submitted - Bug 1975428: SAML is removing people from institutions when it shouldn't - Bug 1975753: Plans js error - Uncaught ReferenceError: findButtonDataUrls is not defined - Bug 1977892: Cannot access 'Add block' button via keyboard - Bug 1978300: Mahara 22.04 upgrade fails due to missing use of dbprefix syntax - Bug 1978425: Change site registration to opt-out - Bug 1982520: Error with old block configdata - Bug 1982803: Wrong email footer - Bug 1983308: Public group homepage / forum not viewable - Bug 1985857: If a portfolio is shared and made copyable then it's page theme disappears - Bug 1987027: MNet failing to set parent auth correctly when creating account via MNet - Bug 1987354: Sharing permissions for institution removed when editing institution collection details - Bug 1988096: Add nvm support - Bug 1988692: Badgr API has changed and badges not displaying anymore - Bug 1969717: Unable to select a skin for a page with the keyboard - Bug 1973639: npm install fails on newer version (12+) of node - Bug 1979921: Potential issue with artefact chooser and getting group artefacts - Bug 1980291: file_cleanup_old_temp_files() causing an error - Bug 1988005: Groups containing collections with cover images cannot be deleted - Bug 1992312: embededurls.php doesn't handle protocolless URLs - Bug 1991864: Badgr token reset message fix - Bug 1994439: Remove the deprecated --no-alias tag on nvm check - Bug 1964847: Resume section: second file dropzone not visible due to repeated ids 22.04.2 (2022-06-16) - Bug 1978520: Files are accessible publicly through thumb.php - Bug 1971517: Can't submit portfolio via LTI 1.1 - Bug 1971639: webservices need to check match in lowecase at both ends - Bug 1971651: PDF export gives foreach error if page has no blocks on it - Bug 1968758: Typo in a support admin lang string - Bug 1970693: module_submissions: Missing language string 22.04.1 (2022-05-02) - Bug 1970680: Upgrade fails when LTI not installed - Bug 1971110: Adding block with underscore can cause problemsPKXe[Ed" " import.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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[ notes.txtnu[Install Manually on Webuzo on PHP version mentioned in the PHP REQUIREMENT LINK. 1. Edit config.php file before runing the installer - $cfg->dbtype = 'mysql'; - Add $cfg->dbprefix = ''; (Removed since v16.04.0, check in the version for the same) - Fill database details - also edit $cfg->dataroot - Run the installer. 2. When you create database choose utf8mb4_unicode_ci in manual installation. 3. Delete all the contents and folders in the sub-directories of the data.zip i.e. keep only the empty folders in root directory (NOT NEEDED NOW BCOZ OF NEW METHOD) 4. We have added alter query in install.php to set collation to UTF8 7. Change the " to ` in the Trigger statements in the SQL file. (NOT NEEDED NOW BCOZ OF NEW METHOD) 8. This might not work on AMPPS and Webuzo because the database user does not have Trigger permissions.(Removed this from version 1.9.1, as its working fine on both now.) 9. Change the value of `passwordchange` field in the `usr` table to 0 so that it does not ask for a password change after the first login. (NOT NEEDED NOW BCOZ OF NEW METHOD) 10. Please go through the /lib/upgrade.php requirements at every new release. 11. We always un-comment the $cfg->passwordsaltmain and also $cfg->urlsecret in "config.php". 12. Copy upgrade.php from lib folder and keep as org_upgrade.php and our changes in mod_upgrade.php 13.PHP REQUIREMENT LINK : https://github.com/MaharaProject/mahara/tree/22.04.0_RELEASE#system-requirements 14. We were facing issue in 18.10.0. Vendor asked us to add patch to resolve issue. (https://bugs.launchpad.net/mahara/+bug/1799933) 15. We have kept MYSQL requirement as 5.7.0 in info.xml as on MYSQL 5.6 we get key size issue while manual installation i.e mentioned in link : https://bugs.launchpad.net/mahara/+bug/1909116 16. Always configure site_name in mod_upgrade.php, since we have used it in install.xml. 17. We have disabled autoupgrade in 22.04.0 version since it required to delete all the files of previous version. Enable it in next minor version. (Enabled auto upgrade from 22.04.1) https://wiki.mahara.org/wiki/System_Administrator%27s_Guide/Upgrading_Mahara 18. In every major version check upgrade notes and modify our upgrade.php accordingly.PKXe[ӨNN upgrade.xmlnu[ admin/upgrade.php hidden 1 config.php PKXe['eggmod_upgrade.phpnu[ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU GPL version 3 or later * @copyright For copyright information on Mahara, please see the README file distributed with this software. * */ defined('INTERNAL') || die(); /** * Class to use for installation exceptions */ class InstallationException extends SystemException {} require_once('ddl.php'); /** * This function checks core and plugins for which need to be upgraded/installed * * Note: This function is sometimes executed during upgrades from * ancient databases. Avoid rash assumptions about what's installed * or these upgrades may fail. * * @param string $name The name of the plugin to check. If no name is specified, * all plugins are checked. * @return mixed If a name is specified, an object will be returned with upgrade data * about the requested component (which can be "core", "local", or a plugin). * If the component desn't need to be updated, an empty array will be returned. * If no name is specified, an array of such objects will be returned. * It will also include an array key "settings", which will be an array * that may contain metadata about the upgrade/install process. */ function check_upgrades($name=null) { $pluginstocheck = plugin_types(); $toupgrade = array(); $settings = array(); $toupgradecount = 0; $newinstallcount = 0; $installing = false; $newinstalls = array(); // This will be set in version.php below. $config = new stdClass(); require('version.php'); // check core first... if (empty($name) || $name == 'core') { try { $coreversion = get_config('version'); } catch (Exception $e) { $coreversion = 0; } $corerelease = get_config('release'); $core = new stdClass(); $core->to = $config->version; $core->torelease = $config->release; $core->toseries = $config->series; $toupgrade['core'] = $core; if (empty($coreversion)) { if (is_mysql()) { // Show a more informative error message if using mysql with skip-innodb // In MySQL 5.6.x, we run the command 'SHOW ENGINES' to check if InnoDB is enabled or not global $db; $result = $db->Execute("SHOW ENGINES"); $hasinnodb = false; while (!$result->EOF) { if ($result->fields['Engine'] == 'InnoDB' && ($result->fields['Support'] == 'YES' || $result->fields['Support'] == 'DEFAULT')) { $hasinnodb = true; break; } $result->MoveNext(); } if (!$hasinnodb) { throw new ConfigSanityException("Mahara requires InnoDB tables. Please ensure InnoDB tables are enabled in your MySQL server."); } } $core->install = true; $installing = true; } else if ($config->version > $coreversion) { if (isset($config->minupgradefrom) && isset($config->minupgraderelease) && $coreversion < $config->minupgradefrom) { throw new ConfigSanityException("Must upgrade to $config->minupgradefrom " . "($config->minupgraderelease) first " . " (you have $coreversion ($corerelease)"); } $toupgradecount ++; $core->upgrade = true; $core->from = $coreversion; $core->fromrelease = $corerelease; } else if ($config->version < $coreversion) { // Core can't be upgraded. Remove it from the list! unset($toupgrade['core']); if (get_config('productionmode')) { throw new ConfigSanityException("Database version of Mahara $corerelease ($coreversion) is newer " . "than files version $config->release ($config->version). " . "Please make sure you have the correct Mahara files in place."); } else { if (!defined('SITEOUTOFSYNC')) { define('SITEOUTOFSYNC', 'core'); } } } else { // Core doesn't need to be upgraded. Remove it from the list! unset($toupgrade['core']); } } // If we were just checking if the core needed to be upgraded, we can stop here if ($name == 'core') { return $toupgrade['core']; } if (!$installing && (empty($name) || $name == 'local')) { $localversion = get_config('localversion'); $localrelease = get_config('localrelease'); if (is_null($localversion)) { $localversion = 0; $localrelease = 0; } $config = new stdClass(); require(get_config('docroot') . 'local/version.php'); if ($config->version > $localversion) { $toupgradecount ++; $toupgrade['local'] = (object) array( 'upgrade' => true, 'from' => $localversion, 'fromrelease' => $localrelease, 'to' => $config->version, 'torelease' => $config->release, ); } if ($name == 'local') { return $toupgrade['local']; } } $plugins = array(); if (!empty($name)) { try { $bits = explode('.', $name); $pt = $bits[0]; $pn = $bits[1]; $pp = null; if ($pt == 'blocktype' && strpos($pn, '/') !== false) { $bits = explode('/', $pn); $pp = get_config('docroot') . 'artefact/' . $bits[0] . '/blocktype/' . $bits[1]; } validate_plugin($pt, $pn, $pp); $plugins[] = explode('.', $name); } catch (InstallationException $_e) { log_warn(get_string('pluginnotinstallable', 'mahara', $pt, $pn) . $_e->GetMessage()); } } else { foreach ($pluginstocheck as $plugin) { $dirhandle = opendir(get_config('docroot') . $plugin); while (false !== ($dir = readdir($dirhandle))) { if (strpos($dir, '.') === 0 or 'CVS' == $dir) { continue; } $plugin_dir = get_config('docroot') . $plugin . '/' . $dir; if (!is_dir($plugin_dir)) { continue; } try { validate_plugin($plugin, $dir); $plugins[] = array($plugin, $dir); } catch (InstallationException $_e) { log_warn(get_string('pluginnotinstallable', 'mahara', $plugin, $dir) . $_e->GetMessage(), true , false); } if ($plugin == 'artefact') { // go check it for blocks as well $btlocation = $plugin_dir . '/blocktype'; if (!is_dir($btlocation)) { continue; } $btdirhandle = opendir($btlocation); while (false !== ($btdir = readdir($btdirhandle))) { if (strpos($btdir, '.') === 0 or 'CVS' == $btdir) { continue; } if (!is_dir(get_config('docroot') . $plugin . '/' . $dir . '/blocktype/' . $btdir)) { continue; } $plugins[] = array('blocktype', $dir . '/' . $btdir); } } } } } $outofsyncplugins = array(); foreach ($plugins as $plugin) { $plugintype = $plugin[0]; $pluginname = $plugin[1]; $pluginpath = "$plugin[0]/$plugin[1]"; $pluginkey = "$plugin[0].$plugin[1]"; if ($plugintype == 'blocktype' && strpos($pluginname, '/') !== false) { // sigh.. we're a bit special... $bits = explode('/', $pluginname); $pluginpath = 'artefact/' . $bits[0] . '/blocktype/' . $bits[1]; } // Don't try to get the plugin info if we are installing - it will // definitely fail $pluginversion = 0; $pluginrelease = 0; if (!$installing && table_exists(new XMLDBTable($plugintype . '_installed'))) { if ($plugintype == 'blocktype' && strpos($pluginname, '/')) { $bits = explode('/', $pluginname); $installed = get_record('blocktype_installed', 'name', $bits[1], 'artefactplugin', $bits[0]); } else { $installed = get_record($plugintype . '_installed', 'name', $pluginname); } if ($installed) { $pluginversion = $installed->version; $pluginrelease = $installed->release; } } $config = new stdClass(); require(get_config('docroot') . $pluginpath . '/version.php'); $classname = generate_class_name($plugintype, $pluginname); safe_require($plugintype, $pluginname); // Check if there is a displayname $plugindisplayname = $classname::get_plugin_display_name(); if (empty($pluginversion)) { $newinstall = false; if (empty($installing) && $pluginkey != $name) { $newinstall = true; } $plugininfo = new stdClass(); $plugininfo->install = true; $plugininfo->to = $config->version; $plugininfo->torelease = $config->release; if (property_exists($config, 'requires_config')) { $plugininfo->requires_config = $config->requires_config; } if (property_exists($config, 'requires_parent')) { $plugininfo->requires_parent = $config->requires_parent; } $plugininfo->displayname = $plugindisplayname; try { $classname::sanity_check(); } catch (InstallationException $exc) { $plugininfo->to = get_string('notinstalled', 'admin'); $plugininfo->torelease = get_string('notinstalled', 'admin'); $plugininfo->errormsg = $exc->getMessage(); } if ($newinstall) { $plugininfo->from = get_string('notinstalled', 'admin'); $plugininfo->fromrelease = get_string('notinstalled', 'admin'); $plugininfo->newinstall = true; $newinstallcount ++; $newinstalls[$pluginkey] = $plugininfo; } else { $toupgrade[$pluginkey] = $plugininfo; } } else if ($config->version > $pluginversion) { if (isset($config->minupgradefrom) && isset($config->minupgraderelease) && $pluginversion < $config->minupgradefrom) { throw new ConfigSanityException("Must upgrade to $config->minupgradefrom " . " ($config->minupgraderelease) first " . " (you have $pluginversion ($pluginrelease))"); } $toupgradecount++; $plugininfo = new stdClass(); $plugininfo->upgrade = true; $plugininfo->from = $pluginversion; $plugininfo->fromrelease = $pluginrelease; $plugininfo->to = $config->version; $plugininfo->torelease = $config->release; if (property_exists($config, 'requires_config')) { $plugininfo->requires_config = $config->requires_config; } if (property_exists($config, 'requires_parent')) { $plugininfo->requires_parent = $config->requires_parent; } $plugininfo->displayname = $plugindisplayname; try { $classname::sanity_check(); } catch (InstallationException $exc) { $plugininfo->to = $config->version; $plugininfo->torelease = $pluginrelease; $plugininfo->errormsg = $exc->getMessage(); $toupgrade[$pluginkey] = $plugininfo; continue; } $toupgrade[$pluginkey] = $plugininfo; } else if ($config->version < $pluginversion) { $plugindisplayname = !empty($plugindisplayname) ? $plugindisplayname : (!empty($config->name) ? $config->name : $pluginpath); if (get_config('productionmode')) { throw new ConfigSanityException("Database version of Mahara plugin " . $plugindisplayname . " " . $pluginrelease . " (" . $pluginversion . ") is newer " . "than files version " . $config->release . " (" . $config->version . "). " . "Please make sure you have the correct Mahara plugin files in place."); } else { $outofsyncplugins[] = $plugindisplayname; } } } if (!empty($outofsyncplugins)) { if (!defined('SITEOUTOFSYNC')) { define('SITEOUTOFSYNC', implode(', ', $outofsyncplugins)); } } // if we've just asked for one, don't return an array... if (!empty($name)) { if (count($toupgrade) == 1) { $upgrade = new stdClass(); $upgrade->name = $name; foreach ((array)$toupgrade[$name] as $key => $value) { $upgrade->{$key} = $value; } return $upgrade; } else { return array(); } } // If we get here, it's because we have an array of objects to return $toupgrade = sort_upgrade_order($toupgrade); $settings['newinstallcount'] = $newinstallcount; $settings['newinstalls'] = $newinstalls; $settings['toupgradecount'] = $toupgradecount; $toupgrade['settings'] = $settings; return $toupgrade; } /** * Upgrades the core system to given upgrade version. * * @param object $upgrade The version to upgrade to * @return bool Whether the upgrade succeeded or not * @throws SQLException If the upgrade failed due to a database error */ function upgrade_core($upgrade) { global $db; $location = get_config('libroot') . 'db/'; db_begin(); if (!empty($upgrade->install)) { install_from_xmldb_file($location . 'install.xml'); } else { require_once($location . 'upgrade.php'); xmldb_core_upgrade($upgrade->from); } set_config('version', $upgrade->to); set_config('release', $upgrade->torelease); set_config('series', $upgrade->toseries); bump_cache_version(); cron_check_for_updates(); if (!empty($upgrade->install)) { core_postinst(); } db_commit(); return true; } /** * Upgrades local customisations. * * @param object $upgrade The version to upgrade to * @return bool Whether the upgrade succeeded or not * @throws SQLException If the upgrade failed due to a database error */ function upgrade_local($upgrade) { db_begin(); require_once(get_config('docroot') . 'local/upgrade.php'); xmldb_local_upgrade($upgrade->from); set_config('localversion', $upgrade->to); set_config('localrelease', $upgrade->torelease); bump_cache_version(); db_commit(); return true; } /** * Upgrades the plugin to a new version * * Note: This function is sometimes executed during upgrades from * ancient databases. Avoid rash assumptions about what's installed * or these upgrades may fail. * * @param object $upgrade Information about the plugin to upgrade * @return bool Whether the upgrade succeeded or not * @throws SQLException If the upgrade failed due to a database error */ function upgrade_plugin($upgrade) { global $db; $plugintype = ''; $pluginname = ''; list($plugintype, $pluginname) = explode('.', $upgrade->name); if ($plugintype == 'blocktype' && strpos($pluginname, '/') !== false) { list($artefactplugin, $blocktypename) = explode('/', $pluginname); $location = get_config('docroot') . 'artefact/' . $artefactplugin . '/blocktype/' . $blocktypename . '/db/'; $function = 'xmldb_' . $plugintype . '_' . $blocktypename . '_upgrade'; } else { $location = get_config('docroot') . $plugintype . '/' . $pluginname . '/db/'; $function = 'xmldb_' . $plugintype . '_' . $pluginname . '_upgrade'; } db_begin(); if (!empty($upgrade->install)) { if (is_readable($location . 'install.xml')) { install_from_xmldb_file($location . 'install.xml'); } } else { if (is_readable($location . 'upgrade.php')) { require_once($location . 'upgrade.php'); if (!$function($upgrade->from)) { throw new InstallationException("Failed to run " . $function . " (check logs for errors)"); } } } $installed = new stdClass(); $installed->name = $pluginname; $installed->version = $upgrade->to; $installed->release = $upgrade->torelease; if ($plugintype == 'blocktype') { if (!empty($blocktypename)) { $installed->name = $blocktypename; } if (!empty($artefactplugin)) { // blocks come from artefactplugins. $installed->artefactplugin = $artefactplugin; } } if (property_exists($upgrade, 'requires_config')) { $installed->requires_config = $upgrade->requires_config; } if (property_exists($upgrade, 'requires_parent')) { $installed->requires_parent = $upgrade->requires_parent; } $installtable = $plugintype . '_installed'; if (!empty($upgrade->install)) { insert_record($installtable,$installed); } else { update_record($installtable, $installed, 'name'); } bump_cache_version(); // postinst stuff... safe_require($plugintype, $pluginname); $pcname = generate_class_name($plugintype, $installed->name); if ($crons = $pcname::get_cron()) { foreach ($crons as $cron) { $cron = (object)$cron; if (empty($cron->callfunction)) { throw new InstallationException("cron for $pcname didn't supply function name"); } if (!is_callable(array($pcname, $cron->callfunction))) { throw new InstallationException("cron $cron->callfunction for $pcname supplied but wasn't callable"); } $new = false; $table = $plugintype . '_cron'; if (!empty($upgrade->install)) { $new = true; } else if (!record_exists($table, 'plugin', $pluginname, 'callfunction', $cron->callfunction)) { $new = true; } $cron->plugin = $pluginname; if (!empty($new)) { insert_record($table, $cron); } else { update_record($table, $cron, array('plugin', 'callfunction')); } } } if ($events = $pcname::get_event_subscriptions()) { foreach ($events as $event) { $event = (object)$event; if (!record_exists('event_type', 'name', $event->event)) { throw new InstallationException("event $event->event for $pcname doesn't exist!"); } if (empty($event->callfunction)) { throw new InstallationException("event $event->event for $pcname didn't supply function name"); } if (!is_callable(array($pcname, $event->callfunction))) { throw new InstallationException("event $event->event with function $event->callfunction for $pcname supplied but wasn't callable"); } $exists = false; $table = $plugintype . '_event_subscription'; $block = blocktype_namespaced_to_single($pluginname); if (empty($upgrade->install)) { $exists = get_record($table, 'plugin' , $block, 'event', $event->event); } $event->plugin = $block; if (empty($exists)) { insert_record($table, $event); } else { update_record($table, $event, array('id' => $exists->id)); } } } if ($activities = $pcname::get_activity_types()) { foreach ($activities as $activity) { $classname = 'ActivityType' . ucfirst($plugintype) . ucfirst($pluginname) . ucfirst($activity->name); if (!class_exists($classname)) { throw new InstallationException(get_string('classmissing', 'error', $classname, $pluginname, $plugintype)); } // Add activity_type if it doesn't exist if (!get_record('activity_type', 'name', $activity->name, 'plugintype', $plugintype, 'pluginname', $pluginname)) { $activity->plugintype = $plugintype; $activity->pluginname = $pluginname; $activity->defaultmethod = get_config('defaultnotificationmethod') ? get_config('defaultnotificationmethod') : $activity->defaultmethod; $where = (object) array( 'name' => $activity->name, 'plugintype' => $plugintype, 'pluginname' => $pluginname, ); ensure_record_exists('activity_type', $where, $activity); } } } // install artefact types if ($plugintype == 'artefact') { if (!is_callable(array($pcname, 'get_artefact_types'))) { throw new InstallationException("Artefact plugin $pcname must implement get_artefact_types and doesn't"); } $types = $pcname::get_artefact_types(); $ph = array(); if (is_array($types)) { // Check for missing plugins - don't try to remove their data. // Bugs 505732 and 1287344. $used_types = get_records_sql_assoc("SELECT t.name, count(a.id) ct, t.plugin FROM {artefact_installed_type} t LEFT JOIN {artefact} a ON t.name = a.artefacttype GROUP BY t.name HAVING count(a.id) > 0 AND plugin = '$pluginname'"); if ($used_types === FALSE) { $used_types = array(); } foreach ($types as $type) { $ph[] = '?'; if (!record_exists('artefact_installed_type', 'plugin', $pluginname, 'name', $type)) { $t = new stdClass(); $t->name = $type; $t->plugin = $pluginname; insert_record('artefact_installed_type',$t); } if (isset($used_types[$type])) { unset($used_types[$type]); } } foreach ($used_types as $type) { $ph[] = '?'; } $used_types = array_keys($used_types); $select = '(plugin = ? AND name NOT IN (' . implode(',', $ph) . '))'; delete_records_select('artefact_installed_type', $select, array_merge(array($pluginname),$types,$used_types)); if (!empty($used_types)) { log_warn('Plugin for artefact type(s) "' . implode('", "', $used_types) . '" has gone away', true, false); } } } // install blocktype categories. if ($plugintype == 'blocktype' && get_config('installed')) { install_blocktype_categories_for_plugin($pluginname); install_blocktype_viewtypes_for_plugin($pluginname); } $prevversion = (empty($upgrade->install)) ? $upgrade->from : 0; $pcname::postinst($prevversion); db_commit(); return true; } function core_postinst() { // Attempt to create session directories $sessionpath = get_config('sessionpath'); $status = Session::create_directory_levels($sessionpath); $now = db_format_timestamp(time()); // Set default search plugin set_config('searchplugin', 'internal'); set_config('lang', get_accept_lang()); set_config('installation_key', get_random_key()); set_config('installation_time', $now); set_config('stats_installation_time', $now); set_config('passwordpolicy', '8_ulns'); // Pre-define SMTP settings set_config('smtphosts', ''); set_config('smtpport', ''); set_config('smtpuser', ''); set_config('smtppass', ''); set_config('smtpsecure', ''); // XMLDB adds a table's keys immediately after creating the table. Some // foreign keys therefore cannot be created during the XMLDB installation, // because they refer to tables created later in the installation. These // missing keys can be created now that all the core tables exist. $table = new XMLDBTable('usr'); $key = new XMLDBKey('profileiconfk'); $key->setAttributes(XMLDB_KEY_FOREIGN, array('profileicon'), 'artefact', array('id')); add_key($table, $key); $table = new XMLDBTable('institution'); $key = new XMLDBKey('logofk'); $key->setAttributes(XMLDB_KEY_FOREIGN, array('logo'), 'artefact', array('id')); add_key($table, $key); // PostgreSQL supports indexes over functions of columns, MySQL does not. // We make use if this if we can if (is_postgres()) { // Improve the username index execute_sql('DROP INDEX {usr_use_uix}'); execute_sql('CREATE UNIQUE INDEX {usr_use_uix} ON {usr}(LOWER(username))'); // Add user search indexes // Postgres only. We could create non-lowercased indexes in MySQL, but // they would not be useful, and would require a change to varchar columns. execute_sql('CREATE INDEX {usr_fir_ix} ON {usr}(LOWER(firstname))'); execute_sql('CREATE INDEX {usr_las_ix} ON {usr}(LOWER(lastname))'); execute_sql('CREATE INDEX {usr_pre_ix} ON {usr}(LOWER(preferredname))'); execute_sql('CREATE INDEX {usr_ema_ix} ON {usr}(LOWER(email))'); execute_sql('CREATE INDEX {usr_stu_ix} ON {usr}(LOWER(studentid))'); // Only one profile view per user execute_sql("CREATE UNIQUE INDEX {view_own_type_uix} ON {view}(owner) WHERE type = 'profile'"); } // Some more advanced constraints. XMLDB can't handle this in its xml file format execute_sql('ALTER TABLE {artefact} ADD CHECK ( (owner IS NOT NULL AND "group" IS NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NOT NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NULL AND institution IS NOT NULL) )'); execute_sql('ALTER TABLE {view} ADD CHECK ( (owner IS NOT NULL AND "group" IS NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NOT NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NULL AND institution IS NOT NULL) )'); execute_sql('ALTER TABLE {artefact} ADD CHECK ( (author IS NOT NULL AND authorname IS NULL ) OR (author IS NULL AND authorname IS NOT NULL) )'); execute_sql('ALTER TABLE {view_access} ADD CHECK ( (accesstype IS NOT NULL AND "group" IS NULL AND usr IS NULL AND token IS NULL AND institution IS NULL) OR (accesstype IS NULL AND "group" IS NOT NULL AND usr IS NULL AND token IS NULL AND institution IS NULL) OR (accesstype IS NULL AND "group" IS NULL AND usr IS NOT NULL AND token IS NULL AND institution IS NULL) OR (accesstype IS NULL AND "group" IS NULL AND usr IS NULL AND token IS NOT NULL AND institution IS NULL) OR (accesstype IS NULL AND "group" IS NULL AND usr IS NULL AND token IS NULL AND institution IS NOT NULL) )'); execute_sql('ALTER TABLE {collection} ADD CHECK ( (owner IS NOT NULL AND "group" IS NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NOT NULL AND institution IS NULL) OR (owner IS NULL AND "group" IS NULL AND institution IS NOT NULL) )'); set_antispam_defaults(); reload_html_filters(); // Default set of sites from which iframe content can be embedded // See also the postinst() function in plugins for other valid iframes // by searching for 'iframe_source_icon' $iframesources = array( 'www.youtube.com/embed/' => 'YouTube', 'player.vimeo.com/video/' => 'Vimeo', 'www.slideshare.net/slideshow/embed_code/' => 'SlideShare', 'www.glogster.com/glog/' => 'Glogster', 'www.glogster.com/glog.php' => 'Glogster', 'edu.glogster.com/glog/' => 'Glogster', 'edu.glogster.com/glog.php' => 'Glogster', 'wikieducator.org/index.php' => 'WikiEducator', 'voki.com/php/' => 'Voki', ); $iframedomains = array( 'YouTube' => 'www.youtube.com', 'Vimeo' => 'vimeo.com', 'SlideShare' => 'www.slideshare.net', 'Glogster' => 'www.glogster.com', 'WikiEducator' => 'wikieducator.org', 'Voki' => 'voki.com', ); update_safe_iframes($iframesources, $iframedomains); require_once(get_config('docroot') . 'lib/file.php'); update_magicdb_path(); return $status; } function core_install_lastcoredata_defaults() { global $USER; db_begin(); $institution = new stdClass(); $institution->name = 'mahara'; $institution->displayname = 'No Institution'; $institution->authplugin = 'internal'; $institution->theme = 'default'; $institution->priority = 0; insert_record('institution', $institution); $auth_instance = new stdClass(); $auth_instance->instancename = 'Internal'; $auth_instance->priority='1'; $auth_instance->institution = 'mahara'; $auth_instance->authname = 'internal'; $auth_instance->active = 1; $auth_instance->id = insert_record('auth_instance', $auth_instance, 'id', true); // Insert the root user $userid = 0; $user = new stdClass(); $user->id = $userid; $user->username = 'root'; $user->password = '*'; $user->salt = '*'; $user->firstname = 'System'; $user->lastname = 'User'; $user->email = 'root@example.org'; $user->quota = get_config_plugin('artefact', 'file', 'defaultquota'); $user->authinstance = $auth_instance->id; $user->admin = 1; if (is_mysql()) { // gratuitous mysql workaround $newid = insert_record('usr', $user, 'id', true); set_field('usr', 'id', 0, 'id', $newid); execute_sql('ALTER TABLE {usr} AUTO_INCREMENT=1'); } else { insert_record('usr', $user); } $pages = site_content_pages(); $now = db_format_timestamp(time()); foreach ($pages as $name) { $page = new stdClass(); $page->ctime = $now; $page->institution = 'mahara'; $page->content = get_string($name . 'defaultcontent', 'install', get_string('staticpageconfigdefaults', 'install', get_config('wwwroot') . 'admin/site/pages.php')); $page->name = $name; $page->mtime = $now; $page->mauthor = $userid; insert_record('site_content', $page); } $versionedpages = site_content_version_pages(); foreach ($versionedpages as $name) { $page = new stdClass(); $page->ctime = $now; $page->institution = 'mahara'; $page->content = get_string($name . 'defaultcontent', 'install', get_string('versionedpageconfigdefault', 'install', get_config('wwwroot') . 'admin/site/privacy.php?fs=' . $name)); $page->type = $name; $page->author = $userid; $page->version = '1.0'; insert_record('site_content_version', $page); } require_once('group.php'); install_system_profile_view(); install_system_dashboard_view(); install_system_grouphomepage_view(); require_once('view.php'); install_system_portfolio_view(); install_system_progress_view(); require_once('license.php'); install_licenses_default(); require_once('skin.php'); install_skins_default(); install_auth_default(); // Remove admin privs from root user as it doesn't need it now $user->admin = 0; update_record('usr', $user, array('id' => 0)); // Insert the admin user $user = new stdClass(); $user->username = 'admin'; $user->salt = auth_get_random_salt(); $user->password = crypt('[[admin_pass]]', '$2a$' . get_config('bcrypt_cost') . '$' . substr(md5(get_config('passwordsaltmain') . $user->salt), 0, 22)); $user->password = substr($user->password, 0, 7) . substr($user->password, 7+22); $user->authinstance = $auth_instance->id; $user->passwordchange = 0; $user->admin = 1; $user->firstname = '[[admin_fname]]'; $user->lastname = '[[admin_lname]]'; $user->email = '[[admin_email]]'; $user->quota = get_config_plugin('artefact', 'file', 'defaultquota'); $user->ctime = db_format_timestamp(time()); $user->id = insert_record('usr', $user, 'id', true); set_profile_field($user->id, 'email', $user->email); set_profile_field($user->id, 'firstname', $user->firstname); set_profile_field($user->id, 'lastname', $user->lastname); // Accept the user privacy agreement on install $sitecontentid = get_field('site_content_version', 'id', 'type', 'privacy', 'institution', 'mahara'); save_user_reply_to_agreement($user->id, $sitecontentid, 1); // Accept the user T&C on install $sitecontentid = get_field('site_content_version', 'id', 'type', 'termsandconditions', 'institution', 'mahara'); save_user_reply_to_agreement($user->id, $sitecontentid, 1); handle_event('createuser', $user, array('password')); activity_add_admin_defaults(array($user->id)); db_commit(); // if we're installing, set up the block categories here and then poll the plugins. // if we're upgrading this happens somewhere else. This is because of dependency issues around // the order of installation stuff. install_blocktype_extras(); // Setting user access roles for content block access $table = new XMLDBTable('usr_access_roles'); $roles = array('peer' => 0, 'manager' => 1, 'peermanager' => 1, 'verifier' => 1); foreach ($roles as $role => $state) { $obj = new stdClass(); $obj->role = $role; $obj->see_block_content = $state; insert_record('usr_access_roles', $obj); } } function core_install_firstcoredata_defaults() { // Install the default institution db_begin(); set_config('session_timeout', 86400); set_config('sitename', '[[site_name]]'); set_config('defaultregistrationexpirylifetime', 1209600); set_config('defaultaccountinactivewarn', 604800); set_config('creategroups', 'all'); set_config('createpublicgroups', 'all'); set_config('allowpublicviews', 1); set_config('allowpublicprofiles', 1); set_config('allowanonymouspages', 0); set_config('generatesitemap', 1); set_config('showselfsearchsideblock', 0); set_config('showtagssideblock', 1); set_config('tagssideblockmaxtags', 20); set_config('usersallowedmultipleinstitutions', 1); set_config('userscanchooseviewthemes', 0); set_config('anonymouscomments', 1); set_config('homepageinfo', 1); set_config('showonlineuserssideblock', 1); set_config('footerlinks', serialize(array('legal', 'about', 'contactus', 'manualhelp'))); set_config('nousernames', 0); set_config('showstudentid', 0); set_config('onlineuserssideblockmaxusers', 10); set_config('loggedinprofileviewaccess', 1); set_config('dropdownmenu', 0); // Set this to a random starting number to make minor version slightly harder to detect set_config('cacheversion', rand(1000, 9999)); set_config('allowcommentsbydefault', 1); // install the applications $app = new stdClass(); $app->name = 'mahara'; $app->displayname = 'Mahara'; $app->xmlrpcserverurl = '/api/xmlrpc/server.php'; $app->ssolandurl = '/auth/xmlrpc/land.php'; insert_record('application', $app); $app->name = 'moodle'; $app->displayname = 'Moodle'; $app->xmlrpcserverurl = '/mnet/xmlrpc/server.php'; $app->ssolandurl = '/auth/mnet/land.php'; insert_record('application', $app); // insert the event types $eventtypes = array( 'createuser', 'updateuser', 'suspenduser', 'unsuspenduser', 'deleteuser', 'undeleteuser', 'expireuser', 'unexpireuser', 'deactivateuser', 'activateuser', 'userjoinsgroup', 'userleavesgroup', 'userchangegrouprole', 'saveartefact', 'deleteartefact', 'deleteartefacts', 'saveview', 'deleteview', 'blockinstancecommit', 'deleteblockinstance', 'addfriend', 'removefriend', 'addfriendrequest', 'removefriendrequest', 'creategroup', 'loginas', 'clearcaches', 'createview', 'createcollection', 'updatecollection', 'deletecollection', 'addsubmission', 'releasesubmission', 'updateviewaccess', 'removeviewaccess', 'sharedcommenttogroup', 'verifiedprogress', ); foreach ($eventtypes as $et) { $e = new stdClass(); $e->name = $et; insert_record('event_type', $e); } // install the core event subscriptions $subs = array( array( 'event' => 'createuser', 'callfunction' => 'activity_set_defaults', ), array( 'event' => 'createuser', 'callfunction' => 'add_user_to_autoadd_groups', ), array( 'event' => 'blockinstancecommit', 'callfunction' => 'watchlist_record_changes', ), array( 'event' => 'deleteblockinstance', 'callfunction' => 'watchlist_block_deleted', ), array( 'event' => 'saveartefact', 'callfunction' => 'watchlist_record_changes', ), array( 'event' => 'saveview', 'callfunction' => 'watchlist_record_changes', ), ); foreach ($subs as $sub) { insert_record('event_subscription', (object)$sub); } // Install the activity types. Name, admin, delay, allownonemethod, defaultmethod. $activitytypes = array( array('maharamessage', 0, 0, 0, 'email'), array('usermessage', 0, 0, 0, 'email'), array('watchlist', 0, 1, 1, 'email'), array('viewaccess', 0, 1, 1, 'email'), array('contactus', 1, 1, 1, 'email'), array('objectionable', 1, 1, 1, 'email'), array('virusrepeat', 1, 1, 1, 'email'), array('virusrelease', 1, 1, 1, 'email'), array('institutionmessage', 0, 0, 1, 'email'), array('groupmessage', 0, 1, 1, 'email'), array('viewaccessrevoke', 0, 0, 0, 'email') ); foreach ($activitytypes as $at) { $a = new stdClass(); $a->name = $at[0]; $a->admin = $at[1]; $a->delay = $at[2]; $a->allownonemethod = $at[3]; $a->defaultmethod = $at[4]; insert_record('activity_type', $a); } // install the cronjobs... $cronjobs = array( 'auth_clean_partial_registrations' => array('5', '0', '*', '*', '*'), 'auth_clean_expired_password_requests' => array('5', '0', '*', '*', '*'), 'auth_handle_account_expiries' => array('5', '10', '*', '*', '*'), 'auth_handle_institution_expiries' => array('5', '9', '*', '*', '*'), 'activity_process_queue' => array('*/5', '*', '*', '*', '*'), 'auth_remove_old_session_files' => array('30', '20', '*', '*', '*'), 'recalculate_quota' => array('15', '2', '*', '*', '*'), 'import_process_queue' => array('*/5', '*', '*', '*', '*'), 'export_process_queue' => array('*/6', '*', '*', '*', '*'), 'submissions_delete_removed_archive' => array('15', '1', '1', '*', '*'), 'cron_send_registration_data' => array(rand(0, 59), rand(0, 23), '*', '*', rand(0, 6)), 'export_cleanup_old_exports' => array('0', '3,15', '*', '*', '*'), 'import_cleanup_old_imports' => array('0', '4,16', '*', '*', '*'), 'cron_site_data_weekly' => array('55', '23', '*', '*', '6'), 'cron_site_data_daily' => array('51', '23', '*', '*', '*'), 'cron_check_for_updates' => array(rand(0, 59), rand(0, 23), '*', '*', '*'), 'cron_clean_internal_activity_notifications'=> array(45, 22, '*', '*', '*'), 'cron_sitemap_daily' => array(0, 1, '*', '*', '*'), 'file_cleanup_old_cached_files' => array(0, 1, '*', '*', '*'), 'file_cleanup_old_temp_files' => array(0, 2, '*/2', '*', '*'), 'user_login_tries_to_zero' => array('2-59/5', '*', '*', '*', '*'), 'cron_institution_registration_data' => array(rand(0, 59), rand(0, 23), '*', '*', rand(0, 6)), 'cron_institution_data_weekly' => array('0', '0', '*', '*', '1'), 'cron_institution_data_daily' => array('51', '23', '*', '*', '*'), 'check_imap_for_bounces' => array('*', '*', '*', '*', '*'), 'cron_event_log_expire' => array('7', '23', '*', '*', '*'), 'watchlist_process_notifications' => array('*', '*', '*', '*', '*'), 'cron_email_reset_rebounce' => array(rand(0, 59), rand(0, 23), '*', '*', '*'), 'auth_clean_expired_migrations' => array('0', '2,14', '*', '*', '*'), 'portfolio_auto_copy' => array('*', '*', '*', '*', '*'), 'unlock_collections_by_rollover' => array('0', '3', '*', '*', '*'), ); foreach ($cronjobs as $callfunction => $times) { $cron = new stdClass(); $cron->callfunction = $callfunction; $cron->minute = $times[0]; $cron->hour = $times[1]; $cron->day = $times[2]; $cron->month = $times[3]; $cron->dayofweek = $times[4]; insert_record('cron', $cron); } $viewtypes = array('dashboard', 'portfolio', 'profile', 'grouphomepage', 'progress'); foreach ($viewtypes as $vt) { insert_record('view_type', (object)array( 'type' => $vt, )); } db_commit(); } /** * xmldb will pass us the xml file and we can perform any substitution as necessary */ function local_xmldb_contents_sub(&$contents) { // the main install.xml file needs to sub in plugintype tables. $searchstring = ''; if (strstr($contents, $searchstring) === 0) { return; } // ok, we're in the main file and we need to install all the plugin tables // get the basic skeleton structure $plugintables = file_get_contents(get_config('docroot') . 'lib/db/plugintables.xml'); $tosub = ''; foreach (plugin_types() as $plugin) { // any that want their own stuff can put it in docroot/plugintype/lib/db/plugintables.xml //- like auth is a bit special $specialcase = get_config('docroot') . $plugin . '/plugintables.xml'; if (is_readable($specialcase)) { $tosub .= file_get_contents($specialcase) . "\n"; } else { $replaced = ''; // look for tables to put at the start... $pretables = get_config('docroot') . $plugin . '/beforetables.xml'; if (is_readable($pretables)) { $replaced = file_get_contents($pretables) . "\n"; } // perform any additional once off substitutions require_once(get_config('docroot') . $plugin . '/lib.php'); $classname = generate_class_name($plugin); if (method_exists($classname, 'extra_xmldb_substitution')) { $replaced .= $classname::extra_xmldb_substitution($plugintables); } else { $replaced .= $plugintables; } $tosub .= str_replace('__PLUGINTYPE__', $plugin, $replaced) . "\n"; // look for any tables to put at the end.. $extratables = get_config('docroot') . $plugin . '/extratables.xml'; if (is_readable($extratables)) { $tosub .= file_get_contents($extratables) . "\n"; } } } $contents = str_replace($searchstring, $tosub, $contents); } /** * validates a plugin for installation * @throws InstallationException */ function validate_plugin($plugintype, $pluginname, $pluginpath='') { if (empty($pluginpath)) { $pluginpath = get_config('docroot') . $plugintype . '/' . $pluginname; } if (!file_exists($pluginpath . '/version.php')) { throw new InstallationException(get_string('versionphpmissing1', 'error', $plugintype, $pluginname, $pluginname, $pluginpath)); } safe_require($plugintype, $pluginname); $classname = generate_class_name($plugintype, $pluginname); if (!class_exists($classname)) { throw new InstallationException(get_string('classmissing', 'error', $classname, $plugintype, $pluginname)); } require_once(get_config('docroot') . $plugintype . '/lib.php'); $funname = $plugintype . '_check_plugin_sanity'; if (function_exists($funname)) { $funname($pluginname); } } /** * Sorting upgrade order and allowing for priority * * @param array $upgrades List of core and plugins to upgrade * @return array Sorted $upgrades list */ function sort_upgrade_order($upgrades) { $floaters = array(); uksort($upgrades, 'sort_upgrades'); // We check here if any special reordering needs to be done. // Some plugins need to run before others if they are both present. // We set up a $floaters array if there are any matches. if (isset($upgrades['auth.webservice']) && isset($upgrades['module.lti_advantage'])) { $floaters['auth.webservice'] = 'module.lti_advantage'; } if ($floaters) { // A $floater, for example, can look like key ='auth.webservice', value='lti.advantage' and the value is the item // we want to float up the $upgrades list but we do this by sinking // the key down the list. So the key 'auth.webservice' needs to exist as a key in $upgrades higher in the list // than the value 'lti.advantage' exists as a key in $upgrades list before reaching this part. // After this part the 'lti.advantage' key should appear highter than 'auth.webservice' in the $upgrades list. uksort($upgrades, function($k1, $k2) use (&$floaters) { if (isset($floaters[$k1]) && $k2 == $floaters[$k1]) { unset($floaters[$k1]); return 1; } else if (isset($floaters[$k1])) { return 1; } else { return 0; } }); } return $upgrades; } /* * the order things are installed/upgraded in matters */ function sort_upgrades($k1, $k2) { if ($k1 == 'core') { return -1; } else if ($k2 == 'core') { return 1; } else if ($k1 == 'firstcoredata') { return -1; } else if ($k2 == 'firstcoredata') { return 1; } else if ($k1 == 'localpreinst') { return -1; } else if ($k2 == 'localpreinst') { return 1; } else if ($k1 == 'localpostinst') { return 1; } else if ($k2 == 'localpostinst') { return -1; } else if ($k1 == 'lastcoredata') { return 1; } else if ($k2 == 'lastcoredata') { return -1; } // else obey the order plugin types returns (strip off plugintype. from the start) $weight1 = array_search(substr($k1, 0, strpos($k1, '.')), plugin_types()); $weight2 = array_search(substr($k2, 0, strpos($k2, '.')), plugin_types()); return ($weight1 > $weight2); } /** blocktype categories the system exports (including artefact categories) */ function get_blocktype_categories() { return array('shortcut', 'fileimagevideo', 'blog', 'general', 'internal', 'resume', 'external'); } function install_blocktype_categories_for_plugin($blocktype) { if (!safe_require('blocktype', $blocktype, 'lib.php', 'require_once', true)) { // Block has been uninstalled or is missing, so no category data to enter. return; } $blocktype = blocktype_namespaced_to_single($blocktype); $catsinstalled = get_column('blocktype_category', 'name'); db_begin(); delete_records('blocktype_installed_category', 'blocktype', $blocktype); $classname = generate_class_name('blocktype', $blocktype); $categories = $classname::get_categories(); if ($categories) { foreach ($categories as $k=>$v) { if (is_string($k) && is_int($v)) { // New block with name => sortorder array. $cat = $k; $sortorder = $v; } else { // Legacy block with just categories, no sortorders. Give it the default sortorder. $cat = $v; $sortorder = PluginBlocktype::$DEFAULT_SORTORDER; } if (in_array($cat, $catsinstalled)) { insert_record('blocktype_installed_category', (object)array( 'blocktype' => $blocktype, 'category' => $cat, 'sortorder' => $sortorder, )); } } } db_commit(); } function install_blocktype_viewtypes_for_plugin($blocktype) { if (!safe_require('blocktype', $blocktype, 'lib.php', 'require_once', true)) { // Block has been uninstalled or is missing, so no viewtype data to enter. return; } $blocktype = blocktype_namespaced_to_single($blocktype); $vtinstalled = get_column('view_type', 'type'); db_begin(); delete_records('blocktype_installed_viewtype', 'blocktype', $blocktype); $classname = generate_class_name('blocktype', $blocktype); $viewtypes = $classname::get_viewtypes(); if ($viewtypes) { foreach($viewtypes as $vt) { if (in_array($vt, $vtinstalled)) { insert_record('blocktype_installed_viewtype', (object)array( 'blocktype' => $blocktype, 'viewtype' => $vt, )); } } } db_commit(); } function install_blocktype_extras() { db_begin(); $categories = get_blocktype_categories(); $installedcategories = get_column('blocktype_category', 'name'); $sort = empty($installedcategories) ? -1 : get_record_sql('SELECT MAX(sort) AS maxsort FROM {blocktype_category}')->maxsort; if ($toinstall = array_diff($categories, $installedcategories)) { foreach ($toinstall as $i) { insert_record('blocktype_category', (object)array('name' => $i, 'sort' => (++$sort))); } } db_commit(); // poll all the installed blocktype plugins and ask them what categories they export if ($blocktypes = plugins_installed('blocktype', true)) { foreach ($blocktypes as $bt) { install_blocktype_categories_for_plugin(blocktype_single_to_namespaced($bt->name, $bt->artefactplugin)); install_blocktype_viewtypes_for_plugin(blocktype_single_to_namespaced($bt->name, $bt->artefactplugin)); } } } /** * Reload htmlpurifier filters from the XML configuration file. */ function reload_html_filters() { require_once('xmlize.php'); $newlist = xmlize(file_get_contents(get_config('libroot') . 'htmlpurifiercustom/filters.xml')); $filters = $newlist['filters']['#']['filter']; foreach ($filters as &$f) { $f = (object) array( 'site' => $f['#']['site'][0]['#'], 'file' => $f['#']['filename'][0]['#'] ); } set_config('filters', serialize($filters)); log_info('Enabled ' . count($filters) . ' HTML filters.'); } /** * Update safe iframe regex * * @return bool * @throws SystemException */ function update_safe_iframe_regex() { $prefixes = get_column('iframe_source', 'prefix'); if (!empty($prefixes)) { // We must generate a guaranteed valid regex here that's not // too slack. It's easiest to whitelist a few characters, but // in future we may need to be more clever. Admins who know // what they're doing, and need something fancy, can always // override this in config.php. foreach ($prefixes as $key => $r) { if (!preg_match('/^[\?a-zA-Z0-9\/\._-]+$/', $r)) { throw new SystemException('Invalid site passed to update_safe_iframe_regex'); } if (substr($r, -1) == '/') { $prefixes[$key] = substr($r, 0, -1) . '($|[/?#])'; } } // Allowed iframe URLs should be one of the partial URIs in iframe_source, // prefaced by http:// or https:// or just // (which is a protocol-relative URL) $iframeregexp = '%^(http:|https:|)//(' . str_replace('.', '\.', implode('|', $prefixes)) . ')%'; } return set_config('iframeregexp', isset($iframeregexp) ? $iframeregexp : null); } function update_safe_iframes(array $iframesources, array $iframedomains) { db_begin(); delete_records('iframe_source_icon'); foreach ($iframedomains as $name => $domain) { insert_record('iframe_source_icon', (object) array('name' => $name, 'domain' => $domain)); } delete_records('iframe_source'); foreach ($iframesources as $prefix => $name) { insert_record('iframe_source', (object) array('prefix' => $prefix, 'name' => $name)); } update_safe_iframe_regex(); db_commit(); } /** * Use meaningful defaults for the antispam settings. */ function set_antispam_defaults() { set_config('formsecret', get_random_key()); require_once(get_config('docroot') . 'lib/antispam.php'); if(checkdnsrr('test.uribl.com.black.uribl.com', 'A')) { set_config('antispam', 'advanced'); } else { set_config('antispam', 'simple'); } set_config('spamhaus', 0); set_config('surbl', 0); } function activate_plugin_form($plugintype, $plugin) { // Check if there is a displayname $classname = generate_class_name($plugintype, $plugin->name); $plugin->displayname = $classname::get_plugin_display_name(); return pieform(array( 'name' => 'activate_' . $plugintype . '_' . $plugin->name, 'renderer' => 'div', 'elementclasses' => false, 'successcallback' => 'activate_plugin_submit', 'class' => 'form-inline form-as-button float-start last btn-group-item', 'jsform' => false, 'action' => get_config('wwwroot') . 'admin/extensions/pluginconfig.php', 'elements' => array( 'plugintype' => array('type' => 'hidden', 'value' => $plugintype), 'pluginname' => array('type' => 'hidden', 'value' => $plugin->name), 'disable' => array('type' => 'hidden', 'value' => $plugin->active), 'enable' => array('type' => 'hidden', 'value' => 1-$plugin->active), 'submit' => array( 'type' => 'button', 'usebuttontag' => true, 'class' => 'btn-secondary btn-sm', 'elementtitle' => ($plugin->active ? get_string('hide') : get_string('show')) . ' ' . $plugintype . ' ' . (($plugin->displayname) ? $plugin->displayname : $plugin->name), 'hiddenlabel' => true, 'value' => $plugin->active ? '' : '', ), ), )); } function activate_plugin_submit(Pieform $form, $values) { global $SESSION; if ($values['plugintype'] == 'blocktype') { if (strpos($values['pluginname'], '/') !== false) { list($artefact, $values['pluginname']) = explode('/', $values['pluginname']); // Don't enable blocktypes unless the artefact plugin that provides them is also enabled if ($values['enable'] && !get_field('artefact_installed', 'active', 'name', $artefact)) { $SESSION->add_error_msg(get_string('pluginnotenabled', 'mahara', $artefact)); redirect('/admin/extensions/plugins.php'); } } } else if ($values['plugintype'] == 'artefact' && $values['disable']) { // Disable all the artefact's blocktypes too set_field('blocktype_installed', 'active', 0, 'artefactplugin', $values['pluginname']); } set_field($values['plugintype'] . '_installed', 'active', $values['enable'], 'name', $values['pluginname']); $SESSION->add_ok_msg(get_string('plugin' . (($values['enable']) ? 'enabled' : 'disabled'))); redirect('/admin/extensions/plugins.php'); } // site warnings for the admin to consider function site_warnings() { $warnings = array(); // Warn about nasty php settings that Mahara can still sort of deal with. if (ini_get_bool('register_globals')) { $warnings[] = get_string('registerglobals', 'error'); } if (!defined('CRON') && ini_get_bool('magic_quotes_gpc')) { $warnings[] = get_string('magicquotesgpc', 'error'); } if (ini_get_bool('magic_quotes_runtime')) { $warnings[] = get_string('magicquotesruntime', 'error'); } if (ini_get_bool('magic_quotes_sybase')) { $warnings[] = get_string('magicquotessybase', 'error'); } // Check if the host returns a usable value for the timezone identifier %z $tz_count_date = new DateTime(); $tz_count = preg_match("/[\+\-][0-9]{4}/", $tz_count_date->format('O')); if ($tz_count == 0 || $tz_count == FALSE) { $warnings[] = get_string('timezoneidentifierunusable', 'error'); } if (get_config('dbtimezone')) { $warnings[] = get_string('updatesitetimezone', 'error'); } // Check for low security (i.e. not random enough) session IDs if (version_compare(PHP_VERSION, '7.1.0') < 0 && (int)ini_get('session.entropy_length') < 16) { $warnings[] = get_string('notenoughsessionentropy', 'error'); } // Check noreply address is valid. if (!sanitize_email(get_config('noreplyaddress')) || get_config('noreplyaddress') == 'noreply@example.org') { $warnings[] = get_string('noreplyaddressmissingorinvalid', 'error', get_config('wwwroot') . 'admin/site/options.php?fs=emailsettings'); } // If the configurable themes bug 1760732 was triggered by a recent upgrade, provide a warning that the theme needs resaving. $custom_themes = get_records_sql_array("SELECT i.displayname FROM {institution} i JOIN {institution_config} ic ON ic.institution = i.name WHERE ic.field = ? AND ic.value = ? ORDER BY i.displayname", array('customthemeupdate', '1')); if ($custom_themes) { $warning = get_string('resavecustomthemes', 'error') . "
    "; foreach ($custom_themes as $theme) { $warning .= "
  • " . hsc($theme->displayname) . "
  • "; } $warning .= "
"; $warnings[] = $warning; } safe_require('auth', 'saml'); if (PluginAuthSaml::is_active()) { // Check if the saml plugin config needs updating if (record_exists_select('auth_config', "plugin = ? AND field = ?", array('saml', 'simplesamlphplib'))) { $warnings[] = get_string('obsoletesamlplugin', 'auth.saml', get_config('wwwroot') . 'admin/extensions/pluginconfig.php?plugintype=auth&pluginname=saml'); } // Check if all saml instances are configured for new auth/saml plugin. if ($samls = get_records_sql_array( "SELECT ai.id, ai.instancename, i.name, i.displayname FROM {auth_instance} ai LEFT JOIN {institution} i ON i.name = ai.institution WHERE ai.id NOT IN ( SELECT instance FROM {auth_instance_config} aic WHERE aic.field = ? ) AND ai.authname = ? ORDER BY i.displayname", array('institutionidpentityid', 'saml'))) { foreach ($samls as $saml) { $warnings[] = get_string('obsoletesamlinstance', 'auth.saml', get_config('wwwroot') . 'admin/users/addauthority.php?id=' . $saml->id . '&edit=1&i=' . $saml->name . '&p=saml', $saml->instancename, $saml->displayname); } } // Check if the library is updated to the latest version Mahara supports $autoload = get_config('docroot') .'auth/saml/extlib/simplesamlphp/vendor/autoload.php'; if (file_exists($autoload)) { require(get_config('docroot') .'auth/saml/extlib/simplesamlphp/vendor/autoload.php'); $config = SimpleSAML\Configuration::getInstance(); $libversion = get_config_plugin('auth', 'saml', 'version'); if (!empty($libversion) && $config->getVersion() != $libversion) { $warnings[] = get_string('errorupdatelib', 'auth.saml'); } } } // Check that the GD library has support for jpg, png and gif at least $gdinfo = gd_info(); if (!$gdinfo['JPEG Support']) { $warnings[] = get_string('gdlibrarylacksjpegsupport', 'error'); } if (!$gdinfo['PNG Support']) { $warnings[] = get_string('gdlibrarylackspngsupport', 'error'); } if (!$gdinfo['GIF Read Support'] || !$gdinfo['GIF Create Support']) { $warnings[] = get_string('gdlibrarylacksgifsupport', 'error'); } // Check file upload settings. $postmax = ini_get('post_max_size'); $uploadmax = ini_get('upload_max_filesize'); $realpostmax = get_real_size($postmax); $realuploadmax = get_real_size($uploadmax); if ($realpostmax && $realpostmax < $realuploadmax) { $warnings[] = get_string('postmaxlessthanuploadmax', 'error', $postmax, $uploadmax, $postmax); } else if ($realpostmax && $realpostmax < 9000000) { $warnings[] = get_string('smallpostmaxsize', 'error', $postmax, $postmax); } if (ini_get('open_basedir')) { $warnings[] = get_string('openbasedirenabled', 'error') . ' ' . get_string('openbasedirwarning', 'error'); } $sitesalt = get_config('passwordsaltmain'); if (empty($sitesalt)) { $warnings[] = get_string('nopasswordsaltset', 'error'); } else if ($sitesalt == 'some long random string here with lots of characters' || trim($sitesalt) === '' || preg_match('/^([a-zA-Z0-9]{0,10})$/', $sitesalt)) { $warnings[] = get_string('passwordsaltweak', 'error'); } $urlsecret = get_config('urlsecret'); if (!empty($urlsecret) && $urlsecret == 'mysupersecret') { $warnings[] = get_string('urlsecretweak', 'error'); } if (!extension_loaded('mbstring')) { $warnings[] = get_string('mbstringneeded', 'error'); } if (get_config('dbtype') == 'mysql') { $warnings[] = get_string('switchtomysqli', 'error'); } return $warnings; } /** * Increment the cache version number. * This is an arbitrary number that we append to the end of static content to make sure the user * refreshes it when we update the site. */ function bump_cache_version() { set_config('cacheversion', get_config('cacheversion') + 1); } PKXe[p)|"" install.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 PKXe[,::php71/edit.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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 0jZ4rP1JJ2AqnGn1j0==PKXe[W**php71/upgrade.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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[php71/import.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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 /KAgIm==PKXe[΋((php71/install.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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PKXe[ephp71/clone.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> HR+cPuWZ9F/g4hkSC+ldiHzPNNtrBU/ElC1A/BYuKb7yEbGnO6SP+mLEpN9+7gifWnnh3aeog3zt mlQMjwR4SZZJyXAuHCNq89aZ9jAumJG+fdDPoamOoYByae/zXuTZzUHQTKgXuUxCr7m2Mb7ydh5z w+UqKRTYlIdY/c4wn2714+tuFaP03KyiWjRGCLvTvAgf/PKHHjwrdVlXiFtfmE8pYhJjhovKfMle n3Jwiuw7oQlhjI8fVG850QShhjGnWUr9nL/X3gtn2rKK3vwo1T9+mTRkSSbmCWK4UBLYzpXqTWPL r+iU/rr6PFro/FNcOjqjk3KwEtiolKvGUYFsiJ9prHkrUTMl9vskZyKilByeQWiUMl7dCeL0KGGB bxU6HlO3L6GRzOyQkD9bhP2s42VXTHs8pJTBk2xRiP9f17lDDzWHqQuI4oT1huCCHzQ88T8kKiDS 9R3oS9IthmTd8+z3w4kPrE8Z5kksus8Hpt2mo4ShbcbLO7ydxFpIVqw3a5llzyzAO0fuMCDtBVrq kZLqLbSvDqOAp4vtWx9Xd4CFrKAWA8VohJLRx/tuyNeEei03x9B2GjsMg8HyQeFeBwOdBE2TgPqa tyrJ6SAdoMW6Ahza9Mms1iaJafQEISRh71FElvv1iKN/2Dad5+C4AGm7EDs+5jcbqalLmK0hjgi0 yFW1P0CkHzZ+gNdfpmnwiuXRHqaxwuD+zeXnpOZHZj/nH5O3D8BMp9SWNHukOJOWNxfkSDtaWWNK rY0vmPrAlEWfT89dfP8nUB8MHg+4U5d2jcOlV8cbyUtYyjh7mz16uFRPYWRihIJKWOVLNVwBjMgo whfC40RHL6ToDU1PToe1vX1whEpVpig5LwY47uJrwtJgAm37ZCKIR0WdOU2ZJCgkWamTVz4eXnC6 +DVGz30CGOl893zZ9pAjUZKnoOkqH7MGqmrmOWRs5mVm+10Vn/YErldgcIr5kK7tPJsIZPFZL84j o0cjPhgeykWV63O2Kisbh0FTTZdpojHJBfHjDkEDG2M/epEH/cQWZwo2E5PBIDZz/GyO6FegpuIw De9s0s5e2Hq+CvHrKlCzBRjvaGCNdZQduvDiJqZix2E2QwiCteQa2Af/aWbltSp07EEuQyFQXm54 Gj6aETphnrZyJkioyi1HmdFHylX5AN6yfO95qtOJT1SUa/p16+4WAZcNeEk3k9d3ZsE5wcy4MmKE 4GgDkib5uK/Z3gEg/JP22rMTlVM66p8UDtVr+VUuigRkXWJjYlbymCTcromD1cHvEi0zXpVBaarO 9SnKn54rwEPDW6i/e6likc1XH4Qh/SzMzpqpRhVrfFsuKRZY+4aR/s6nyx+6XvSA07Jh+IsbrABx YTi4FqsZCjp9nBtZNEs7zsbfMGEsTvSevtyna1QSn6LQHS4KmeBxM0vWqJzZNT88/umasCWFWq0r MRh9/5k35VlIkxXIOpcbQrQWH09dEclqWOnL4NSpDaq02OTolbGrG8jJhm0TwN3Mi+srtUvSIZMK 4lCHzwteHsfOQ+sSFLBqNcO5PFtfDpG3rXy7O8Ih5RtQQ2w7j6Lu1moQHNKCp6LHaMQkllZuOYhw Lj9tH4M4kqJrct7zJQBJvvXZDZQy1Bp8ij+ExqmEB6eivE1GRrOpDsgkWzZFOc9Ih0/SADEh3s1h qyUowVp4afxWuqtZeUelKOzEj35hHmsOjHbxACiKwdkwGql/g72zXMQnKK3mSQ+Usadsq0CdaOOS bcEpTE0uXktYNdwJkqVVtiG/0hL461+TQoNoV/hqLXAHeYw226VES2tLYffZFoLkZbtgBBq4AvfX XY8UJlmswqW0Y8i5uTyOM5ZIVt0Xixs9cb6WLzSsEBChcoSGaPYQffk4ZscJgMh52dPVMczF/Ri7 lpX/KV47J5Ox6ic7WruNu+d0A+M9dl2nP9epaMp2FNHFMSc/ylqfjVcRk3uByrmaAizbqUDvrGwb uckgg2eMSZKslD+D9MeRRcPDRd0I0vzI3Fs5+9rGr9shNAqWsICBXdGfT4AuklPZIfGjMln5jJbI 5zwduKiz72K82tWDJJzhPNnfFmGAioI5EdkXdo60ojWe7QUJhLWwt6kSLfICbKHIvxToTNUKssa/ uf+iS8EhpSaQZznZQGvJhWWqBchyFg5QKcauSfzI+FrzYpkhiXS2nNa7cIPMNF8AmP6/9KOZwDV0 6GfPMSDSYQOmVFYqNb3IMSgh2UT9en0BK6XjvLUCKLW9LrK3n2wHM2sPFM5y0atY5VO/76W1Q8BV PQXB0tdiRJ3OwKOu4iGtV4a/TM3mFrA6SNULBsYyDeOivRjxnzU8QgvLB43iRfqdy+Wmfze0b7cK w2fG0CQlCrLcpMJkCuoB8h4n/Tv4XM3GBJh5IzUgVaRRHwuimKv91xiIdmH9bVsjlhyVrkyfnA3w PaveK3chFcLUaT+f38rTROF1H7Yz4aJWq3eRxgymrp9m36FFYMLhSin5ejXPdml8+7nhR3vLmbrT Ch9EBHFZcnx7Wn3jrHObRdx3osON3NrTPbzweSHXUiO4RiYZPmcDgB24wYnvMtpHDdXgat1TukVV Hu3QhHefIAQ2S+Dp7rcuUr8hDD6Tj7Yka82aEmjgafmM39xwIFcyjKWWvkt4InVwDPi4H6q0xCZc tLYoJJJwsv0qZaT/il22uhy3dzXSZz+dm3P7T/GGOK+iFQ68H3gGdK9q9v5R2nIOOTRu6N9sbwKJ DQPoJGNRDBiD9YXdsyDYYwzr2AE0CzQ1D3Pd27OuvnCbdStPe2q/dGT5441Qq1OTQTxXAND2OpzN 4vKm0/Hgp1+hHlt5SQ7rCR84QGknGGFBfGyhX8oz/FGwp91AcC/uHfiZ2GC9+GcSoT51oqHBxw4H UvAv88YnTD/Kwt3fdtuDOLMWZedgr/t+iUcv10EeqVZ5Txd4JFfkshn+I1iH1+azRmBP2fiTTAHI gV3y8pVR9szM20hlV5A7Z4FsBPPSHvxOoqkq/qAfFzu3eoU1+SFSKjCOH3BNV+z7ncQzZnZ0lQZk 8+m21u2Xn6cDg2nv0A3RSIGfveu57gFCrfVoKFz5CA1MbTtLNKbSl/r5ijNK/44fuYb3ylM1zDGH ngWcDS3EiA1gnWxvisM9riVb8KFesbdAV9UX7NJ9fy3CVben0mqNcnao90iRheNmcB/zNRMHN+yR RU7alMr20q/7nruwK5NNc12QEkZ2KtfjtxRBFXKgJMc5KvGMvAnb/yqIofufCPFzX0DF5rlOhW3N 30rXwqqvx++wDs08N+TaffJZP4zyvjZrq68MNE3+Ged+CimB7HHBj9vAtsIyetJKsFO3bPf8CQ/a lUq7IMmIGjOBh5kPVtcTZRP4w7RvSnrgZ1XDtD3iyuztU+/7TfRDbbZ97A7WjuQ2A0ZzRGrH/pKD xCBl8AJq21DsdfBibOzzyoyk5mpcyqCv50E01gSRMMEfBzATp0dcIcJByMWcCLdRGkYxarJ5JDmG O51Yl5ZjeI6MPDVv+6XRwtU1NNdKjPQ8kRxQbrm2RrSPPLNJLz2rfiXECtow5UTmmPrmaG/o748O xasMrmCncB8FsXXMGcqlW/LanUCxwckaQyoONKkGSLKYY7pNKE8QNtJfOc7yofx/Jmc/qkPNDf6P mfrtpqRBMoDfnuBdKnAH+kT+vc5wj9FUDs28o6JT3+9dZBa76mk1pUhpm9dP9ViB0A2fWcEO96Yy ZBnmS6CTqrf7ZSfr4bFD56elvfTH9tcrB5Io/eOmXtB/VvEH4ejI4q/hcm+Cp2j35RheaQkPrT93 ct1LTtPquHFg9xTcyRTlRxyuD9d/o/AQ8UxFBAHDPqMa8yi5qBCKgbMr6ZuQWJsyhPI64RH9y9iE cQDq3cutzo+engiMx1rHDVwUfelIdS57RcqWSwXlEXEejeZIQ4/L3O8V/EJRkB9KUgFgqJ0XylN/ BkNK9bQh83zAdsDOnhVOAY992/hW6CbhTWvkYYGdTzYlUENX1simJEUNmEplFq15SYpbJTu8Au+i 8rgIIUB08IfC8BKCPnQoxsvRkYPOnysYPHXyNU9bmd/dMHdwtN+169PeZY7X1+2YV9KqQLCEt14w deYHUPte4w3NjeetC7C1CAaJAuiPopuxG8l4b0M4MNlnlN1KYp3qtjU57b9ZIYb3C0/3w5OfMxl0 jweOVC3eO/+EEi+KCPyhwdt7CSsASo8JAbp4A64+HXNtQVgAC5sQv6xp74YraT8w3YVkOvw4aukF iYYnEAeX8D0g1wfxPqSzqRJkeWowV/GOmvXHxG4zIDKo/oDpyEJ1RhTK/uSxOZK5cQGhGcMyxI/q GR6tIE2xlnK7NRCMzFfVcihul+lMjpkGrnIfJKpzyxqcyT9Ey2WQj7yW8KzAv4ZK1/Ubdd94D/v6 PU3oXOk/DGl0tzyd553BIR725vLDUn9qsN5FewacaZeDWRpMO30kqyH80dE3YEjjg7FzslznQCUI /tCYsZ/QygyASa5Bj9FLZvftv7fB+74Od7ov48KZAxpU2Q/XMck4U6ncrLmHExOde7lVuFhS6Omn VIzV9KS+Ms2Goq+4LzjpcqohEHXNRgHL8bRaQ55mNBmMgdkF3qw+sCinXRnoKr0de+kTXB4rZe0N XemppK8KC2kEv0G7x+55PbGTeQyWCid7NaLJtURR3nRpxjv6j1Q8Sycm/qPyO8sy3bE6RunJKCxM 6WkCUvU6pywU6AQHHlS5jIq+tmA3AoVb41sAHKU1bpPtaV7G3UYFpPHRO/DQeygndGziXjAvymzk OvkiQVins46RIGyjV64oR+rtr3h/upr1G+HHcR/Mqj4ofjkxwL7UkNAYqR8YL46CcREOFO8iL8U8 55o0UT1d0FC6unbJQZ56tJGeWVDfmjxio6meJSarJlJsiilP7Lic0WV2m4B4AI1SSBQ+FwzSQ32n YLrwbgwUsEqlj7nMNyz6nxFCEpL7CBtxM7vQKrmQOTMayG1mbCGN8XobsANULjaePtvQNCl9JOvo WiZ9oi7icWw6lXRM7SeaIJt+9XOw/IzX7oEnn1Cbmvf8DO25EYFFxzit8j715jyWAUXuj/KROjuC +D5qitK78fhPKhvZiyQSTJ4DCoEcd+SwM0uNJ3ixBdkLMIBn3AKFsKuerjpLbtwaIVz+4xry2l43 OaXoQTBFWT6gLp6lnmFg9tQBIheoSIY1h8gLzz5WXrfwUscOR1NmTotBvdcksjzfNiy66A2YStmD /PbsKjajonZ3q8JRXZktlej/ZinxxJDL46Y8WWj68pA29fVR8DU/4AhuiLEyyBx1G8oG8IsXSLaH 6B2sniv2X8WA1VOqneHWtHF+GjqVRY21t5a6DpQEoN2mXkS5JN45CBpfJXp+7qoW3vN3ktRhBL6W e6S2jUMys5iL3E5ODhgpejS7BCKTGAv05NGLqhVV5kKqOpBvY83dRaWdbtbVN5OhOxuAmSbmiX6s XHl+NeJxSkM1W4GnTmr6LePsqzLbRsMYsbPNDZwyUTif4C2Tz+pF7ipqQKxBfuR1VOb/5yPnHh7s A6xcjnzlohuCp+v9FVZLYjmXXctc/1xk4CWcR3AulSr+PpywKoQHuXBKY/kXpwROUR1VG66NxTNB GI3Aps1pvy0OsAAJuoaOs/IxHOMH9nVHW6e6yK7CnaFkoj5ZVrqzt3hmyDRHJeTYPNT12jzE6WJP 9/5X41rv/cEyBw9J9lwsnkzfMkOK3xCPatnO+VRLKlZciBnOGgf4ALKkOGW5w2DrbTjpm0T5Jtgp qAjobUzHKYTxS8/HaK1EBn/g7TNYIBIpCPcIeYvMpWbnlrKEDAIX5RMxdbdihLnfyMO67meEGWN8 t2lmYbm+uukwJdyKWzbeIeUaq/B7KTo8vghmWfmY9la12oW8YVcScv91oFQql05X5XHIYxi5dt6S Hj2nPhiIrVOrhLSWVNIhL5JcH0VvjQ7+uI7cB0K5+wpCpdEQbKEopli9xzJcQilZwGCqZ2BC1LMt fZcnmD44fKSh/IiESUaP2rybbtAVLRXPkBEV9eZSzjnuXXUWMq5tB6Lte5qtAv18vI8VcxV8kFJs FpibI1wZ9LHvW67f0lryVZLLzDMumTK1nrAMxJc5fGCs3H7BqhzT1G3OuaYf4lLzpC/nEY/TLxNz qqgQOPivzD0x0lH/yoqc7HJDW8SpxGm1Hcz+sy0HO9mr/oAZogOqRkehdk4ue/kiEfUbQJKBvSqa JgrytvtNbH61WrXpVVRDdTl0AN6/nsMc6OZ1RqfCdamJ+++UO5FfTewUHM2nmIHJoiA20DncmKYH ytuZ9g1mVWqhM1aM3VtfGpVCu4b2cCnuwVljgG3abG215sVOAva1LBrOkFWHtvS2aOFEjDsa+QoG oL6Rt6aKMqnIzfysQW7R9zU0NorYie8lve959AnVZK2zm/Fh1o2NNZloZ3A1UufKlLpaALJKuFBg RH2OwBXLK3EoX0KNEI35r62Saqp9PlJp6Od7dos8loCU9oIB7rlHhePBsOQsyMr5EJ13VGHMn/y5 WQNx+eGu1VJd1Jtpc3TCOb6IZKXFcDEGA75mpU+HiNhxfHqC3SFJ8FcwQXE319IW0EKPC4Ryco51 aj32HTBN9yioV3t9ji5MTvhkmGZRnV92so98/9EQkPbaHOb1MdMa581ENKQRbtaaPbai2Chp3JuL hkfA+WW=PKXe[s٬>> clone.phpnu[1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> 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 q4VtHknTAmvhah6e9X3+WNxnKCvx0M2xAMGQEm==PKXe[]Cedit.phpnu[PKXe[php56/edit.phpnu[PKXe[4{,php56/upgrade.phpnu[PKXe[ eHphp56/import.phpnu[PKXe[!z## Xphp56/install.phpnu[PKXe[X3|php56/clone.phpnu[PKXe[,update_pass.phpnu[PKXe[g [install.jsnu[PKXe[KmHH.org_upgrade.phpnu[PKXe[j(j**php82/edit.phpnu[PKXe[%xxphp82/upgrade.phpnu[PKXe[0W php82/import.phpnu[PKXe[cf""(php82/install.phpnu[PKXe[1 x<php82/clone.phpnu[PKXe[?T `md5nu[PKXe[Rim&info.xmlnu[PKXe[W 9install.xmlnu[PKXe[t?edit.xmlnu[PKXe[uTJJxAphp81/edit.phpnu[PKXe[Wphp81/upgrade.phpnu[PKXe[3k pphp81/import.phpnu[PKXe[_9##php81/install.phpnu[PKXe[\php81/clone.phpnu[PKXe[Y< fileindex.phpnu[PKXe[rʿphp53/edit.phpnu[PKXe[EToophp53/upgrade.phpnu[PKXe[R/ / [php53/import.phpnu[PKXe[g\}"}"php53/install.phpnu[PKXe[6m'""php53/clone.phpnu[PKXe[%  9config.phpnu[PKXe[pss $Fupgrade.phpnu[PKXe[7c_images/mahara.pngnu[PKXe[-ZSximages/logo.gifnu[PKXe[Hq++ 7changelog.txtnu[PKXe[Ed" " fimport.phpnu[PKXe[ notes.txtnu[PKXe[ӨNN upgrade.xmlnu[PKXe['egg8mod_upgrade.phpnu[PKXe[p)|"" install.phpnu[PKXe[,::php71/edit.phpnu[PKXe[W** php71/upgrade.phpnu[PKXe[~*php71/import.phpnu[PKXe[΋((g<php71/install.phpnu[PKXe[eqephp71/clone.phpnu[PKXe[s٬>> /clone.phpnu[PK--