requireAdminLogin() ->setPageTitle(WT_I18N::translate('Module administration')); require WT_ROOT.'includes/functions/functions_edit.php'; // New modules may have been added... $installed_modules=WT_Module::getInstalledModules(); $all_modules=WT_DB::prepare("SELECT module_name, status FROM `##module`")->fetchAssoc(); foreach ($installed_modules as $module_name=>$module) { if (!array_key_exists($module_name, $all_modules)) { WT_DB::prepare("INSERT INTO `##module` (module_name, status) VALUES (?, 'disabled')")->execute(array($module_name)); $all_modules[$module_name]='disabled'; } } switch (safe_POST('action')) { case 'update_mods': foreach ($all_modules as $module_name=>$status) { $new_status=safe_POST("status-{$module_name}"); if ($new_status!==null) { $new_status=$new_status ? 'enabled' : 'disabled'; if ($new_status!=$status) { WT_DB::prepare("UPDATE `##module` SET status=? WHERE module_name=?")->execute(array($new_status, $module_name)); $all_modules[$module_name]=$new_status; } } } break; } switch (safe_GET('action')) { case 'delete_module': $module_name=safe_GET('module_name'); WT_DB::prepare( "DELETE `##block_setting`". " FROM `##block_setting`". " JOIN `##block` USING (block_id)". " JOIN `##module` USING (module_name)". " WHERE module_name=?" )->execute(array($module_name)); WT_DB::prepare( "DELETE `##block`". " FROM `##block`". " JOIN `##module` USING (module_name)". " WHERE module_name=?" )->execute(array($module_name)); WT_DB::prepare("DELETE FROM `##module_setting` WHERE module_name=?")->execute(array($module_name)); WT_DB::prepare("DELETE FROM `##module_privacy` WHERE module_name=?")->execute(array($module_name)); WT_DB::prepare("DELETE FROM `##module` WHERE module_name=?")->execute(array($module_name)); unset($all_modules[$module_name]); break; } $controller ->pageHeader() ->addExternalJavaScript(WT_STATIC_URL.'js/jquery/jquery.dataTables.min.js') ->addInlineJavaScript(' function reindexMods(id) { jQuery("#"+id+" input").each( function (index, value) { value.value = index+1; }); } var oTable = jQuery("#installed_table").dataTable( { "sDom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\', "oLanguage": { "sLengthMenu": "'./* I18N: Display %s [records per page], %s is a placeholder for listbox containing numeric options */ WT_I18N::translate('Display %s', '').'", "sZeroRecords": "'.WT_I18N::translate('No records to display').'", "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'", "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'", "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'", "sSearch": "'.WT_I18N::translate('Filter').'", "oPaginate": { "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'", "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'", "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'", "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'" } }, "bJQueryUI": true, "bAutoWidth":false, "aaSorting": [[ 1, "asc" ]], "iDisplayLength": 10, "sPaginationType": "full_numbers", "aoColumns" : [ { bSortable: false, sClass: "center" }, null, null, { sClass: "center" }, { sClass: "center" }, { sClass: "center" }, { sClass: "center" }, { sClass: "center", bVisible: false }, // The WT_Module system does not yet include charts { sClass: "center" }, { sClass: "center", bVisible: false } // The WT_Module system does not yet include themes ] }); '); ?>
$status) { if (array_key_exists($module_name, $installed_modules)) { $module=$installed_modules[$module_name]; echo '', '', '', '', '', '', '', '', '', '', ''; } else { // Module can't be found on disk? // Don't delete it automatically. It may be temporarily missing, after a re-installation, etc. echo ''; } } ?>
', two_state_checkbox('status-'.$module->getName(), $status=='enabled'), '', $module->getTitle(), '', $module->getDescription(), '', $module instanceof WT_Module_Menu ? WT_I18N::translate('Menu') : '-', '', $module instanceof WT_Module_Tab ? WT_I18N::translate('Tab') : '-', '', $module instanceof WT_Module_Sidebar ? WT_I18N::translate('Sidebar') : '-', '', $module instanceof WT_Module_Block ? (($module->isUserBlock() ? '
'.WT_I18N::translate('My page').'
' : '').($module->isGedcomBlock() ? '
'.WT_I18N::translate('Home page').'
' : '')) : '-', '
', $module instanceof WT_Module_Chart ? WT_I18N::translate('Chart') : '-', '', $module instanceof WT_Module_Report ? WT_I18N::translate('Report') : '-', '', $module instanceof WT_Module_Theme ? WT_I18N::translate('Theme') : '-', '
 ', $module_name, '', '', WT_I18N::translate('This module cannot be found. Delete its configuration settings.'), '