本文整理汇总了PHP中adoSchema::parseSchema方法的典型用法代码示例。如果您正苦于以下问题:PHP adoSchema::parseSchema方法的具体用法?PHP adoSchema::parseSchema怎么用?PHP adoSchema::parseSchema使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类adoSchema
的用法示例。
在下文中一共展示了adoSchema::parseSchema方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: execute
/**
* Parse an XML database file and output the corresponding SQL statements.
* See lib/pkp/dtd/xmlSchema.dtd for the format of the XML files.
*/
function execute()
{
require_once './lib/pkp/lib/adodb/adodb-xmlschema.inc.php';
if (in_array($this->command, array('print', 'save'))) {
// Don't connect to actual database (so parser won't build upgrade XML)
$conn = new DBConnection(Config::getVar('database', 'driver'), null, null, null, null, true, Config::getVar('i18n', 'connection_charset'));
$dbconn = $conn->getDBConn();
} else {
// Create or upgrade existing database
$dbconn =& DBConnection::getConn();
}
$schema = new adoSchema($dbconn);
$dict =& $schema->dict;
$dict->SetCharSet(Config::getVar('i18n', 'database_charset'));
if ($this->type == 'schema') {
// Parse XML schema files
$sql = $schema->parseSchema($this->inputFile);
switch ($this->command) {
case 'execute':
$schema->ExecuteSchema();
break;
case 'save':
case 'save_upgrade':
$schema->SaveSQL($this->outputFile);
break;
case 'print':
case 'print_upgrade':
default:
echo @$schema->PrintSQL('TEXT') . "\n";
break;
}
} else {
if ($this->type == 'data') {
// Parse XML data files
$dataXMLParser = new DBDataXMLParser();
$dataXMLParser->setDBConn($dbconn);
$sql = $dataXMLParser->parseData($this->inputFile);
switch ($this->command) {
case 'execute':
$schema->addSQL($sql);
$schema->ExecuteSchema();
break;
case 'save':
case 'save_upgrade':
$schema->addSQL($sql);
$schema->SaveSQL($this->outputFile);
break;
case 'print':
case 'print_upgrade':
default:
$schema->addSQL($sql);
echo @$schema->PrintSQL('TEXT') . "\n";
break;
}
$schema->destroy();
$dataXMLParser->destroy();
}
}
}
示例2: executeAction
/**
* Execute a single installer action.
* @param $action array
* @return boolean
*/
function executeAction($action)
{
switch ($action['type']) {
case 'schema':
$fileName = $action['file'];
$this->log(sprintf('schema: %s', $action['file']));
require_once './lib/pkp/lib/adodb/adodb-xmlschema.inc.php';
$schemaXMLParser = new adoSchema($this->dbconn);
$dict =& $schemaXMLParser->dict;
$dict->SetCharSet($this->dbconn->charSet);
$sql = $schemaXMLParser->parseSchema($fileName);
$schemaXMLParser->destroy();
if ($sql) {
return $this->executeSQL($sql);
} else {
$this->setError(INSTALLER_ERROR_DB, str_replace('{$file}', $fileName, __('installer.installParseDBFileError')));
return false;
}
break;
case 'data':
$fileName = $action['file'];
$condition = isset($action['attr']['condition']) ? $action['attr']['condition'] : null;
$includeAction = true;
if ($condition) {
$funcName = create_function('$installer,$action', $condition);
$includeAction = $funcName($this, $action);
}
$this->log('data: ' . $action['file'] . ($includeAction ? '' : ' (skipped)'));
if (!$includeAction) {
break;
}
$sql = $this->dataXMLParser->parseData($fileName);
// We might get an empty SQL if the upgrade script has
// been executed before.
if ($sql) {
return $this->executeSQL($sql);
}
break;
case 'code':
$condition = isset($action['attr']['condition']) ? $action['attr']['condition'] : null;
$includeAction = true;
if ($condition) {
$funcName = create_function('$installer,$action', $condition);
$includeAction = $funcName($this, $action);
}
$this->log(sprintf('code: %s %s::%s' . ($includeAction ? '' : ' (skipped)'), isset($action['file']) ? $action['file'] : 'Installer', isset($action['attr']['class']) ? $action['attr']['class'] : 'Installer', $action['attr']['function']));
if (!$includeAction) {
return true;
}
// Condition not met; skip the action.
if (isset($action['file'])) {
require_once $action['file'];
}
if (isset($action['attr']['class'])) {
return call_user_func(array($action['attr']['class'], $action['attr']['function']), $this, $action['attr']);
} else {
return call_user_func(array(&$this, $action['attr']['function']), $this, $action['attr']);
}
break;
case 'note':
$condition = isset($action['attr']['condition']) ? $action['attr']['condition'] : null;
$includeAction = true;
if ($condition) {
$funcName = create_function('$installer,$action', $condition);
$includeAction = $funcName($this, $action);
}
if (!$includeAction) {
break;
}
$this->log(sprintf('note: %s', $action['file']));
$this->notes[] = join('', file($action['file']));
break;
}
return true;
}
示例3: updateSchema
/**
* Called during the install process to install the plugin schema,
* if applicable.
* @param $hookName string
* @param $args array
* @return boolean
*/
function updateSchema($hookName, $args)
{
$installer =& $args[0];
$result =& $args[1];
$schemaXMLParser = new adoSchema($installer->dbconn);
$dict =& $schemaXMLParser->dict;
$dict->SetCharSet($installer->dbconn->charSet);
$sql = $schemaXMLParser->parseSchema($this->getInstallSchemaFile());
if ($sql) {
$result = $installer->executeSQL($sql);
} else {
$installer->setError(INSTALLER_ERROR_DB, str_replace('{$file}', $this->getInstallSchemaFile(), __('installer.installParseDBFileError')));
$result = false;
}
return false;
}
示例4: executeAction
/**
* Execute a single installer action.
* @param $action array
* @return boolean
*/
function executeAction($action)
{
switch ($action['type']) {
case 'schema':
$fileName = $action['file'];
$this->log(sprintf('schema: %s', $action['file']));
require_once 'adodb-xmlschema.inc.php';
$schemaXMLParser = new adoSchema($this->dbconn);
$dict =& $schemaXMLParser->dict;
$dict->SetCharSet($this->dbconn->charSet);
$sql = $schemaXMLParser->parseSchema($fileName);
$schemaXMLParser->destroy();
if ($sql) {
return $this->executeSQL($sql);
} else {
$this->setError(INSTALLER_ERROR_DB, str_replace('{$file}', $fileName, __('installer.installParseDBFileError')));
return false;
}
break;
case 'data':
$fileName = $action['file'];
$this->log(sprintf('data: %s', $action['file']));
$sql = $this->dataXMLParser->parseData($fileName);
if ($sql) {
return $this->executeSQL($sql);
} else {
$this->setError(INSTALLER_ERROR_DB, str_replace('{$file}', $fileName, __('installer.installParseDBFileError')));
return false;
}
break;
case 'code':
$this->log(sprintf('code: %s %s::%s', isset($action['file']) ? $action['file'] : 'Installer', isset($action['attr']['class']) ? $action['attr']['class'] : 'Installer', $action['attr']['function']));
if (isset($action['file'])) {
require_once $action['file'];
}
if (isset($action['attr']['class'])) {
return call_user_func(array($action['attr']['class'], $action['attr']['function']), $this);
} else {
return call_user_func(array(&$this, $action['attr']['function']));
}
break;
case 'note':
$this->log(sprintf('note: %s', $action['file']));
$this->notes[] = join('', file($action['file']));
break;
}
return true;
}