function fixcbdb($dryRun, $dbId = 0) { global $_CB_database, $ueConfig, $_PLUGINS; // Try extending time, as unziping/ftping took already quite some... : @set_time_limit(240); $dryRun = $dryRun == 1; if ($dbId == 0) { // Fix mandatory basics of core CB: cbimport('cb.dbchecker'); $dbName = CBTxt::T('Core CB mandatory basics'); $dbChecker = new CBDatabaseChecker(); $result = $dbChecker->checkCBMandatoryDb(true, $dryRun); $messagesAfter = array(); $messagesBefore = array(); ob_start(); CBDatabaseChecker::renderDatabaseResults($dbChecker, true, $dryRun, $result, $messagesBefore, $messagesAfter, $dbName, $dbId); $html = ob_get_contents(); ob_end_clean(); // Fix core CB: $_PLUGINS->loadPluginGroup('user'); $dbName = CBTxt::T('Core CB'); $messagesBefore = $_PLUGINS->trigger('onBeforeFixDb', array($dryRun)); $messagesBefore[] = $html; $dbChecker = new CBDatabaseChecker(); $result = $dbChecker->checkDatabase(true, $dryRun); $messagesAfter = $_PLUGINS->trigger('onAfterFixDb', array($dryRun)); // adapt published fields to global CB config (regarding name type) _cbAdaptNameFieldsPublished($ueConfig); } elseif ($dbId == 1) { // Fix plugin $dbId: $dbName = CBTxt::T('CB plugin'); $messagesBefore = array(); $messagesAfter = array(); $result = true; cbimport('cb.installer'); $sql = 'SELECT `id`, `name` FROM `#__comprofiler_plugin` ORDER BY `ordering`'; $_CB_database->setQuery($sql); $plugins = $_CB_database->loadObjectList(); if (!$_CB_database->getErrorNum()) { $cbInstaller = new cbInstallerPlugin(); foreach ($plugins as $plug) { $result = $cbInstaller->checkDatabase($plug->id, true, $dryRun); if (is_bool($result)) { CBDatabaseChecker::renderDatabaseResults($cbInstaller, true, $dryRun, $result, $messagesBefore, $messagesAfter, $dbName . ' "' . $plug->name . '"', $dbId, false); } elseif (is_string($result)) { echo '<div class="form-group cb_form_line clearfix text-warning">' . $dbName . ' "' . $plug->name . '"' . ': ' . $result . '</div>'; } else { echo '<div class="form-group cb_form_line clearfix">' . sprintf(CBTxt::T('%s "%s": no database or no database description.'), $dbName, $plug->name) . '</div>'; } } } $dbName = CBTxt::T('CB plugins'); } elseif ($dbId == 3) { // adapt published fields to global CB config (regarding name type) _cbAdaptNameFieldsPublished($ueConfig); $_PLUGINS->loadPluginGroup('user'); $messagesBefore = $_PLUGINS->trigger('onBeforeFixFieldsDb', array($dryRun)); $strictcolumns = cbGetParam($_REQUEST, 'strictcolumns', 0) == 1; // Check fields db: cbimport('cb.dbchecker'); $dbChecker = new CBDatabaseChecker(); $result = $dbChecker->checkAllCBfieldsDb(true, $dryRun, $strictcolumns); $dbName = CBTxt::T('CB fields data storage'); $messagesAfter = array(); if ($strictcolumns) { $dbId = $dbId . '&strictcolumns=1'; } } else { $dbName = CBTxt::T('DATABASE_CHECK_NO_DATABASE_SPECIFIED', 'No Database Specified'); $result = $dbName; $messagesBefore = array(); $messagesAfter = array(); } _CBsecureAboveForm('fixcbdb'); outputCbTemplate(2); outputCbJs(2); global $_CB_Backend_Title; $_CB_Backend_Title = array(0 => array('fa fa-wrench', sprintf(CBTxt::T("CB Tools: Fix %s database: "), $dbName) . ($dryRun ? CBTxt::T('Dry-run:') : CBTxt::T('Fixed:')) . " " . CBTXT::T("Results"))); CBDatabaseChecker::renderDatabaseResults($dbChecker, true, $dryRun, $result, $messagesBefore, $messagesAfter, $dbName, $dbId); }