/**
  * Deletes a module and all its child fields as well as the module folder.
  *
  * @param integer $customWriteModuleId module id.
  */
 function Delete($customWriteModuleId = null)
 {
     include_once 'RCCWP_CustomGroup.php';
     if (isset($customWriteModuleId)) {
         global $wpdb;
         $customWriteModule = RCCWP_CustomWriteModule::Get($customWriteModuleId);
         $customWriteModuleName = $customWriteModule->name;
         $sql = sprintf("DELETE FROM " . RC_CWP_TABLE_MODULES . " WHERE id = %d", $customWriteModuleId);
         $wpdb->query($sql);
         // Remove template folder
         if (!empty($customWriteModuleName)) {
             $moduleTemplateFolder = FLUTTER_MODULES_DIR . $customWriteModuleName;
             RCCWP_CustomWriteModule::remove_dir($moduleTemplateFolder);
         }
         // Remove Layout data
         FlutterLayoutBlock::DeleteModule($customWriteModuleId);
     }
 }
 function UpdateAllModulesSettings()
 {
     global $wpdb;
     $customModules = RCCWP_CustomWriteModule::GetCustomModules();
     $currDuplicates = $wpdb->get_results("SELECT * FROM " . FLUTTER_TABLE_MODULES_DUPLICATES);
     $currModules = $wpdb->get_results("SELECT * FROM " . FLUTTER_TABLE_LAYOUT_MODULES);
     foreach ($currModules as $currModule) {
         // -- Delete obselete modules
         if ($currModule->module_id > -1) {
             $found = false;
             foreach ($customModules as $customModule) {
                 if ($customModule->id == $currModule->module_id) {
                     $found = true;
                 }
             }
             if (!$found) {
                 FlutterLayoutBlock::DeleteModule($currModule->module_id);
             }
         }
         // -- Delete obselete duplicates
         $found = false;
         foreach ($currDuplicates as $currDuplicate) {
             if ($currDuplicate->duplicate_id == $currModule->duplicate_id) {
                 $found = true;
             }
         }
         if (!$found && $currModule->duplicate_id != 0) {
             FlutterLayoutBlock::DeleteDuplicate($currModule->duplicate_id);
         }
     }
     // -- Insert/Update modules in the Layout table
     foreach ($customModules as $customModule) {
         $filename = FLUTTER_MODULES_DIR . $customModule->name . "/configure.xml";
         FlutterLayoutBlock::UpdateModuleSettings($filename, $customModule->id);
         //Insert duplicates
         $currDuplicates = $wpdb->get_results("SELECT * FROM " . FLUTTER_TABLE_MODULES_DUPLICATES . " WHERE module_id = '{$customModule->id}'");
         foreach ($currDuplicates as $currDuplicate) {
             FlutterLayoutBlock::UpdateModuleSettings($filename, $customModule->id, false, false, $currDuplicate->duplicate_id);
         }
     }
 }