API16:JInstaller/parseSQLFiles
From Joomla! Documentation
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.
Contents |
Description
Method to extract the name of a discreet installation sql file from the installation manifest file.
[<! removed edit link to red link >]
<! removed transcluded page call, red link never existed >
Syntax
parseSQLFiles($element)
| Parameter Name | Default Value | Description |
|---|---|---|
| $element | $element The xml node to process |
Returns
mixed Number of queries processed or False on error
Defined in
libraries/joomla/installer/installer.php
Importing
jimport( 'joomla.installer.installer' );
Source Body
public function parseSQLFiles($element) { if ( ! $element instanceof JXMLElement || ! count($element->children())) { // The tag does not exist. return 0; } // Initialise variables. $queries = array(); $db = & $this->_db; $dbDriver = strtolower($db->get('name')); if ($dbDriver == 'mysqli') { $dbDriver = 'mysql'; } $dbCharset = ($db->hasUTF()) ? 'utf8' : ''; // Get the name of the sql file to process $sqlfile = ''; foreach ($element->children() as $file) { $fCharset = (strtolower($file->attributes()->charset) == 'utf8') ? 'utf8' : ''; $fDriver = strtolower($file->attributes()->driver); if ($fDriver == 'mysqli') { $fDriver = 'mysql'; } if ($fCharset == $dbCharset && $fDriver == $dbDriver) { $sqlfile = $this->getPath('extension_root').DS.$file; // Check that sql files exists before reading. Otherwise raise error for rollback if (!file_exists($sqlfile)) { JError::raiseWarning(1,'JInstaller::installer: '. JText::_('SQL File not found').' '. $sqlfile); return false; } $buffer = file_get_contents($sqlfile); // Graceful exit and rollback if read not successful if ($buffer === false) { JError::raiseWarning(1, 'JInstaller::installer: '. JText::_('SQL File Buffer Read Error')); return false; } // Create an array of queries from the sql file jimport('joomla.installer.helper'); $queries = JInstallerHelper::splitSql($buffer); if (count($queries) == 0) { // No queries to process return 0; } // Process each query in the $queries array (split out of sql file). foreach ($queries as $query) { $query = trim($query); if ($query != '' && $query{0} != '#') { $db->setQuery($query); if (!$db->query()) { JError::raiseWarning(1, 'JInstaller::install: '.JText::_('SQL Error')." ".$db->stderr(true)); return false; } } } } } return (int) count($queries); }
[<! removed edit link to red link >] <! removed transcluded page call, red link never existed >
Examples
<CodeExamplesForm />
