} 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); } }