add(ProcessUserPeer::PU_UID, $aData['PU_UID'] ); $criteria->add(ProcessUserPeer::PRO_UID, $aData['PRO_UID'] ); $criteria->add(ProcessUserPeer::USR_UID, $aData['USR_UID'] ); $criteria->add(ProcessUserPeer::PU_TYPE, $aData['PU_TYPE'] ); $objects = ProcessUserPeer::doSelect($criteria, $oConnection); $oConnection->begin(); foreach ($objects as $row) { $this->remove($row->getTasUid(), $row->getUsrUid(), $row->getTuType(), $row->getTuRelation() ); } $oConnection->commit(); $oProcessUser = new ProcessUser(); $oProcessUser->fromArray($aData, BasePeer::TYPE_FIELDNAME); if ($oProcessUser->validate()) { $oConnection->begin(); $iResult = $oProcessUser->save(); $oConnection->commit(); return $iResult; } else { $sMessage = ''; $aValidationFailures = $oProcessUser->getValidationFailures(); foreach ($aValidationFailures as $oValidationFailure) { $sMessage .= $oValidationFailure->getMessage() . '
'; } throw(new Exception('The registry cannot be created!
'.$sMessage)); } } catch (Exception $oError) { $oConnection->rollback(); throw($oError); } } /** * Remove the application document registry * @param string $sPuUid * @param string $sProUid * @param string $sUserUid * @return string **/ public function remove($sPuUid) { $oConnection = Propel::getConnection(ProcessUserPeer::DATABASE_NAME); try { $oProcessUser = ProcessUserPeer::retrieveByPK($sPuUid); if (!is_null($oProcessUser)) { $oConnection->begin(); $iResult = $oProcessUser->delete(); $oConnection->commit(); return $iResult; } else { throw(new Exception('This row doesn\'t exist!')); } } catch (Exception $oError) { $oConnection->rollback(); throw($oError); } } public function Exists ($sUid) { try { $oObj = ProcessUserPeer::retrieveByPk($sUid); return (is_object($oObj) && get_class($oObj) == 'ProcessUser'); } catch (Exception $oError) { throw($oError); } } public function validateUserAccess($proUid, $usrUid) { try { $oCriteria = new Criteria(); $oCriteria->add(ProcessUserPeer::PRO_UID, $proUid); $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR'); $oCriteria->add(ProcessUserPeer::USR_UID, $usrUid); $dataset = ProcessUserPeer::doSelectRS($oCriteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); //If the user is in Assigned supervisors list if ($dataset->next()) { return true; } else { //If the user is in a group in Assigned supervisors list $oCriteria = new Criteria(); $oCriteria->add(ProcessUserPeer::PRO_UID, $proUid); $oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR'); $dataset = ProcessUserPeer::doSelectRS($oCriteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oGroups = new Groups(); $aGroups = $oGroups->getActiveGroupsForAnUser($usrUid); while ($dataset->next()) { $row = $dataset->getRow(); $groupUid = $row['USR_UID']; if (in_array($groupUid, $aGroups)) { return true; } } return false; } } catch (Exception $oError) { throw ($oError); } } }