Merge branch 'release/3.2' of bitbucket.org:colosa/processmaker into bugfix/HOR-2762

This commit is contained in:
Paula Quispe
2017-02-21 16:42:56 -04:00
4 changed files with 140 additions and 81 deletions

View File

@@ -28,6 +28,7 @@ class pmDynaform
private $dataSources = null;
private $databaseProviders = null;
private $propertiesToExclude = array();
public static $prefixs = array("@@", "@#", "@%", "@?", "@$", "@=");
public function __construct($fields = array())
{
@@ -194,7 +195,7 @@ class pmDynaform
$fn($json, $key, $value);
}
//set properties from trigger
$prefixs = array("@@", "@#", "@%", "@?", "@$", "@=");
$prefixs = self::$prefixs;
if (is_string($value) && in_array(substr($value, 0, 2), $prefixs)) {
$triggerValue = substr($value, 2);
if (isset($this->fields["APP_DATA"][$triggerValue])) {

View File

@@ -2439,35 +2439,36 @@ class workspaceTools
CLI::logging("> Completed table LIST_PARTICIPATED_HISTORY\n");
}
public function regenerateListParticipatedLast(){
public function regenerateListParticipatedLast()
{
$this->initPropel(true);
$query = 'INSERT INTO '.$this->dbName.'.LIST_PARTICIPATED_LAST
$query = 'INSERT INTO ' . $this->dbName . '.LIST_PARTICIPATED_LAST
(
APP_UID,
USR_UID,
DEL_INDEX,
TAS_UID,
PRO_UID,
APP_NUMBER,
APP_TITLE,
APP_PRO_TITLE,
APP_TAS_TITLE,
APP_STATUS,
DEL_PREVIOUS_USR_UID,
DEL_PREVIOUS_USR_USERNAME,
DEL_PREVIOUS_USR_FIRSTNAME,
DEL_PREVIOUS_USR_LASTNAME,
DEL_CURRENT_USR_USERNAME,
DEL_CURRENT_USR_FIRSTNAME,
DEL_CURRENT_USR_LASTNAME,
DEL_DELEGATE_DATE,
DEL_INIT_DATE,
DEL_DUE_DATE,
DEL_CURRENT_TAS_TITLE,
DEL_PRIORITY,
DEL_THREAD_STATUS)
SELECT
APP_UID,
USR_UID,
DEL_INDEX,
TAS_UID,
PRO_UID,
APP_NUMBER,
APP_TITLE,
APP_PRO_TITLE,
APP_TAS_TITLE,
APP_STATUS,
DEL_PREVIOUS_USR_UID,
DEL_PREVIOUS_USR_USERNAME,
DEL_PREVIOUS_USR_FIRSTNAME,
DEL_PREVIOUS_USR_LASTNAME,
DEL_CURRENT_USR_USERNAME,
DEL_CURRENT_USR_FIRSTNAME,
DEL_CURRENT_USR_LASTNAME,
DEL_DELEGATE_DATE,
DEL_INIT_DATE,
DEL_DUE_DATE,
DEL_CURRENT_TAS_TITLE,
DEL_PRIORITY,
DEL_THREAD_STATUS)
SELECT
ACV.APP_UID,
ACV.USR_UID,
ACV.DEL_INDEX,
@@ -2478,45 +2479,74 @@ class workspaceTools
ACV.APP_PRO_TITLE,
ACV.APP_TAS_TITLE,
ACV.APP_STATUS,
PRE_USR.USR_UID AS DEL_PREVIOUS_USR_UID,
PRE_USR.USR_USERNAME AS DEL_PREVIOUS_USR_USERNAME,
PRE_USR.USR_FIRSTNAME AS DEL_PREVIOUS_USR_FIRSTNAME,
PRE_USR.USR_LASTNAME AS DEL_PREVIOUS_USR_LASTNAME,
CUR_USR.USR_USERNAME AS DEL_CURRENT_USR_USERNAME,
CUR_USR.USR_FIRSTNAME AS DEL_CURRENT_USR_FIRSTNAME,
CUR_USR.USR_LASTNAME AS DEL_CURRENT_USR_LASTNAME,
ACV.DEL_DELEGATE_DATE AS DEL_DELEGATE_DATE,
ACV.DEL_INIT_DATE AS DEL_INIT_DATE,
ACV.DEL_TASK_DUE_DATE AS DEL_DUE_DATE,
CURR_USER_ACV.APP_TAS_TITLE AS DEL_CURRENT_TAS_TITLE,
DEL_PREVIOUS_USR_UID,
IFNULL(PRE_USR.USR_USERNAME, CUR_USR.USR_USERNAME) AS DEL_PREVIOUS_USR_USERNAME,
IFNULL(PRE_USR.USR_FIRSTNAME, CUR_USR.USR_FIRSTNAME) AS DEL_PREVIOUS_USR_USERNAME,
IFNULL(PRE_USR.USR_LASTNAME, CUR_USR.USR_LASTNAME) AS DEL_PREVIOUS_USR_USERNAME,
CUR_USR.USR_USERNAME AS DEL_CURRENT_USR_USERNAME,
CUR_USR.USR_FIRSTNAME AS DEL_CURRENT_USR_FIRSTNAME,
CUR_USR.USR_LASTNAME AS DEL_CURRENT_USR_LASTNAME,
ACV.DEL_DELEGATE_DATE AS DEL_DELEGATE_DATE,
ACV.DEL_INIT_DATE AS DEL_INIT_DATE,
ACV.DEL_TASK_DUE_DATE AS DEL_DUE_DATE,
ACV.APP_TAS_TITLE AS DEL_CURRENT_TAS_TITLE,
ACV.DEL_PRIORITY,
ACV.DEL_THREAD_STATUS
FROM
(SELECT
*, MAX(ACV_INT.DEL_INDEX) MAX_DEL_INDEX
FROM
'.$this->dbName.'.APP_CACHE_VIEW ACV_INT
GROUP BY ACV_INT.APP_UID , ACV_INT.USR_UID) ACV
INNER JOIN
(SELECT
ACV.APP_UID, ACV.USR_UID, ACV.APP_TAS_TITLE, ACV.PREVIOUS_USR_UID, ACV.DEL_INDEX
FROM
APP_CACHE_VIEW ACV
INNER JOIN
(SELECT
ACV_INT.APP_UID, MAX(ACV_INT.DEL_INDEX) DEL_INDEX
FROM
'.$this->dbName.'.APP_CACHE_VIEW ACV_INT
GROUP BY ACV_INT.APP_UID) LAST_ACV ON LAST_ACV.APP_UID = ACV.APP_UID
AND LAST_ACV.DEL_INDEX = ACV.DEL_INDEX) CURR_USER_ACV ON CURR_USER_ACV.APP_UID = ACV.APP_UID
LEFT JOIN
'.$this->dbName.'.USERS PRE_USR ON CURR_USER_ACV.PREVIOUS_USR_UID = PRE_USR.USR_UID
LEFT JOIN
'.$this->dbName.'.USERS CUR_USR ON CURR_USER_ACV.USR_UID = CUR_USR.USR_UID
';
FROM
(
SELECT
CASE WHEN ACV1.PREVIOUS_USR_UID = \'\' AND ACV1.DEL_INDEX = 1
THEN ACV1.USR_UID
ELSE ACV1.PREVIOUS_USR_UID END AS DEL_PREVIOUS_USR_UID,
ACV1.*
FROM ' . $this->dbName . '.APP_CACHE_VIEW ACV1
JOIN
(SELECT
ACV_INT.APP_UID,
MAX(ACV_INT.DEL_INDEX) MAX_DEL_INDEX
FROM
' . $this->dbName . '.APP_CACHE_VIEW ACV_INT
GROUP BY
ACV_INT.USR_UID,
ACV_INT.APP_UID
) ACV2
ON ACV2.APP_UID = ACV1.APP_UID AND ACV2.MAX_DEL_INDEX = ACV1.DEL_INDEX
) ACV
LEFT JOIN ' . $this->dbName . '.USERS PRE_USR ON ACV.PREVIOUS_USR_UID = PRE_USR.USR_UID
LEFT JOIN ' . $this->dbName . '.USERS CUR_USR ON ACV.USR_UID = CUR_USR.USR_UID';
$con = Propel::getConnection("workflow");
$stmt = $con->createStatement();
$stmt->executeQuery($query);
CLI::logging("> Inserted data into table LIST_PARTICIPATED_LAST\n");
$query = 'UPDATE ' . $this->dbName . '.LIST_PARTICIPATED_LAST LPL, (
SELECT
TASK.TAS_TITLE,
CUR_USER.APP_UID,
USERS.USR_UID,
USERS.USR_USERNAME,
USERS.USR_FIRSTNAME,
USERS.USR_LASTNAME
FROM (
SELECT
APP_UID,
TAS_UID,
DEL_INDEX,
USR_UID
FROM ' . $this->dbName . '.APP_DELEGATION
WHERE DEL_LAST_INDEX = 1
) CUR_USER
LEFT JOIN ' . $this->dbName . '.USERS ON CUR_USER.USR_UID = USERS.USR_UID
LEFT JOIN ' . $this->dbName . '.TASK ON CUR_USER.TAS_UID = TASK.TAS_UID) USERS_VALUES
SET
LPL.DEL_CURRENT_USR_USERNAME = USERS_VALUES.USR_USERNAME,
LPL.DEL_CURRENT_USR_FIRSTNAME = USERS_VALUES.USR_FIRSTNAME,
LPL.DEL_CURRENT_USR_LASTNAME = USERS_VALUES.USR_LASTNAME,
LPL.DEL_CURRENT_TAS_TITLE = USERS_VALUES.TAS_TITLE
WHERE LPL.APP_UID = USERS_VALUES.APP_UID';
$con = Propel::getConnection("workflow");
$stmt = $con->createStatement();
CLI::logging("> Updating the current users data on table LIST_PARTICIPATED_LAST\n");
$stmt->executeQuery($query);
CLI::logging("> Completed table LIST_PARTICIPATED_LAST\n");
}

View File

@@ -1698,19 +1698,29 @@ class Cases
if (isset($field['type'])) {
if ($field['type'] != 'form') {
if (isset($field['name']) && isset($appData[$field['name']])) {
if (isset($field['dataType']) && $field['dataType'] != 'grid') {
$caseVariable[$field['name']] = $appData[$field['name']];
if (isset($appData[$field['name'] . '_label'])) {
$caseVariable[$field['name'] . '_label'] = $appData[$field['name'] . '_label'];
} else {
$caseVariable[$field['name'] . '_label'] = '';
}
} else {
$caseVariable[$field['name']] = $appData[$field['name']];
foreach ($field as &$val) {
if (is_string($val) && in_array(substr($val, 0, 2), \pmDynaform::$prefixs)) {
$val = substr($val, 2);
}
}
foreach ($appData as $key => $valueKey) {
if (in_array($key, $field, true) != false) {
$keyname = array_search($key, $field);
if (isset($field['dataType']) && $field['dataType'] != 'grid') {
$caseVariable[$field[$keyname]] = $appData[$field[$keyname]];
if (isset($appData[$field[$keyname] . '_label'])) {
$caseVariable[$field[$keyname] . '_label'] = $appData[$field[$keyname] . '_label'];
} else {
$caseVariable[$field[$keyname] . '_label'] = '';
}
} else {
$caseVariable[$field[$keyname]] = $appData[$field[$keyname]];
}
break;
}
}
} else {
$caseVariableAux = $this->__getFieldsAndValuesByDynaFormAndAppData($field, $appData, $caseVariable);
$caseVariable = array_merge($caseVariable, $caseVariableAux);

View File

@@ -84,12 +84,13 @@ class FilesManager
}
}
foreach ($aFiles as $aFile) {
$arrayFileUid = $this->getFileManagerUid($sDirectory.$aFile['FILE']);
$arrayFileUid = $this->getFileManagerUid($sDirectory.$aFile['FILE'], $aFile['FILE']);
$fcontent = "";
if ($getContent === true) {
$fcontent = file_get_contents($sDirectory . $aFile['FILE']);
}
$fileUid = $arrayFileUid["PRF_UID"];
$fileUid = isset($arrayFileUid["PRF_UID"]) ? $arrayFileUid["PRF_UID"] : '';
$derivationScreen = isset($arrayFileUid["DERIVATION_SCREEN_TPL"]) ? true : false;
if ($fileUid != null) {
$oProcessFiles = \ProcessFilesPeer::retrieveByPK($fileUid);
$editable = $oProcessFiles->getPrfEditable();
@@ -107,7 +108,8 @@ class FilesManager
'prf_editable' => $editable,
'prf_create_date' => $oProcessFiles->getPrfCreateDate(),
'prf_update_date' => $oProcessFiles->getPrfUpdateDate(),
'prf_content' => $fcontent);
'prf_content' => $fcontent,
'prf_derivation_screen' => $derivationScreen);
} else {
$extention = end(explode(".", $aFile['FILE']));
if ($extention == 'docx' || $extention == 'doc' || $extention == 'html' || $extention == 'php' || $extention == 'jsp'
@@ -125,7 +127,8 @@ class FilesManager
'prf_editable' => $editable,
'prf_create_date' => '',
'prf_update_date' => '',
'prf_content' => $fcontent);
'prf_content' => $fcontent,
'prf_derivation_screen' => false);
}
}
return $aTheFiles;
@@ -389,13 +392,14 @@ class FilesManager
}
/**
* Get data of unique ids of a file
* Get data of unique ids of a file and if the template is used in a derivation screen
*
* @param string $path
* @param string $fileName the name of template
*
* return array
*/
public function getFileManagerUid($path)
public function getFileManagerUid($path, $fileName = '')
{
try {
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
@@ -406,11 +410,25 @@ class FilesManager
$baseName2 = $path[count($path)-2]."/".$path[count($path)-1];
$criteria = new \Criteria("workflow");
$criteria->addSelectColumn(\ProcessFilesPeer::PRF_UID);
$criteria->addSelectColumn(\ProcessPeer::PRO_DERIVATION_SCREEN_TPL);
$criteria->addSelectColumn(\TaskPeer::TAS_DERIVATION_SCREEN_TPL);
$criteria->addJoin(\ProcessFilesPeer::PRO_UID, \ProcessPeer::PRO_UID);
$criteria->addJoin(\ProcessPeer::PRO_UID, \TaskPeer::PRO_UID);
$criteria->add( $criteria->getNewCriterion( \ProcessFilesPeer::PRF_PATH, '%' . $baseName . '%', \Criteria::LIKE )->addOr( $criteria->getNewCriterion( \ProcessFilesPeer::PRF_PATH, '%' . $baseName2 . '%', \Criteria::LIKE )));
$rsCriteria = \ProcessFilesPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next();
return $rsCriteria->getRow();
$row = array();
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
if (!empty($row['PRO_DERIVATION_SCREEN_TPL']) && $row['PRO_DERIVATION_SCREEN_TPL'] == $fileName) {
$row['DERIVATION_SCREEN_TPL'] = true;
return $row;
} elseif (!empty($row['TAS_DERIVATION_SCREEN_TPL']) && $row['TAS_DERIVATION_SCREEN_TPL'] == $fileName) {
$row['DERIVATION_SCREEN_TPL'] = true;
return $row;
}
}
return $row;
} catch (\Exception $e) {
throw $e;
}