Merge remote-tracking branch 'upstream/3.0.1.6' into 3.0.1.6-Gmail

This commit is contained in:
Dante
2015-11-23 14:08:47 -04:00
26 changed files with 3236 additions and 2401 deletions

View File

@@ -467,47 +467,46 @@ class Consolidated
$xmlfrm->fields = array();
foreach ($fieldsDyna as $key => $value) {
foreach ($value as $val) {
if ($val->type == 'title' || $val->type == 'submit' || $val->type == 'panel' || $val->type == 'image' || $val->type == 'button' || $val->type == 'grid' || $val->type == 'checkgroup' || $val->type == 'radiogroup' || $val->type == 'radio' || $val->type == 'hidden' || $val->type == 'link' || $val->type == 'file' || $val->type == 'subform' || $val->type == 'label') {
continue;
}
$temp = new \stdclass();
$temp->type = $val->type;
$temp->label = $val->label;
$temp->name = $val->name;
$temp->required = (isset($val->required)) ? $val->required : 0;
$temp->mode = (isset($val->mode)) ? $val->mode : 'edit';
if (isset($val->type) && ($val->type == 'text' || $val->type == 'textarea' || $val->type == 'dropdown' || $val->type == 'checkbox' || $val->type == 'datetime')) {
$temp = new \stdclass();
$temp->type = $val->type;
$temp->label = $val->label;
$temp->name = $val->name;
$temp->required = (isset($val->required)) ? $val->required : 0;
$temp->mode = (isset($val->mode)) ? $val->mode : 'edit';
if ((isset($val->options) && !empty($val->options)) || (isset($val->optionsSql) && !empty($val->optionsSql))) {
$temp->storeData = '[';
if ((isset($val->options) && !empty($val->options)) || (isset($val->optionsSql) && !empty($val->optionsSql))) {
$temp->storeData = '[';
if (isset($val->options) && !empty($val->options)) {
foreach ($val->options as $valueOption) {
if(isset($valueOption->value)){
$temp->storeData .= '["' . $valueOption->value . '", "' . $valueOption->label . '"],';
}else{
$temp->storeData .= '["' . $valueOption['value'] . '", "' . $valueOption['label'] . '"],';
if (isset($val->options) && !empty($val->options)) {
foreach ($val->options as $valueOption) {
if (isset($valueOption->value)) {
$temp->storeData .= '["' . $valueOption->value . '", "' . $valueOption->label . '"],';
} else {
$temp->storeData .= '["' . $valueOption['value'] . '", "' . $valueOption['label'] . '"],';
}
}
}
}
if (isset($val->optionsSql) && !empty($val->optionsSql)) {
foreach ($val->optionsSql as $valueOption) {
if(isset($valueOption->value)){
$temp->storeData .= '["' . $valueOption->value . '", "' . $valueOption->label . '"],';
}else{
$temp->storeData .= '["' . $valueOption['value'] . '", "' . $valueOption['label'] . '"],';
if (isset($val->optionsSql) && !empty($val->optionsSql)) {
foreach ($val->optionsSql as $valueOption) {
if (isset($valueOption->value)) {
$temp->storeData .= '["' . $valueOption->value . '", "' . $valueOption->label . '"],';
} else {
$temp->storeData .= '["' . $valueOption['value'] . '", "' . $valueOption['label'] . '"],';
}
}
}
$temp->storeData = substr($temp->storeData, 0, -1);
$temp->storeData .= ']';
}
$temp->storeData = substr($temp->storeData,0,-1);
$temp->storeData .= ']';
}
$temp->readOnly = ($temp->mode == 'view') ? "1" : "0";
$temp->colWidth = 200;
$xmlfrm->fields[] = $temp;
$temp->readOnly = ($temp->mode == 'view') ? "1" : "0";
$temp->colWidth = 200;
$xmlfrm->fields[] = $temp;
}
}
}
} else {
$filename = $pro_uid . PATH_SEP . $dyn_uid . ".xml";

View File

@@ -402,10 +402,16 @@ class Light
{
try {
$oCase = new \Cases();
$Fields = $oCase->loadCase( $app_uid );
$_SESSION["APPLICATION"] = $app_uid;
$_SESSION["PROCESS"] = $Fields['PRO_UID'];
$_SESSION["TASK"] = $tas_uid;
$_SESSION["INDEX"] = $del_index;
$_SESSION["USER_LOGGED"] = $usr_uid;
$_SESSION["USR_USERNAME"] = isset($Fields['APP_DATA']['USR_USERNAME'])?$Fields['APP_DATA']['USR_USERNAME']:'';
$triggers = $oCase->loadTriggers( $tas_uid, 'ASSIGN_TASK', '-1', 'BEFORE');
if (isset($triggers)){
$Fields = $oCase->loadCase( $app_uid );
$Fields['APP_DATA'] = array_merge( $Fields['APP_DATA'], G::getSystemConstants() );
$Fields['APP_DATA'] = $oCase->ExecuteTriggers( $tas_uid, 'DYNAFORM', '-1', 'BEFORE', $Fields['APP_DATA'] );
$oCase->updateCase( $app_uid, $Fields );

View File

@@ -1927,5 +1927,23 @@ class Task
throw $e;
}
}
public function getValidateSelfService($data)
{
$data = array_change_key_case($data, CASE_LOWER);
$sTaskUID = $data['act_uid'];
$response = new \stdclass();
$oCriteria = new \Criteria();
$oCriteria->add(\AppDelegationPeer::DEL_THREAD_STATUS, "OPEN");
$oCriteria->add(\AppDelegationPeer::TAS_UID, $sTaskUID);
$oCriteria->add(\AppDelegationPeer::USR_UID, "");
$oApplication = \AppDelegationPeer::doSelectOne($oCriteria);
$response->result = true;
if(!empty($oApplication)) {
$response->result = false;
$response->message = G::LoadTranslation('ID_CURRENT_ASSING_TYPE_WITH_CASES');
}
return $response;
}
}

View File

@@ -135,6 +135,7 @@ class Variable
$dbConnection = \DbSourcePeer::retrieveByPK($variable->getVarDbconnection(), $variable->getPrjUid());
$oldVariable = array(
"VAR_UID" => $variable->getVarUid(),
"VAR_NAME" => $variable->getVarName(),
"VAR_FIELD_TYPE" => $variable->getVarFieldType(),
"VAR_DBCONNECTION" => $variable->getVarDbconnection(),
@@ -182,6 +183,7 @@ class Variable
//update dynaforms
$dbConnection = \DbSourcePeer::retrieveByPK($variable->getVarDbconnection(), $variable->getPrjUid());
$newVariable = array(
"VAR_UID" => $variable->getVarUid(),
"VAR_NAME" => $variable->getVarName(),
"VAR_FIELD_TYPE" => $variable->getVarFieldType(),
"VAR_DBCONNECTION" => $variable->getVarDbconnection(),
@@ -685,50 +687,21 @@ class Variable
$stmt = $cnn->createStatement();
$replaceFields = G::replaceDataField($variableSql, $arrayVariable);
$a = strtolower($replaceFields);
$a = str_replace("\n", " ", $a);
$a = str_replace("\t", " ", $a);
$ai = strpos($a, "select ");
$aj = strpos($a, " from ");
$sw = strrpos($a, " order ");
$sw2 = strrpos($a, " where ");
$b = substr($replaceFields, $ai + 6, $aj - ($ai + 6));
$b = explode(",", $b);
$b = isset($b[1]) ? $b[1] : $b[0];
$c = strtolower($b);
$ci = strpos($c, " as ");
$c = $ci > 0 ? substr($b, $ci + 4) : $b;
$filter = "";
if (isset($arrayVariable["filter"])) {
if ($sw2 !== false && $sw2 < $aj) {
$sw2 = false;
}
$filter = ($sw2 === false ? " WHERE " : " AND ") . $c . " LIKE '%" . $arrayVariable["filter"] . "%'";
$filter = $arrayVariable["filter"];
}
$order = " ORDER BY " . $c . " ASC";
if (isset($arrayVariable["order"])) {
$order = " ORDER BY " . $c . " " . $arrayVariable["order"];
}
if ($sw) {
$order = substr($replaceFields, $sw);
$replaceFields = substr($replaceFields, 0, $sw);
}
$start = 0;
if (isset($arrayVariable["start"])) {
$start = $arrayVariable["start"];
}
$limit = "";
if (isset($arrayVariable["limit"])) {
$limit = " LIMIT " . $start . "," . $arrayVariable["limit"];
$limit = $arrayVariable["limit"];
}
$replaceFields = $replaceFields . $filter . $order . $limit;
$parser = new \PHPSQLParser($replaceFields);
$replaceFields = $this->queryModified($parser->parsed, $filter, "*searchtype*", $start, $limit);
$rs = $stmt->executeQuery($replaceFields, \ResultSet::FETCHMODE_NUM);
@@ -747,5 +720,157 @@ class Variable
throw $e;
}
}
public function queryModified($sqlParsed, $inputSel = "", $searchType, $start, $limit)
{
if (!empty($sqlParsed['SELECT'])) {
$sqlSelectOptions = (isset($sqlParsed["OPTIONS"]) && count($sqlParsed["OPTIONS"]) > 0) ? implode(" ", $sqlParsed["OPTIONS"]) : null;
$sqlSelect = "SELECT $sqlSelectOptions ";
$aSelect = $sqlParsed["SELECT"];
$sFieldSel = (count($aSelect) > 1 ) ? $aSelect[1]['base_expr'] : $aSelect[0]['base_expr'];
foreach ($aSelect as $key => $value) {
if ($key != 0)
$sqlSelect .= ", ";
$sAlias = str_replace("`", "", $aSelect[$key]['alias']);
$sBaseExpr = $aSelect[$key]['base_expr'];
switch ($aSelect[$key]['expr_type']) {
case 'colref' : if ($sAlias === $sBaseExpr)
$sqlSelect .= $sAlias;
else
$sqlSelect .= $sBaseExpr . ' AS ' . $sAlias;
break;
case 'expression' : if ($sAlias === $sBaseExpr)
$sqlSelect .= $sBaseExpr;
else
$sqlSelect .= $sBaseExpr . ' AS ' . $sAlias;
break;
case 'subquery' : if (strpos($sAlias, $sBaseExpr, 0) != 0)
$sqlSelect .= $sAlias;
else
$sqlSelect .= $sBaseExpr . " AS " . $sAlias;
break;
case 'operator' : $sqlSelect .= $sBaseExpr;
break;
default : $sqlSelect .= $sBaseExpr;
break;
}
}
$sqlFrom = " FROM ";
if (!empty($sqlParsed['FROM'])) {
$aFrom = $sqlParsed['FROM'];
if (count($aFrom) > 0) {
foreach ($aFrom as $key => $value) {
if ($key == 0) {
$sqlFrom .= $aFrom[$key]['table'] . (($aFrom[$key]['table'] == $aFrom[$key]['alias']) ? "" : " " . $aFrom[$key]['alias']);
} else {
$sqlFrom .= " " . (($aFrom[$key]['join_type'] == 'JOIN') ? "INNER" : $aFrom[$key]['join_type']) . " JOIN " . $aFrom[$key]['table']
. (($aFrom[$key]['table'] == $aFrom[$key]['alias']) ? "" : " " . $aFrom[$key]['alias']) . " " . $aFrom[$key]['ref_type'] . " " . $aFrom[$key]['ref_clause'];
}
}
}
}
$sqlConditionLike = "LIKE '%" . $inputSel . "%'";
switch ($searchType) {
case "searchtype*":
$sqlConditionLike = "LIKE '" . $inputSel . "%'";
break;
case "*searchtype":
$sqlConditionLike = "LIKE '%" . $inputSel . "'";
break;
}
if (!empty($sqlParsed['WHERE'])) {
$sqlWhere = " WHERE ";
$aWhere = $sqlParsed['WHERE'];
foreach ($aWhere as $key => $value) {
$sqlWhere .= $value['base_expr'] . " ";
}
$sqlWhere .= " AND " . $sFieldSel . " " . $sqlConditionLike;
} else {
$sqlWhere = " WHERE " . $sFieldSel . " " . $sqlConditionLike;
}
$sqlGroupBy = "";
if (!empty($sqlParsed['GROUP'])) {
$sqlGroupBy = "GROUP BY ";
$aGroup = $sqlParsed['GROUP'];
foreach ($aGroup as $key => $value) {
if ($key != 0)
$sqlGroupBy .= ", ";
if ($value['direction'] == 'ASC')
$sqlGroupBy .= $value['base_expr'];
else
$sqlGroupBy .= $value['base_expr'] . " " . $value['direction'];
}
}
$sqlHaving = "";
if (!empty($sqlParsed['HAVING'])) {
$sqlHaving = "HAVING ";
$aHaving = $sqlParsed['HAVING'];
foreach ($aHaving as $key => $value) {
$sqlHaving .= $value['base_expr'] . " ";
}
}
$sqlOrderBy = "";
if (!empty($sqlParsed['ORDER'])) {
$sqlOrderBy = "ORDER BY ";
$aOrder = $sqlParsed['ORDER'];
foreach ($aOrder as $key => $value) {
if ($key != 0)
$sqlOrderBy .= ", ";
if ($value['direction'] == 'ASC')
$sqlOrderBy .= $value['base_expr'];
else
$sqlOrderBy .= $value['base_expr'] . " " . $value['direction'];
}
} else {
$sqlOrderBy = " ORDER BY " . $sFieldSel;
}
$sqlLimit = "";
if ($start >= 0) {
$sqlLimit = " LIMIT " . $start;
}
if ($limit !== "") {
$sqlLimit = " LIMIT " . $start . "," . $limit;
}
if (!empty($sqlParsed['LIMIT'])) {
$sqlLimit = " LIMIT " . $sqlParsed['LIMIT']['start'] . ", " . $sqlParsed['LIMIT']['end'];
}
return $sqlSelect . $sqlFrom . $sqlWhere . $sqlGroupBy . $sqlHaving . $sqlOrderBy . $sqlLimit;
}
if (!empty($sqlParsed['CALL'])) {
$sCall = "CALL ";
$aCall = $sqlParsed['CALL'];
foreach ($aCall as $key => $value) {
$sCall .= $value . " ";
}
return $sCall;
}
if (!empty($sqlParsed['EXECUTE'])) {
$sCall = "EXECUTE ";
$aCall = $sqlParsed['EXECUTE'];
foreach ($aCall as $key => $value) {
$sCall .= $value . " ";
}
return $sCall;
}
if (!empty($sqlParsed[''])) {
$sCall = "";
$aCall = $sqlParsed[''];
foreach ($aCall as $key => $value) {
$sCall .= $value . " ";
}
return $sCall;
}
}
}