Пример #1
0
        } else {
            $tpl->setVariable('md5_result', $checkResult);
        }
    }
}
if ($Module->isCurrentAction('DBCheck')) {
    $db = eZDB::instance();
    $dbSchema = eZDbSchema::instance();
    // read original schema from dba file
    $originalSchema = eZDbSchema::read('share/db_schema.dba');
    // merge schemas from all active extensions that declare some db schema
    $extensionsdir = eZExtension::baseDirectory();
    foreach (eZExtension::activeExtensions() as $activeextension) {
        if (file_exists($extensionsdir . '/' . $activeextension . '/share/db_schema.dba')) {
            if ($extensionschema = eZDbSchema::read($extensionsdir . '/' . $activeextension . '/share/db_schema.dba')) {
                $originalSchema = eZDbSchema::merge($originalSchema, $extensionschema);
            }
        }
    }
    // transform schema to 'localized' version for current db
    // (we might as well convert $dbSchema to generic format and diff in generic format,
    // but eZDbSchemaChecker::diff does not know how to re-localize the generated sql
    $dbSchema->transformSchema($originalSchema, true);
    $differences = eZDbSchemaChecker::diff($dbSchema->schema(array('format' => 'local', 'force_autoincrement_rebuild' => true)), $originalSchema);
    $sqlDiff = $dbSchema->generateUpgradeFile($differences);
    if (strlen($sqlDiff) == 0) {
        $tpl->setVariable('upgrade_sql', 'ok');
    } else {
        $tpl->setVariable('upgrade_sql', $sqlDiff);
    }
}