/** * Get all dynaform fields inside all grids from a process * * @param $proUid */ public function _getGridFields($proUid) { require_once 'classes/model/Dynaform.php'; G::loadSystem('dynaformhandler'); $aFields = array(); $aFieldsNames = array(); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(DynaformPeer::DYN_FILENAME); $oCriteria->add(DynaformPeer::PRO_UID, $proUid); $oCriteria->add(DynaformPeer::DYN_TYPE, 'xmlform'); $oDataset = DynaformPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { //$G_FORM = new Form($aRow['DYN_FILENAME'], PATH_DYNAFORM, SYS_LANG); $dynaformHandler = new dynaformHandler(PATH_DYNAFORM . $aRow['DYN_FILENAME'] . '.xml'); $nodeFieldsList = $dynaformHandler->getFields(); foreach ($nodeFieldsList as $node) { $arrayNode = $dynaformHandler->getArray($node); $fieldName = $arrayNode['__nodeName__']; $fieldType = $arrayNode['type']; if ($fieldType == 'grid') { if (!in_array($fieldName, $aFieldsNames)) { $aFields[] = array('name' => $fieldName, 'xmlform' => str_replace($proUid . '/', '', $arrayNode['xmlgrid'])); $aFieldsNames[] = $fieldName; } } } $oDataset->next(); } return $aFields; }
/** * Validate Report Table Grid * @var string $rep_tab_grid. Grid for report table * @var string $pro_uid. Uid for process * * @author Brayan Pereyra (Cochalo) <*****@*****.**> * @copyright Colosa - Bolivia * * @return string */ public function validateRepGrid($rep_tab_grid, $pro_uid) { $rep_tab_grid = trim($rep_tab_grid); if ($rep_tab_grid == '') { throw new \Exception("The property rep_tab_grid: '{$rep_tab_grid}' is incorrect."); } G::loadSystem('dynaformhandler'); $grids = array(); $namesGrid = array(); $aFieldsNames = array(); $oCriteria = new \Criteria('workflow'); $oCriteria->addSelectColumn(\DynaformPeer::DYN_FILENAME); $oCriteria->add(\DynaformPeer::PRO_UID, $pro_uid); $oCriteria->add(\DynaformPeer::DYN_TYPE, 'xmlform'); $oDataset = \DynaformPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($oDataset->next()) { $aRow = $oDataset->getRow(); $dynaformHandler = new \dynaformHandler(PATH_DYNAFORM . $aRow['DYN_FILENAME'] . '.xml'); $nodeFieldsList = $dynaformHandler->getFields(); foreach ($nodeFieldsList as $node) { $arrayNode = $dynaformHandler->getArray($node); $fieldName = $arrayNode['__nodeName__']; $fieldType = $arrayNode['type']; if ($fieldType == 'grid') { if (!in_array($fieldName, $aFieldsNames)) { $namesGrid[] = $fieldName; $grids[] = str_replace($pro_uid . '/', '', $arrayNode['xmlgrid']); } } } } $find = array_search($rep_tab_grid, $grids); if ($find === false) { throw new \Exception("The property rep_tab_grid: '{$rep_tab_grid}' is incorrect."); } else { $rep_tab_grid = $namesGrid[$find] . '-' . $rep_tab_grid; } return $rep_tab_grid; }