Ejemplo n.º 1
0
    public function getPreviousStep($sProUid = '', $sAppUid = '', $iDelIndex = 0, $iPosition = 0)

    {

        //Note: Depreciated, delete in the future

        G::LoadClass('pmScript');

        $oPMScript = new PMScript();

        $oApplication = new Application();

        //$aFields = $oApplication->load($sAppUid);

        $oApplication = ApplicationPeer::retrieveByPk($sAppUid);

        $aFields = $oApplication->toArray(BasePeer::TYPE_FIELDNAME);

        if (!is_array($aFields['APP_DATA'])) {

            $aFields['APP_DATA'] = G::array_merges(G::getSystemConstants(), unserialize($aFields['APP_DATA']));

        }

        $oPMScript->setFields($aFields['APP_DATA']);



        try {

            //get the current Delegation, and TaskUID

            $c = new Criteria();

            $c->add(AppDelegationPeer::PRO_UID, $sProUid);

            $c->add(AppDelegationPeer::APP_UID, $sAppUid);

            $c->add(AppDelegationPeer::DEL_INDEX, $iDelIndex);

            $aRow = AppDelegationPeer::doSelect($c);



            $sTaskUid = $aRow[0]->getTasUid();

            $iFirstStep = 1;



            if ($iPosition == 10000) {

                //get max step for this task

                $c = new Criteria();

                $c->clearSelectColumns();

                $c->addSelectColumn('MAX(' . StepPeer::STEP_POSITION . ')');

                $c->add(StepPeer::PRO_UID, $sProUid);

                $c->add(StepPeer::TAS_UID, $sTaskUid);

                $rs = StepPeer::doSelectRS($c);

                $rs->next();

                $row = $rs->getRow();

                $iPosition = intval($row[0]);

            } else {

                $iPosition -= 1;

            }



            $aPreviousStep = null;

            if ($iPosition >= 1) {

                while ($iPosition >= $iFirstStep) {

                    $bAccessStep = false;

                    //step

                    $oStep = new Step;

                    $oStep = $oStep->loadByProcessTaskPosition($sProUid, $sTaskUid, $iPosition);

                    if ($oStep) {

                        if (trim($oStep->getStepCondition()) !== '') {

                            $oPMScript->setScript($oStep->getStepCondition());

                            $bAccessStep = $oPMScript->evaluate();

                        } else {

                            $bAccessStep = true;

                        }

                        if ($bAccessStep) {

                            switch ($oStep->getStepTypeObj()) {

                                case 'DYNAFORM':

                                    $sAction = 'EDIT';

                                    break;

                                case 'OUTPUT_DOCUMENT':

                                    $sAction = 'GENERATE';

                                    break;

                                case 'INPUT_DOCUMENT':

                                    $sAction = 'ATTACH';

                                    break;

                                case 'EXTERNAL':

                                    $sAction = 'EDIT';

                                    break;

                                case 'MESSAGE':

                                    $sAction = '';

                                    break;

                            }

                            $aPreviousStep = array('TYPE' => $oStep->getStepTypeObj(),

                                'UID' => $oStep->getStepUidObj(),

                                'POSITION' => $oStep->getStepPosition(),

                                'PAGE' => 'cases_Step?TYPE=' . $oStep->getStepTypeObj() . '&UID=' .

                                $oStep->getStepUidObj() . '&POSITION=' .

                                $oStep->getStepPosition() . '&ACTION=' . $sAction

                            );

                            $iPosition = $iFirstStep;

                        }

                    }

                    $iPosition -= 1;

                }

            }

            if (!$aPreviousStep) {

                $aPreviousStep = false;

            }

            return $aPreviousStep;

        } catch (exception $e) {

            throw ($e);

        }

    }
 /**
  * Retrieve object using using composite pkey values.
  * @param string $app_uid
  * @param int $del_index
  * @param      Connection $con
  * @return     AppDelegation
  */
 public static function retrieveByPK($app_uid, $del_index, $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(self::DATABASE_NAME);
     }
     $criteria = new Criteria();
     $criteria->add(AppDelegationPeer::APP_UID, $app_uid);
     $criteria->add(AppDelegationPeer::DEL_INDEX, $del_index);
     $v = AppDelegationPeer::doSelect($criteria, $con);
     return !empty($v) ? $v[0] : null;
 }