Ejemplo n.º 1
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();
         }
         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);
 }
Ejemplo n.º 2
0
<?php

$id = isset($_GET['id']) ? $_GET['id'] : false;
$table = false;
$oHeadPublisher =& headPublisher::getSingleton();
$oHeadPublisher->addExtJsScript('reportTables/edit', true);
$oHeadPublisher->assign('ADD_TAB_UID', $id);
if ($id) {
    // if is a edit request
    require_once 'classes/model/AdditionalTables.php';
    require_once 'classes/model/Fields.php';
    G::LoadClass('xmlfield_InputPM');
    $additionalTables = new AdditionalTables();
    $table = $additionalTables->load($id, true);
    $tableFields = array();
    $fieldsList = array();
    // list the case fields
    foreach ($table['FIELDS'] as $i => $field) {
        /*if ($field['FLD_NAME'] == 'APP_UID' || $field['FLD_NAME'] == 'APP_NUMBER' || $field['FLD_NAME'] == 'ROW') {
          unset($table['FIELDS'][$i]);
          continue;
          }*/
        array_push($tableFields, $field['FLD_DYN_NAME']);
    }
    //list dynaform fields
    if ($table['ADD_TAB_TYPE'] == 'NORMAL') {
        $fields = getDynaformsVars($table['PRO_UID'], false);
        foreach ($fields as $field) {
            //select to not assigned fields for available grid
            if (!in_array($field['sName'], $tableFields)) {
                $fieldsList[] = array('FIELD_UID' => $field['sName'] . '-' . $field['sType'], 'FIELD_NAME' => $field['sName']);
<?php

require_once 'classes/model/AdditionalTables.php';
$oAdditionalTables = new AdditionalTables();
$aData = $oAdditionalTables->load($_POST['ADD_TABLE'], true);
$addTabName = $aData['ADD_TAB_NAME'];
$c = 1;
foreach ($aData['FIELDS'] as $iRow => $aRow) {
    if ($aRow['FLD_KEY'] == 1) {
        $aRow['PRO_VARIABLE'] = '';
        $aFields['FIELDS'][$c++] = $aRow;
    }
}
$aFields['DYN_UID'] = $_POST['DYN_UID'];
$aFields['ADD_TABLE'] = $_POST['ADD_TABLE'];
$aFields['PRO_UID'] = $_POST['PRO_UID'];
$aFields['DYN_TITLE'] = $_POST['DYN_TITLE'];
$aFields['DYN_TYPE'] = $_POST['DYN_TYPE'];
$aFields['DYN_DESCRIPTION'] = $_POST['DYN_DESCRIPTION'];
$aFields['VALIDATION_MESSAGE'] = G::LoadTranslation('ID_FILL_PRIMARY_KEYS');
G::LoadClass('xmlfield_InputPM');
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'dynaforms/dynaforms_AssignVariables', '', $aFields, SYS_URI . 'dynaforms/dynaforms_Save');
G::RenderPage('publish-raw', 'raw');
Ejemplo n.º 4
0
    public function getAllData($sUID, $start = null, $limit = null, $keyOrderUppercase = true, $filter = '', $appUid = false)
    {
        $addTab = new AdditionalTables();
        $aData = $addTab->load($sUID, true);
        if (!isset($_SESSION['PROCESS'])) {
            $_SESSION["PROCESS"] = $aData['PRO_UID'];
        }
        $aData['DBS_UID'] = $aData['DBS_UID'] ? $aData['DBS_UID'] : 'workflow';
        $sPath = PATH_DB . SYS_SYS . PATH_SEP . 'classes' . PATH_SEP;
        $sClassName = ($aData['ADD_TAB_CLASS_NAME'] != ''
                       ? $aData['ADD_TAB_CLASS_NAME']
                       : $this->getPHPName($aData['ADD_TAB_NAME']));

        if (file_exists($sPath . $sClassName . '.php')) {
            require_once $sPath . $sClassName . '.php';
        } else {
            return null;
        }

        $sClassPeerName = $sClassName . 'Peer';
        $con = Propel::getConnection($aData['DBS_UID']);
        $oCriteria = new Criteria($aData['DBS_UID']);

        //eval('$oCriteria->addSelectColumn("\'1\' AS DUMMY");');

        /*
         * data type:
         * 'INTEGER'  'BIGINT'  'SMALLINT'  'TINYINT'  'DECIMAL'  'DOUBLE'  'FLOAT'  'REAL'
         * 'CHAR'  'VARCHAR'  'LONGVARCHAR'  'BOOLEAN'  'DATE'  'DATETIME'  'TIME'
         */
        $types = array('DECIMAL', 'DOUBLE', 'FLOAT', 'REAL');

        if ($keyOrderUppercase) {
            foreach ($aData['FIELDS'] as $aField) {
                $field = '$oCriteria->addSelectColumn(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ');';
                if (in_array($aField['FLD_TYPE'], $types)) {
                    $field = '$oCriteria->addAsColumn("' . $aField['FLD_NAME'] . '", "round(" . ' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ' . ", ' . ($aField['FLD_TYPE'] == 'DOUBLE' ? '8' : '2') . ')");';
                }
                eval($field);
                /*if ($aField['FLD_KEY'] == '1') {
                    eval('$oCriteria->addAscendingOrderByColumn('. $sClassPeerName . '::' . $aField['FLD_NAME'] . ');');
                }*/
            }
        }
        $oCriteriaCount = clone $oCriteria;
        //$count = $sClassPeerName::doCount($oCriteria);
        eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');

        if ($filter != '' && is_string($filter)) {
            $stringOr = '';
            $closure = '';
            $types = array('INTEGER', 'BIGINT', 'SMALLINT', 'TINYINT', 'DECIMAL', 'DOUBLE', 'FLOAT', 'REAL');
            foreach ($aData['FIELDS'] as $aField) {
	            if (($appUid == false && $aField['FLD_NAME'] != 'APP_UID') || ($appUid == true)) {
	                if (in_array($aField['FLD_TYPE'], $types)) {
	                    if (is_numeric($filter)) {
	                        $stringOr = $stringOr . '$a = $oCriteria->getNewCriterion(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ', "' . $filter . '", Criteria::EQUAL)' . $closure . ';';
	                        $closure = '->addOr($a)';
	                    }
	                } else {
	                    $stringOr = $stringOr . '$a = $oCriteria->getNewCriterion(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ', "%' . $filter . '%", Criteria::LIKE)' . $closure . ';';
	                    $closure = '->addOr($a)';
	                }
	            }
            }
            $stringOr = $stringOr . '$oCriteria->add($a);';
            eval($stringOr);

            $oCriteriaCount = clone $oCriteria;
            eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
        }
        G::LoadSystem('inputfilter');
        $filter = new InputFilter();        
        $sClassPeerName = $filter->validateInput($sClassPeerName);

        if (isset($_POST['sort'])) {
            $_POST['sort'] = $filter->validateInput($_POST['sort']);
            $_POST['dir'] = $filter->validateInput($_POST['dir']);
            if ($_POST['dir'] == 'ASC') {
                if ($keyOrderUppercase) {
                    eval('$oCriteria->addAscendingOrderByColumn("' . $_POST['sort'] . '");');
                } else {
                    eval('$oCriteria->addAscendingOrderByColumn(' . $sClassPeerName . '::' . $_POST['sort'] . ');');
                }
            } else {
                if ($keyOrderUppercase) {
                    eval('$oCriteria->addDescendingOrderByColumn("' . $_POST['sort'] . '");');
                } else {
                    eval('$oCriteria->addDescendingOrderByColumn(' . $sClassPeerName . '::' . $_POST['sort'] . ');');
                }
            }
        }

        if (isset($limit)) {
            $oCriteria->setLimit($limit);
        }
        if (isset($start)) {
            $oCriteria->setOffset($start);
        }
        //$rs = $sClassPeerName::doSelectRS($oCriteria);
        eval('$rs = ' . $sClassPeerName . '::doSelectRS($oCriteria);');
        $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);

        $rows = Array();
        while ($rs->next()) {
            $rows[] = $rs->getRow();
        }

        return array('rows' => $rows, 'count' => $count);
    }
Ejemplo n.º 5
0
    $aStepTypeId = explode('|', $_GET['stepid']);
    $_SESSION['stepUID'] = $_GET['stepid'];
    //$aStepTypeId = explode('-','2517180104cd42c25cc39e4071099227-BEFORE');
    $sStep = $aStepTypeId[0];
    $sType = $aStepTypeId[1];
}
$start = isset($_POST['start']) ? $_POST['start'] : 0;
$limit = isset($_POST['limit']) ? $_POST['limit'] : '';
switch ($_GET['action']) {
    case 'getDynaformList':
        $result = $oProcessMap->getExtDynaformsList($start, $limit, $_GET['pid']);
        print G::json_encode($result);
        break;
    case 'getPMTableDynaform':
        $oAdditionalTables = new AdditionalTables();
        $aData = $oAdditionalTables->load($_GET['tabId'], true);
        $addTabName = $aData['ADD_TAB_NAME'];
        foreach ($aData['FIELDS'] as $iRow => $aRow) {
            if ($aRow['FLD_KEY'] == 1) {
                $rows[] = $aRow;
            }
        }
        $result['totalCount'] = count($rows);
        $result['data'] = $rows;
        print G::json_encode($result);
        break;
    case 'getAdditionalTables':
        $rows = $oProcessMap->getExtAdditionalTablesList();
        $result['totalCount'] = count($rows);
        $result['data'] = $rows;
        print G::json_encode($result);
Ejemplo n.º 6
0
 }
 if ($_SESSION['TRIGGER_DEBUG']['NUM_TRIGGERS'] != 0) {
     //Execute after triggers - Start
     $Fields['APP_DATA'] = $oCase->ExecuteTriggers($_SESSION['TASK'], 'DYNAFORM', $_GET['UID'], 'AFTER', $Fields['APP_DATA']);
     //Execute after triggers - End
 }
 //save data in PM Tables if necessary
 $newValues = array();
 foreach ($_POST['form'] as $sField => $sAux) {
     if (isset($oForm->fields[$sField]->pmconnection) && isset($oForm->fields[$sField]->pmfield)) {
         if ($oForm->fields[$sField]->pmconnection != '' && $oForm->fields[$sField]->pmfield != '') {
             if (isset($oForm->fields[$oForm->fields[$sField]->pmconnection])) {
                 require_once PATH_CORE . 'classes' . PATH_SEP . 'model' . PATH_SEP . 'AdditionalTables.php';
                 $oAdditionalTables = new AdditionalTables();
                 try {
                     $aData = $oAdditionalTables->load($oForm->fields[$oForm->fields[$sField]->pmconnection]->pmtable, true);
                 } catch (Exception $oError) {
                     $aData = array('FIELDS' => array());
                 }
                 $aKeys = array();
                 $aAux = explode('|', $oForm->fields[$oForm->fields[$sField]->pmconnection]->keys);
                 $i = 0;
                 $aValues = array();
                 foreach ($aData['FIELDS'] as $aField) {
                     if ($aField['FLD_KEY'] == '1') {
                         $aKeys[$aField['FLD_NAME']] = isset($aAux[$i]) ? G::replaceDataField($aAux[$i], $Fields['APP_DATA']) : '';
                         $i++;
                     }
                     if ($aField['FLD_NAME'] == $oForm->fields[$sField]->pmfield) {
                         $aValues[$aField['FLD_NAME']] = $Fields['APP_DATA'][$sField];
                     } else {
Ejemplo n.º 7
0
     }
     $columns = array_merge($defaultColumns, $columns);
     /** validations **/
     if (is_array($aNameTable)) {
         throw new Exception('The table "' . $data['REP_TAB_NAME'] . '" already exits.');
     }
     if (in_array(strtoupper($data['REP_TAB_NAME']), $aReservedWords)) {
         throw new Exception('Could not create the table with the name "' . $data['REP_TAB_NAME'] . '" because it is a reserved word.');
     }
     //create record
     $addTabUid = $oAdditionalTables->create($repTabData);
 } else {
     //editing report table
     $addTabUid = $data['REP_TAB_UID'];
     //loading old data before update
     $addTabBeforeData = $oAdditionalTables->load($addTabUid, true);
     //updating record
     $oAdditionalTables->update($repTabData);
     //removing old data fields references
     $oCriteria = new Criteria('workflow');
     $oCriteria->add(FieldsPeer::ADD_TAB_UID, $data['REP_TAB_UID']);
     //$oCriteria->add(FieldsPeer::FLD_NAME, 'APP_UID', Criteria::NOT_EQUAL);
     //$oCriteria->add(FieldsPeer::FLD_NAME, 'ROW', Criteria::NOT_EQUAL);
     FieldsPeer::doDelete($oCriteria);
     //getting old fieldnames
     $oldFields = array();
     foreach ($addTabBeforeData['FIELDS'] as $field) {
         //if ($field['FLD_NAME'] == 'APP_UID' || $field['FLD_NAME'] == 'ROW') continue;
         $oldFields[$field['FLD_UID']] = $field;
     }
 }
Ejemplo n.º 8
0
 /**
  * get a value from a PM Table
  *
  * @param <Object> $oOwner
  * @return <String> $sValue
  */
 public function getPMTableValue($oOwner)
 {
     $sValue = '';
     if (isset($oOwner->fields[$this->pmconnection])) {
         if (defined('PATH_CORE')) {
             if (file_exists(PATH_CORE . 'classes' . PATH_SEP . 'model' . PATH_SEP . 'AdditionalTables.php')) {
                 require_once PATH_CORE . 'classes' . PATH_SEP . 'model' . PATH_SEP . 'AdditionalTables.php';
                 $oAdditionalTables = new AdditionalTables();
                 try {
                     $aData = $oAdditionalTables->load($oOwner->fields[$this->pmconnection]->pmtable, true);
                 } catch (Exception $oError) {
                     $aData = array('FIELDS' => array());
                 }
                 $aKeys = array();
                 $aValues = explode('|', $oOwner->fields[$this->pmconnection]->keys);
                 $i = 0;
                 foreach ($aData['FIELDS'] as $aField) {
                     if ($aField['FLD_KEY'] == '1') {
                         // note added by gustavo cruz gustavo[at]colosa[dot]com
                         // this additional [if] checks if a case variable has been set
                         // in the keys attribute, so it can be parsed and replaced for
                         // their respective value.
                         if (preg_match("/@#/", $aValues[$i])) {
                             // check if a case are running in order to prevent that preview is
                             // erroneous rendered.
                             if (isset($_SESSION['APPLICATION'])) {
                                 G::LoadClass('case');
                                 $oApp = new Cases();
                                 if ($oApp->loadCase($_SESSION['APPLICATION']) != null) {
                                     $aFields = $oApp->loadCase($_SESSION['APPLICATION']);
                                     $formVariable = substr($aValues[$i], 2);
                                     if (isset($aFields['APP_DATA'][$formVariable])) {
                                         $formVariableValue = $aFields['APP_DATA'][$formVariable];
                                         $aKeys[$aField['FLD_NAME']] = isset($formVariableValue) ? G::replaceDataField($formVariableValue, $oOwner->values) : '';
                                     } else {
                                         $aKeys[$aField['FLD_NAME']] = '';
                                     }
                                 } else {
                                     $aKeys[$aField['FLD_NAME']] = '';
                                 }
                             } else {
                                 $aKeys[$aField['FLD_NAME']] = '';
                             }
                         } else {
                             $aKeys[$aField['FLD_NAME']] = isset($aValues[$i]) ? G::replaceDataField($aValues[$i], $oOwner->values) : '';
                         }
                         $i++;
                     }
                 }
                 try {
                     $aData = $oAdditionalTables->getDataTable($oOwner->fields[$this->pmconnection]->pmtable, $aKeys);
                 } catch (Exception $oError) {
                     $aData = array();
                 }
                 if (isset($aData[$this->pmfield])) {
                     $sValue = $aData[$this->pmfield];
                 }
             }
         }
     }
     return $sValue;
 }
Ejemplo n.º 9
0
G::LoadClass("configuration");
//require_once ("classes/model/Fields.php");
//require_once ("classes/model/AppCacheView.php");
//require_once ("classes/model/Process.php");
//require_once ("classes/model/Users.php");
$oHeadPublisher =& headPublisher::getSingleton();
// oHeadPublisher->setExtSkin( 'xtheme-blue');
//get the configuration for this action
$conf = new Configurations();
try {
    // the setup for search is the same as the Sent (participated)
    $confCasesList = $conf->getConfiguration('casesList', $action == 'search' || $action == 'simple_search' ? 'search' : $action);
    $table = null;
    if (isset($confCasesList['PMTable'])) {
        $aditionalTable = new AdditionalTables();
        $table = $aditionalTable->load($confCasesList['PMTable']);
    }
    $confCasesList = $table != null ? $confCasesList : array();
    $generalConfCasesList = $conf->getConfiguration('ENVIRONMENT_SETTINGS', '');
} catch (Exception $e) {
    $confCasesList = array();
    $generalConfCasesList = array();
}
$caseListBuilder = count($confCasesList) ? 1 : 0;
if ($caseListBuilder) {
    $urlProxy = 'proxyCasesList';
}
// reassign header configuration
$confReassignList = getReassignList();
// evaluates an action and the configuration for the list that will be rendered
$config = getAdditionalFields($action, $confCasesList);
Ejemplo n.º 10
0
    /**

     * loads the configuration fields from the database based in an action parameter

     * then assemble the Criteria object with these data.

     * @param  String $action

     * @return Criteria object $Criteria

     */

    public function addPMFieldsToCriteria($action)

    {

        $caseColumns = array();



        if (!class_exists('AdditionalTables')) {

            require_once ("classes/model/AdditionalTables.php");

        }



        $caseReaderFields = array();

        $oCriteria = new Criteria('workflow');

        $oCriteria->clearSelectColumns();



        //Default configuration fields array

        $defaultFields = $this->getDefaultFields();



        //If there is PMTable for this case list

        if (is_array($this->confCasesList) && count($this->confCasesList) > 0 && isset($this->confCasesList["PMTable"]) && trim($this->confCasesList["PMTable"]) != "") {

            //Getting the table name

            $additionalTableUid = $this->confCasesList["PMTable"];



            $additionalTable = AdditionalTablesPeer::retrieveByPK($additionalTableUid);

            $tableName = $additionalTable->getAddTabName();



            $additionalTable = new AdditionalTables();

            $tableData = $additionalTable->load($additionalTableUid, true);



            $tableField = array();



            foreach ($tableData["FIELDS"] as $arrayField) {

                $tableField[] = $arrayField["FLD_NAME"];

            }



            foreach ($this->confCasesList["second"]["data"] as $fieldData) {

                if (in_array($fieldData["name"], $defaultFields)) {

                    switch ($fieldData["fieldType"]) {

                        case "case field":

                            $configTable = "APP_CACHE_VIEW";

                            break;

                        case "delay field":

                            $configTable = "APP_DELAY";

                            break;

                        default:

                            $configTable = "APP_CACHE_VIEW";

                            break;

                    }



                    $fieldName = $configTable . "." . $fieldData["name"];

                    $oCriteria->addSelectColumn($fieldName);

                } else {

                    if (in_array($fieldData["name"], $tableField)) {

                        $fieldName = $tableName . "." . $fieldData["name"];

                        $oCriteria->addSelectColumn($fieldName);

                    }

                }

            }



            //add the default and hidden DEL_INIT_DATE

            $oCriteria->addSelectColumn('APP_CACHE_VIEW.DEL_INIT_DATE');

            //$oCriteria->addAlias("PM_TABLE", $tableName);



            //Add the JOIN

            $oCriteria->addJoin(AppCacheViewPeer::APP_UID, $tableName.'.APP_UID', Criteria::LEFT_JOIN);



            return $oCriteria;

        } else {

            //This list do not have a PMTable

            if (is_array($this->confCasesList) && isset($this->confCasesList["second"]) && count($this->confCasesList["second"]["data"]) > 0) {

                foreach ($this->confCasesList["second"]["data"] as $fieldData) {

                    if (in_array($fieldData["name"], $defaultFields)) {

                        switch ($fieldData["fieldType"]) {

                            case "case field":

                                $configTable = "APP_CACHE_VIEW";

                                break;

                            case "delay field":

                                $configTable = "APP_DELAY";

                                break;

                            default:

                                $configTable = "APP_CACHE_VIEW";

                                break;

                        }



                        $fieldName = $configTable . "." . $fieldData["name"];

                        $oCriteria->addSelectColumn($fieldName);

                    }

                }

            } else {

                foreach (AppCacheViewPeer::getFieldNames(BasePeer::TYPE_FIELDNAME) as $field) {

                    $oCriteria->addSelectColumn("APP_CACHE_VIEW.$field");

                }

            }



            //add the default and hidden DEL_INIT_DATE

            $oCriteria->addSelectColumn('APP_CACHE_VIEW.DEL_INIT_DATE');



            return $oCriteria;

        }

    }
Ejemplo n.º 11
0
 /**
  * show pmTable data list
  *
  * @param string $httpData->id
  */
 public function data($httpData)
 {
     require_once 'classes/model/AdditionalTables.php';
     $additionalTables = new AdditionalTables();
     $tableDef = $additionalTables->load($httpData->id, true);
     $this->includeExtJS('pmTables/data', $this->debug);
     $this->setJSVar('tableDef', $tableDef);
     //g::pr($tableDef['FIELDS']);
     G::RenderPage('publish', 'extJs');
 }
Ejemplo n.º 12
0
 public function getAllData($sUID, $start = null, $limit = null, $keyOrderUppercase = true)
 {
     $addTab = new AdditionalTables();
     $aData = $addTab->load($sUID, true);
     if (!isset($_SESSION['PROCESS'])) {
         $_SESSION["PROCESS"] = $aData['PRO_UID'];
     }
     $aData['DBS_UID'] = $aData['DBS_UID'] ? $aData['DBS_UID'] : 'workflow';
     $sPath = PATH_DB . SYS_SYS . PATH_SEP . 'classes' . PATH_SEP;
     $sClassName = $aData['ADD_TAB_CLASS_NAME'] != '' ? $aData['ADD_TAB_CLASS_NAME'] : $this->getPHPName($aData['ADD_TAB_NAME']);
     if (file_exists($sPath . $sClassName . '.php')) {
         require_once $sPath . $sClassName . '.php';
     } else {
         return null;
     }
     $sClassPeerName = $sClassName . 'Peer';
     $con = Propel::getConnection($aData['DBS_UID']);
     $oCriteria = new Criteria($aData['DBS_UID']);
     //eval('$oCriteria->addSelectColumn("\'1\' AS DUMMY");');
     if ($keyOrderUppercase == true) {
         foreach ($aData['FIELDS'] as $aField) {
             eval('$oCriteria->addSelectColumn(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ');');
             if ($aField['FLD_KEY'] == '1') {
                 eval('$oCriteria->addAscendingOrderByColumn(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ');');
             }
         }
     }
     $oCriteriaCount = clone $oCriteria;
     //$count = $sClassPeerName::doCount($oCriteria);
     eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
     if (isset($limit)) {
         $oCriteria->setLimit($limit);
     }
     if (isset($start)) {
         $oCriteria->setOffset($start);
     }
     //$rs = $sClassPeerName::doSelectRS($oCriteria);
     eval('$rs = ' . $sClassPeerName . '::doSelectRS($oCriteria);');
     $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $rows = array();
     while ($rs->next()) {
         $rows[] = $rs->getRow();
     }
     return array('rows' => $rows, 'count' => $count);
 }
Ejemplo n.º 13
0
    public function getAll(
        $userUid,
        $start = null,
        $limit = null,
        $action = null,
        $filter = null,
        $search = null,
        $process = null,
        $status = null,
        $type = null,
        $dateFrom = null,
        $dateTo = null,
        $callback = null,
        $dir = null,
        $sort = "APP_CACHE_VIEW.APP_NUMBER",
        $category = null,
        $configuration = true,
        $paged = true
    ) {
        $callback = isset($callback)? $callback : "stcCallback1001";
        $dir = isset($dir)? $dir : "DESC";

        if (isset($sort)) {
            G::LoadClass('phpSqlParser');
            $parser = new PHPSQLParser($sort);
            $sort = $parser->parsed;
            $sort = $sort[''][0];
        }

        $sort = isset($sort)? $sort : "";
        $start = isset($start)? $start : "0";
        $limit = isset($limit)? $limit : "25";
        $filter = isset($filter)? $filter : "";
        $search = isset($search)? $search : "";
        $process = isset($process)? $process : "";
        $category = isset($category)? $category : "";
        $status = isset($status)? $status : "";
        $action = isset($action)? $action : "todo";
        $type = isset($type)? $type : "extjs";
        $dateFrom = isset($dateFrom)? $dateFrom : "";
        $dateTo = isset($dateTo)? $dateTo : "";

        G::LoadClass("BasePeer");
        G::LoadClass("configuration");
        //require_once ("classes/model/AppCacheView.php");
        //require_once ("classes/model/AppDelegation.php");
        //require_once ("classes/model/AdditionalTables.php");
        //require_once ("classes/model/AppDelay.php");
        //require_once ("classes/model/Fields.php");
        //require_once ("classes/model/Users.php");
        //require_once ("classes/model/Process.php");

        $oAppCache = new AppCacheView();

        if ($configuration == true) {
            //get data configuration
            $conf = new Configurations();
            $confCasesList = $conf->getConfiguration("casesList", ($action == "search" || $action == "simple_search")? "search" : $action);
            $oAppCache->confCasesList = $confCasesList;
        }

        $delimiter = DBAdapter::getStringDelimiter();

        // get the action based list
        switch ($action) {
            case "draft":
                $Criteria = $oAppCache->getDraftListCriteria($userUid);
                $CriteriaCount = $oAppCache->getDraftCountCriteria($userUid);
                break;
            case "sent":
                $Criteria = $oAppCache->getSentListCriteria($userUid);
                $CriteriaCount = $oAppCache->getSentCountCriteria($userUid);

                if (!empty($status)) {
                    $Criteria->add(AppCacheViewPeer::APP_STATUS, $status);
                    $CriteriaCount->add(AppCacheViewPeer::APP_STATUS, $status);
                }
                break;
            case "selfservice":
            case "unassigned":
                //$userUid can't be empty or null
                $Criteria = $oAppCache->getUnassignedListCriteria($userUid);
                $CriteriaCount = $oAppCache->getUnassignedCountCriteria($userUid);
                break;
            case "paused":
                $Criteria = $oAppCache->getPausedListCriteria($userUid);
                $CriteriaCount = $oAppCache->getPausedCountCriteria($userUid);
                break;
            case "completed":
                $Criteria = $oAppCache->getCompletedListCriteria($userUid);
                $CriteriaCount = $oAppCache->getCompletedCountCriteria($userUid);
                break;
            case "cancelled":
                $Criteria = $oAppCache->getCancelledListCriteria($userUid);
                $CriteriaCount = $oAppCache->getCancelledCountCriteria($userUid);
                break;
            case "search":
                //$Criteria = $oAppCache->getSearchListCriteria();
                //$CriteriaCount = $oAppCache->getSearchCountCriteria();

                switch ($status) {
                    case "TO_DO":
                        $Criteria = $oAppCache->getToDoListCriteria($userUid);
                        $CriteriaCount = $oAppCache->getToDoCountCriteria($userUid);
                        break;
                    case "DRAFT":
                        $Criteria = $oAppCache->getDraftListCriteria($userUid);
                        $CriteriaCount = $oAppCache->getDraftCountCriteria($userUid);
                        break;
                    case "PAUSED":
                        $Criteria = $oAppCache->getPausedListCriteria($userUid);
                        $CriteriaCount = $oAppCache->getPausedCountCriteria($userUid);
                        break;
                    case "CANCELLED":
                        $Criteria = $oAppCache->getCancelledListCriteria($userUid);
                        $CriteriaCount = $oAppCache->getCancelledCountCriteria($userUid);
                        break;
                    case "COMPLETED":
                        $Criteria = $oAppCache->getCompletedListCriteria($userUid);
                        $CriteriaCount = $oAppCache->getCompletedCountCriteria($userUid);

                        $Criteria->add (AppCacheViewPeer::DEL_LAST_INDEX,"1");
                        $CriteriaCount->add (AppCacheViewPeer::DEL_LAST_INDEX,"1");
                        break;
                    default:
                        //All status
                        $Criteria = $oAppCache->getAllCasesListCriteria2($userUid);
                        $CriteriaCount = $oAppCache->getAllCasesCountCriteria2($userUid);
                        break;
                }
                break;
            case "simple_search":
                $Criteria = $oAppCache->getSimpleSearchListCriteria();
                $CriteriaCount = $oAppCache->getSimpleSearchCountCriteria();
                break;
            case "to_revise":
                $Criteria = $oAppCache->getToReviseListCriteria($userUid);
                $CriteriaCount = $oAppCache->getToReviseCountCriteria($userUid);
                break;
            case "to_reassign":
                $Criteria = $oAppCache->getToReassignListCriteria($userUid);
                $CriteriaCount = $oAppCache->getToReassignCountCriteria($userUid);
                break;
            case "all":
                $Criteria = $oAppCache->getAllCasesListCriteria($userUid);
                $CriteriaCount = $oAppCache->getAllCasesCountCriteria($userUid);
                break;
            case "gral":
                //General criteria probably will be deprecated
                $Criteria = $oAppCache->getGeneralListCriteria();
                $CriteriaCount = $oAppCache->getGeneralCountCriteria();
                break;
            case "todo":
                $Criteria = $oAppCache->getToDoListCriteria($userUid);
                $CriteriaCount = $oAppCache->getToDoCountCriteria($userUid);
                break;
            default:
                //All status
                $Criteria = $oAppCache->getAllCasesListCriteria2($userUid);
                $CriteriaCount = $oAppCache->getAllCasesCountCriteria2($userUid);
                break;
        }

        $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT");

        $Criteria->addJoin(AppCacheViewPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
        $Criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);

        $CriteriaCount->addJoin(AppCacheViewPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
        $CriteriaCount->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN);

        $Criteria->addAlias( 'CU', 'USERS' );
        $Criteria->addJoin( AppCacheViewPeer::USR_UID, 'CU.USR_UID', Criteria::LEFT_JOIN );
        $Criteria->addAsColumn( 'USR_UID', 'CU.USR_UID' );
        $Criteria->addAsColumn( 'USR_FIRSTNAME', 'CU.USR_FIRSTNAME' );
        $Criteria->addAsColumn( 'USR_LASTNAME', 'CU.USR_LASTNAME' );
        $Criteria->addAsColumn( 'USR_USERNAME', 'CU.USR_USERNAME' );

        $CriteriaCount->addAlias( 'CU', 'USERS' );
        $CriteriaCount->addJoin( AppCacheViewPeer::USR_UID, 'CU.USR_UID', Criteria::LEFT_JOIN );
        $CriteriaCount->addAsColumn( 'USR_UID', 'CU.USR_UID' );
        $CriteriaCount->addAsColumn( 'USR_FIRSTNAME', 'CU.USR_FIRSTNAME' );
        $CriteriaCount->addAsColumn( 'USR_LASTNAME', 'CU.USR_LASTNAME' );
        $CriteriaCount->addAsColumn( 'USR_USERNAME', 'CU.USR_USERNAME' );

        //Current delegation
        $appdelcrTableName = AppCacheViewPeer::TABLE_NAME;
        $appdelcrAppTasTitle = "APPDELCR.APP_TAS_TITLE";
        $appdelcrAppTasTitleCount = $appdelcrAppTasTitle;

        switch ($action) {
            case "sent":
                $appdelcrTableName = AppDelegationPeer::TABLE_NAME;
                $appdelcrAppTasTitle = "(SELECT CON_VALUE FROM CONTENT WHERE CON_ID = APPDELCR.TAS_UID AND CON_LANG = " . $delimiter . SYS_LANG . $delimiter . " AND CON_CATEGORY = " . $delimiter . "TAS_TITLE" . $delimiter . ")";
                $appdelcrAppTasTitleCount = "APPDELCR.TAS_UID";
                break;
            case "to_reassign":
                $appdelcrAppTasTitle = "APP_CACHE_VIEW.APP_TAS_TITLE";
                $appdelcrAppTasTitleCount = $appdelcrAppTasTitle;
                break;
        }

        $Criteria->addAsColumn("APPDELCR_APP_TAS_TITLE", $appdelcrAppTasTitle);
        $CriteriaCount->addAsColumn("APPDELCR_APP_TAS_TITLE", $appdelcrAppTasTitleCount);

        $Criteria->addAsColumn("USRCR_USR_UID", "USRCR.USR_UID");
        $Criteria->addAsColumn("USRCR_USR_FIRSTNAME", "USRCR.USR_FIRSTNAME");
        $Criteria->addAsColumn("USRCR_USR_LASTNAME", "USRCR.USR_LASTNAME");
        $Criteria->addAsColumn("USRCR_USR_USERNAME", "USRCR.USR_USERNAME");

        $CriteriaCount->addAsColumn("USRCR_USR_UID", "USRCR.USR_UID");
        $CriteriaCount->addAsColumn("USRCR_USR_FIRSTNAME", "USRCR.USR_FIRSTNAME");
        $CriteriaCount->addAsColumn("USRCR_USR_LASTNAME", "USRCR.USR_LASTNAME");
        $CriteriaCount->addAsColumn("USRCR_USR_USERNAME", "USRCR.USR_USERNAME");

        $Criteria->addAlias("APPDELCR", $appdelcrTableName);
        $Criteria->addAlias("USRCR", UsersPeer::TABLE_NAME);

        $CriteriaCount->addAlias("APPDELCR", $appdelcrTableName);
        $CriteriaCount->addAlias("USRCR", UsersPeer::TABLE_NAME);

        $arrayCondition = array();
        $arrayCondition[] = array(AppCacheViewPeer::APP_UID, "APPDELCR.APP_UID");
        $arrayCondition[] = array("APPDELCR.DEL_LAST_INDEX", 1);
        $Criteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
        $CriteriaCount->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);

        $arrayCondition = array();
        $arrayCondition[] = array("APPDELCR.USR_UID", "USRCR.USR_UID");
        $Criteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
        $CriteriaCount->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);

        //Previous user

        if (($action == "todo" || $action == "selfservice" || $action == "unassigned" || $action == "paused" || $action == "to_revise" || $action == "sent") || ($status == "TO_DO" || $status == "DRAFT" || $status == "PAUSED" || $status == "CANCELLED" || $status == "COMPLETED")) {
            $Criteria->addAlias( 'PU', 'USERS' );
            $Criteria->addJoin( AppCacheViewPeer::PREVIOUS_USR_UID, 'PU.USR_UID', Criteria::LEFT_JOIN );
            $Criteria->addAsColumn( 'PREVIOUS_USR_FIRSTNAME', 'PU.USR_FIRSTNAME' );
            $Criteria->addAsColumn( 'PREVIOUS_USR_LASTNAME', 'PU.USR_LASTNAME' );
            $Criteria->addAsColumn( 'PREVIOUS_USR_USERNAME', 'PU.USR_USERNAME' );

            $CriteriaCount->addAlias( 'PU', 'USERS' );
            $CriteriaCount->addJoin( AppCacheViewPeer::PREVIOUS_USR_UID, 'PU.USR_UID', Criteria::LEFT_JOIN );
            $CriteriaCount->addAsColumn( 'PREVIOUS_USR_FIRSTNAME', 'PU.USR_FIRSTNAME' );
            $CriteriaCount->addAsColumn( 'PREVIOUS_USR_LASTNAME', 'PU.USR_LASTNAME' );
            $CriteriaCount->addAsColumn( 'PREVIOUS_USR_USERNAME', 'PU.USR_USERNAME' );
        }

        /*
        if (! is_array( $confCasesList )) {
            $rows = $this->getDefaultFields( $action );
            $result = $this->genericJsonResponse( '', array (), $rows, 20, '' );
            //$conf->saveObject($result,'casesList',$action,'','','');
        }
        */

        //Add the process filter
        if (!empty($process)) {
            $Criteria->add(AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL);
            $CriteriaCount->add(AppCacheViewPeer::PRO_UID, $process, Criteria::EQUAL);
        }

        //Add the category filter
        if (!empty($category)) {
            require_once 'classes/model/Process.php';
            $Criteria->addAlias("CP", "PROCESS");
            $Criteria->add("CP.PRO_CATEGORY", $category, Criteria::EQUAL);
            $Criteria->addJoin(AppCacheViewPeer::PRO_UID, "CP.PRO_UID", Criteria::LEFT_JOIN);
            $Criteria->addAsColumn("CATEGORY_UID", "CP.PRO_CATEGORY");

            $CriteriaCount->addAlias("CP", "PROCESS");
            $CriteriaCount->add("CP.PRO_CATEGORY", $category, Criteria::EQUAL);
            $CriteriaCount->addJoin(AppCacheViewPeer::PRO_UID, "CP.PRO_UID", Criteria::LEFT_JOIN);
            $CriteriaCount->addAsColumn("CATEGORY_UID", "CP.PRO_CATEGORY");
        }

        // add the user filter
        /*
        if ($user != '') {
            $Criteria->add( AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL );
            $CriteriaCount->add( AppCacheViewPeer::USR_UID, $user, Criteria::EQUAL );
        }
        if ($status != '') {
            $Criteria->add( AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL );
            $CriteriaCount->add( AppCacheViewPeer::APP_STATUS, $status, Criteria::EQUAL );
        }
        */

        if ($dateFrom != "") {
            if ($dateTo != "") {
                if ($dateFrom == $dateTo) {
                    $dateSame = $dateFrom;
                    $dateFrom = $dateSame . " 00:00:00";
                    $dateTo = $dateSame . " 23:59:59";
                } else {
                    $dateFrom = $dateFrom . " 00:00:00";
                    $dateTo = $dateTo . " 23:59:59";
                }

                $Criteria->add( $Criteria->getNewCriterion( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $Criteria->getNewCriterion( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL ) ) );
                $CriteriaCount->add( $CriteriaCount->getNewCriterion( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $Criteria->getNewCriterion( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL ) ) );
            } else {
                $dateFrom = $dateFrom . " 00:00:00";

                $Criteria->add( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL );
                $CriteriaCount->add( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateFrom, Criteria::GREATER_EQUAL );
            }
        } elseif ($dateTo != "") {
            $dateTo = $dateTo . " 23:59:59";

            $Criteria->add( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL );
            $CriteriaCount->add( AppCacheViewPeer::DEL_DELEGATE_DATE, $dateTo, Criteria::LESS_EQUAL );
        }

        //add the filter
        if ($filter != '') {
            switch ($filter) {
                case 'read':
                    $Criteria->add( AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL );
                    $CriteriaCount->add( AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNOTNULL );
                    break;
                case 'unread':
                    $Criteria->add( AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL );
                    $CriteriaCount->add( AppCacheViewPeer::DEL_INIT_DATE, null, Criteria::ISNULL );
                    break;
                case 'started':
                    $Criteria->add( AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL );
                    $CriteriaCount->add( AppCacheViewPeer::DEL_INDEX, 1, Criteria::EQUAL );
                    break;
                case 'completed':
                    $Criteria->add( AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL );
                    $CriteriaCount->add( AppCacheViewPeer::APP_STATUS, 'COMPLETED', Criteria::EQUAL );
                    break;
            }
        }

        //Add the search filter
        if ($search != '') {
            $oTmpCriteria = '';

            //If there is PMTable for this case list
            if (is_array($oAppCache->confCasesList) && count($oAppCache->confCasesList) > 0 && isset($oAppCache->confCasesList["PMTable"]) && trim($oAppCache->confCasesList["PMTable"]) != "") {
                //Default configuration fields array
                $defaultFields = $oAppCache->getDefaultFields();

                //Getting the table name
                $additionalTableUid = $oAppCache->confCasesList["PMTable"];

                $additionalTable = AdditionalTablesPeer::retrieveByPK($additionalTableUid);
                $tableName = $additionalTable->getAddTabName();

                $additionalTable = new AdditionalTables();
                $tableData = $additionalTable->load($additionalTableUid, true);

                $tableField = array();

                foreach ($tableData["FIELDS"] as $arrayField) {
                    $tableField[] = $arrayField["FLD_NAME"];
                }

                $oNewCriteria = new Criteria("workflow");
                $sw = 0;

                foreach ($oAppCache->confCasesList["second"]["data"] as $fieldData) {
                    if (!in_array($fieldData["name"], $defaultFields)) {
                        if (in_array($fieldData["name"], $tableField)) {
                            $fieldName = $tableName . "." . $fieldData["name"];

                            if ($sw == 0) {
                                $oTmpCriteria = $oNewCriteria->getNewCriterion($fieldName, "%" . $search . "%", Criteria::LIKE);
                            } else {
                                $oTmpCriteria = $oNewCriteria->getNewCriterion($fieldName, "%" . $search . "%", Criteria::LIKE)->addOr($oTmpCriteria);
                            }

                            $sw = 1;
                        }
                    }
                }

                //add the default and hidden DEL_INIT_DATE
            }

            // the criteria adds new fields if there are defined PM Table Fields in the cases list
            if ($oTmpCriteria != '') {
                $Criteria->add( $Criteria->getNewCriterion( AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE )->addOr( $oTmpCriteria ) ) ) );
            } else {
                $Criteria->add( $Criteria->getNewCriterion( AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE ) ) ) );
            }

            // the count query needs to be the normal criteria query if there are defined PM Table Fields in the cases list
            if ($oTmpCriteria != '') {
                $CriteriaCount = $Criteria;
            } else {
                $CriteriaCount->add( $CriteriaCount->getNewCriterion( AppCacheViewPeer::APP_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $CriteriaCount->getNewCriterion( AppCacheViewPeer::APP_TAS_TITLE, '%' . $search . '%', Criteria::LIKE )->addOr( $CriteriaCount->getNewCriterion( AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE ) ) ) );
            }
        }

        // this is the optimal way or query to render the cases search list
        // fixing the bug related to the wrong data displayed in the list
        /*
        if ($action == 'search') {
            $oDatasetIndex = AppCacheViewPeer::doSelectRS( $Criteria );
            $oDatasetIndex->setFetchmode( ResultSet::FETCHMODE_ASSOC );
            $oDatasetIndex->next();
            $maxDelIndexList = array ();
            // a list of MAX_DEL_INDEXES is required in order to validate the right row
            while ($aRow = $oDatasetIndex->getRow()) {
                $maxDelIndexList[] = $aRow['MAX_DEL_INDEX'];
                $oDatasetIndex->next();
            }
            // adding the validation condition in order to get the right row using the group by sentence
            $Criteria->add( AppCacheViewPeer::DEL_INDEX, $maxDelIndexList, Criteria::IN );
            //
            //$params = array($maxDelIndexList);
        }
        */

        //here we count how many records exists for this criteria.
        //BUT there are some special cases, and if we dont optimize them the server will crash.
        $doCountAlreadyExecuted = $paged;
        //case 1. when the SEARCH action is selected and none filter, search criteria is defined,
        //we need to count using the table APPLICATION, because APP_CACHE_VIEW takes 3 seconds

        /*
        if ($action == 'search' && $filter == '' && $search == '' && $process == '' && $status == '' && $dateFrom == '' && $dateTo == '' && $category == '') {
            $totalCount = $oAppCache->getSearchAllCount();
            $doCountAlreadyExecuted = true;
        }
        if ($category != '') {
            $totalCount = $oAppCache->getSearchCountCriteria();
            $doCountAlreadyExecuted = true;
        }
        */
        $tableNameAux = '';
        $totalCount = 0;
        if ($doCountAlreadyExecuted == true) {
            // in the case of reassign the distinct attribute shows a diferent count result comparing to the
            // original list
            //Check also $distinct in the method getListCounters(), this in AppCacheView.php
            $distinct = true;

            if ($action != "sent" && (($action == "todo" || $action == "selfservice" || $action == "unassigned" || $action == "to_reassign" || $action == "to_revise") || ($status == "TO_DO"))) {
                $distinct = false;
            }

            // first check if there is a PMTable defined within the list,
            // the issue that brokes the normal criteria query seems to be fixed
            if (isset( $oAppCache->confCasesList['PMTable'] ) && ! empty( $oAppCache->confCasesList['PMTable'] )) {
                // then
                $oAdditionalTables = AdditionalTablesPeer::retrieveByPK( $oAppCache->confCasesList['PMTable'] );
                $tableName = $oAdditionalTables->getAddTabName();
                $tableNameAux = $tableName;
                $tableName = strtolower( $tableName );
                $tableNameArray = explode( '_', $tableName );
                foreach ($tableNameArray as $item) {
                    $newTableName[] = ucfirst( $item );
                }
                $tableName = implode( '', $newTableName );
                // so the pm table class can be invoqued from the pm table model clases
                if (! class_exists( $tableName )) {
                    require_once (PATH_DB . SYS_SYS . PATH_SEP . "classes" . PATH_SEP . $tableName . ".php");
                }
            }
            $totalCount = AppCacheViewPeer::doCount($CriteriaCount, $distinct);
        }

        //Add sortable options
        $sortBk = $sort;

        if ($sortBk != "") {
            $sort = "";

            //Current delegation (*)
            if (($action == "sent" || $action == "search" || $action == "simple_search" || $action == "to_revise" || $action == "to_reassign") && ($status != "TO_DO")) {
                switch ($sortBk) {
                    case "APP_CACHE_VIEW.APP_CURRENT_USER":
                        $sort = "USRCR_" . $conf->userNameFormatGetFirstFieldByUsersTable();
                        break;
                    case "APP_CACHE_VIEW.APP_TAS_TITLE":
                        $sort = "APPDELCR_APP_TAS_TITLE";
                        break;
                }
            }

            if (isset( $oAppCache->confCasesList['PMTable'] ) && ! empty( $oAppCache->confCasesList['PMTable'] ) && $tableNameAux != '') {
                $sortTable = explode(".", $sortBk);

                $additionalTableUid = $oAppCache->confCasesList["PMTable"];

                require_once 'classes/model/Fields.php';
                $oCriteria = new Criteria('workflow');

                $oCriteria->addSelectColumn(FieldsPeer::FLD_UID);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_INDEX);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_NAME);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_DESCRIPTION);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_TYPE);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_SIZE);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_NULL);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_AUTO_INCREMENT);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_KEY);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_FOREIGN_KEY);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_FOREIGN_KEY_TABLE);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_DYN_NAME);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_DYN_UID);
                $oCriteria->addSelectColumn(FieldsPeer::FLD_FILTER);
                $oCriteria->add(FieldsPeer::ADD_TAB_UID, $additionalTableUid);
                $oCriteria->add(FieldsPeer::FLD_NAME, $sortTable[1]);
                $oCriteria->addAscendingOrderByColumn(FieldsPeer::FLD_INDEX);

                $oDataset = FieldsPeer::doSelectRS($oCriteria);
                $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                $oDataset->next();
                $row = $oDataset->getRow();
                if (is_array($row)) {
                    $sort = $tableNameAux . "." . $sortTable[1];
                }
            }

            if ($sort == "") {
                $sort = $sortBk;
            }

            if (!in_array($sort, $Criteria->getSelectColumns())) {
                $sort = AppCacheViewPeer::APP_NUMBER; //DEFAULT VALUE
            }

            if ($dir == "DESC") {
                $Criteria->addDescendingOrderByColumn($sort);
            } else {
                $Criteria->addAscendingOrderByColumn($sort);
            }
        }

        //limit the results according the interface
        $Criteria->setLimit( $limit );
        $Criteria->setOffset( $start );

        //execute the query
        $oDataset = AppCacheViewPeer::doSelectRS( $Criteria, Propel::getDbConnection('workflow_ro') );

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

        $result = array ();
        $result['totalCount'] = $totalCount;
        $rows = array ();
        $aPriorities = array ('1' => 'VL','2' => 'L','3' => 'N','4' => 'H','5' => 'VH');
        $index = $start;

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

            //$aRow = $oAppCache->replaceRowUserData($aRow);

            /*
             * For participated cases, we want the last step in the case, not only the last step this user participated. To do that we get every case information again for the last step. (This could be solved by a subquery, but Propel might not support it and subqueries can be slower for larger
             * datasets).
             */
             /*if ($action == 'sent' || $action == 'search') {
             $maxCriteria = new Criteria('workflow');
             $maxCriteria->add(AppCacheViewPeer::APP_UID, $aRow['APP_UID'], Criteria::EQUAL);
             $maxCriteria->addDescendingOrderByColumn(AppCacheViewPeer::DEL_INDEX);
             $maxCriteria->setLimit(1);

             $maxDataset = AppCacheViewPeer::doSelectRS( $maxCriteria );
             $maxDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
             $maxDataset->next();

             $newData = $maxDataset->getRow();
             foreach ($aRow as $col => $value) {
             if (array_key_exists($col, $newData))
             $aRow[$col] = $newData[$col];
             }

             $maxDataset->close();
              }*/

            //Current delegation (*) || $action == "search" || $action == "to_revise"
            if (($action == "sent" || $action == "simple_search" || $action == "to_reassign") && ($status != "TO_DO")) {
                //Current task
                $aRow["APP_TAS_TITLE"] = $aRow["APPDELCR_APP_TAS_TITLE"];

                //Current user
                //if ($action != "to_reassign" ) {
                if (($action != "to_reassign") && ($action != "search") && ($action != "to revise")) {
                    $aRow["USR_UID"] = $aRow["USRCR_USR_UID"];
                    $aRow["USR_FIRSTNAME"] = $aRow["USRCR_USR_FIRSTNAME"];
                    $aRow["USR_LASTNAME"] = $aRow["USRCR_USR_LASTNAME"];
                    $aRow["USR_USERNAME"] = $aRow["USRCR_USR_USERNAME"];
                }
            }

            //Unassigned user
            if (! isset( $aRow['APP_CURRENT_USER'] )) {
                $aRow['APP_CURRENT_USER'] = "******" . strtoupper(G::LoadTranslation("ID_UNASSIGNED")) . "]";
            }

            // replacing the status data with their respective translation
            if (isset( $aRow['APP_STATUS'] )) {
                $aRow['APP_STATUS_LABEL'] = G::LoadTranslation( "ID_{$aRow['APP_STATUS']}" );
            }

            // replacing the priority data with their respective translation
            if (isset( $aRow['DEL_PRIORITY'] )) {
                $aRow['DEL_PRIORITY'] = G::LoadTranslation( "ID_PRIORITY_{$aPriorities[$aRow['DEL_PRIORITY']]}" );
            }

            $rows[] = $aRow;
        }

        $result['data'] = $rows;

        return $result;
    }
Ejemplo n.º 14
0
    /**
     * Get field names which are primary key in a PM Table
     *
     * @param string $additionalTableUid    Unique id of PM Table
     * @param string $fieldNameForException Field name for the exception
     *
     * return array Return data with the primary keys
     */
    public function getPmTablePrimaryKeyFields($additionalTableUid, $fieldNameForException)
    {
        try {
            $arrayFieldPk = array();

            //Verify data
            $this->throwExceptionIfNotExistsPmTable($additionalTableUid, $fieldNameForException);

            //Get data
            //Load AdditionalTable
            $additionalTable = new \AdditionalTables();

            $arrayAdditionalTableData = $additionalTable->load($additionalTableUid, true);

            foreach ($arrayAdditionalTableData["FIELDS"] as $key => $value) {
                if ($value["FLD_KEY"] == 1) {
                    //Primary Key
                    $arrayFieldPk[] = $value["FLD_NAME"];
                }
            }

            //Return
            return $arrayFieldPk;
        } catch (\Exception $e) {
            throw $e;
        }
    }
Ejemplo n.º 15
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', 'location', 'scannerCode', 'array');
         $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"])) {
             $sProcessUID = $row["PRJ_UID"];
             $arrayDataTypeToExclude = array("array", "grid");
             $arrayTypeToExclude = array("title", "subtitle", "link", "file", "button", "reset", "submit", "listbox", "grid", "array", "javascript", "location", "scannerCode");
             $arrayControlSupported = array();
             $dynaformAllControl = $this->getDynaformVariables($sProcessUID, $arrayTypeToExclude, true, "DATA");
             foreach ($dynaformAllControl as $value) {
                 $arrayControl = array_change_key_case($value, CASE_UPPER);
                 if (isset($arrayControl["DATATYPE"]) && isset($arrayControl["TYPE"])) {
                     if (!in_array($arrayControl["DATATYPE"], $arrayDataTypeToExclude) && !in_array($arrayControl["TYPE"], $arrayTypeToExclude)) {
                         $arrayControlSupported[$arrayControl["VAR_UID"]] = $arrayControl["TYPE"];
                     }
                 }
             }
             $dynaformNotAllowedVariables = $this->getDynaformVariables($sProcessUID, $arrayTypeToExclude, false);
             $oCriteria = new Criteria('workflow');
             $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_UID);
             $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_NAME);
             $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_FIELD_TYPE);
             $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();
                 if (!in_array($row["VAR_NAME"], $dynaformNotAllowedVariables) && !in_array($row["VAR_FIELD_TYPE"], $arrayTypeToExclude) && !in_array($row["VAR_NAME"], $fieldsNames)) {
                     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));
                 }
                 array_push($fieldsNames, $row["VAR_NAME"]);
                 if (isset($arrayControlSupported[$row["VAR_UID"]]) && !in_array($row["VAR_NAME"] . "_label", $fieldsNames)) {
                     array_push($fields, array("FIELD_UID" => $row["VAR_NAME"] . "_label-" . $arrayControlSupported[$row["VAR_UID"]], "FIELD_NAME" => $row["VAR_NAME"] . "_label", "FIELD_VALIDATE" => "any", "_index" => $index++, "_isset" => true));
                     array_push($fieldsNames, $row["VAR_NAME"] . "_label");
                 }
             }
         }
         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);
 }