Merged in dheeyi/processmaker/PM-1150 (pull request #2183)

PM-1150 El trigger PMF Delete Case despliega el error Fatal error: Call to a member function toArray() on a non-object in /opt/processmaker280/workflow/engine/classes/class.case.php on line 949
This commit is contained in:
Julio Cesar Laura Avendaño
2015-05-18 12:15:06 -04:00
2 changed files with 77 additions and 66 deletions

View File

@@ -949,6 +949,10 @@ class Cases
public function updateCase($sAppUid, $Fields = array()) public function updateCase($sAppUid, $Fields = array())
{ {
try { try {
$oApplication = new Application;
if (!$oApplication->exists($sAppUid)) {
return false;
}
$aApplicationFields = $Fields['APP_DATA']; $aApplicationFields = $Fields['APP_DATA'];
$Fields['APP_UID'] = $sAppUid; $Fields['APP_UID'] = $sAppUid;
$Fields['APP_UPDATE_DATE'] = 'now'; $Fields['APP_UPDATE_DATE'] = 'now';
@@ -6903,7 +6907,7 @@ class Cases
unset($aFields['APP_STATUS']); unset($aFields['APP_STATUS']);
unset($aFields['APP_PROC_STATUS']); unset($aFields['APP_PROC_STATUS']);
unset($aFields['APP_PROC_CODE']); unset($aFields['APP_PROC_CODE']);
unset($aFields['APP_PIN']); unset($aFields['APP_PIN']);
$this->updateCase($aFields['APP_UID'], $aFields); $this->updateCase($aFields['APP_UID'], $aFields);
return true; return true;
} }

View File

@@ -56,6 +56,11 @@ class Application extends BaseApplication
*/ */
public function getAppTitle() public function getAppTitle()
{ {
$oApplication = new Application;
if (!$oApplication->exists($this->getAppUid())) {
return false;
}
if ($this->getAppUid() == '') { if ($this->getAppUid() == '') {
throw (new Exception( "Error in getAppTitle, the APP_UID can't be blank")); throw (new Exception( "Error in getAppTitle, the APP_UID can't be blank"));
} }
@@ -311,7 +316,9 @@ class Application extends BaseApplication
try { try {
$oApplication = ApplicationPeer::retrieveByPk( $AppUid ); $oApplication = ApplicationPeer::retrieveByPk( $AppUid );
if (!$oApplication) {
return false;
}
if (is_object($oApplication) && get_class ($oApplication) == 'Application' ) { if (is_object($oApplication) && get_class ($oApplication) == 'Application' ) {
$aFields = $oApplication->toArray(BasePeer::TYPE_FIELDNAME); $aFields = $oApplication->toArray(BasePeer::TYPE_FIELDNAME);
$this->fromArray($aFields, BasePeer::TYPE_FIELDNAME); $this->fromArray($aFields, BasePeer::TYPE_FIELDNAME);
@@ -574,19 +581,19 @@ class Application extends BaseApplication
} }
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
public function calculateAppDuration ($cron = 0) public function calculateAppDuration ($cron = 0)
{ {
try { try {
if ($cron == 1) { if ($cron == 1) {
$arrayCron = unserialize( trim( @file_get_contents( PATH_DATA . "cron" ) ) ); $arrayCron = unserialize( trim( @file_get_contents( PATH_DATA . "cron" ) ) );
$arrayCron["processcTimeStart"] = time(); $arrayCron["processcTimeStart"] = time();
@file_put_contents( PATH_DATA . "cron", serialize( $arrayCron ) ); @file_put_contents( PATH_DATA . "cron", serialize( $arrayCron ) );
} }
$calendar = new calendar(); $calendar = new calendar();
$c = new Criteria( 'workflow' ); $c = new Criteria( 'workflow' );
$c->clearSelectColumns(); $c->clearSelectColumns();
$c->addSelectColumn( ApplicationPeer::APP_UID ); $c->addSelectColumn( ApplicationPeer::APP_UID );
$c->addSelectColumn( ApplicationPeer::APP_NUMBER ); $c->addSelectColumn( ApplicationPeer::APP_NUMBER );
$c->addSelectColumn( ApplicationPeer::APP_STATUS ); $c->addSelectColumn( ApplicationPeer::APP_STATUS );
@@ -602,80 +609,80 @@ class Application extends BaseApplication
$c->addSelectColumn( ProcessPeer::PRO_TIME ); $c->addSelectColumn( ProcessPeer::PRO_TIME );
$c->addSelectColumn( ProcessPeer::PRO_TIMEUNIT ); $c->addSelectColumn( ProcessPeer::PRO_TIMEUNIT );
$c->addJoin( ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN ); $c->addJoin( ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN );
$rs = ApplicationPeer::doSelectRS( $c ); $rs = ApplicationPeer::doSelectRS( $c );
$rs->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$rs->next(); $rs->next();
$row = $rs->getRow(); $row = $rs->getRow();
$i = 0; $i = 0;
$now = strtotime( 'now' ); $now = strtotime( 'now' );
while (is_array( $row )) { while (is_array( $row )) {
$appNumber = $row['APP_NUMBER']; $appNumber = $row['APP_NUMBER'];
$appStatus = $row['APP_STATUS']; $appStatus = $row['APP_STATUS'];
$appInitUser = $row['APP_INIT_USER']; $appInitUser = $row['APP_INIT_USER'];
$appCurUser = $row['APP_CUR_USER']; $appCurUser = $row['APP_CUR_USER'];
$appCreateDate = $row['APP_CREATE_DATE']; $appCreateDate = $row['APP_CREATE_DATE'];
$appInitDate = $row['APP_INIT_DATE']; $appInitDate = $row['APP_INIT_DATE'];
$appFinishDate = $row['APP_FINISH_DATE']; $appFinishDate = $row['APP_FINISH_DATE'];
$appUpdateDate = $row['APP_UPDATE_DATE']; $appUpdateDate = $row['APP_UPDATE_DATE'];
$appDuration = $row['APP_DURATION']; $appDuration = $row['APP_DURATION'];
$proTime = $row['PRO_TIME']; $proTime = $row['PRO_TIME'];
$proTimeUnit = $row['PRO_TIMEUNIT']; $proTimeUnit = $row['PRO_TIMEUNIT'];
$proUid = $row['PRO_UID']; $proUid = $row['PRO_UID'];
//get the object, //get the object,
$oApp = ApplicationPeer::retrieveByPk( $row['APP_UID'] ); $oApp = ApplicationPeer::retrieveByPk( $row['APP_UID'] );
//getting the calendar //getting the calendar
$calendar->getCalendar(null, $proUid); $calendar->getCalendar(null, $proUid);
$calData = $calendar->getCalendarData(); $calData = $calendar->getCalendarData();
/*if(G::toUpper($proTimeUnit) != 'DAYS'){ //if it is not in days must be in mins. /*if(G::toUpper($proTimeUnit) != 'DAYS'){ //if it is not in days must be in mins.
$proTime = $proTime / (24 * 60 * 60); //converting to Days $proTime = $proTime / (24 * 60 * 60); //converting to Days
}*/ }*/
$proDueDate = $calendar->dashCalculateDate($row['APP_INIT_DATE'], $proTime, $proTimeUnit, $calData); //date when the process has to finish $proDueDate = $calendar->dashCalculateDate($row['APP_INIT_DATE'], $proTime, $proTimeUnit, $calData); //date when the process has to finish
if($appFinishDate == null){//When the process didnt finish yet. if($appFinishDate == null){//When the process didnt finish yet.
//Duration //Duration
$appDuration = $calendar->dashCalculateDurationWithCalendar($appInitDate, date("Y-m-d H:i:s"), $calData ); $appDuration = $calendar->dashCalculateDurationWithCalendar($appInitDate, date("Y-m-d H:i:s"), $calData );
$appDuration = $appDuration / (24 * 60 * 60); //Saving the proDuration in days. The calculateDurationWithCalendar func returns segs.
$appDuration = $appDuration / (24 * 60 * 60); //Saving the proDuration in days. The calculateDurationWithCalendar func returns segs.
$oApp->setAppDuration( $appDuration ); $oApp->setAppDuration( $appDuration );
//Delay Duration //Delay Duration
$delayDuration = $calendar->dashCalculateDurationWithCalendar( $proDueDate, date("Y-m-d H:i:s"), $calData );//it returns in mins $delayDuration = $calendar->dashCalculateDurationWithCalendar( $proDueDate, date("Y-m-d H:i:s"), $calData );//it returns in mins
$delayDuration = $delayDuration / (24 * 60 * 60); //Days $delayDuration = $delayDuration / (24 * 60 * 60); //Days
$oApp->setAppDelayDuration( $delayDuration ); $oApp->setAppDelayDuration( $delayDuration );
} else { } else {
//Duration //Duration
$appDuration = $calendar->dashCalculateDurationWithCalendar($appInitDate, $appFinishDate, $calData ); $appDuration = $calendar->dashCalculateDurationWithCalendar($appInitDate, $appFinishDate, $calData );
$appDuration = $appDuration / (24 * 60 * 60); //Saving the proDuration in days. The calculateDurationWithCalendar func returns mins. $appDuration = $appDuration / (24 * 60 * 60); //Saving the proDuration in days. The calculateDurationWithCalendar func returns mins.
$oApp->setAppDuration( $appDuration ); $oApp->setAppDuration( $appDuration );
//Delay Duration //Delay Duration
$delayDuration = $calendar->dashCalculateDurationWithCalendar( $proDueDate, $appFinishDate, $calData ); $delayDuration = $calendar->dashCalculateDurationWithCalendar( $proDueDate, $appFinishDate, $calData );
$delayDuration = $delayDuration / (24 * 60 * 60); //Days $delayDuration = $delayDuration / (24 * 60 * 60); //Days
$oApp->setAppDelayDuration( $delayDuration ); $oApp->setAppDelayDuration( $delayDuration );
} }
//and finally save the record //and finally save the record
$RES = $oApp->save(); $RES = $oApp->save();
$rs->next(); $rs->next();
$row = $rs->getRow(); $row = $rs->getRow();
} }
if ($cron == 1) { if ($cron == 1) {
$arrayCron = unserialize( trim( @file_get_contents( PATH_DATA . "cron" ) ) ); $arrayCron = unserialize( trim( @file_get_contents( PATH_DATA . "cron" ) ) );
$arrayCron["processcTimeStart"] = time(); $arrayCron["processcTimeStart"] = time();
@file_put_contents( PATH_DATA . "cron", serialize( $arrayCron ) ); @file_put_contents( PATH_DATA . "cron", serialize( $arrayCron ) );
} }
} catch (Exception $oError) { } catch (Exception $oError) {
error_log( $oError->getMessage() ); error_log( $oError->getMessage() );
} }
} }
/*----------------------------------********---------------------------------*/ /*----------------------------------********---------------------------------*/
} }