/** * Tests the JDatabase::splitSql method. * * @return void * * @since 12.1 */ public function testSplitSql() { $this->assertThat( $this->db->splitSql('SELECT * FROM #__foo;SELECT * FROM #__bar;'), $this->equalTo( array( 'SELECT * FROM #__foo;', 'SELECT * FROM #__bar;' ) ), 'splitSql method should split a string of multiple queries into an array.' ); }
private function runUpdateSQL($version) { $db = JFactory::getDBO(); $buffer = file_get_contents(JPATH_ADMINISTRATOR . '/components/com_jfbconnect/install/sql/updates/' . $version . '.' . $this->getDbType() . '.sql'); // Graceful exit and rollback if read not successful if ($buffer === false) { JError::raiseWarning(1, JText::_('JLIB_INSTALLER_ERROR_SQL_READBUFFER')); return false; } // Create an array of queries from the sql file //$queries = JDatabaseDriver::splitSql($buffer); // Joomla 3.x+ $queries = JDatabase::splitSql($buffer); $update_count = 0; if (count($queries) != 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->execute()) { JLog::add(JText::sprintf('JLIB_INSTALLER_ERROR_SQL_ERROR', $db->stderr(true)), JLog::WARNING, 'jerror'); return false; } $update_count++; } } } // All done. Update the db_version row to the latest number $query = $db->getQuery(true); $query->select($db->qn('value'))->from('#__jfbconnect_config')->where($db->qn('setting') . '=' . $db->q('db_version')); $db->setQuery($query); $ver = $db->loadResult(); $query->clear(); if ($ver) { $query->update('#__jfbconnect_config')->where($db->qn('setting') . '=' . $db->q('db_version'))->set($db->qn('value') . '=' . $db->q($version))->set($db->qn('updated_at') . '= NOW()'); } else { $query->insert('#__jfbconnect_config')->columns($db->qn('setting') . "," . $db->qn('value') . ',' . $db->qn('created_at') . "," . $db->qn('updated_at'))->values($db->q('db_version') . ',' . $db->q($version) . ', NOW(), NOW()'); } $db->setQuery($query); $db->execute(); }