/**
  * verify if process variable row specified in [sUid] exists.
  *
  * @param      string $sUid   the uid
  */
 public function ProcessVariableExists($sUid)
 {
     $con = Propel::getConnection(ProcessVariablesPeer::DATABASE_NAME);
     try {
         $oObj = ProcessVariablesPeer::retrieveByPk($sUid);
         if (is_object($oObj) && get_class($oObj) == 'ProcessVariables') {
             return true;
         } else {
             return false;
         }
     } catch (Exception $oError) {
         throw $oError;
     }
 }
Esempio n. 2
0
    /**

     * Get "Process Variables" records of a Process Variables

     *

     * @param string $processUid Unique id of Process

     *

     * return array Return an array with all "Process Variables"

     */

    public function getProcessVariables ($sProUid)

    {

        try {

            $aVars = array ();

            $oCriteria = new Criteria( 'workflow' );

            $oCriteria->add( ProcessVariablesPeer::PRJ_UID, $sProUid );

            $oDataset = ProcessVariablesPeer::doSelectRS( $oCriteria );

            $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );

            $oDataset->next();

            while ($aRow = $oDataset->getRow()) {

                $aVars[] = $aRow;

                $oDataset->next();

            }

            return $aVars;

        } catch (Exception $oError) {

            throw $oError;

        }

    }
Esempio n. 3
0
    public function _getDynafields ($proUid, $type = 'xmlform', $start = null, $limit = null, $filter = null)
    {
        $cache = 1;
        if (! isset( $_SESSION['_cache_pmtables'] ) || (isset( $_SESSION['_cache_pmtables'] ) && $_SESSION['_cache_pmtables']['pro_uid'] != $proUid) || (isset( $_SESSION['_cache_pmtables'] ) && $_SESSION['_cache_pmtables']['dyn_uid'] != $this->dynUid)) {

            require_once 'classes/model/Dynaform.php';
            $cache = 0;
            $fields = array ();
            $fieldsNames = array ();

            $oCriteria = new Criteria( 'workflow' );
            $oCriteria->addSelectColumn( DynaformPeer::DYN_FILENAME );
            $oCriteria->add( DynaformPeer::PRO_UID, $proUid );
            $oCriteria->add( DynaformPeer::DYN_TYPE, $type );

            if (isset( $this->dynUid )) {
                $oCriteria->add( DynaformPeer::DYN_UID, $this->dynUid );
            }

            $oDataset = DynaformPeer::doSelectRS( $oCriteria );
            $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
            $oDataset->next();

            $excludeFieldsList = array ('title','subtitle','link','file','button','reset','submit','listbox','checkgroup','grid','javascript', ''
            );

            $labelFieldsTypeList = array ('dropdown','radiogroup');
            G::loadSystem( 'dynaformhandler' );
            $index = 0;

            while ($aRow = $oDataset->getRow()) {
                if (file_exists( PATH_DYNAFORM . PATH_SEP . $aRow['DYN_FILENAME'] . '.xml' )) {
                    $dynaformHandler = new dynaformHandler( PATH_DYNAFORM . $aRow['DYN_FILENAME'] . '.xml' );
                    $nodeFieldsList = $dynaformHandler->getFields();

                    foreach ($nodeFieldsList as $node) {
                        $arrayNode = $dynaformHandler->getArray( $node );
                        $fieldName = $arrayNode['__nodeName__'];
                        $fieldType = isset($arrayNode['type']) ? $arrayNode['type']: '';
                        $fieldValidate = ( isset($arrayNode['validate'])) ? $arrayNode['validate'] : '';

                        if (! in_array( $fieldType, $excludeFieldsList ) && ! in_array( $fieldName, $fieldsNames ) ) {
                            $fields[] = array (
                                'FIELD_UID' => $fieldName . '-' . $fieldType,
                                'FIELD_NAME' => $fieldName,
                                'FIELD_VALIDATE'=>$fieldValidate,
                                '_index' => $index ++,
                                '_isset' => true
                            );
                            $fieldsNames[] = $fieldName;

                            if (in_array( $fieldType, $labelFieldsTypeList ) && ! in_array( $fieldName . '_label', $fieldsNames )) {
                                $fields[] = array (
                                    'FIELD_UID' => $fieldName . '_label' . '-' . $fieldType,
                                    'FIELD_NAME' => $fieldName . '_label',
                                    'FIELD_VALIDATE'=>$fieldValidate,
                                    '_index' => $index ++,
                                    '_isset' => true
                                );
                                $fieldsNames[] = $fieldName;
                            }
                        }
                    }
                }
                $oDataset->next();
            }
            
            // getting bpmn projects
            $oCriteria = new Criteria('workflow');
            $oCriteria->addSelectColumn(BpmnProcessPeer::PRJ_UID);
            $oCriteria->add(BpmnProcessPeer::PRJ_UID, $proUid);
            $oDataset = BpmnProcessPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro'));
            $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
            $oDataset->next();
            $row = $oDataset->getRow();
            if (isset($row["PRJ_UID"])) {
                $oCriteria = new Criteria('workflow');
                $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_UID);
                $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_NAME);
                $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_FIELD_TYPE);
                $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_SQL);
                $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_ACCEPTED_VALUES);
                $oCriteria->add(ProcessVariablesPeer::PRJ_UID, $row["PRJ_UID"]);
                $oDataset = ProcessVariablesPeer::doSelectRS($oCriteria);
                $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                $index = 0;
                while ($oDataset->next()) {
                    $row = $oDataset->getRow();
                    $fieldType = isset($row["VAR_FIELD_TYPE"]) ? $row["VAR_FIELD_TYPE"]: '';
                    $varSql = isset($row["VAR_SQL"]) ? $row["VAR_SQL"] : '';                    
                    $varProcessVariable = isset($row["VAR_ACCEPTED_VALUES"]) ? $row["VAR_ACCEPTED_VALUES"] : '[]';
                    if(! in_array( $fieldType, $excludeFieldsList )){
                        if(strlen($varSql) == 0 && $varProcessVariable == '[]'){
                            array_push($fields, array(
                                "FIELD_UID" => $row["VAR_NAME"] . "-" . $row["VAR_FIELD_TYPE"],
                                "FIELD_NAME" => $row["VAR_NAME"],
                                "FIELD_VALIDATE" => "any",
                                "_index" => $index ++,
                                "_isset" => true
                            ));
                        }                       
                    }
                }
            }

            sort( $fields );

            // if is a editing
            $fieldsEdit = array ();
            if (isset( $_SESSION['ADD_TAB_UID'] )) {
                require_once 'classes/model/AdditionalTables.php';

                $additionalTables = new AdditionalTables();
                $table = $additionalTables->load( $_SESSION['ADD_TAB_UID'], true );

                foreach ($table['FIELDS'] as $i => $field) {
                    array_push( $fieldsEdit, $field['FLD_DYN_NAME'] );
                }
            } //end editing

            $indexes = array();
            foreach ($fields as $i => $field) {
                $fields[$i]['_index'] = $i;
                $indexes[$field['FIELD_NAME']] = $i;

                if (in_array( $field['FIELD_NAME'], $fieldsEdit )) {
                    $fields[$i]['_isset'] = false;
                }
            }

            $_SESSION['_cache_pmtables']['pro_uid'] = $proUid;
            $_SESSION['_cache_pmtables']['dyn_uid'] = $this->dynUid;
            $_SESSION['_cache_pmtables']['rows'] = $fields;
            $_SESSION['_cache_pmtables']['count'] = count( $fields );
            $_SESSION['_cache_pmtables']['indexes'] = $indexes;
        } //end reload


        $fields = array ();
        $tmp = array ();

        foreach ($_SESSION['_cache_pmtables']['rows'] as $i => $row) {
            if (isset( $filter ) && $filter != '') {
                if ($row['_isset'] && stripos( $row['FIELD_NAME'], $filter ) !== false) {
                    $tmp[] = $row;
                }
            } else {
                if ($row['_isset']) {
                    $tmp[] = $row;
                }
            }
        }

        $fields = array_slice( $tmp, $start, $limit );

        return array ('cache' => $cache,'count' => count( $tmp ),'rows' => $fields
        );
    }
    /**
     * Retrieve multiple objects by pkey.
     *
     * @param      array $pks List of primary keys
     * @param      Connection $con the connection to use
     * @throws     PropelException Any exceptions caught during processing will be
     *       rethrown wrapped into a PropelException.
     */
    public static function retrieveByPKs($pks, $con = null)
    {
        if ($con === null) {
            $con = Propel::getConnection(self::DATABASE_NAME);
        }

        $objs = null;
        if (empty($pks)) {
            $objs = array();
        } else {
            $criteria = new Criteria();
            $criteria->add(ProcessVariablesPeer::VAR_UID, $pks, Criteria::IN);
            $objs = ProcessVariablesPeer::doSelect($criteria, $con);
        }
        return $objs;
    }
 public function jsonr(&$json)
 {
     foreach ($json as $key => &$value) {
         $sw1 = is_array($value);
         $sw2 = is_object($value);
         if ($sw1 || $sw2) {
             $this->jsonr($value);
         }
         if (!$sw1 && !$sw2) {
             //read event
             $fn = $this->onPropertyRead;
             if (function_exists($fn)) {
                 $fn($json, $key, $value);
             }
             //set properties from trigger
             $prefixs = array("@@", "@#", "@%", "@?", "@\$", "@=");
             if (is_string($value) && in_array(substr($value, 0, 2), $prefixs)) {
                 $triggerValue = substr($value, 2);
                 if (isset($this->fields["APP_DATA"][$triggerValue])) {
                     $json->{$key} = $this->fields["APP_DATA"][$triggerValue];
                 }
             }
             //set properties from 'formInstance' variable
             if (isset($this->fields["APP_DATA"]["formInstance"])) {
                 $formInstance = $this->fields["APP_DATA"]["formInstance"];
                 if (!is_array($formInstance)) {
                     $formInstance = array($formInstance);
                 }
                 $nfi = count($formInstance);
                 for ($ifi = 0; $ifi < $nfi; $ifi++) {
                     $fi = $formInstance[$ifi];
                     if (is_object($fi) && isset($fi->id) && $key === "id" && $json->{$key} === $fi->id) {
                         foreach ($fi as $keyfi => $valuefi) {
                             if (isset($json->{$keyfi})) {
                                 $json->{$keyfi} = $valuefi;
                             }
                         }
                     }
                 }
             }
             //options & query
             if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "hidden" || $value === "dropdown" || $value === "checkgroup" || $value === "radio" || $value === "suggest")) {
                 if (!isset($json->dbConnection)) {
                     $json->dbConnection = "none";
                 }
                 if (!isset($json->sql)) {
                     $json->sql = "";
                 }
                 $json->optionsSql = array();
                 if ($json->dbConnection !== "" && $json->dbConnection !== "none" && $json->sql !== "") {
                     $cnn = Propel::getConnection($json->dbConnection);
                     $stmt = $cnn->createStatement();
                     try {
                         $sql = G::replaceDataField($json->sql, $this->getValuesDependentFields($json));
                         $rs = $stmt->executeQuery($sql, \ResultSet::FETCHMODE_NUM);
                         while ($rs->next()) {
                             $row = $rs->getRow();
                             $option = new stdClass();
                             $option->value = $row[0];
                             $option->label = isset($row[1]) ? $row[1] : $row[0];
                             array_push($json->optionsSql, $option);
                         }
                     } catch (Exception $e) {
                     }
                 }
             }
             //data
             if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "hidden")) {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if (isset($json->optionsSql[0])) {
                     $json->data->value = $json->optionsSql[0]->value;
                     $json->data->label = $json->optionsSql[0]->value;
                 }
                 if ($json->defaultValue !== "") {
                     $json->data->value = $json->defaultValue;
                     $json->data->label = $json->defaultValue;
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     $json->data->label = $this->fields["APP_DATA"][$json->name];
                 }
                 $json->optionsSql = array();
             }
             if ($key === "type" && $value === "dropdown") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if ($json->defaultValue !== "") {
                     foreach ($json->optionsSql as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                     foreach ($json->options as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && $value === "suggest") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if ($json->defaultValue !== "") {
                     $json->data->value = $json->defaultValue;
                     $json->data->label = $json->defaultValue;
                     foreach ($json->optionsSql as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                     foreach ($json->options as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
                 $json->optionsSql = array();
             }
             if ($key === "type" && $value === "radio") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if ($json->defaultValue !== "") {
                     foreach ($json->optionsSql as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                     foreach ($json->options as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && $value === "checkbox") {
                 $json->data = new stdClass();
                 $json->data->value = "0";
                 $json->data->label = "";
                 foreach ($json->options as $os) {
                     if ($os->value === false || $os->value === 0 || $os->value === "0") {
                         $json->data->label = $os->label;
                     }
                 }
                 if ($json->defaultValue !== "") {
                     $json->data->value = $json->defaultValue;
                     foreach ($json->options as $os) {
                         if (($json->data->value === "true" || $json->data->value === "1") && ($os->value === true || $os->value === 1 || $os->value === "1")) {
                             $json->data->label = $os->label;
                         }
                         if (($json->data->value === "false" || $json->data->value === "0") && ($os->value === false || $os->value === 0 || $os->value === "0")) {
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     if (is_array($json->data->value) && isset($json->data->value[0])) {
                         $json->data->value = $json->data->value[0];
                     }
                     foreach ($json->options as $os) {
                         if (($json->data->value === true || $json->data->value === 1 || $json->data->value === "1") && ($os->value === true || $os->value === 1 || $os->value === "1")) {
                             $json->data->label = $os->label;
                         }
                         if (($json->data->value === false || $json->data->value === 0 || $json->data->value === "0") && ($os->value === false || $os->value === 0 || $os->value === "0")) {
                             $json->data->label = $os->label;
                         }
                     }
                 }
             }
             if ($key === "type" && $value === "checkgroup") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "[]";
                 if ($json->defaultValue !== "") {
                     $dataValue = array();
                     $dataLabel = array();
                     $dv = explode("|", $json->defaultValue);
                     foreach ($dv as $idv) {
                         foreach ($json->optionsSql as $os) {
                             if ($os->value === trim($idv)) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                         foreach ($json->options as $os) {
                             if ($os->value === trim($idv)) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                     }
                     $json->data->value = $dataValue;
                     $json->data->label = G::json_encode($dataLabel);
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && $value === "datetime") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && $value === "file" && isset($this->fields["APP_DATA"]["APPLICATION"])) {
                 /*----------------------------------********---------------------------------*/
                 $licensedFeatures =& PMLicensedFeatures::getSingleton();
                 $enablePMGmail = false;
                 if ($licensedFeatures->verifyfeature('7qhYmF1eDJWcEdwcUZpT0k4S0xTRStvdz09')) {
                     G::LoadClass("pmDrive");
                     $pmDrive = new PMDrive();
                     $enablePMGmail = $pmDrive->getStatusService();
                 }
                 /*----------------------------------********---------------------------------*/
                 $oCriteria = new Criteria("workflow");
                 $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
                 $oCriteria->addSelectColumn(AppDocumentPeer::DOC_VERSION);
                 $oCriteria->addSelectColumn(ContentPeer::CON_VALUE);
                 /*----------------------------------********---------------------------------*/
                 if ($enablePMGmail) {
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_DRIVE_DOWNLOAD);
                 }
                 /*----------------------------------********---------------------------------*/
                 $oCriteria->addJoin(AppDocumentPeer::APP_DOC_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN);
                 $oCriteria->add(AppDocumentPeer::APP_UID, $this->fields["APP_DATA"]["APPLICATION"]);
                 $oCriteria->add(AppDocumentPeer::APP_DOC_FIELDNAME, $json->name);
                 $oCriteria->add(ContentPeer::CON_CATEGORY, 'APP_DOC_FILENAME');
                 $rs = AppDocumentPeer::doSelectRS($oCriteria);
                 $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                 $links = array();
                 $labelsFromDb = array();
                 while ($rs->next()) {
                     $row = $rs->getRow();
                     $linkDownload = "../cases/cases_ShowDocument?a=" . $row["APP_DOC_UID"] . "&v=" . $row["DOC_VERSION"];
                     /*----------------------------------********---------------------------------*/
                     //change donwload link - drive
                     $driveDownload = @unserialize($row['APP_DOC_DRIVE_DOWNLOAD']);
                     if ($driveDownload !== false && is_array($driveDownload) && array_key_exists('ATTACHED', $driveDownload) && $enablePMGmail) {
                         $linkDownload = $driveDownload['ATTACHED'];
                     }
                     /*----------------------------------********---------------------------------*/
                     array_push($links, $linkDownload);
                     array_push($labelsFromDb, $row["CON_VALUE"]);
                 }
                 $json->data = new stdClass();
                 $json->data->value = $links;
                 if (sizeof($labelsFromDb)) {
                     $json->data->label = G::json_encode($labelsFromDb);
                 } else {
                     $json->data->label = isset($this->fields["APP_DATA"][$json->name . "_label"]) ? $this->fields["APP_DATA"][$json->name . "_label"] : (isset($this->fields["APP_DATA"][$json->name]) ? $this->fields["APP_DATA"][$json->name] : "[]");
                 }
             }
             if ($key === "type" && $value === "file" && isset($json->variable)) {
                 //todo
                 $oCriteria = new Criteria("workflow");
                 $oCriteria->addSelectColumn(ProcessVariablesPeer::INP_DOC_UID);
                 $oCriteria->add(ProcessVariablesPeer::VAR_NAME, $json->variable);
                 $rs = ProcessVariablesPeer::doSelectRS($oCriteria);
                 $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                 $rs->next();
                 $row = $rs->getRow();
                 if (isset($row["INP_DOC_UID"])) {
                     $json->inputDocuments = array($row["INP_DOC_UID"]);
                 }
             }
             //synchronize var_label
             if ($key === "type" && ($value === "dropdown" || $value === "suggest")) {
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     foreach ($json->optionsSql as $io) {
                         if ($json->data->value === $io->value) {
                             $json->data->label = $io->label;
                         }
                     }
                     foreach ($json->options as $io) {
                         if ($json->data->value === $io->value) {
                             $json->data->label = $io->label;
                         }
                     }
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = array("key" => $json->name . "_label", "value" => $json->data->label);
                 }
             }
             if ($key === "type" && $value === "checkgroup") {
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     $dataValue = array();
                     $dataLabel = array();
                     $dv = array();
                     if (isset($this->fields["APP_DATA"][$json->name])) {
                         $dv = $this->fields["APP_DATA"][$json->name];
                     }
                     foreach ($dv as $idv) {
                         foreach ($json->optionsSql as $os) {
                             if ($os->value === $idv) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                         foreach ($json->options as $os) {
                             if ($os->value === $idv) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                     }
                     $json->data->value = $dataValue;
                     $json->data->label = G::json_encode($dataLabel);
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = array("key" => $json->name . "_label", "value" => $json->data->label);
                 }
             }
             if ($key === "type" && $value === "datetime") {
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     $json->data->label = $json->data->value;
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = array("key" => $json->name . "_label", "value" => $json->data->label);
                 }
             }
             //grid
             if ($key === "type" && $value === "grid") {
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     //rows
                     $rows = $this->fields["APP_DATA"][$json->name];
                     foreach ($rows as $keyRow => $row) {
                         //cells
                         $cells = array();
                         foreach ($json->columns as $column) {
                             //data
                             if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown" || $column->type === "suggest" || $column->type === "datetime" || $column->type === "checkbox" || $column->type === "file" || $column->type === "link" || $column->type === "hidden") {
                                 array_push($cells, array("value" => isset($row[$column->name]) ? $row[$column->name] : "", "label" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : (isset($row[$column->name]) ? $row[$column->name] : "")));
                             }
                         }
                         $rows[$keyRow] = $cells;
                     }
                     $json->rows = count($rows);
                     $json->data = $rows;
                 }
                 //todo compatibility 'columnWidth'
                 foreach ($json->columns as $column) {
                     if (!isset($column->columnWidth) && $column->type !== "hidden") {
                         $json->layout = "static";
                         $column->columnWidth = "";
                     }
                 }
             }
             //languages
             if ($this->lang === null && $key === "language" && isset($json->language)) {
                 $this->lang = $json->language;
             }
             if ($this->langs !== null) {
                 if (($key === "label" || $key === "title" || $key === "hint" || $key === "placeholder" || $key === "validateMessage" || $key === "alternateText" || $key === "comment" || $key === "alt") && isset($this->langs->{$this->lang})) {
                     $langs = $this->langs->{$this->lang}->Labels;
                     foreach ($langs as $langsValue) {
                         if (is_object($json) && $json->{$key} === $langsValue->msgid) {
                             $json->{$key} = $langsValue->msgstr;
                         }
                         if (is_array($json) && $json[$key] === $langsValue->msgid) {
                             $json[$key] = $langsValue->msgstr;
                         }
                     }
                 }
             }
             //EDIT,VIEW
             if (isset($this->fields["STEP_MODE"]) && $this->fields["STEP_MODE"] === "VIEW" && isset($json->mode)) {
                 $json->mode = "view";
             }
             if ($key === "type" && $value === "form" && $this->records != null) {
                 foreach ($this->records as $ri) {
                     if ($json->id === $ri["DYN_UID"] && !isset($json->jsonUpdate)) {
                         $jsonUpdate = G::json_decode($ri["DYN_CONTENT"]);
                         $jsonUpdate = $jsonUpdate->items[0];
                         $jsonUpdate->colSpan = $json->colSpan;
                         $jsonUpdate->jsonUpdate = true;
                         $json = $jsonUpdate;
                         $this->jsonr($json);
                     }
                 }
             }
         }
     }
 }
Esempio n. 6
0
 /**
  * Get data of a DynaForm
  *
  * @param string $projectUid Unique id of Project
  * @param string $dynaFormUid Unique id of DynaForm
  *
  * return array Return an array with data of a DynaForm
  */
 public function getDynaFormFields($projectUid, $dynaFormUid)
 {
     try {
         $arrayVariables = array();
         $arrayVariablesDef = array();
         //Verify data
         Validator::proUid($projectUid, '$prj_uid');
         $this->throwExceptionIfNotExistsDynaForm($dynaFormUid, "", $this->arrayFieldNameForException["dynaFormUid"]);
         $criteria = new \Criteria("workflow");
         $criteria->addSelectColumn(\DynaformPeer::DYN_CONTENT);
         $criteria->add(\DynaformPeer::DYN_UID, $dynaFormUid, \Criteria::EQUAL);
         $rsCriteria = \DynaformPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         $rsCriteria->next();
         $aRow = $rsCriteria->getRow();
         $contentDecode = json_decode($aRow['DYN_CONTENT'], true);
         $content = $contentDecode['items'][0]['items'];
         foreach ($content as $key => $value) {
             $valueType = isset($value[0]["valueType"]) ? $value[0]["valueType"] : null;
             $maxLength = isset($value[0]["maxLength"]) ? $value[0]["maxLength"] : null;
             $label = isset($value[0]["label"]) ? $value[0]["label"] : null;
             $defaultValue = isset($value[0]["defaultValue"]) ? $value[0]["defaultValue"] : null;
             $required = isset($value[0]["required"]) ? $value[0]["required"] : null;
             $dbConnection = isset($value[0]["dbConnection"]) ? $value[0]["dbConnection"] : null;
             $sql = isset($value[0]["sql"]) ? $value[0]["sql"] : null;
             $options = isset($value[0]["options"]) ? $value[0]["options"] : null;
             if (isset($value[0]["variable"])) {
                 $variable = $value[0]["variable"];
                 $criteria = new \Criteria("workflow");
                 $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NAME);
                 $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_TYPE);
                 $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_SIZE);
                 $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_LABEL);
                 $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DBCONNECTION);
                 $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_SQL);
                 $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NULL);
                 $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DEFAULT);
                 $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_ACCEPTED_VALUES);
                 $criteria->add(\ProcessVariablesPeer::PRJ_UID, $projectUid, \Criteria::EQUAL);
                 $criteria->add(\ProcessVariablesPeer::VAR_NAME, $variable, \Criteria::EQUAL);
                 $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria);
                 $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                 $rsCriteria->next();
                 while ($aRow = $rsCriteria->getRow()) {
                     $valueTypeMerged = $valueType == null && $valueType == '' ? $aRow['VAR_FIELD_TYPE'] : $valueType;
                     $maxLengthMerged = $maxLength == null && $maxLength == '' ? (int) $aRow['VAR_FIELD_SIZE'] : $maxLength;
                     $labelMerged = $label == null && $label == '' ? $aRow['VAR_LABEL'] : $label;
                     $defaultValueMerged = $defaultValue == null && $defaultValue == '' ? $aRow['VAR_DEFAULT'] : $defaultValue;
                     $requiredMerged = $required == null && $required == '' ? $aRow['VAR_NULL'] == 1 ? false : true : $required;
                     $dbConnectionMerged = $dbConnection == null && $dbConnection == '' ? $aRow['VAR_DBCONNECTION'] : $dbConnection;
                     $sqlMerged = $sql == null && $sql == '' ? $aRow['VAR_SQL'] : $sql;
                     $optionsMerged = $options == null && $options == '' ? $aRow['VAR_ACCEPTED_VALUES'] : $options;
                     $aVariables = array('valueType' => $valueTypeMerged, 'maxLength' => $maxLengthMerged, 'label' => $labelMerged, 'defaultValue' => $defaultValueMerged, 'required' => $requiredMerged, 'dbConnection' => $dbConnectionMerged, 'sql' => $sqlMerged, 'options' => $optionsMerged);
                     //fields properties
                     if (isset($value[0]["pickType"])) {
                         $aVariables = array_merge(array('pickType' => $value[0]["pickType"]), $aVariables);
                     }
                     if (isset($value[0]["placeHolder"])) {
                         $aVariables = array_merge(array('placeHolder' => $value[0]["placeHolder"]), $aVariables);
                     }
                     if (isset($value[0]["dependentsField"])) {
                         $aVariables = array_merge(array('dependentsField' => $value[0]["dependentsField"]), $aVariables);
                     }
                     if (isset($value[0]["hint"])) {
                         $aVariables = array_merge(array('hint' => $value[0]["hint"]), $aVariables);
                     }
                     if (isset($value[0]["readonly"])) {
                         $aVariables = array_merge(array('readonly' => $value[0]["readonly"]), $aVariables);
                     }
                     if (isset($value[0]["colSpan"])) {
                         $aVariables = array_merge(array('colSpan' => $value[0]["colSpan"]), $aVariables);
                     }
                     if (isset($value[0]["type"])) {
                         $aVariables = array_merge(array('type' => $value[0]["type"]), $aVariables);
                     }
                     if (isset($value[0]["name"])) {
                         $aVariables = array_merge(array('name' => $value[0]["name"]), $aVariables);
                     }
                     $aVariables = array_merge(array('variable' => $variable), $aVariables);
                     $arrayVariables[] = $aVariables;
                     $rsCriteria->next();
                 }
             } else {
                 $arrayVariablesDef[] = $value[0];
             }
         }
         $arrayVariables = array_merge($arrayVariables, $arrayVariablesDef);
         //Return
         return $arrayVariables;
     } catch (\Exception $e) {
         throw $e;
     }
 }
Esempio n. 7
0
    /**
     * Populates the object using an array.
     *
     * This is particularly useful when populating an object from one of the
     * request arrays (e.g. $_POST).  This method goes through the column
     * names, checking to see whether a matching key exists in populated
     * array. If so the setByName() method is called for that column.
     *
     * You can specify the key type of the array by additionally passing one
     * of the class type constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME,
     * TYPE_NUM. The default key type is the column's phpname (e.g. 'authorId')
     *
     * @param      array  $arr     An array to populate the object from.
     * @param      string $keyType The type of keys the array uses.
     * @return     void
     */
    public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
    {
        $keys = ProcessVariablesPeer::getFieldNames($keyType);

        if (array_key_exists($keys[0], $arr)) {
            $this->setVarUid($arr[$keys[0]]);
        }

        if (array_key_exists($keys[1], $arr)) {
            $this->setPrjUid($arr[$keys[1]]);
        }

        if (array_key_exists($keys[2], $arr)) {
            $this->setVarName($arr[$keys[2]]);
        }

        if (array_key_exists($keys[3], $arr)) {
            $this->setVarFieldType($arr[$keys[3]]);
        }

        if (array_key_exists($keys[4], $arr)) {
            $this->setVarFieldSize($arr[$keys[4]]);
        }

        if (array_key_exists($keys[5], $arr)) {
            $this->setVarLabel($arr[$keys[5]]);
        }

        if (array_key_exists($keys[6], $arr)) {
            $this->setVarDbconnection($arr[$keys[6]]);
        }

        if (array_key_exists($keys[7], $arr)) {
            $this->setVarSql($arr[$keys[7]]);
        }

        if (array_key_exists($keys[8], $arr)) {
            $this->setVarNull($arr[$keys[8]]);
        }

        if (array_key_exists($keys[9], $arr)) {
            $this->setVarDefault($arr[$keys[9]]);
        }

        if (array_key_exists($keys[10], $arr)) {
            $this->setVarAcceptedValues($arr[$keys[10]]);
        }

    }
Esempio n. 8
0
 public function getVariableTypeByName($processUid, $variableName)
 {
     try {
         $criteria = new \Criteria("workflow");
         $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_UID);
         $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NAME);
         $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_TYPE);
         $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DBCONNECTION);
         $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_SQL);
         $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_ACCEPTED_VALUES);
         $criteria->add(\ProcessVariablesPeer::VAR_NAME, $variableName);
         $criteria->add(\ProcessVariablesPeer::PRJ_UID, $processUid);
         $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         if ($rsCriteria->next()) {
             $row = $rsCriteria->getRow();
             return sizeof($row) ? $row : false;
         }
         return false;
     } catch (\Exception $e) {
         throw $e;
     }
 }
Esempio n. 9
0
    /**
     * Get all records by execute SQL suggest
     *
     * @param string $processUid    Unique id of Process
     * @param string $variableName  Variable name
     * @param array  $arrayVariable The variables
     *
     * return array Return an array with all records
     */
    public function executeSqlSuggest($processUid, $variableName, array $arrayVariable = array())
    {
        try {
            $arrayRecord = array();

            //Verify data
            $process = new \ProcessMaker\BusinessModel\Process();

            $process->throwExceptionIfNotExistsProcess($processUid, strtolower("PRJ_UID"));

            //Set data
            $variableDbConnectionUid = "";
            $variableSql = "";
            $sqlLimit = "";
            $variableSqlLimit = "";
            $sqlConditionLike = "";

            $criteria = new \Criteria("workflow");

            $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_DBCONNECTION);
            $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_SQL);
            $criteria->add(\ProcessVariablesPeer::PRJ_UID, $processUid, \Criteria::EQUAL);
            $criteria->add(\ProcessVariablesPeer::VAR_NAME, $variableName, \Criteria::EQUAL);

            $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria);

            $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
            if ($rsCriteria->next()) {
                $row = $rsCriteria->getRow();

                $variableDbConnectionUid = $row["VAR_DBCONNECTION"];
                $variableSql = $row["VAR_SQL"];
            } else {
                throw new \Exception(\G::LoadTranslation("ID_PROCESS_VARIABLE_DOES_NOT_EXIST", array(strtolower("VAR_NAME"), $variableName)));
            }

            //Verify data
            $this->throwExceptionIfSomeRequiredVariableSqlIsMissingInVariables($variableName, $variableSql, $arrayVariable);

            //Get data
            $_SESSION["PROCESS"] = $processUid;

            foreach ($arrayVariable as $keyRequest => $valueRequest) {
                $keyRequest = strtoupper($keyRequest);

                if ($keyRequest == 'LIMIT') {
                    if (strpos($variableSql, 'LIMIT')) {
                        $variableSqlLimit = explode("LIMIT", $variableSql);
                        $sqlLimit = " LIMIT " . $variableSqlLimit[1];
                        $variableSql = $variableSqlLimit[0];
                    } else {
                        $sqlLimit = " LIMIT ". 0 . ", " . $valueRequest;
                    }
                } else {
                    if (strpos($variableSql, 'WHERE')) {
                        $sqlConditionLike = " AND " . $keyRequest . " LIKE '%" . $valueRequest . "%'";
                    } else {
                        $sqlConditionLike = " WHERE " . $keyRequest . " LIKE '%" . $valueRequest . "%'";
                    }
                }
            }

            $sqlQuery = $variableSql . $sqlConditionLike . $sqlLimit;

            $cnn = \Propel::getConnection(($variableDbConnectionUid . "" != "")? $variableDbConnectionUid : "workflow");
            $stmt = $cnn->createStatement();
            $replaceFields = G::replaceDataField($sqlQuery, $arrayVariable);

            $rs = $stmt->executeQuery($replaceFields, \ResultSet::FETCHMODE_NUM);

            while ($rs->next()) {
                $row = $rs->getRow();

                $arrayRecord[] = array(
                    strtolower("VALUE") => $row[0],
                    strtolower("TEXT")  => $row[1]
                );
            }

            //Return
            return $arrayRecord;
        } catch (\Exception $e) {
            throw $e;
        }
    }
Esempio n. 10
0
 public function jsonr(&$json)
 {
     foreach ($json as $key => &$value) {
         $sw1 = is_array($value);
         $sw2 = is_object($value);
         if ($sw1 || $sw2) {
             $this->jsonr($value);
         }
         if (!$sw1 && !$sw2) {
             //read event
             $fn = $this->onPropertyRead;
             if (function_exists($fn)) {
                 $fn($json, $key, $value);
             }
             //set properties from trigger
             $prefixs = array("@@", "@#", "@%", "@?", "@$", "@=");
             if (is_string($value) && in_array(substr($value, 0, 2), $prefixs)) {
                 $triggerValue = substr($value, 2);
                 if (isset($this->fields["APP_DATA"][$triggerValue])) {
                     $json->{$key} = $this->fields["APP_DATA"][$triggerValue];
                 }
             }
             //set properties from 'formInstance' variable
             if (isset($this->fields["APP_DATA"]["formInstance"])) {
                 $formInstance = $this->fields["APP_DATA"]["formInstance"];
                 if (!is_array($formInstance)) {
                     $formInstance = array($formInstance);
                 }
                 $nfi = count($formInstance);
                 for ($ifi = 0; $ifi < $nfi; $ifi++) {
                     $fi = $formInstance[$ifi];
                     if (is_object($fi) && isset($fi->id) && $key === "id" && $json->{$key} === $fi->id) {
                         foreach ($fi as $keyfi => $valuefi) {
                             if (isset($json->{$keyfi})) {
                                 $json->{$keyfi} = $valuefi;
                             }
                         }
                     }
                 }
             }
             //options & query
             if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "hidden" || $value === "dropdown" || $value === "checkgroup" || $value === "radio" || $value === "suggest" )) {
                 if (!isset($json->dbConnection))
                     $json->dbConnection = "none";
                 if (!isset($json->sql))
                     $json->sql = "";
                 $json->optionsSql = array();
                 if ($json->dbConnection !== "" && $json->dbConnection !== "none" && $json->sql !== "") {
                     $cnn = Propel::getConnection($json->dbConnection);
                     $stmt = $cnn->createStatement();
                     try {
                         $rs = $stmt->executeQuery(G::replaceDataField($json->sql, array()), \ResultSet::FETCHMODE_NUM);
                         while ($rs->next()) {
                             $row = $rs->getRow();
                             $option = new stdClass();
                             $option->value = $row[0];
                             $option->label = isset($row[1]) ? $row[1] : $row[0];
                             array_push($json->optionsSql, $option);
                         }
                     } catch (Exception $e) {
                         
                     }
                 }
             }
             //data
             if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "hidden")) {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if (isset($json->optionsSql[0])) {
                     $json->data->value = $json->optionsSql[0]->value;
                     $json->data->label = $json->optionsSql[0]->value;
                 }
                 if ($json->defaultValue !== "") {
                     $json->data->value = $json->defaultValue;
                     $json->data->label = $json->defaultValue;
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     $json->data->label = $this->fields["APP_DATA"][$json->name];
                 }
             }
             if ($key === "type" && ($value === "dropdown")) {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if ($json->defaultValue !== "") {
                     foreach ($json->optionsSql as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                     foreach ($json->options as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && ($value === "suggest")) {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if ($json->defaultValue !== "") {
                     $json->data->value = $json->defaultValue;
                     $json->data->label = $json->defaultValue;
                     foreach ($json->optionsSql as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                     foreach ($json->options as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                         $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                     }
                 }
             }
             if ($key === "type" && ($value === "radio")) {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if ($json->defaultValue !== "") {
                     foreach ($json->optionsSql as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                     foreach ($json->options as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && ($value === "checkbox")) {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     $json->data->label = $this->fields["APP_DATA"][$json->name];
                 }
             }
             if ($key === "type" && ($value === "checkgroup")) {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "[]";
                 if ($json->defaultValue !== "") {
                     $dataValue = array();
                     $dataLabel = array();
                     $dv = explode("|", $json->defaultValue);
                     foreach ($dv as $idv) {
                         foreach ($json->optionsSql as $os) {
                             if ($os->value === trim($idv)) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                         foreach ($json->options as $os) {
                             if ($os->value === trim($idv)) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                     }
                     $json->data->value = $dataValue;
                     $json->data->label = G::json_encode($dataLabel);
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && ($value === "datetime")) {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && ($value === "file") && isset($this->fields["APP_DATA"]["APPLICATION"])) {
                 $oCriteria = new Criteria("workflow");
                 $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
                 $oCriteria->addSelectColumn(AppDocumentPeer::DOC_VERSION);
                 $oCriteria->add(AppDocumentPeer::APP_UID, $this->fields["APP_DATA"]["APPLICATION"]);
                 $oCriteria->add(AppDocumentPeer::APP_DOC_FIELDNAME, $json->name);
                 $rs = AppDocumentPeer::doSelectRS($oCriteria);
                 $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                 $links = array();
                 while ($rs->next()) {
                     $row = $rs->getRow();
                     array_push($links, "../cases/cases_ShowDocument?a=" . $row["APP_DOC_UID"] . "&v=" . $row["DOC_VERSION"]);
                 }
                 $json->data = new stdClass();
                 $json->data->value = $links;
                 $json->data->label = isset($this->fields["APP_DATA"][$json->name . "_label"]) ? $this->fields["APP_DATA"][$json->name . "_label"] : "[]";
             }
             if ($key === "type" && ($value === "file")) {
                 //todo
                 $oCriteria = new Criteria("workflow");
                 $oCriteria->addSelectColumn(ProcessVariablesPeer::INP_DOC_UID);
                 $oCriteria->add(ProcessVariablesPeer::VAR_NAME, $json->variable);
                 $rs = ProcessVariablesPeer::doSelectRS($oCriteria);
                 $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                 $rs->next();
                 $row = $rs->getRow();
                 if (isset($row["INP_DOC_UID"])) {
                     $json->inputDocuments = array($row["INP_DOC_UID"]);
                 }
             }
             //synchronize var_label
             if ($key === "type" && ($value === "dropdown" || $value === "suggest")) {
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     foreach ($json->optionsSql as $io) {
                         if ($json->data->value === $io->value) {
                             $json->data->label = $io->label;
                         }
                     }
                     foreach ($json->options as $io) {
                         if ($json->data->value === $io->value) {
                             $json->data->label = $io->label;
                         }
                     }
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = Array("key" => $json->name . "_label", "value" => $json->data->label);
                 }
             }
             if ($key === "type" && ($value === "checkgroup")) {
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     $dataValue = array();
                     $dataLabel = array();
                     $dv = array();
                     if (isset($this->fields["APP_DATA"][$json->name]))
                         $dv = $this->fields["APP_DATA"][$json->name];
                     foreach ($dv as $idv) {
                         foreach ($json->optionsSql as $os) {
                             if ($os->value === $idv) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                         foreach ($json->options as $os) {
                             if ($os->value === $idv) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                     }
                     $json->data->value = $dataValue;
                     $json->data->label = G::json_encode($dataLabel);
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = Array("key" => $json->name . "_label", "value" => $json->data->label);
                 }
             }
             if ($key === "type" && ($value === "datetime")) {
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     $json->data->label = $json->data->value;
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = Array("key" => $json->name . "_label", "value" => $json->data->label);
                 }
             }
             //grid
             if ($key === "type" && ($value === "grid")) {
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     //rows
                     $rows = $this->fields["APP_DATA"][$json->name];
                     foreach ($rows as $keyRow => $row) {
                         //cells
                         $cells = array();
                         foreach ($json->columns as $column) {
                             //data
                             if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown" || $column->type === "suggest" || $column->type === "datetime" || $column->type === "checkbox" || $column->type === "file" || $column->type === "link" || $column->type === "hidden") {
                                 array_push($cells, array(
                                     "value" => isset($row[$column->name]) ? $row[$column->name] : "",
                                     "label" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : (isset($row[$column->name]) ? $row[$column->name] : "")
                                 ));
                             }
                         }
                         $rows[$keyRow] = $cells;
                     }
                     $json->rows = count($rows);
                     $json->data = $rows;
                 }
                 //todo compatibility 'columnWidth'
                 foreach ($json->columns as $column) {
                     if (!isset($column->columnWidth) && $column->type !== "hidden") {
                         $json->layout = "static";
                         $column->columnWidth = "";
                     }
                 }
             }
             //languages
             if ($this->lang === null && $key === "language" && isset($json->language)) {
                 $this->lang = $json->language;
             }
             if ($this->langs !== null) {
                 if (($key === "label" || $key === "title" || $key === "hint" || $key === "placeholder" || $key === "validateMessage" || $key === "alternateText" || $key === "comment" || $key === "alt") && isset($this->langs->{$this->lang})) {
                     $langs = $this->langs->{$this->lang}->Labels;
                     foreach ($langs as $langsValue) {
                         if (is_object($json) && $json->{$key} === $langsValue->msgid) {
                             $json->{$key} = $langsValue->msgstr;
                         }
                         if (is_array($json) && $json[$key] === $langsValue->msgid) {
                             $json[$key] = $langsValue->msgstr;
                         }
                     }
                 }
             }
             //EDIT,VIEW
             if (isset($this->fields["STEP_MODE"]) && $this->fields["STEP_MODE"] === "VIEW" && isset($json->mode)) {
                 $json->mode = "view";
             }
             if ($key === "type" && ($value === "form") && $this->records != null) {
                 foreach ($this->records as $ri) {
                     if ($json->id === $ri["DYN_UID"] && !isset($json->jsonUpdate)) {
                         $jsonUpdate = json_decode($ri["DYN_CONTENT"]);
                         $jsonUpdate = $jsonUpdate->items[0];
                         $jsonUpdate->colSpan = $json->colSpan;
                         $jsonUpdate->jsonUpdate = true;
                         $json = $jsonUpdate;
                         $this->jsonr($json);
                     }
                 }
             }
         }
     }
 }
Esempio n. 11
0
    /**
     * Function getHtmlFormVars
     *
     * @access public
     * @param string $sProcessUID
     * @return array
     */
    public static function getHtmlFormVars ($sProcessUID)
    {
        //Get data
        $criteria = new \Criteria("workflow");

        $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_UID);
        $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_NAME);
        $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_LABEL);
        $criteria->addSelectColumn(\ProcessVariablesPeer::VAR_FIELD_TYPE);

        $criteria->add(\ProcessVariablesPeer::PRJ_UID, $sProcessUID, \Criteria::EQUAL);

        $rsCriteria = \ProcessVariablesPeer::doSelectRS($criteria);

        $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);

        $rsCriteria->next();
        $arrayVariables = array();

        while ($aRow = $rsCriteria->getRow()) {
            $arrayVariables[] = array(  'var_name' => $aRow['VAR_NAME'],
                                        'var_label' => $aRow['VAR_LABEL'],
                                        'var_type' => $aRow['VAR_FIELD_TYPE'],
                                        'var_source' => $aRow['VAR_UID']);
            $rsCriteria->next();
        }
        //Return
        return $arrayVariables;

    }