/** * Verify if a DynaForm is assigned some Steps * * @param string $dynaFormUid Unique id of DynaForm * @param string $processUid Unique id of Process * * return bool Return true if a DynaForm is assigned some Steps, false otherwise */ public function dynaFormDepends($dynUid, $proUid) { $oCriteria = new \Criteria(); $oCriteria->addSelectColumn(\DynaformPeer::DYN_TYPE); $oCriteria->add(\DynaformPeer::DYN_UID, $dynUid); $oCriteria->add(\DynaformPeer::PRO_UID, $proUid); $oDataset = \DynaformPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $dataDyna = $oDataset->getRow(); if ($dataDyna['DYN_TYPE'] == 'grid') { $formsDepend = array(); \G::LoadSystem('dynaformhandler'); $oCriteria = new \Criteria('workflow'); $oCriteria->addSelectColumn(\DynaformPeer::DYN_UID); $oCriteria->addSelectColumn(\ContentPeer::CON_VALUE); $oCriteria->add(\DynaformPeer::PRO_UID, $proUid); $oCriteria->add(\DynaformPeer::DYN_TYPE, "xmlform"); $oCriteria->add(\ContentPeer::CON_CATEGORY, 'DYN_TITLE'); $oCriteria->add(\ContentPeer::CON_LANG, SYS_LANG); $oCriteria->addJoin(\DynaformPeer::DYN_UID, \ContentPeer::CON_ID, \Criteria::INNER_JOIN); $oDataset = \DynaformPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($oDataset->next()) { $dataForms = $oDataset->getRow(); $dynHandler = new \dynaFormHandler(PATH_DYNAFORM . $proUid . PATH_SEP . $dataForms["DYN_UID"] . ".xml"); $dynFields = $dynHandler->getFields(); foreach ($dynFields as $field) { $sType = \Step::getAttribute($field, 'type'); if ($sType == 'grid') { $sxmlgrid = \Step::getAttribute($field, 'xmlgrid'); $aGridInfo = explode("/", $sxmlgrid); if ($aGridInfo[0] == $proUid && $aGridInfo[1] == $dynUid) { $formsDepend[] = $dataForms["CON_VALUE"]; } } } } if (!empty($formsDepend)) { $message = "You can not delete the grid '{$dynUid}', because it is in the "; $message .= count($formsDepend) == 1 ? 'form' : 'forms'; $message .= ': ' . implode(', ', $formsDepend); return $message; } } else { $flagDepend = false; $stepsDepends = \Step::verifyDynaformAssigStep($dynUid, $proUid); $messageSteps = '(0) Depends in steps'; if (!empty($stepsDepends)) { $flagDepend = true; $countSteps = count($stepsDepends); $messTemp = ''; foreach ($stepsDepends as $value) { $messTemp .= ", the task '" . $value['CON_VALUE'] . "' position " . $value['STEP_POSITION']; } $messageSteps = "({$countSteps}) Depends in steps in" . $messTemp; } $stepSupervisorsDepends = \StepSupervisor::verifyDynaformAssigStepSupervisor($dynUid, $proUid); $messageStepsSupervisors = '(0) Depends in steps supervisor'; if (!empty($stepSupervisorsDepends)) { $flagDepend = true; $countSteps = count($stepSupervisorsDepends); $messageStepsSupervisors = "({$countSteps}) Depends in steps supervisor"; } $objectPermissionDepends = \ObjectPermission::verifyDynaformAssigObjectPermission($dynUid, $proUid); $messageObjectPermission = '(0) Depends in permissions'; if (!empty($objectPermissionDepends)) { $flagDepend = true; $countSteps = count($objectPermissionDepends); $messageObjectPermission = "({$countSteps}) Depends in permissions"; } $caseTrackerDepends = \CaseTrackerObject::verifyDynaformAssigCaseTracker($dynUid, $proUid); $messageCaseTracker = '(0) Depends in case traker'; if (!empty($caseTrackerDepends)) { $flagDepend = true; $countSteps = count($caseTrackerDepends); $messageCaseTracker = "({$countSteps}) Depends in case traker"; } $dynaformDepends = \Dynaform::verifyDynaformAssignDynaform($dynUid, $proUid); $messageDynaform = '(0) Depends in case traker'; if (!empty($dynaformDepends)) { $flagDepend = true; $countSteps = count($dynaformDepends); $messageDynaform = "({$countSteps}) Depends in dynaform"; } if ($flagDepend) { $message = "You can not delete the dynaform '{$dynUid}', because it has the following dependencies: \n\n"; $message .= $messageSteps . ".\n" . $messageStepsSupervisors . ".\n"; $message .= $messageObjectPermission . ".\n" . $messageCaseTracker . "\n"; $message .= $messageDynaform; return $message; } return ''; } }