diff --git a/workflow/engine/classes/class.labelsGmail.php b/workflow/engine/classes/class.labelsGmail.php index 84a672074..1bb5ed603 100644 --- a/workflow/engine/classes/class.labelsGmail.php +++ b/workflow/engine/classes/class.labelsGmail.php @@ -92,6 +92,8 @@ class labelsGmail //The Subject to search the email $subject = "[PM] " .$proName. " Case: ". $appNumber; + require_once PATH_TRUNK . 'vendor' . PATH_SEP . 'google' . PATH_SEP . 'apiclient' . PATH_SEP . 'src' . PATH_SEP . 'Google' . PATH_SEP . 'autoload.php'; + require_once (PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.pmGoogleApi.php"); $pmGoogle = new PMGoogleApi(); $pmGoogle->setUser($mail); diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 163a90747..cc65076c0 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -914,7 +914,8 @@ class wsBase $aAttachment = null, $showMessage = true, $delIndex = 0, - $config = array() + $config = array(), + $gmail = 0 ) { try { if (!class_exists('System')) { @@ -969,8 +970,11 @@ class wsBase $oCase = new Cases(); $oldFields = $oCase->loadCase( $caseId ); - - $pathEmail = PATH_DATA_SITE . 'mailTemplates' . PATH_SEP . $oldFields['PRO_UID'] . PATH_SEP; + if($gmail == 1){ + $pathEmail = PATH_DATA_SITE . 'mailTemplates' . PATH_SEP; + }else { + $pathEmail = PATH_DATA_SITE . 'mailTemplates' . PATH_SEP . $oldFields['PRO_UID'] . PATH_SEP; + } $fileTemplate = $pathEmail . $sTemplate; G::mk_dir( $pathEmail, 0777, true ); diff --git a/workflow/engine/classes/model/AppDelegation.php b/workflow/engine/classes/model/AppDelegation.php index 489b00c0c..0a8d46593 100755 --- a/workflow/engine/classes/model/AppDelegation.php +++ b/workflow/engine/classes/model/AppDelegation.php @@ -264,6 +264,7 @@ class AppDelegation extends BaseAppDelegation $c->addSelectColumn( AppDelegationPeer::DEL_INIT_DATE ); $c->addSelectColumn( AppDelegationPeer::DEL_TASK_DUE_DATE ); $c->addSelectColumn( AppDelegationPeer::DEL_FINISH_DATE ); + $c->addSelectColumn( AppDelegationPeer::DEL_PREVIOUS ); $c->add( AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN' ); $c->add( AppDelegationPeer::APP_UID, $AppUid ); @@ -287,6 +288,7 @@ class AppDelegation extends BaseAppDelegation $case['DEL_INIT_DATE'] = $row['DEL_INIT_DATE']; $case['DEL_TASK_DUE_DATE'] = $row['DEL_TASK_DUE_DATE']; $case['DEL_FINISH_DATE'] = $row['DEL_FINISH_DATE']; + $case['DEL_PREVIOUS'] = $row['DEL_PREVIOUS']; $aCases[] = $case; $rs->next(); $row = $rs->getRow(); diff --git a/workflow/engine/classes/model/EmailServer.php b/workflow/engine/classes/model/EmailServer.php index f961d4f1a..1aefd8582 100644 --- a/workflow/engine/classes/model/EmailServer.php +++ b/workflow/engine/classes/model/EmailServer.php @@ -1,5 +1,28 @@ clearSelectColumns(); + $c->addSelectColumn( EmailServerPeer::MESS_ACCOUNT ); + + $c->add( EmailServerPeer::MESS_DEFAULT, 1 ); + + $rs = EmailServerPeer::doSelectRS( $c, Propel::getDBConnection('workflow_ro') ); + $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); + $rs->next(); + $row = $rs->getRow(); + $response=$row; + + return $response; + } } diff --git a/workflow/engine/methods/cases/derivatedGmail.php b/workflow/engine/methods/cases/derivatedGmail.php index a02d3f0bc..4ddf8a457 100644 --- a/workflow/engine/methods/cases/derivatedGmail.php +++ b/workflow/engine/methods/cases/derivatedGmail.php @@ -1,19 +1,14 @@ make('session.store'); - $licensedFeatures = & PMLicensedFeatures::getSingleton(); if (!$licensedFeatures->verifyfeature('7qhYmF1eDJWcEdwcUZpT0k4S0xTRStvdz09')) { G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' ); G::header( 'location: ../login/login' ); die; } -$caseId = $session->get('APPLICATION'); -$usrUid = $session->get('USER_LOGGED'); -$usrName = $session->get('USR_FULLNAME'); -$actualIndex = $session->get('INDEX'); +$caseId = $_SESSION['APPLICATION']; +$usrUid = $_SESSION['USER_LOGGED']; +$usrName = $_SESSION['USR_FULLNAME']; +$actualIndex = $_SESSION['INDEX']; $cont = 0; use \ProcessMaker\Services\Api; @@ -23,6 +18,7 @@ $actualThread = $appDel->Load($caseId, $actualIndex); $actualLastIndex = $actualThread['DEL_PREVIOUS']; $appDelPrev = $appDel->LoadParallel($caseId); + if($appDelPrev == array()){ $appDelPrev['0'] = $actualThread; } @@ -34,11 +30,12 @@ foreach ($appDelPrev as $app){ } } +require_once (PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "class.labelsGmail.php"); $oLabels = new labelsGmail(); $oResponse = $oLabels->setLabels($caseId, $actualIndex, $actualLastIndex, false); -if( $session->get('gmail') === 1 ){ - //$session->set('gmail', 0); - $mUrl = '/sys'. $session->get('WORKSPACE') .'/en/neoclassic/cases/cases_Open?APP_UID='.$caseId.'&DEL_INDEX='.$actualIndex.'&action=sent'; +if( $_SESSION['gmail'] === 1 ){ + //$_SESSION['gmail'] = 0; + $mUrl = '/sys'. $_SESSION['WORKSPACE'] .'/en/neoclassic/cases/cases_Open?APP_UID='.$caseId.'&DEL_INDEX='.$actualIndex.'&action=sent'; } else{ $mUrl = 'casesListExtJs'; } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php b/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php index 713d3ab6b..897754591 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php @@ -105,13 +105,33 @@ class Pmgmail { */ public function getDraftApp($app_uid, $index=1) { - $response = \AppCacheViewQuery::create() - ->filterByAppUid($app_uid) - ->filterByDelIndex($index) - ->find() - ->toArray(null, false, \BasePeer::TYPE_FIELDNAME); + $c = new \Criteria( 'workflow' ); + + $c->clearSelectColumns(); + $c->addSelectColumn( \AppCacheViewPeer::APP_NUMBER ); + $c->addSelectColumn( \AppCacheViewPeer::APP_STATUS ); + $c->addSelectColumn( \AppCacheViewPeer::DEL_INDEX ); + $c->addSelectColumn( \AppCacheViewPeer::APP_DEL_PREVIOUS_USER ); + $c->addSelectColumn( \AppCacheViewPeer::DEL_DELEGATE_DATE ); + $c->addSelectColumn( \AppCacheViewPeer::USR_UID ); + $c->addSelectColumn( \AppCacheViewPeer::PRO_UID ); + $c->addSelectColumn( \AppCacheViewPeer::APP_PRO_TITLE ); + $c->addSelectColumn( \AppCacheViewPeer::APP_TAS_TITLE ); + $c->addSelectColumn( \AppCacheViewPeer::DEL_THREAD_STATUS ); + $c->addSelectColumn( \AppCacheViewPeer::TAS_UID ); + $c->addSelectColumn( \AppCacheViewPeer::DEL_LAST_INDEX ); + + $c->add( \AppCacheViewPeer::APP_UID, $app_uid ); + $c->add( \AppCacheViewPeer::DEL_INDEX, $index ); - return $response; + $rs = \AppCacheViewPeer::doSelectRS( $c ); + $rs->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); + + $rows = Array (); + while ($rs->next()) { + $rows[] = $rs->getRow(); + } + return $rows; } /** diff --git a/workflow/public_html/pmGmail/sso.php b/workflow/public_html/pmGmail/sso.php index dc928d692..2d371bf64 100644 --- a/workflow/public_html/pmGmail/sso.php +++ b/workflow/public_html/pmGmail/sso.php @@ -1,26 +1,22 @@ make('session.store'); -$request = $sc->make('request'); +require_once (dirname(__FILE__) . '/../../../gulliver/system/class.bootstrap.php'); -$gmailToken = $request->query->get('gmailToken'); -$gmail = $request->query->get('gmail'); -$pmtoken = $request->query->get('pmtoken'); -$pmws = $request->query->get('pmws'); -$appUid = $request->query->get('appUid'); -$delIndex = $request->query->get('delIndex'); -$action = $request->query->get('action'); -$proUid = $request->query->has('proUid') ? $request->query->get('proUid') : ''; -$server = $request->query->get('server'); +$gmailToken = $_GET['gmailToken']; +$gmail = $_GET['gmail']; +$pmtoken = $_GET['pmtoken']; +$pmws = $_GET['pmws']; +$appUid = $_GET['appUid']; +$delIndex = $_GET['delIndex']; +$action = $_GET['action']; +$proUid = $_GET['proUid']; +$server = isset($_GET['server']) ? $_GET['server'] : ''; //First check if the feature is enabled in the license. $gCurl = curl_init( 'https://' . $server . '/api/1.0/' . $pmws . '/gmailIntegration/verifyGmailfeature/' ); curl_setopt( $gCurl, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' . $pmtoken ) ); curl_setopt( $gCurl, CURLOPT_RETURNTRANSFER, true); -curl_setopt( $gCurl, CURLOPT_SSL_VERIFYPEER,false); -curl_setopt( $gCurl, CURLOPT_CONNECTTIMEOUT ,0); +curl_setopt( $gCurl, CURLOPT_SSL_VERIFYPEER, false); +curl_setopt( $gCurl, CURLOPT_CONNECTTIMEOUT, 0); $gCurl_response = curl_exec( $gCurl ); curl_close($gCurl); @@ -37,7 +33,7 @@ $curl = curl_init( 'https://' . $server . '/api/1.0/' . $pmws . '/gmailIntegrati curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' . $pmtoken ) ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true); curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER,false); -curl_setopt( $curl, CURLOPT_CONNECTTIMEOUT ,0); +curl_setopt( $curl, CURLOPT_CONNECTTIMEOUT, 0); $curl_response = curl_exec( $curl ); curl_close($curl); @@ -49,7 +45,7 @@ if(count($decodedResp) > 1){ } //validationg if there is an actual PM session -if( !$session->has('USER_LOGGED') || $session->get('USER_LOGGED') != $decodedResp['0']->USR_UID){ +if( !isset($_SESSION['USER_LOGGED']) || $_SESSION['USER_LOGGED'] != $decodedResp['0']->USR_UID){ $url = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token='.$gmailToken; // init curl object @@ -72,32 +68,28 @@ if( !$session->has('USER_LOGGED') || $session->get('USER_LOGGED') != $decodedRes //If the email corresponds I get the username and with the gmail user_id the session is created. if($decodedResp['0']->USR_STATUS == "ACTIVE"){ //User Active! lets create the Session - $request = $sc->make('request'); - $session = $sc->make('session.store'); - - $session->setId($request->cookies->get($session->getName())); - $session->start(); - setcookie($session->getName(), $session->getId(), 0, '/'); - $request->setSession($session); - + @session_destroy(); + session_start(); + session_regenerate_id(); + if (PHP_VERSION < 5.2) { setcookie("workspaceSkin", "neoclasic", time() + (24 * 60 * 60), "/sys" . "neoclasic", "; HttpOnly"); } else { setcookie("workspaceSkin", "neoclasic", time() + (24 * 60 * 60), "/sys" . "neoclasic", null, false, true); } - $session->set('__EE_INSTALLATION__', 2); - $session->set('__EE_SW_PMLICENSEMANAGER__', 1); - $session->set('phpLastFileFound', ''); - $session->set('USERNAME_PREVIOUS1', 'admin'); - $session->set('USERNAME_PREVIOUS2', 'admin'); - $session->set('WORKSPACE', $pmws); - $session->set('USER_LOGGED', $decodedResp['0']->USR_UID); - $session->set('USR_USERNAME', $decodedResp['0']->USR_USERNAME); - $session->set('USR_FULLNAME', $decodedResp['0']->USR_FIRSTNAME. ' ' .$decodedResp['0']->USR_LASTNAME); - $session->set('__sw__', 1); - $session->save(); - //session created + $_SESSION = array(); + $_SESSION['__EE_INSTALLATION__'] = 2; + $_SESSION['__EE_SW_PMLICENSEMANAGER__'] = 1; + $_SESSION['phpLastFileFound'] = ''; + $_SESSION['USERNAME_PREVIOUS1'] = 'admin'; + $_SESSION['USERNAME_PREVIOUS2'] = 'admin'; + $_SESSION['WORKSPACE'] = $pmws; + $_SESSION['USER_LOGGED'] = $decodedResp['0']->USR_UID; + $_SESSION['USR_USERNAME'] = $decodedResp['0']->USR_USERNAME; + $_SESSION['USR_FULLNAME'] = $decodedResp['0']->USR_FIRSTNAME. ' ' .$decodedResp['0']->USR_LASTNAME; + $_SESSION['__sw__'] = 1; + //session created } else { echo Bootstrap::LoadTranslation( 'ID_USER_NOT_ACTIVE' ); die; @@ -115,7 +107,7 @@ if ($action == "draft"){ curl_setopt( $curlApp, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt( $curlApp, CURLOPT_RETURNTRANSFER, true); curl_setopt( $curlApp, CURLOPT_SSL_VERIFYPEER,false); - curl_setopt( $curlApp, CURLOPT_CONNECTTIMEOUT ,0); + curl_setopt( $curlApp, CURLOPT_CONNECTTIMEOUT, 0); $curl_response_app = curl_exec( $curlApp ); curl_close( $curlApp ); @@ -124,20 +116,12 @@ if ($action == "draft"){ header( 'location:' . $mainUrl ); die; } -$session->set('server', 'https://' . $server . '/sys'. $pmws .'/en/neoclassic/'); -$session->set('PMCase', 'cases/cases_Open?APP_UID='.$appUid.'&DEL_INDEX='.$delIndex.'&action='.$action.'&gmail=1'); +$_SESSION['server'] = 'https://' . $server . '/sys'. $pmws .'/en/neoclassic/'; +$_SESSION['PMCase'] = 'cases/cases_Open?APP_UID='.$appUid.'&DEL_INDEX='.$delIndex.'&action='.$action.'&gmail=1'; +$_SESSION['PMProcessmap'] = 'designer?prj_uid=' . $proUid . '&prj_readonly=true&app_uid=' . $appUid; +$_SESSION['PMUploadedDocuments'] = 'cases/ajaxListener?action=uploadedDocuments'; +$_SESSION['PMGeneratedDocuments'] = 'cases/casesGenerateDocumentPage_Ajax.php?actionAjax=casesGenerateDocumentPage'; -$session->set('PMProcessmap', 'designer?prj_uid=' . $proUid . '&prj_readonly=true&app_uid=' . $appUid); - -$session->set('PMCasesHistory', 'cases/ajaxListener?action=caseHistory'); - -$session->set('PMHistoryDynaform', 'cases/casesHistoryDynaformPage_Ajax?actionAjax=historyDynaformPage'); - -$session->set('PMUploadedDocuments', 'cases/ajaxListener?action=uploadedDocuments'); - -$session->set('PMGeneratedDocuments', 'cases/casesGenerateDocumentPage_Ajax.php?actionAjax=casesGenerateDocumentPage'); -ob_end_flush(); -$session->save(); header( 'location:' . 'templateForm.php' ); diff --git a/workflow/public_html/pmGmail/templateForm.php b/workflow/public_html/pmGmail/templateForm.php new file mode 100644 index 000000000..1051db733 --- /dev/null +++ b/workflow/public_html/pmGmail/templateForm.php @@ -0,0 +1,117 @@ + + + + + + Interface Processmaker + + + + + + + + +
+ + +
+
+ +
+
+
+ + +