コード例 #1
0
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);
}
コード例 #2
0
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) {
        $dbName = CBTxt::T('Core CB');
        // Fix mandatory basics of core CB:
        cbimport('cb.dbchecker');
        $dbChecker = new CBdbChecker($_CB_database);
        $result = $dbChecker->checkCBMandatoryDb(true, $dryRun);
        $dbName = CBTxt::T('Core CB mandatory basics');
        $messagesAfter = array();
        $messagesBefore = array();
        ob_start();
        HTML_comprofiler::fixcbdbShowResults($dbChecker, true, $dryRun, $result, $messagesBefore, $messagesAfter, $dbName, $dbId);
        $html = ob_get_contents();
        ob_end_clean();
        // Fix core CB:
        $_PLUGINS->loadPluginGroup('user');
        $messagesBefore = $_PLUGINS->trigger('onBeforeFixDb', array($dryRun));
        $messagesBefore[] = $html;
        $dbName = CBTxt::T('Core CB');
        $dbChecker = new CBdbChecker($_CB_database);
        $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();
        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)) {
                    HTML_comprofiler::fixcbdbShowResults($cbInstaller, true, $dryRun, $result, $messagesBefore, $messagesAfter, $dbName . ' "' . $plug->name . '"', $dbId, false);
                } elseif (is_string($result)) {
                    echo '<div style="color:orange;">' . $dbName . ' "' . $plug->name . '"' . ': ' . $result . '</div>';
                } else {
                    echo '<div style="color:black;">' . 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));
        // Check fields db:
        cbimport('cb.dbchecker');
        $dbChecker = new CBdbChecker($_CB_database);
        $result = $dbChecker->checkAllCBfieldsDb(true, $dryRun);
        $dbName = CBTxt::T('CB fields data storage');
        $messagesAfter = array();
    }
    HTML_comprofiler::secureAboveForm('fixcbdb');
    outputCbTemplate(2);
    outputCbJs(2);
    global $_CB_Backend_Title;
    $_CB_Backend_Title = array(0 => array('cbicon-48-tools', sprintf(CBTxt::T("CB Tools: Fix %s database: "), $dbName) . ($dryRun ? CBTxt::T('Dry-run:') : CBTxt::T('Fixed:')) . " " . CBTXT::T("Results")));
    HTML_comprofiler::fixcbdbShowResults($dbChecker, true, $dryRun, $result, $messagesBefore, $messagesAfter, $dbName, $dbId);
}