You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
5.9 KiB
144 lines
5.9 KiB
<?php |
|
|
|
/** |
|
* Upgrading and patching functions of database. |
|
* |
|
* Functions to allow safe database modifications |
|
* during upgrading and patches. |
|
* |
|
* Copyright (C) 2008-2012 Rod Roark <rod@sunsetsystems.com> |
|
* |
|
* LICENSE: This program is free software; you can redistribute it and/or |
|
* modify it under the terms of the GNU General Public License |
|
* as published by the Free Software Foundation; either version 2 |
|
* of the License, or (at your option) any later version. |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU General Public License for more details. |
|
* You should have received a copy of the GNU General Public License |
|
* along with this program. If not, see <http://opensource.org/licenses/gpl-license.php>. |
|
* |
|
* @package OpenEMR |
|
* @author Rod Roark <rod@sunsetsystems.com> |
|
* @author Brady Miller <brady.g.miller@gmail.com> |
|
* @author Teny <teny@zhservices.com> |
|
* @author Jerry Padgett <sjpadgett@gmail.com> |
|
* @link https://www.open-emr.org |
|
*/ |
|
|
|
|
|
/** |
|
* Upgrade or patch the database with a selected upgrade/patch file. |
|
* |
|
* The following "functions" within the selected file will be processed: |
|
* |
|
* #IfNotTable |
|
* argument: table_name |
|
* behavior: if the table_name does not exist, the block will be executed |
|
* |
|
* #IfTable |
|
* argument: table_name |
|
* behavior: if the table_name does exist, the block will be executed |
|
* |
|
* #IfColumn |
|
* arguments: table_name colname |
|
* behavior: if the table and column exist, the block will be executed |
|
* |
|
* #IfMissingColumn |
|
* arguments: table_name colname |
|
* behavior: if the table exists but the column does not, the block will be executed |
|
* |
|
* #IfNotColumnType |
|
* arguments: table_name colname value |
|
* behavior: If the table table_name does not have a column colname with a data type equal to value, then the block will be executed |
|
* |
|
* #IfNotColumnTypeDefault |
|
* arguments: table_name colname value value2 |
|
* behavior: If the table table_name does not have a column colname with a data type equal to value and a default equal to value2, then the block will be executed |
|
* |
|
* #IfNotRow |
|
* arguments: table_name colname value |
|
* behavior: If the table table_name does not have a row where colname = value, the block will be executed. |
|
* |
|
* #IfNotRow2D |
|
* arguments: table_name colname value colname2 value2 |
|
* behavior: If the table table_name does not have a row where colname = value AND colname2 = value2, the block will be executed. |
|
* |
|
* #IfNotRow3D |
|
* arguments: table_name colname value colname2 value2 colname3 value3 |
|
* behavior: If the table table_name does not have a row where colname = value AND colname2 = value2 AND colname3 = value3, the block will be executed. |
|
* |
|
* #IfNotRow4D |
|
* arguments: table_name colname value colname2 value2 colname3 value3 colname4 value4 |
|
* behavior: If the table table_name does not have a row where colname = value AND colname2 = value2 AND colname3 = value3 AND colname4 = value4, the block will be executed. |
|
* |
|
* #IfNotRow2Dx2 |
|
* desc: This is a very specialized function to allow adding items to the list_options table to avoid both redundant option_id and title in each element. |
|
* arguments: table_name colname value colname2 value2 colname3 value3 |
|
* behavior: The block will be executed if both statements below are true: |
|
* 1) The table table_name does not have a row where colname = value AND colname2 = value2. |
|
* 2) The table table_name does not have a row where colname = value AND colname3 = value3. |
|
* |
|
* #IfRow |
|
* arguments: table_name colname value |
|
* behavior: If the table table_name does have a row where colname = value, the block will be executed. |
|
* |
|
* #IfRow2D |
|
* arguments: table_name colname value colname2 value2 |
|
* behavior: If the table table_name does have a row where colname = value AND colname2 = value2, the block will be executed. |
|
* |
|
* #IfRow3D |
|
* arguments: table_name colname value colname2 value2 colname3 value3 |
|
* behavior: If the table table_name does have a row where colname = value AND colname2 = value2 AND colname3 = value3, the block will be executed. |
|
* |
|
* #IfIndex |
|
* desc: This function is most often used for dropping of indexes/keys. |
|
* arguments: table_name colname |
|
* behavior: If the table and index exist the relevant statements are executed, otherwise not. |
|
* |
|
* #IfNotIndex |
|
* desc: This function will allow adding of indexes/keys. |
|
* arguments: table_name colname |
|
* behavior: If the index does not exist, it will be created |
|
* |
|
* #IfNotMigrateClickOptions |
|
* Custom function for the importing of the Clickoptions settings (if exist) from the codebase into the database |
|
* |
|
* #IfNotListOccupation |
|
* Custom function for creating Occupation List |
|
* |
|
* #IfNotListReaction |
|
* Custom function for creating Reaction List |
|
* |
|
* #IfNotWenoRx |
|
* Custom function for importing new drug data |
|
* |
|
* #IfTextNullFixNeeded |
|
* desc: convert all text fields without default null to have default null. |
|
* arguments: none |
|
* |
|
* #IfTableEngine |
|
* desc: Execute SQL if the table has been created with given engine specified. |
|
* arguments: table_name engine |
|
* behavior: Use when engine conversion requires more than one ALTER TABLE |
|
* |
|
* #IfInnoDBMigrationNeeded |
|
* desc: find all MyISAM tables and convert them to InnoDB. |
|
* arguments: none |
|
* behavior: can take a long time. |
|
* |
|
* #IfDocumentNamingNeeded |
|
* desc: populate name field with document names. |
|
* arguments: none |
|
* |
|
* #EndIf |
|
* all blocks are terminated with a #EndIf statement. |
|
* |
|
* @param string $filename Sql upgrade/patch filename |
|
*/ |
|
function upgradeFromSqlFile($filename, $path = '') |
|
{ |
|
$sqlUpgradeService = new \OpenEMR\Services\Utils\SQLUpgradeService(); |
|
$sqlUpgradeService->upgradeFromSqlFile($filename, $path); |
|
} // end function
|
|
|