This commit is contained in:
Andrea Adamczyk
2019-03-11 12:32:10 -04:00
parent b0de0221ef
commit f8fe785b17
6 changed files with 168 additions and 69 deletions

View File

@@ -7,6 +7,7 @@ use ProcessMaker\ChangeLog\ChangeLog;
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
use ProcessMaker\Core\System; use ProcessMaker\Core\System;
use ProcessMaker\Plugins\PluginRegistry; use ProcessMaker\Plugins\PluginRegistry;
use ProcessMaker\Util\DateTime;
/** /**
* A Cases object where you can do start, load, update, refresh about cases * A Cases object where you can do start, load, update, refresh about cases
@@ -7213,6 +7214,7 @@ class Cases
* @param string $type * @param string $type
* @param string $userUid * @param string $userUid
* @return array|stdclass|string * @return array|stdclass|string
*
*/ */
public function getCaseNotes($applicationID, $type = 'array', $userUid = '') public function getCaseNotes($applicationID, $type = 'array', $userUid = '')
{ {
@@ -7225,7 +7227,7 @@ class Cases
if (is_array($appNotes)) { if (is_array($appNotes)) {
switch ($type) { switch ($type) {
case 'array': case 'array':
$response = array(); $response = [];
foreach ($appNotes['array']['notes'] as $key => $value) { foreach ($appNotes['array']['notes'] as $key => $value) {
$list = array(); $list = array();
$list['FULL_NAME'] = $value['USR_FIRSTNAME'] . " " . $value['USR_LASTNAME']; $list['FULL_NAME'] = $value['USR_FIRSTNAME'] . " " . $value['USR_LASTNAME'];
@@ -7233,6 +7235,9 @@ class Cases
if ($keys != 'USR_FIRSTNAME' && $keys != 'USR_LASTNAME' && $keys != 'USR_EMAIL') { if ($keys != 'USR_FIRSTNAME' && $keys != 'USR_LASTNAME' && $keys != 'USR_EMAIL') {
$list[$keys] = $value; $list[$keys] = $value;
} }
if ($keys == 'NOTE_DATE') {
$list[$keys] = DateTime::convertUtcToTimeZone($value);
}
} }
$response[$key + 1] = $list; $response[$key + 1] = $list;
} }
@@ -7245,6 +7250,9 @@ class Cases
if ($keys != 'USR_FIRSTNAME' && $keys != 'USR_LASTNAME' && $keys != 'USR_EMAIL') { if ($keys != 'USR_FIRSTNAME' && $keys != 'USR_LASTNAME' && $keys != 'USR_EMAIL') {
$response->$key->$keys = $value; $response->$key->$keys = $value;
} }
if ($keys == 'NOTE_DATE') {
$response->$key->$keys = DateTime::convertUtcToTimeZone($value);
}
} }
} }
break; break;
@@ -7254,7 +7262,7 @@ class Cases
$response .= $value['USR_FIRSTNAME'] . " " . $response .= $value['USR_FIRSTNAME'] . " " .
$value['USR_LASTNAME'] . " " . $value['USR_LASTNAME'] . " " .
"(" . $value['USR_USERNAME'] . ")" . "(" . $value['USR_USERNAME'] . ")" .
" " . $value['NOTE_CONTENT'] . " " . " (" . $value['NOTE_DATE'] . " ) " . " " . $value['NOTE_CONTENT'] . " " . " (" . DateTime::convertUtcToTimeZone($value['NOTE_DATE']) . " ) " .
" \n"; " \n";
} }
break; break;

View File

@@ -1,7 +1,7 @@
<?php <?php
//require_once 'classes/model/om/BaseAppNotes.php';
use ProcessMaker\Core\System; use ProcessMaker\Core\System;
use ProcessMaker\Util\DateTime;
/** /**
* Skeleton subclass for representing a row from the 'APP_NOTES' table. * Skeleton subclass for representing a row from the 'APP_NOTES' table.
@@ -14,9 +14,34 @@ use ProcessMaker\Core\System;
* *
* @package classes.model * @package classes.model
*/ */
class AppNotes extends BaseAppNotes class AppNotes extends BaseAppNotes
{ {
public function getNotesList ( /**
* Get the existing case notes information from a case
*
* @param string $appUid
* @param string $usrUid
* @param string $start
* @param int $limit
* @param string $sort
* @param string $dir
* @param string $dateFrom
* @param string $dateTo
* @param string $search
*
* @return array
*
* @see \Cases->getCaseNotes()
* @see \AppProxy->getNotesList()
* @see \Home->getAppsData()
* @see workflow/engine/methods/cases/caseNotesAjax.php->getNotesList()
* @see \ProcessMaker\BusinessModel\Cases->getCaseNotes()
* @see \ProcessMaker\Services\Api\Light->doGetCaseNotes()
*
* @link https://wiki.processmaker.com/3.2/Case_Notes#Viewing_Existing_Case_Notes
*/
public function getNotesList(
$appUid, $appUid,
$usrUid = '', $usrUid = '',
$start = '', $start = '',
@@ -25,70 +50,71 @@ class AppNotes extends BaseAppNotes
$dir = 'DESC', $dir = 'DESC',
$dateFrom = '', $dateFrom = '',
$dateTo = '', $dateTo = '',
$search = '') $search = ''
{ ) {
$Criteria = new Criteria( 'workflow' ); $criteria = new Criteria('workflow');
$Criteria->clearSelectColumns(); $criteria->clearSelectColumns();
$Criteria->addSelectColumn( AppNotesPeer::APP_UID ); $criteria->addSelectColumn(AppNotesPeer::APP_UID);
$Criteria->addSelectColumn( AppNotesPeer::USR_UID ); $criteria->addSelectColumn(AppNotesPeer::USR_UID);
$Criteria->addSelectColumn( AppNotesPeer::NOTE_DATE ); $criteria->addSelectColumn(AppNotesPeer::NOTE_DATE);
$Criteria->addSelectColumn( AppNotesPeer::NOTE_CONTENT ); $criteria->addSelectColumn(AppNotesPeer::NOTE_CONTENT);
$Criteria->addSelectColumn( AppNotesPeer::NOTE_TYPE ); $criteria->addSelectColumn(AppNotesPeer::NOTE_TYPE);
$Criteria->addSelectColumn( AppNotesPeer::NOTE_AVAILABILITY ); $criteria->addSelectColumn(AppNotesPeer::NOTE_AVAILABILITY);
$Criteria->addSelectColumn( AppNotesPeer::NOTE_ORIGIN_OBJ ); $criteria->addSelectColumn(AppNotesPeer::NOTE_ORIGIN_OBJ);
$Criteria->addSelectColumn( AppNotesPeer::NOTE_AFFECTED_OBJ1 ); $criteria->addSelectColumn(AppNotesPeer::NOTE_AFFECTED_OBJ1);
$Criteria->addSelectColumn( AppNotesPeer::NOTE_AFFECTED_OBJ2 ); $criteria->addSelectColumn(AppNotesPeer::NOTE_AFFECTED_OBJ2);
$Criteria->addSelectColumn( AppNotesPeer::NOTE_RECIPIENTS ); $criteria->addSelectColumn(AppNotesPeer::NOTE_RECIPIENTS);
$Criteria->addSelectColumn( UsersPeer::USR_USERNAME ); $criteria->addSelectColumn(UsersPeer::USR_USERNAME);
$Criteria->addSelectColumn( UsersPeer::USR_FIRSTNAME ); $criteria->addSelectColumn(UsersPeer::USR_FIRSTNAME);
$Criteria->addSelectColumn( UsersPeer::USR_LASTNAME ); $criteria->addSelectColumn(UsersPeer::USR_LASTNAME);
$Criteria->addSelectColumn( UsersPeer::USR_EMAIL ); $criteria->addSelectColumn(UsersPeer::USR_EMAIL);
$Criteria->addJoin( AppNotesPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN ); $criteria->addJoin(AppNotesPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
$Criteria->add( AppNotesPeer::APP_UID, $appUid, Criteria::EQUAL ); $criteria->add(AppNotesPeer::APP_UID, $appUid, Criteria::EQUAL);
if ($usrUid != '') { if ($usrUid != '') {
$Criteria->add( AppNotesPeer::USR_UID, $usrUid, Criteria::EQUAL ); $criteria->add(AppNotesPeer::USR_UID, $usrUid, Criteria::EQUAL);
} }
if ($dateFrom != '') { if ($dateFrom != '') {
$Criteria->add( AppNotesPeer::NOTE_DATE, $dateFrom, Criteria::GREATER_EQUAL ); $criteria->add(AppNotesPeer::NOTE_DATE, $dateFrom, Criteria::GREATER_EQUAL);
} }
if ($dateTo != '') { if ($dateTo != '') {
$Criteria->add( AppNotesPeer::NOTE_DATE, $dateTo, Criteria::LESS_EQUAL ); $criteria->add(AppNotesPeer::NOTE_DATE, $dateTo, Criteria::LESS_EQUAL);
} }
if ($search != '') { if ($search != '') {
$Criteria->add( AppNotesPeer::NOTE_CONTENT, '%'.$search.'%', Criteria::LIKE ); $criteria->add(AppNotesPeer::NOTE_CONTENT, '%' . $search . '%', Criteria::LIKE);
} }
if ($dir == 'DESC') { if ($dir == 'DESC') {
$Criteria->addDescendingOrderByColumn($sort); $criteria->addDescendingOrderByColumn($sort);
} else { } else {
$Criteria->addAscendingOrderByColumn($sort); $criteria->addAscendingOrderByColumn($sort);
} }
$response = array (); $response = [];
$totalCount = AppNotesPeer::doCount( $Criteria ); $totalCount = AppNotesPeer::doCount($criteria);
$response['totalCount'] = $totalCount; $response['totalCount'] = $totalCount;
$response['notes'] = array (); $response['notes'] = [];
if ($start != '') { if ($start != '') {
$Criteria->setLimit( $limit ); $criteria->setLimit($limit);
$Criteria->setOffset( $start ); $criteria->setOffset($start);
} }
$oDataset = appNotesPeer::doSelectRS( $Criteria ); $dataset = AppNotesPeer::doSelectRS($criteria);
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next(); $dataset->next();
while ($aRow = $oDataset->getRow()) { while ($row = $dataset->getRow()) {
$aRow['NOTE_CONTENT'] = stripslashes($aRow['NOTE_CONTENT']); $row['NOTE_CONTENT'] = stripslashes($row['NOTE_CONTENT']);
$response['notes'][] = $aRow; $response['notes'][] = $row;
$oDataset->next(); $dataset->next();
} }
$result['criteria'] = $Criteria; $result = [];
$result['criteria'] = $criteria;
$result['array'] = $response; $result['array'] = $response;
return $result; return $result;

View File

@@ -1,4 +1,6 @@
<?php <?php
use ProcessMaker\Util\DateTime;
if (!isset($_SESSION['USER_LOGGED'])) { if (!isset($_SESSION['USER_LOGGED'])) {
$response = new stdclass(); $response = new stdclass();
$response->message = G::LoadTranslation('ID_LOGIN_AGAIN'); $response->message = G::LoadTranslation('ID_LOGIN_AGAIN');
@@ -23,15 +25,22 @@ class AppProxy extends HttpProxyController
* @param int $httpData->start * @param int $httpData->start
* @param int $httpData->limit * @param int $httpData->limit
* @param string $httpData->appUid (optionalif it is not passed try use $_SESSION['APPLICATION']) * @param string $httpData->appUid (optionalif it is not passed try use $_SESSION['APPLICATION'])
* @return array containg the case notes * @return array containing the case notes
*
* @see workflow/engine/methods/cases/open.php
* @see workflow/engine/methods/cases/casesListExtJs.php
* @see workflow/engine/methods/cases/casesConsolidatedListExtJs.php
*
* @link https://wiki.processmaker.com/3.2/Case_Notes
* @link https://wiki.processmaker.com/3.2/Cases/Case_Notes
*/ */
function getNotesList ($httpData) function getNotesList($httpData)
{ {
if (!isset($_SESSION['USER_LOGGED'])) { if (!isset($_SESSION['USER_LOGGED'])) {
$response = new stdclass(); $response = new stdclass();
$response->message = G::LoadTranslation('ID_LOGIN_AGAIN'); $response->message = G::LoadTranslation('ID_LOGIN_AGAIN');
$response->lostSession = true; $response->lostSession = true;
print G::json_encode( $response ); print G::json_encode($response);
die(); die();
} }
@@ -66,8 +75,7 @@ class AppProxy extends HttpProxyController
$httpData->pro = $caseLoad['PRO_UID']; $httpData->pro = $caseLoad['PRO_UID'];
} }
if(!isset($httpData->pro) || empty($httpData->pro) ) if (!isset($httpData->pro) || empty($httpData->pro)) {
{
$proUid = $_SESSION['PROCESS']; $proUid = $_SESSION['PROCESS'];
} else { } else {
$proUid = $httpData->pro; $proUid = $httpData->pro;
@@ -80,12 +88,15 @@ class AppProxy extends HttpProxyController
} }
$usrUid = $_SESSION['USER_LOGGED']; $usrUid = $_SESSION['USER_LOGGED'];
$respView = $case->getAllObjectsFrom($proUid, $appUid, $tasUid, $usrUid, "VIEW", $delIndex); $respView = $case->getAllObjectsFrom($proUid, $appUid, $tasUid, $usrUid, "VIEW", $delIndex);
$respBlock = $case->getAllObjectsFrom($proUid, $appUid, $tasUid, $usrUid, "BLOCK", $delIndex); $respBlock = $case->getAllObjectsFrom($proUid, $appUid, $tasUid, $usrUid, "BLOCK", $delIndex);
if ($respView['CASES_NOTES'] == 0 && $respBlock['CASES_NOTES'] == 0) { if ($respView['CASES_NOTES'] == 0 && $respBlock['CASES_NOTES'] == 0) {
return array ('totalCount' => 0,'notes' => array (),'noPerms' => 1 return [
); 'totalCount' => 0,
'notes' => [],
'noPerms' => 1
];
} }
$usrUid = isset($_SESSION['USER_LOGGED']) ? $_SESSION['USER_LOGGED'] : ""; $usrUid = isset($_SESSION['USER_LOGGED']) ? $_SESSION['USER_LOGGED'] : "";
@@ -93,6 +104,12 @@ class AppProxy extends HttpProxyController
$response = $appNotes->getNotesList($appUid, '', $httpData->start, $httpData->limit); $response = $appNotes->getNotesList($appUid, '', $httpData->start, $httpData->limit);
$response = AppNotes::applyHtmlentitiesInNotes($response); $response = AppNotes::applyHtmlentitiesInNotes($response);
$iterator = 0;
foreach ($response['array']['notes'] as $value) {
$response ['array']['notes'][$iterator]['NOTE_DATE'] = DateTime::convertUtcToTimeZone($value['NOTE_DATE']);
$iterator++;
}
require_once("classes/model/Application.php"); require_once("classes/model/Application.php");
$oApplication = new Application(); $oApplication = new Application();
$aApplication = $oApplication->Load($appUid); $aApplication = $oApplication->Load($appUid);

View File

@@ -1,6 +1,7 @@
<?php <?php
use ProcessMaker\Core\System; use ProcessMaker\Core\System;
use ProcessMaker\Util\DateTime;
/** /**
* Home controller * Home controller
@@ -359,6 +360,29 @@ class Home extends Controller
$this->render(); $this->render();
} }
/**
* Get the cases information
*
* @param string $type
* @param integer $start
* @param integer $limit
* @param string $user
* @param string $filter
* @param string $search
* @param string $process
* @param string $status
* @param string $dateFrom
* @param string $dateTo
* @param string $callback
* @param string $dir
* @param string $sort
* @param string $category
* @return array
*
* @see \Home->appAdvancedSearch()
* @see \Home->appList()
* @see \Home->getApps()
*/
public function getAppsData( public function getAppsData(
$type, $type,
$start = null, $start = null,
@@ -404,10 +428,10 @@ class Home extends Controller
$solrEnabled = false; $solrEnabled = false;
if (( if ((
$type == "todo" || $type == "draft" || $type == "paused" || $type == "sent" || $type == "todo" || $type == "draft" || $type == "paused" || $type == "sent" ||
$type == "selfservice" || $type == "unassigned" || $type == "search" $type == "selfservice" || $type == "unassigned" || $type == "search"
) && ) &&
(($solrConf = System::solrEnv()) !== false) (($solrConf = System::solrEnv()) !== false)
) { ) {
$ApplicationSolrIndex = new AppSolr( $ApplicationSolrIndex = new AppSolr(
$solrConf["solr_enabled"], $solrConf["solr_enabled"],
@@ -443,21 +467,21 @@ class Home extends Controller
$category $category
); );
} else { } else {
$dataList['userId'] = $user; $dataList['userId'] = $user;
$dataList['userUid'] = $this->userUid; $dataList['userUid'] = $this->userUid;
$dataList['start'] = $start; $dataList['start'] = $start;
$dataList['limit'] = $limit; $dataList['limit'] = $limit;
$dataList['filter'] = $filter; $dataList['filter'] = $filter;
$dataList['search'] = $search; $dataList['search'] = $search;
$dataList['process'] = $process; $dataList['process'] = $process;
$dataList['status'] = $status; $dataList['status'] = $status;
$dataList['dateFrom'] = $dateFrom; $dataList['dateFrom'] = $dateFrom;
$dataList['dateTo'] = $dateTo; $dataList['dateTo'] = $dateTo;
$dataList['callback'] = $callback; $dataList['callback'] = $callback;
$dataList['dir'] = $dir; $dataList['dir'] = $dir;
$dataList['sort'] = $sort; $dataList['sort'] = $sort;
$dataList['category'] = $category; $dataList['category'] = $category;
$dataList['action'] = $type; $dataList['action'] = $type;
$dataList['dir'] = 'DESC'; $dataList['dir'] = 'DESC';
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
if (true) { if (true) {
@@ -527,8 +551,9 @@ class Home extends Controller
$generalConfCasesList = $conf->getConfiguration('ENVIRONMENT_SETTINGS', ''); $generalConfCasesList = $conf->getConfiguration('ENVIRONMENT_SETTINGS', '');
$cases['data'][$i]['DEL_DELEGATE_DATE'] = ''; $cases['data'][$i]['DEL_DELEGATE_DATE'] = '';
if (!empty(config("system.workspace"))) { if (!empty(config("system.workspace"))) {
if (isset( $generalConfCasesList['casesListDateFormat'] ) && ! empty( $generalConfCasesList['casesListDateFormat'] )) { if (isset($generalConfCasesList['casesListDateFormat']) && !empty($generalConfCasesList['casesListDateFormat'])) {
$cases['data'][$i]['DEL_DELEGATE_DATE'] = $conf->getSystemDate($row['DEL_DELEGATE_DATE'], 'casesListDateFormat'); $cases['data'][$i]['DEL_DELEGATE_DATE'] = $conf->getSystemDate($row['DEL_DELEGATE_DATE'],
'casesListDateFormat');
} }
} }
if ($cases['data'][$i]['DEL_DELEGATE_DATE'] == '') { if ($cases['data'][$i]['DEL_DELEGATE_DATE'] == '') {
@@ -542,6 +567,12 @@ class Home extends Controller
$notes = $appNotes->getNotesList($row['APP_UID'], '', $notesStart, $notesLimit); $notes = $appNotes->getNotesList($row['APP_UID'], '', $notesStart, $notesLimit);
$notes = AppNotes::applyHtmlentitiesInNotes($notes); $notes = AppNotes::applyHtmlentitiesInNotes($notes);
$iterator = 0;
foreach ($notes['array']['notes'] as $val) {
$notes ['array']['notes'][$iterator]['NOTE_DATE'] = DateTime::convertUtcToTimeZone($val['NOTE_DATE']);
$iterator++;
}
$notes = $notes['array']; $notes = $notes['array'];
$cases['data'][$i]['NOTES_COUNT'] = $notes['totalCount']; $cases['data'][$i]['NOTES_COUNT'] = $notes['totalCount'];

View File

@@ -1,4 +1,8 @@
<?php <?php
/**
* @deprecated This file is not used anymore, it will be removed in future versions of PM
*/
if (! isset( $_REQUEST['action'] )) { if (! isset( $_REQUEST['action'] )) {
$res['success'] = 'failure'; $res['success'] = 'failure';
$res['message'] = 'You may request an action'; $res['message'] = 'You may request an action';

View File

@@ -1,6 +1,7 @@
<?php <?php
use ProcessMaker\Util\ParseSoapVariableName; use ProcessMaker\Util\ParseSoapVariableName;
use ProcessMaker\Util\DateTime;
ini_set("soap.wsdl_cache_enabled", 0); //disabling WSDL cache ini_set("soap.wsdl_cache_enabled", 0); //disabling WSDL cache
@@ -923,6 +924,13 @@ function systemInformation($params)
return $res; return $res;
} }
/**
* Obtains the cases notes in a soap call
*
* @param $params
* @return WsGetCaseNotesResponse|WsResponse
*
*/
function getCaseNotes($params) function getCaseNotes($params)
{ {
$vsResult = isValidSession($params->sessionId); $vsResult = isValidSession($params->sessionId);
@@ -934,6 +942,11 @@ function getCaseNotes($params)
$ws = new WsBase(); $ws = new WsBase();
$res = $ws->getCaseNotes($params->applicationID, $params->userUid); $res = $ws->getCaseNotes($params->applicationID, $params->userUid);
foreach ($res->notes as $key => $value) {
$res->notes[$key]['note_date'] = DateTime::convertUtcToTimeZone($res->notes[$key]['note_date']);
}
return $res; return $res;
} }