/**
  * smartUpdateAllOfConfigs
  * 
  * @param   XoopsModule  &$module
  * @param   Legacy_ModuleInstallLog  &$log
  * 
  * @return  void
  **/
 public static function smartUpdateAllOfConfigs(&$module, &$log)
 {
     $dirname = $module->get('dirname');
     $fileReader = new Legacy_ModinfoX2FileReader($dirname);
     $dbReader = new Legacy_ModinfoX2DBReader($dirname);
     $configs =& $dbReader->loadPreferenceInformations();
     $configs->update($fileReader->loadPreferenceInformations());
     foreach ($configs->mPreferences as $config) {
         switch ($config->mStatus) {
             case LEGACY_INSTALLINFO_STATUS_UPDATED:
                 Leimg_InstallUtils::updateConfigByInfo($config, $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_ORDER_UPDATED:
                 Leimg_InstallUtils::updateConfigOrderByInfo($config, $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_NEW:
                 Leimg_InstallUtils::installConfigByInfo($config, $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_DELETED:
                 Leimg_InstallUtils::uninstallConfigByOrder($config->mOrder, $module, $log);
                 break;
             default:
                 break;
         }
     }
 }
 function smartUpdateAllOfPreferences(&$module, &$log)
 {
     $dirname = $module->get('dirname');
     $fileReader = new Legacy_ModinfoX2FileReader($dirname);
     $latestPreferences =& $fileReader->loadPreferenceInformations();
     $dbReader = new Legacy_ModinfoX2DBReader($dirname);
     $currentPreferences =& $dbReader->loadPreferenceInformations();
     $currentPreferences->update($latestPreferences);
     //
     // Preferences
     //
     foreach (array_keys($currentPreferences->mPreferences) as $idx) {
         switch ($currentPreferences->mPreferences[$idx]->mStatus) {
             case LEGACY_INSTALLINFO_STATUS_UPDATED:
                 Legacy_ModuleInstallUtils::updatePreferenceByInfo($currentPreferences->mPreferences[$idx], $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_ORDER_UPDATED:
                 Legacy_ModuleInstallUtils::updatePreferenceOrderByInfo($currentPreferences->mPreferences[$idx], $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_NEW:
                 Legacy_ModuleInstallUtils::installPreferenceByInfo($currentPreferences->mPreferences[$idx], $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_DELETED:
                 Legacy_ModuleInstallUtils::uninstallPreferenceByOrder($currentPreferences->mPreferences[$idx]->mOrder, $module, $log);
                 break;
         }
     }
     //
     // Comments
     //
     foreach (array_keys($currentPreferences->mComments) as $idx) {
         switch ($currentPreferences->mComments[$idx]->mStatus) {
             case LEGACY_INSTALLINFO_STATUS_UPDATED:
                 Legacy_ModuleInstallUtils::updatePreferenceByInfo($currentPreferences->mComments[$idx], $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_ORDER_UPDATED:
                 Legacy_ModuleInstallUtils::updatePreferenceOrderByInfo($currentPreferences->mComments[$idx], $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_NEW:
                 Legacy_ModuleInstallUtils::installPreferenceByInfo($currentPreferences->mComments[$idx], $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_DELETED:
                 Legacy_ModuleInstallUtils::uninstallPreferenceByOrder($currentPreferences->mComments[$idx]->mOrder, $module, $log);
                 break;
         }
     }
     //
     // Notifications
     //
     foreach (array_keys($currentPreferences->mNotifications) as $idx) {
         switch ($currentPreferences->mNotifications[$idx]->mStatus) {
             case LEGACY_INSTALLINFO_STATUS_UPDATED:
                 Legacy_ModuleInstallUtils::updatePreferenceByInfo($currentPreferences->mNotifications[$idx], $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_ORDER_UPDATED:
                 Legacy_ModuleInstallUtils::updatePreferenceOrderByInfo($currentPreferences->mNotifications[$idx], $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_NEW:
                 Legacy_ModuleInstallUtils::installPreferenceByInfo($currentPreferences->mNotifications[$idx], $module, $log);
                 break;
             case LEGACY_INSTALLINFO_STATUS_DELETED:
                 Legacy_ModuleInstallUtils::uninstallPreferenceByOrder($currentPreferences->mNotifications[$idx]->mOrder, $module, $log);
                 break;
         }
     }
 }