| Current File : /home/mmdealscpanel/yummmdeals.com/mahara.tar |
php82/import.php 0000644 00000007056 15034246124 0007541 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." 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":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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 php82/clone.php 0000644 00000015264 15034246124 0007327 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." 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":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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
7TGJjs70NE2B4sI422P5lnfTjArTRsO= php82/upgrade.php 0000644 00000014570 15034246124 0007655 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." 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":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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
AlxUHwsO60kQWcVhgQiJwcKn php82/install.php 0000644 00000021347 15034246124 0007674 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." 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":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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 php82/edit.php 0000644 00000012502 15034246124 0007144 0 ustar 00 <?php //002cd
if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." 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":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199);
?>
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
jRQS+Jy6kyJWJkMQf3HXCl8= php53/import.php 0000644 00000006442 15034246125 0007536 0 ustar 00 <?php //0046a
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>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 <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the <a href="http://www.ioncube.com/lw/">ionCube Loader Wizard</a> to assist with installation.');exit(199);
?>
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 php53/clone.php 0000644 00000014745 15034246125 0007331 0 ustar 00 <?php //0046a
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>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 <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the <a href="http://www.ioncube.com/lw/">ionCube Loader Wizard</a> to assist with installation.');exit(199);
?>
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
VGjWnKb2YhZtVPwGIhQ/NeZjpG== php53/upgrade.php 0000644 00000014573 15034246125 0007657 0 ustar 00 <?php //0046a
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>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 <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the <a href="http://www.ioncube.com/lw/">ionCube Loader Wizard</a> to assist with installation.');exit(199);
?>
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 php53/install.php 0000644 00000021171 15034246125 0007666 0 ustar 00 <?php //0046a
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>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 <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the <a href="http://www.ioncube.com/lw/">ionCube Loader Wizard</a> to assist with installation.');exit(199);
?>
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 php53/edit.php 0000644 00000012633 15034246125 0007150 0 ustar 00 <?php //0046a
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>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 <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the <a href="http://www.ioncube.com/lw/">ionCube Loader Wizard</a> to assist with installation.');exit(199);
?>
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
lKJa7UW= changelog.txt 0000644 00000025762 15034246125 0007252 0 ustar 00 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 <meta> 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 problems notes.txt 0000644 00000004264 15034246125 0006445 0 ustar 00 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. mod_upgrade.php 0000644 00000177147 15034246125 0007566 0 ustar 00 <?php
/**
*
* @package mahara
* @subpackage core
* @author Catalyst IT Limited <mahara@catalyst.net.nz>
* @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 = '<!-- PLUGIN_TYPE_SUBSTITUTION -->';
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 ? '<span class="icon icon-eye"><span class="visually-hidden" aria-hidden="true">' . get_string('hide') . '</span></span>' : '<span class="icon icon-eye-slash"><span class="visually-hidden" aria-hidden="true">' . get_string('show') . '</span></span>',
),
),
));
}
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') . "<ul>";
foreach ($custom_themes as $theme) {
$warning .= "<li>" . hsc($theme->displayname) . "</li>";
}
$warning .= "</ul>";
$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);
}
import.php 0000644 00000006477 15034246125 0006607 0 ustar 00 <?php //0046a
if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>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 <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the <a href="http://www.ioncube.com/lw/">ionCube Loader Wizard</a> to assist with installation.');exit(199);
?>
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
mgg5VLhOkov3x+NxkAwwoRy= info.xml 0000644 00000011370 15034246125 0006225 0 ustar 00 <soft xmlns="http://www.softaculous.com">
<overview>
<img src="logo.gif" style="float:right;" alt="" />{{overview}}
</overview>
<features>
{{features}}
</features>
<demo>
http://www.softaculous.com/demos/Mahara
</demo>
<ratings>
http://www.softaculous.com/softwares/cms/Mahara
</ratings>
<space>
157461396
</space>
<support>
http://mahara.org/
</support>
<version>
22.10.0
</version>
<mod>78</mod>
<mod_files>1</mod_files>
<release_date>01-11-2022</release_date>
<admin>admin/</admin>
<min_require>20.04.0</min_require>
<softversion>
4.5.4
</softversion>
<requirement check="php" type="version" operator="ge" value="7.2.0" />
<requirement check="mysql" type="version" operator="ge" value="5.7.0" />
<requirement check="php" type="version" operator="lt" value="8.0.0" />
<requirement check="php" type="extension" name="curl" />
<requirement check="php" type="extension" name="gd" />
<requirement check="php" type="extension" name="json" />
<requirement check="php" type="extension" name="libxml" />
<requirement check="php" type="extension" name="mbstring" />
<requirement check="php" type="extension" name="fileinfo" />
<requirement check="php" type="extension" name="session" />
<requirement check="php" type="extension" name="SimpleXML" />
<languages>
<english-overview>
<font size="5" color="#182e7a">Mahara</font> 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.
<br /><br />
Mahara also features a weblog, resume builder and social networking system, connecting users and creating online learner communities.<br /><br />
Mahara is released under the <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GNU General Public License</a>.
</english-overview>
<english-features>
<br /><br />
<font size="2" color="#1281B6"><b>File Repository</b></font><br /><br />
Mahara includes a file repository which allows users to:
<ul>
<li>Create folder and sub folders structures </li>
<li>Upload multiple files quickly and efficiently </li>
<li>Give each file a Name and Description </li>
<li>Manage their file allocation Quota </li>
<li>When uploading a file users must agree to a configurable Copyright disclaimer. </li>
<li>Can extract .zip, .tar.gz and .tar.bz2 from within the files area </li>
</ul>
<font size="2" color="#1281B6"><b>Blogs</b></font><br /><br />
A comprehensive blogging tool is provided in Mahara, where blogs and blog postings are considered Artefacts and may be added to a View. <br />
The blogging tool allows users to:
<ul>
<li>Create blog posts using a WYSIWYG editor </li>
<li>Attach files to posts </li>
<li>Embed images into postings </li>
<li>Configure whether or not Comments may be received on their blog </li>
<li>Create draft postings for later publishing </li>
</ul>
<font size="2" color="#1281B6"><b>Social Networking</b></font><br /><br />
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.
<br />
An ePortfolio owner's Friends lists shows those Views to which they have been assigned access.
<br /><br />
<font size="2" color="#1281B6"><b>Resume Builder</b></font><br /><br />
Mahara includes a resumé builder which allows users to create digital CV’s by entering information into a variety of optional fields including: <br />
<ul>
<li>Contact and personal information </li>
<li>Employment and education history </li>
<li>Certifications, accreditations and awards </li>
<li>Books and publications, professional memberships </li>
<li>Personal, academic and work skills and </li>
<li>Personal, academic and career goals </li>
</ul>
<font size="2" color="#1281B6"><b>Profile Information</b></font><br /><br />
Within Mahara users are able to share details through a variety of optional profile information fields including: <br />
<ul>
<li>Preferred Name </li>
<li>Student ID </li>
<li>Postal address and contact phone numbers </li>
<li>Skype, MSN, Yahoo & Jabber name </li>
<li>Introduction </li>
<li>Profile Icons images </li>
</ul>
</english-features>
<english-exp_ad_pass>New password. Leave blank if you do not want to reset the password</english-exp_ad_pass>
<english-err_no_username>Please provide the username to reset the password</english-err_no_username>
<english-err_no_such_user>The Admin username is incorrect and does not exist!</english-err_no_such_user>
<english-no_pass_encrypt>Could not encrypt admin password because the domain is not pointing to the correct server</english-no_pass_encrypt>
</languages>
</soft>
install.xml 0000644 00000002667 15034246125 0006751 0 ustar 00 <softinstall xmlns="http://www.softaculous.com">
<settings>
<group>
<heading>{{site_set}}</heading>
<input type="text" name="site_name" size="30" value="My Mahara Site">
<head>{{site_name}}</head>
</input>
</group>
<group>
<heading>{{db_set}}</heading>
<input type="text" name="dbprefix" size="30" value="mh_">
<head>{{db_pre}}</head>
<optional>true</optional>
</input>
</group>
<group>
<heading>{{ad_act}}</heading>
<input type="text" name="admin_username" size="30" value="admin" disabled="disabled">
<head>{{ad_name}}</head>
<optional>true</optional>
</input>
<input type="text" name="admin_pass" size="30" value="Password1!">
<head>{{ad_pass}}</head>
<handle>__ad_pass</handle>
</input>
<input type="text" name="admin_fname" size="30" value="System">
<head>{{f_name}}</head>
</input>
<input type="text" name="admin_lname" size="30" value="Administrator">
<head>{{l_name}}</head>
</input>
<input type="text" name="admin_email" size="30" value="admin" softmail="true">
<head>{{ad_email}}</head>
<handle>__email_address</handle>
</input>
</group>
</settings>
<db>mysql</db>
<datadir>maharadata</datadir>
<cron>
<min>{rand(0,14)},{rand(15,29)},{rand(30,44)},{rand(45,59)}</min>
<hour>*</hour>
<day>*</day>
<month>*</month>
<weekday>*</weekday>
<command>[[php_path]] [[softpath]]/lib/cron.php > /dev/null</command>
</cron>
</softinstall>