Files
luos/workflow/engine/methods/additionalTables/additionalTablesSave.php
Enrique Ponce de Leon f5d2f74bc1 Bug 6153 solved.
Error was fixed. still remains implement uppercase function for IE8. at the momment there's no compatibilty.
2011-02-21 22:52:16 +00:00

220 lines
12 KiB
PHP

<?php
/**
* additionalTablesSave.php
*
* ProcessMaker Open Source Edition
* Copyright (C) 2004 - 2008 Colosa Inc.23
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
unset($_POST['form']['ADD_TAB_NAME_OLD']);
unset($_POST['form']['ADD_TAB_CLASS_NAME_OLD']);
if (!isset($_POST['form']['ADD_TAB_SDW_LOG_INSERT'])) {
$_POST['form']['ADD_TAB_SDW_LOG_INSERT'] = '';
}
if (!isset($_POST['form']['ADD_TAB_SDW_LOG_UPDATE'])) {
$_POST['form']['ADD_TAB_SDW_LOG_UPDATE'] = '';
}
if (!isset($_POST['form']['ADD_TAB_SDW_LOG_DELETE'])) {
$_POST['form']['ADD_TAB_SDW_LOG_DELETE'] = '';
}
if (!isset($_POST['form']['ADD_TAB_SDW_LOG_SELECT'])) {
$_POST['form']['ADD_TAB_SDW_LOG_SELECT'] = '';
}
if (!isset($_POST['form']['ADD_TAB_SDW_MAX_LENGTH'])) {
$_POST['form']['ADD_TAB_SDW_MAX_LENGTH'] = 0;
}
if (!isset($_POST['form']['ADD_TAB_SDW_AUTO_DELETE'])) {
$_POST['form']['ADD_TAB_SDW_AUTO_DELETE'] = '';
}
foreach ($_POST['form']['FIELDS'] as $iRow => $aRow) {
if (!isset($_POST['form']['FIELDS'][$iRow]['FLD_NULL'])) {
$_POST['form']['FIELDS'][$iRow]['FLD_NULL'] = '';
}
if (!isset($_POST['form']['FIELDS'][$iRow]['FLD_AUTO_INCREMENT'])) {
$_POST['form']['FIELDS'][$iRow]['FLD_AUTO_INCREMENT'] = '';
}
if (!isset($_POST['form']['FIELDS'][$iRow]['FLD_KEY'])) {
$_POST['form']['FIELDS'][$iRow]['FLD_KEY'] = '';
}
if (!isset($_POST['form']['FIELDS'][$iRow]['FLD_FOREIGN_KEY'])) {
$_POST['form']['FIELDS'][$iRow]['FLD_FOREIGN_KEY'] = '';
}
if (!isset($_POST['form']['FIELDS'][$iRow]['FLD_FOREIGN_KEY_TABLE'])) {
$_POST['form']['FIELDS'][$iRow]['FLD_FOREIGN_KEY_TABLE'] = '';
}
if (!isset($_POST['form']['FIELDS'][$iRow]['FLD_NULL_HDN'])) {
$_POST['form']['FIELDS'][$iRow]['FLD_NULL_HDN'] = '';
}
if (!isset($_POST['form']['FIELDS'][$iRow]['FLD_KEY_HDN'])) {
$_POST['form']['FIELDS'][$iRow]['FLD_KEY_HDN'] = '';
}
// replace values check
if (isset($_POST['form']['FIELDS'][$iRow]['FLD_KEY']) && $_POST['form']['FIELDS'][$iRow]['FLD_KEY_HDN'] == 'on') {
$_POST['form']['FIELDS'][$iRow]['FLD_KEY'] = $_POST['form']['FIELDS'][$iRow]['FLD_KEY_HDN'];
}
if (isset($_POST['form']['FIELDS'][$iRow]['FLD_NULL']) && $_POST['form']['FIELDS'][$iRow]['FLD_NULL_HDN'] == 'on') {
$_POST['form']['FIELDS'][$iRow]['FLD_NULL'] = $_POST['form']['FIELDS'][$iRow]['FLD_NULL_HDN'];
}
}
$aKeys = array();
$aDynavars = array();
$aNoKeys = array();
foreach ($_POST['form']['FIELDS'] as $aRow) {
if ($aRow['FLD_KEY'] == 'on') {
$aKeys[] = $aRow;
if(isset($aRow['CASE_VARIABLE']))
$aDynavars[] = array('FLD_UID'=>$aRow['FLD_UID'],'CASE_VARIABLE'=>$aRow['CASE_VARIABLE']);
else
$aDynavars[] = array('FLD_UID'=>$aRow['FLD_UID'],'CASE_VARIABLE'=>'');
}
else {
$aNoKeys[] = $aRow;
}
}
//print_r($_POST);
$aDynavars = serialize($aDynavars);
//var_dump($aKeys);
//print_r($aDynavars);
//die;
$_POST['form']['FIELDS'] = array();
$i = 1;
foreach ($aKeys as $aRow) {
$_POST['form']['FIELDS'][$i] = $aRow;
$i++;
}
foreach ($aNoKeys as $aRow) {
$_POST['form']['FIELDS'][$i] = $aRow;
$i++;
}
require_once 'classes/model/AdditionalTables.php';
$oAdditionalTables = new AdditionalTables();
require_once 'classes/model/Fields.php';
$oFields = new Fields();
if ($_POST['form']['ADD_TAB_UID'] == '') {
// We verified that the table does not exist.
$aNameTable = $oAdditionalTables->loadByName($_POST['form']['ADD_TAB_NAME']);
if(is_array($aNameTable)) {
G::SendMessageText('There is already a table named "' . $_POST['form']['ADD_TAB_NAME'] . '" in the database. Table creation canceled.', 'warning');
G::header('Location: additionalTablesList');
die;
}
// Reserved Words
$aReservedWords = array ('ALTER', 'CLOSE', 'COMMIT', 'CREATE', 'DECLARE',
'DELETE', 'DROP', 'FETCH', 'FUNCTION', 'GRANT',
'INDEX', 'INSERT', 'OPEN', 'REVOKE', 'ROLLBACK',
'SELECT', 'SYNONYM', 'TABLE', 'UPDATE', 'VIEW' );
if (in_array(strtoupper($_POST['form']['ADD_TAB_NAME']), $aReservedWords) ) {
G::SendMessageText('Could not create the table with the name "' . $_POST['form']['ADD_TAB_NAME'] . '" because it is a reserved word.', 'warning');
G::header('Location: additionalTablesList');
die;
}
$arrFields = $_POST['form']['FIELDS'];
$newaFields = array();
foreach ($arrFields as $arrField){
$arrField['FLD_NAME'] = strtoupper($arrField['FLD_NAME']);
$newaFields[] = $arrField;
}
$sAddTabUid = $oAdditionalTables->create(array('ADD_TAB_NAME' => $_POST['form']['ADD_TAB_NAME'],
'ADD_TAB_CLASS_NAME' => $_POST['form']['ADD_TAB_CLASS_NAME'],
'ADD_TAB_DESCRIPTION' => $_POST['form']['ADD_TAB_DESCRIPTION'],
'ADD_TAB_SDW_LOG_INSERT' => ($_POST['form']['ADD_TAB_SDW_LOG_INSERT'] == 'on' ? 1 : 0),
'ADD_TAB_SDW_LOG_UPDATE' => ($_POST['form']['ADD_TAB_SDW_LOG_UPDATE'] == 'on' ? 1 : 0),
'ADD_TAB_SDW_LOG_DELETE' => ($_POST['form']['ADD_TAB_SDW_LOG_DELETE'] == 'on' ? 1 : 0),
'ADD_TAB_SDW_LOG_SELECT' => ($_POST['form']['ADD_TAB_SDW_LOG_SELECT'] == 'on' ? 1 : 0),
'ADD_TAB_SDW_MAX_LENGTH' => $_POST['form']['ADD_TAB_SDW_MAX_LENGTH'],
'ADD_TAB_SDW_AUTO_DELETE' => ($_POST['form']['ADD_TAB_SDW_AUTO_DELETE'] == 'on' ? 1 : 0),
'ADD_TAB_DYNAVARS' => $aDynavars,
'ADD_TAB_PLG_UID' => ''), $newaFields);
$aFields = array();
/*$aFields[] = array('sType' => 'INT',
'iSize' => '11',
'sFieldName' => 'PM_UNIQUE_ID',
'bNull' => 0,
'bAI' => 1,
'bPrimaryKey' => 1);*/
foreach ($_POST['form']['FIELDS'] as $iRow => $aRow) {
$oFields->create(array('FLD_INDEX' => $iRow,
'ADD_TAB_UID' => $sAddTabUid,
'FLD_NAME' => strtoupper($_POST['form']['FIELDS'][$iRow]['FLD_NAME']),
'FLD_DESCRIPTION' => $_POST['form']['FIELDS'][$iRow]['FLD_DESCRIPTION'],
'FLD_TYPE' => $_POST['form']['FIELDS'][$iRow]['FLD_TYPE'],
'FLD_SIZE' => $_POST['form']['FIELDS'][$iRow]['FLD_SIZE'],
'FLD_NULL' => ($_POST['form']['FIELDS'][$iRow]['FLD_NULL'] == 'on' ? 1 : 0),
'FLD_AUTO_INCREMENT' => ($_POST['form']['FIELDS'][$iRow]['FLD_AUTO_INCREMENT'] == 'on' ? 1 : 0),
'FLD_KEY' => ($_POST['form']['FIELDS'][$iRow]['FLD_KEY'] == 'on' ? 1 : 0),
'FLD_FOREIGN_KEY' => ($_POST['form']['FIELDS'][$iRow]['FLD_FOREIGN_KEY'] == 'on' ? 1 : 0),
'FLD_FOREIGN_KEY_TABLE' => $_POST['form']['FIELDS'][$iRow]['FLD_FOREIGN_KEY_TABLE']));
$aFields[] = array('sType' => $_POST['form']['FIELDS'][$iRow]['FLD_TYPE'],
'iSize' => $_POST['form']['FIELDS'][$iRow]['FLD_SIZE'],
'sFieldName' => strtoupper($_POST['form']['FIELDS'][$iRow]['FLD_NAME']),
'bNull' => ($_POST['form']['FIELDS'][$iRow]['FLD_NULL'] == 'on' ? 1 : 0),
'bAI' => ($_POST['form']['FIELDS'][$iRow]['FLD_AUTO_INCREMENT'] == 'on' ? 1 : 0),
'bPrimaryKey' => ($_POST['form']['FIELDS'][$iRow]['FLD_KEY'] == 'on' ? 1 : 0));
}
$oAdditionalTables->createTable($_POST['form']['ADD_TAB_NAME'], 'wf', $aFields);
$oAdditionalTables->createPropelClasses($_POST['form']['ADD_TAB_NAME'], $_POST['form']['ADD_TAB_CLASS_NAME'], $newaFields, $sAddTabUid);
}
else {
$aData = $oAdditionalTables->load($_POST['form']['ADD_TAB_UID'], true);
$oAdditionalTables->update(array('ADD_TAB_UID' => $_POST['form']['ADD_TAB_UID'],
'ADD_TAB_NAME' => $_POST['form']['ADD_TAB_NAME'],
'ADD_TAB_CLASS_NAME' => $_POST['form']['ADD_TAB_CLASS_NAME'],
'ADD_TAB_DESCRIPTION' => $_POST['form']['ADD_TAB_DESCRIPTION'],
'ADD_TAB_SDW_LOG_INSERT' => ($_POST['form']['ADD_TAB_SDW_LOG_INSERT'] == 'on' ? 1 : 0),
'ADD_TAB_SDW_LOG_UPDATE' => ($_POST['form']['ADD_TAB_SDW_LOG_UPDATE'] == 'on' ? 1 : 0),
'ADD_TAB_SDW_LOG_DELETE' => ($_POST['form']['ADD_TAB_SDW_LOG_DELETE'] == 'on' ? 1 : 0),
'ADD_TAB_SDW_LOG_SELECT' => ($_POST['form']['ADD_TAB_SDW_LOG_SELECT'] == 'on' ? 1 : 0),
'ADD_TAB_SDW_MAX_LENGTH' => $_POST['form']['ADD_TAB_SDW_MAX_LENGTH'],
'ADD_TAB_SDW_AUTO_DELETE' => ($_POST['form']['ADD_TAB_SDW_AUTO_DELETE'] == 'on' ? 1 : 0),
'ADD_TAB_DYNAVARS' => $aDynavars,
'ADD_TAB_PLG_UID' => ''), $_POST['form']['FIELDS']);
$oCriteria = new Criteria('workflow');
$oCriteria->add(FieldsPeer::ADD_TAB_UID, $_POST['form']['ADD_TAB_UID']);
FieldsPeer::doDelete($oCriteria);
$aNewFields = array();
foreach ($_POST['form']['FIELDS'] as $iRow => $aField) {
$sUID = $oFields->create(array('FLD_UID' => $_POST['form']['FIELDS'][$iRow]['FLD_UID'],
'ADD_TAB_UID' => $_POST['form']['ADD_TAB_UID'],
'FLD_INDEX' => $iRow,
'FLD_NAME' => strtoupper($_POST['form']['FIELDS'][$iRow]['FLD_NAME']),
'FLD_DESCRIPTION' => $_POST['form']['FIELDS'][$iRow]['FLD_DESCRIPTION'],
'FLD_TYPE' => $_POST['form']['FIELDS'][$iRow]['FLD_TYPE'],
'FLD_SIZE' => $_POST['form']['FIELDS'][$iRow]['FLD_SIZE'],
'FLD_NULL' => ($_POST['form']['FIELDS'][$iRow]['FLD_NULL'] == 'on' ? 1 : 0),
'FLD_AUTO_INCREMENT' => ($_POST['form']['FIELDS'][$iRow]['FLD_AUTO_INCREMENT'] == 'on' ? 1 : 0),
'FLD_KEY' => ($_POST['form']['FIELDS'][$iRow]['FLD_KEY'] == 'on' ? 1 : 0),
'FLD_FOREIGN_KEY' => ($_POST['form']['FIELDS'][$iRow]['FLD_FOREIGN_KEY'] == 'on' ? 1 : 0),
'FLD_FOREIGN_KEY_TABLE' => $_POST['form']['FIELDS'][$iRow]['FLD_FOREIGN_KEY_TABLE']));
$aNewFields[$sUID] = $aField;
}
$aOldFields = array();
foreach ($aData['FIELDS'] as $aField) {
$aOldFields[$aField['FLD_UID']] = $aField;
}
$oAdditionalTables->updateTable($_POST['form']['ADD_TAB_NAME'], 'wf', $aNewFields, $aOldFields);
$oAdditionalTables->createPropelClasses($_POST['form']['ADD_TAB_NAME'], $_POST['form']['ADD_TAB_CLASS_NAME'], $_POST['form']['FIELDS'], $aData['ADD_TAB_UID']);
}
G::header('Location: additionalTablesList');