$module) { // New module WT_DB::prepare("INSERT IGNORE INTO `##module` (module_name) VALUES (?)")->execute(array($module_name)); // Removed component if (!$module instanceof WT_Module_Block) { WT_DB::prepare( "DELETE FROM `##module_privacy` WHERE module_name=? AND component='block'" )->execute(array($module_name)); WT_DB::prepare( "DELETE `##block_setting` FROM `##block_setting` JOIN `##block` USING (block_id) WHERE module_name=?" )->execute(array($module_name)); WT_DB::prepare( "DELETE FROM `##block` WHERE module_name=?" )->execute(array($module_name)); } if (!$module instanceof WT_Module_Chart) { WT_DB::prepare( "DELETE FROM `##module_privacy` WHERE module_name=? AND component='chart'" )->execute(array($module_name)); } if (!$module instanceof WT_Module_Menu) { WT_DB::prepare( "DELETE FROM `##module_privacy` WHERE module_name=? AND component='menu'" )->execute(array($module_name)); WT_DB::prepare( "UPDATE `##module` SET menu_order=NULL WHERE module_name=?" )->execute(array($module_name)); } if (!$module instanceof WT_Module_Report) { WT_DB::prepare( "DELETE FROM `##module_privacy` WHERE module_name=? AND component='report'" )->execute(array($module_name)); } if (!$module instanceof WT_Module_Sidebar) { WT_DB::prepare( "DELETE FROM `##module_privacy` WHERE module_name=? AND component='sidebar'" )->execute(array($module_name)); WT_DB::prepare( "UPDATE `##module` SET sidebar_order=NULL WHERE module_name=?" )->execute(array($module_name)); } if (!$module instanceof WT_Module_Tab) { WT_DB::prepare( "DELETE FROM `##module_privacy` WHERE module_name=? AND component='tab'" )->execute(array($module_name)); WT_DB::prepare( "UPDATE `##module` SET tab_order=NULL WHERE module_name=?" )->execute(array($module_name)); } if (!$module instanceof WT_Module_Theme) { WT_DB::prepare( "DELETE FROM `##module_privacy` WHERE module_name=? AND component='theme'" )->execute(array($module_name)); } } // Delete config for modules that no longer exist $module_names=WT_DB::prepare("SELECT module_name FROM `##module`")->fetchOneColumn(); foreach ($module_names as $module_name) { if (!array_key_exists($module_name, $installed_modules)) { WT_DB::prepare( "DELETE FROM `##module_privacy` WHERE module_name=?" )->execute(array($module_name)); WT_DB::prepare( "DELETE `##block_setting` FROM `##block_setting` JOIN `##block` USING (block_id) WHERE module_name=?" )->execute(array($module_name)); WT_DB::prepare( "DELETE FROM `##block` WHERE module_name=?" )->execute(array($module_name)); WT_DB::prepare( "DELETE FROM `##module` WHERE module_name=?" )->execute(array($module_name)); } } $action = safe_POST('action'); if ($action=='update_mods') { foreach (WT_Module::getInstalledModules() as $module) { $module_name=$module->getName(); foreach (get_all_gedcoms() as $ged_id=>$ged_name) { if ($module instanceof WT_Module_Report) { $value = safe_POST("reportaccess-{$module_name}-{$ged_id}", WT_REGEX_INTEGER, $module->defaultAccessLevel()); WT_DB::prepare( "REPLACE INTO `##module_privacy` (module_name, gedcom_id, component, access_level) VALUES (?, ?, 'report', ?)" )->execute(array($module_name, $ged_id, $value)); } } } } print_header(WT_I18N::translate('Module administration')); ?>