diff --git a/workflow/engine/classes/model/AppMessage.php b/workflow/engine/classes/model/AppMessage.php index 0ce2e71bc..9b4996dbc 100755 --- a/workflow/engine/classes/model/AppMessage.php +++ b/workflow/engine/classes/model/AppMessage.php @@ -120,5 +120,13 @@ class AppMessage extends BaseAppMessage return $this->getAppMsgUid(); } } + + public function updateStatus($msgUid, $msgStatus) + { + $message = AppMessagePeer::retrieveByPk( $msgUid ); + $message->fromArray( $message, BasePeer::TYPE_FIELDNAME ); + $message->setAppMsgStatus($msgStatus); + $message->save(); + } } diff --git a/workflow/engine/menus/setup.php b/workflow/engine/menus/setup.php index bd0fd6a6f..7f562e290 100755 --- a/workflow/engine/menus/setup.php +++ b/workflow/engine/menus/setup.php @@ -85,5 +85,6 @@ if ($RBAC->userCanAccess('PM_SETUP') == 1) { $G_TMP_MENU->AddIdRawOption('EVENT', '../events/eventList', G::LoadTranslation('ID_EVENTS'), '', '', 'logs'); $G_TMP_MENU->AddIdRawOption('LOG_CASE_SCHEDULER', '../cases/cases_Scheduler_Log', G::LoadTranslation('ID_CASE_SCHEDULER'), "icon-logs-list.png",'', 'logs'); $G_TMP_MENU->AddIdRawOption("CRON", "../setup/cron", G::LoadTranslation("ID_CRON_ACTIONS"), null, null, "logs"); + $G_TMP_MENU->AddIdRawOption('EMAILS', '../mails/emailList', ucfirst (strtolower ( G::LoadTranslation('ID_EMAILS'))), '', '', 'logs'); } diff --git a/workflow/engine/methods/mails/emailList.php b/workflow/engine/methods/mails/emailList.php new file mode 100644 index 000000000..590122672 --- /dev/null +++ b/workflow/engine/methods/mails/emailList.php @@ -0,0 +1,90 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + */ + +global $RBAC; +if ($RBAC->userCanAccess( 'PM_SETUP_ADVANCE' ) != 1) { + G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' ); + G::header( 'location: ../login/login' ); + die(); +} + +G::LoadClass( 'configuration' ); +$c = new Configurations(); +$configPage = $c->getConfiguration( 'eventList', 'pageSize', '', $_SESSION['USER_LOGGED'] ); +$Config['pageSize'] = isset( $configPage['pageSize'] ) ? $configPage['pageSize'] : 20; + +$G_MAIN_MENU = 'processmaker'; +$G_SUB_MENU = 'logs'; +$G_ID_MENU_SELECTED = 'logs'; +$G_ID_SUB_MENU_SELECTED = 'EMAILS'; + +//get values for the comboBoxes +$userUid = (isset( $_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '') ? $_SESSION['USER_LOGGED'] : null; +$status = array ( + array ('',G::LoadTranslation( 'ID_ALL' )), + array ("sent", "Sent"), + array ("pending", "Pending") +); + +$processes = getProcessArray( $userUid ); + +$G_PUBLISH = new Publisher(); + +$oHeadPublisher = & headPublisher::getSingleton(); +$oHeadPublisher->addExtJsScript( 'mails/emailList', false ); //adding a javascript file .js +$oHeadPublisher->addContent( 'mails/emailList' ); //adding a html file .html. +//sending the columns to display in grid +$oHeadPublisher->assign( 'statusValues', $status ); +$oHeadPublisher->assign( 'processValues', $processes ); + +function getProcessArray ($userUid) +{ + global $oAppCache; + require_once ("classes/model/AppCacheView.php"); + + $processes = Array (); + $processes[] = array ('',G::LoadTranslation( 'ID_ALL_PROCESS' )); + + $cProcess = new Criteria( 'workflow' ); + $cProcess->clearSelectColumns(); + $cProcess->addSelectColumn( AppCacheViewPeer::PRO_UID ); + $cProcess->addSelectColumn( AppCacheViewPeer::APP_PRO_TITLE ); + $cProcess->setDistinct( AppCacheViewPeer::PRO_UID ); + + $cProcess->addAscendingOrderByColumn( AppCacheViewPeer::APP_PRO_TITLE ); + + $oDataset = AppCacheViewPeer::doSelectRS( $cProcess ); + $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + $processes[] = array ($aRow['PRO_UID'],$aRow['APP_PRO_TITLE']); + $oDataset->next(); + } + + return $processes; +} + +G::RenderPage( 'publish', 'extJs' ); + diff --git a/workflow/engine/methods/mails/emailsAjax.php b/workflow/engine/methods/mails/emailsAjax.php new file mode 100644 index 000000000..588761d33 --- /dev/null +++ b/workflow/engine/methods/mails/emailsAjax.php @@ -0,0 +1,154 @@ +status = 'OK'; + + $criteria = new Criteria(); + $criteria->addJoin(AppMessagePeer::APP_UID, ApplicationPeer::APP_UID); + if ($emailStatus != '') { + $criteria->add( AppMessagePeer::APP_MSG_STATUS, $emailStatus, Criteria::LESS_EQUAL ); + } + if ($proUid != '') { + $criteria->add( ApplicationPeer::PRO_UID, $proUid); + } + if ($dateFrom != '') { + if ($dateTo != '') { + $criteria->add( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ) ) ); + } else { + $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL ); + } + } elseif ($dateTo != '') { + $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ); + } + + $result = AppMessagePeer::doSelectRS($criteria); + $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $data = Array(); + while ( $result->next() ) { + $data[] = $result->getRow(); + } + $totalCount = count($data); + + $criteria = new Criteria(); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_UID); + $criteria->addSelectColumn(AppMessagePeer::APP_UID); + $criteria->addSelectColumn(AppMessagePeer::DEL_INDEX); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_TYPE); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SUBJECT); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_FROM); + + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_TO); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_BODY); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_STATUS); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_DATE); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SEND_DATE); + $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SHOW_MESSAGE); + + $criteria->addSelectColumn(ApplicationPeer::PRO_UID); + + $criteria->addAsColumn('PRO_TITLE', 'C2.CON_VALUE'); + $criteria->addAlias('C2', 'CONTENT'); + + if ($emailStatus != '') { + $criteria->add( AppMessagePeer::APP_MSG_STATUS, $emailStatus, Criteria::LESS_EQUAL ); + } + if ($proUid != '') { + $criteria->add( ApplicationPeer::PRO_UID, $proUid); + } + if ($dateFrom != '') { + if ($dateTo != '') { + $criteria->add( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ) ) ); + } else { + $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL ); + } + } elseif ($dateTo != '') { + $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ); + } + + if ($sort != '') { + if ($dir == 'ASC') { + $criteria->addAscendingOrderByColumn($sort); + } else { + $criteria->addDescendingOrderByColumn($sort); + } + } else { + $oCriteria->addDescendingOrderByColumn(AppMessagePeer::APP_MSG_SEND_DATE ); + } + if ($limit != '') { + $criteria->setLimit($limit); + $criteria->setOffset($start); + } + $criteria->addJoin(AppMessagePeer::APP_UID, ApplicationPeer::APP_UID); + + $conditions = array(); + $conditions[] = array(ApplicationPeer::PRO_UID, 'C2.CON_ID'); + $conditions[] = array( + 'C2.CON_CATEGORY', DBAdapter::getStringDelimiter() . 'PRO_TITLE' . DBAdapter::getStringDelimiter() + ); + $conditions[] = array( + 'C2.CON_LANG', DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter() + ); + $criteria->addJoinMC($conditions, Criteria::LEFT_JOIN); + $result = AppMessagePeer::doSelectRS($criteria); + $result->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $data = Array(); + $dataPro = array(); + $index = 0; + $content = new Content(); + $tasTitleDefault = G::LoadTranslation('ID_TASK_NOT_RELATED'); + while ( $result->next() ) { + + $row = $result->getRow(); + $row['APP_MSG_FROM'] =htmlentities($row['APP_MSG_FROM'], ENT_QUOTES, "UTF-8"); + $row['APP_MSG_STATUS'] = ucfirst ( $row['APP_MSG_STATUS']); + $row['TAS_TITLE'] = $tasTitleDefault; + if ($row['DEL_INDEX'] != 0) { + $criteria = new Criteria(); + $criteria->addSelectColumn(AppDelegationPeer::PRO_UID); + $criteria->addSelectColumn(AppDelegationPeer::TAS_UID); + $criteria->addSelectColumn(AppDelegationPeer::DEL_INDEX); + $criteria->add(AppDelegationPeer::APP_UID, $row['APP_UID']); + $resultDelegation = AppDelegationPeer::doSelectRS($criteria); + $resultDelegation->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $row['TAS_TITLE'] = '-'; + while ($resultDelegation->next()) { + $rowDelegation = $resultDelegation->getRow(); + if ($row['DEL_INDEX'] == $rowDelegation['DEL_INDEX']) { + $row['TAS_TITLE'] = $content->load( 'TAS_TITLE', '', $rowDelegation['TAS_UID'], SYS_LANG ); + break; + } + } + } + + $data[] = $row; + } + $response = array(); + $response['totalCount'] = $totalCount; + $response['data'] = $data; + die(G::json_encode($response)); + break; + case 'updateStatusMessage': + if (isset($_REQUEST['APP_MSG_UID']) && isset($_REQUEST['APP_MSG_STATUS'])) { + $message = new AppMessage(); + $result = $message->updateStatus($_REQUEST['APP_MSG_UID'], $_REQUEST['APP_MSG_STATUS']); + } + break; +} + diff --git a/workflow/engine/templates/mails/emailList.html b/workflow/engine/templates/mails/emailList.html new file mode 100644 index 000000000..432f567b5 --- /dev/null +++ b/workflow/engine/templates/mails/emailList.html @@ -0,0 +1,3 @@ +