Exemplo n.º 1
0
    /**
     * Get all Message-Applications
     *
     * @param array  $arrayFilterData Data of the filters
     * @param string $sortField       Field name to sort
     * @param string $sortDir         Direction of sorting (ASC, DESC)
     * @param int    $start           Start
     * @param int    $limit           Limit
     *
     * return array Return an array with all Message-Applications
     */
    public function getMessageApplications($arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
    {
        try {
            $arrayMessageApplication = array();

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

            $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);

            //Get data
            if (!is_null($limit) && $limit . "" == "0") {
                return $arrayMessageApplication;
            }

            //SQL
            $criteria = $this->getMessageApplicationCriteria();

            $criteria->addSelectColumn(\BpmnEventPeer::EVN_UID);
            $criteria->addSelectColumn(\BpmnEventPeer::EVN_TYPE);
            $criteria->addSelectColumn(\BpmnEventPeer::EVN_MARKER);
            $criteria->addSelectColumn(\MessageEventDefinitionPeer::MSGED_USR_UID);
            $criteria->addSelectColumn(\MessageEventDefinitionPeer::MSGED_VARIABLES);
            $criteria->addSelectColumn(\MessageEventDefinitionPeer::MSGED_CORRELATION);
            $criteria->addSelectColumn(\ElementTaskRelationPeer::TAS_UID);

            $arrayEventType   = array("START", "INTERMEDIATE");
            $arrayEventMarker = array("MESSAGECATCH");

            $criteria->addJoin(\MessageApplicationPeer::EVN_UID_CATCH, \BpmnEventPeer::EVN_UID, \Criteria::INNER_JOIN);
            $criteria->add(\BpmnEventPeer::EVN_TYPE, $arrayEventType, \Criteria::IN);
            $criteria->add(\BpmnEventPeer::EVN_MARKER, $arrayEventMarker, \Criteria::IN);

            $criteria->addJoin(\MessageApplicationPeer::EVN_UID_CATCH, \MessageEventDefinitionPeer::EVN_UID, \Criteria::INNER_JOIN);

            $criteria->addJoin(\MessageApplicationPeer::EVN_UID_CATCH, \ElementTaskRelationPeer::ELEMENT_UID, \Criteria::INNER_JOIN);
            $criteria->add(\ElementTaskRelationPeer::ELEMENT_TYPE, "bpmnEvent", \Criteria::EQUAL);

            if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["messageApplicationStatus"]) && trim($arrayFilterData["messageApplicationStatus"]) != "") {
                $criteria->add(\MessageApplicationPeer::MSGAPP_STATUS, $arrayFilterData["messageApplicationStatus"], \Criteria::EQUAL);
            }

            //Number records total
            $criteriaCount = clone $criteria;

            $criteriaCount->clearSelectColumns();
            $criteriaCount->addSelectColumn("COUNT(" . \MessageApplicationPeer::MSGAPP_UID . ") AS NUM_REC");

            $rsCriteriaCount = \MessageApplicationPeer::doSelectRS($criteriaCount);
            $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);

            $rsCriteriaCount->next();
            $row = $rsCriteriaCount->getRow();

            $numRecTotal = $row["NUM_REC"];

            //SQL
            if (!is_null($sortField) && trim($sortField) != "") {
                $sortField = strtoupper($sortField);

                if (in_array($sortField, array("MSGAPP_THROW_DATE", "MSGAPP_CATCH_DATE", "MSGAPP_STATUS"))) {
                    $sortField = \MessageApplicationPeer::TABLE_NAME . "." . $sortField;
                } else {
                    $sortField = \MessageApplicationPeer::MSGAPP_THROW_DATE;
                }
            } else {
                $sortField = \MessageApplicationPeer::MSGAPP_THROW_DATE;
            }

            if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
                $criteria->addDescendingOrderByColumn($sortField);
            } else {
                $criteria->addAscendingOrderByColumn($sortField);
            }

            if (!is_null($start)) {
                $criteria->setOffset((int)($start));
            }

            if (!is_null($limit)) {
                $criteria->setLimit((int)($limit));
            }

            $rsCriteria = \MessageApplicationPeer::doSelectRS($criteria);
            $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);

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

                $row["MSGAPP_VARIABLES"] = unserialize($row["MSGAPP_VARIABLES"]);
                $row["MSGED_VARIABLES"]  = unserialize($row["MSGED_VARIABLES"]);

                $arrayMessageApplication[] = $row;
            }

            //Return
            return array(
                "total"  => $numRecTotal,
                "start"  => (int)((!is_null($start))? $start : 0),
                "limit"  => (int)((!is_null($limit))? $limit : 0),
                "filter" => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["messageApplicationStatus"]))? $arrayFilterData["messageApplicationStatus"] : "",
                "data"   => $arrayMessageApplication
            );
        } catch (\Exception $e) {
            throw $e;
        }
    }
Exemplo n.º 2
0
 /**
  * Return an assignee list of an activity
  *
  * @param string $processUid
  * @param string $taskUid
  * @param string $option
  * @param int    $taskUserType
  * @param array  $arrayFilterData
  * @param int    $start
  * @param int    $limit
  * @param string $type
  *
  * return array
  */
 public function getTaskAssignees($processUid, $taskUid, $option, $taskUserType, $arrayFilterData = null, $start = null, $limit = null, $type = null)
 {
     try {
         $arrayAssignee = array();
         $numRecTotal = 0;
         $startbk = $start;
         $limitbk = $limit;
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), array("start" => "start", "limit" => "limit"));
         $arrayFieldDefinition = array("OPTION" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("ASSIGNEE", "AVAILABLE"), "fieldNameAux" => "option"), "TASK_USER_TYPE" => array("type" => "int", "required" => true, "empty" => false, "defaultValues" => array(1, 2), "fieldNameAux" => "taskUserType"));
         $process->throwExceptionIfDataNotMetFieldDefinition(array("OPTION" => $option, "TASK_USER_TYPE" => $taskUserType), $arrayFieldDefinition, array("option" => "option", "taskUserType" => "taskUserType"), false);
         //Set variables
         $filterName = "filter";
         if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"])) {
             $arrayAux = array("" => "filter", "LEFT" => "lfilter", "RIGHT" => "rfilter");
             $filterName = $arrayAux[isset($arrayFilterData["filterOption"]) ? $arrayFilterData["filterOption"] : ""];
         }
         //Get data
         if (!is_null($limit) && $limit . "" == "0") {
             //Return
             return array("total" => $numRecTotal, "start" => (int) (!is_null($startbk) ? $startbk : 0), "limit" => (int) (!is_null($limitbk) ? $limitbk : 0), $filterName => !is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) ? $arrayFilterData["filter"] : "", "data" => $arrayAssignee);
         }
         //Verify data
         $process->throwExceptionIfNotExistsProcess($processUid, "prj_uid");
         $this->throwExceptionIfNotExistsTask($processUid, $taskUid, "act_uid");
         //Set variables
         $numRecTotalGroup = 0;
         $numRecTotalUser = 0;
         switch ($option) {
             case "ASSIGNEE":
                 break;
             case "AVAILABLE":
                 $task = new \Tasks();
                 $arrayGroupUid = array();
                 foreach ($task->getGroupsOfTask($taskUid, $taskUserType) as $value) {
                     $arrayGroupUid[] = $value['GRP_UID'];
                 }
                 $arrayUserUid = array();
                 foreach ($task->getUsersOfTask($taskUid, $taskUserType) as $value) {
                     $arrayUserUid[] = $value['USR_UID'];
                 }
                 break;
         }
         //Groups
         //Query
         if (empty($type) || $type == "group") {
             $criteriaGroup = new \Criteria("workflow");
             $criteriaGroup->addSelectColumn(\GroupwfPeer::GRP_UID);
             $criteriaGroup->addAsColumn("GRP_TITLE", \ContentPeer::CON_VALUE);
             switch ($option) {
                 case "ASSIGNEE":
                     $criteriaGroup->addJoin(\TaskUserPeer::USR_UID, \GroupwfPeer::GRP_UID, \Criteria::LEFT_JOIN);
                     $criteriaGroup->add(\TaskUserPeer::TAS_UID, $taskUid, \Criteria::EQUAL);
                     $criteriaGroup->add(\TaskUserPeer::TU_TYPE, $taskUserType, \Criteria::EQUAL);
                     $criteriaGroup->add(\TaskUserPeer::TU_RELATION, 2, \Criteria::EQUAL);
                     break;
                 case "AVAILABLE":
                     $criteriaGroup->add(\GroupwfPeer::GRP_UID, $arrayGroupUid, \Criteria::NOT_IN);
                     break;
             }
             $criteriaGroup->addJoin(\GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN);
             $criteriaGroup->add(\ContentPeer::CON_CATEGORY, "GRP_TITLE", \Criteria::EQUAL);
             $criteriaGroup->add(\ContentPeer::CON_LANG, SYS_LANG, \Criteria::EQUAL);
             if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
                 $arraySearch = array("" => "%" . $arrayFilterData["filter"] . "%", "LEFT" => $arrayFilterData["filter"] . "%", "RIGHT" => "%" . $arrayFilterData["filter"]);
                 $search = $arraySearch[isset($arrayFilterData["filterOption"]) ? $arrayFilterData["filterOption"] : ""];
                 $criteriaGroup->add(\ContentPeer::CON_VALUE, $search, \Criteria::LIKE);
             }
             $criteriaGroup->add(\GroupwfPeer::GRP_STATUS, "ACTIVE", \Criteria::EQUAL);
             //Number records total
             $criteriaCount = clone $criteriaGroup;
             $criteriaCount->clearSelectColumns();
             $criteriaCount->addSelectColumn("COUNT(" . \GroupwfPeer::GRP_UID . ") AS NUM_REC");
             switch ($option) {
                 case "ASSIGNEE":
                     $rsCriteriaCount = \TaskUserPeer::doSelectRS($criteriaCount);
                     break;
                 case "AVAILABLE":
                     $rsCriteriaCount = \GroupwfPeer::doSelectRS($criteriaCount);
                     break;
             }
             $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
             $result = $rsCriteriaCount->next();
             $row = $rsCriteriaCount->getRow();
             $numRecTotalGroup = (int) $row["NUM_REC"];
             $numRecTotal = $numRecTotal + $numRecTotalGroup;
         }
         //Users
         //Query
         if (empty($type) || $type == "user") {
             $criteriaUser = new \Criteria("workflow");
             $criteriaUser->addSelectColumn(\UsersPeer::USR_UID);
             $criteriaUser->addSelectColumn(\UsersPeer::USR_USERNAME);
             $criteriaUser->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
             $criteriaUser->addSelectColumn(\UsersPeer::USR_LASTNAME);
             switch ($option) {
                 case "ASSIGNEE":
                     $criteriaUser->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
                     $criteriaUser->add(\TaskUserPeer::TAS_UID, $taskUid, \Criteria::EQUAL);
                     $criteriaUser->add(\TaskUserPeer::TU_TYPE, $taskUserType, \Criteria::EQUAL);
                     $criteriaUser->add(\TaskUserPeer::TU_RELATION, 1, \Criteria::EQUAL);
                     break;
                 case "AVAILABLE":
                     $criteriaUser->add(\UsersPeer::USR_UID, $arrayUserUid, \Criteria::NOT_IN);
                     break;
             }
             if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
                 $arraySearch = array("" => "%" . $arrayFilterData["filter"] . "%", "LEFT" => $arrayFilterData["filter"] . "%", "RIGHT" => "%" . $arrayFilterData["filter"]);
                 $search = $arraySearch[isset($arrayFilterData["filterOption"]) ? $arrayFilterData["filterOption"] : ""];
                 $criteriaUser->add($criteriaUser->getNewCriterion(\UsersPeer::USR_USERNAME, $search, \Criteria::LIKE)->addOr($criteriaUser->getNewCriterion(\UsersPeer::USR_FIRSTNAME, $search, \Criteria::LIKE))->addOr($criteriaUser->getNewCriterion(\UsersPeer::USR_LASTNAME, $search, \Criteria::LIKE)));
             }
             $criteriaUser->add(\UsersPeer::USR_STATUS, "ACTIVE", \Criteria::EQUAL);
             //Number records total
             $criteriaCount = clone $criteriaUser;
             $criteriaCount->clearSelectColumns();
             $criteriaCount->addSelectColumn("COUNT(" . \UsersPeer::USR_UID . ") AS NUM_REC");
             switch ($option) {
                 case "ASSIGNEE":
                     $rsCriteriaCount = \TaskUserPeer::doSelectRS($criteriaCount);
                     break;
                 case "AVAILABLE":
                     $rsCriteriaCount = \UsersPeer::doSelectRS($criteriaCount);
                     break;
             }
             $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
             $result = $rsCriteriaCount->next();
             $row = $rsCriteriaCount->getRow();
             $numRecTotalUser = (int) $row["NUM_REC"];
             $numRecTotal = $numRecTotal + $numRecTotalUser;
         }
         //Groups
         //Query
         if (empty($type) || $type == "group") {
             $criteriaGroup->addAscendingOrderByColumn("GRP_TITLE");
             if (!is_null($start)) {
                 $criteriaGroup->setOffset((int) $start);
             }
             if (!is_null($limit)) {
                 $criteriaGroup->setLimit((int) $limit);
             }
             switch ($option) {
                 case "ASSIGNEE":
                     $rsCriteriaGroup = \TaskUserPeer::doSelectRS($criteriaGroup);
                     break;
                 case "AVAILABLE":
                     $rsCriteriaGroup = \GroupwfPeer::doSelectRS($criteriaGroup);
                     break;
             }
             $rsCriteriaGroup->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
             $numRecGroup = 0;
             while ($rsCriteriaGroup->next()) {
                 $row = $rsCriteriaGroup->getRow();
                 $criteria2 = new \Criteria("workflow");
                 $criteria2->addSelectColumn("COUNT(" . \GroupUserPeer::GRP_UID . ") AS NUM_MEM");
                 $criteria2->add(\GroupUserPeer::GRP_UID, $row["GRP_UID"], \Criteria::EQUAL);
                 $rsCriteria2 = \GroupUserPeer::doSelectRS($criteria2);
                 $rsCriteria2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                 $result = $rsCriteria2->next();
                 $row2 = $rsCriteria2->getRow();
                 $row["GRP_TITLE"] = $row["GRP_TITLE"] . " (" . $row2["NUM_MEM"] . " " . \G::LoadTranslation((int) $row2["NUM_MEM"] == 1 ? "ID_USER" : "ID_USERS") . ")";
                 $arrayAssignee[] = $this->getTaskAssigneeDataFromRecord(array($row["GRP_UID"], $row["GRP_TITLE"], "", $row["GRP_TITLE"], "group"), $taskUserType);
                 $numRecGroup++;
             }
         }
         //Users
         //Query
         if (empty($type) || $type == "user") {
             $flagUser = true;
             if ($numRecTotalGroup > 0) {
                 if ($numRecGroup > 0) {
                     if (!is_null($limit)) {
                         if ($numRecGroup < (int) $limit) {
                             $start = 0;
                             $limit = $limit - $numRecGroup;
                         } else {
                             $flagUser = false;
                         }
                     } else {
                         $start = 0;
                     }
                 } else {
                     $start = (int) $start - $numRecTotalGroup;
                 }
             }
             if ($flagUser) {
                 //Users
                 //Query
                 $criteriaUser->addAscendingOrderByColumn(\UsersPeer::USR_FIRSTNAME);
                 if (!is_null($start)) {
                     $criteriaUser->setOffset((int) $start);
                 }
                 if (!is_null($limit)) {
                     $criteriaUser->setLimit((int) $limit);
                 }
                 switch ($option) {
                     case "ASSIGNEE":
                         $rsCriteriaUser = \TaskUserPeer::doSelectRS($criteriaUser);
                         break;
                     case "AVAILABLE":
                         $rsCriteriaUser = \UsersPeer::doSelectRS($criteriaUser);
                         break;
                 }
                 $rsCriteriaUser->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                 while ($rsCriteriaUser->next()) {
                     $row = $rsCriteriaUser->getRow();
                     $arrayAssignee[] = $this->getTaskAssigneeDataFromRecord(array($row["USR_UID"], $row["USR_FIRSTNAME"], $row["USR_LASTNAME"], $row["USR_USERNAME"], "user"), $taskUserType);
                 }
             }
         }
         //Return
         return array("total" => $numRecTotal, "start" => (int) (!is_null($startbk) ? $startbk : 0), "limit" => (int) (!is_null($limitbk) ? $limitbk : 0), $filterName => !is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) ? $arrayFilterData["filter"] : "", "data" => $arrayAssignee);
     } catch (\Exception $e) {
         throw $e;
     }
 }
Exemplo n.º 3
0
 /**
  * Get all Message-Type-Variable
  *
  * @param string $messageTypeUid  {@min 32}{@max 32}
  * @param array  $arrayFilterData Data of the filters
  * @param string $sortField       Field name to sort
  * @param string $sortDir         Direction of sorting (ASC, DESC)
  * @param int    $start           Start
  * @param int    $limit           Limit
  *
  * return array Return an array with all Message-Type-Variable
  */
 public function getMessageTypeVariables($messageTypeUid, $arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
 {
     try {
         $arrayMessage = array();
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $messageType = new \ProcessMaker\BusinessModel\MessageType();
         $messageType->throwExceptionIfNotExistsMessageType($messageTypeUid, $this->arrayFieldNameForException["messageTypeUid"]);
         $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
         //Get data
         if (!is_null($limit) && $limit . "" == "0") {
             return $arrayMessage;
         }
         //SQL
         $criteria = $this->getMessageTypeVariableCriteria();
         $criteria->add(\MessageTypeVariablePeer::MSGT_UID, $messageTypeUid, \Criteria::EQUAL);
         if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
             $criteria->add($criteria->getNewCriterion(\MessageTypeVariablePeer::MSGTV_NAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE));
         }
         //Number records total
         $criteriaCount = clone $criteria;
         $criteriaCount->clearSelectColumns();
         $criteriaCount->addSelectColumn("COUNT(" . \MessageTypeVariablePeer::MSGTV_UID . ") AS NUM_REC");
         $rsCriteriaCount = \MessageTypeVariablePeer::doSelectRS($criteriaCount);
         $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         $rsCriteriaCount->next();
         $row = $rsCriteriaCount->getRow();
         $numRecTotal = $row["NUM_REC"];
         //SQL
         if (!is_null($sortField) && trim($sortField) != "") {
             $sortField = strtoupper($sortField);
             if (in_array($sortField, array("MSGTV_NAME"))) {
                 $sortField = \MessageTypeVariablePeer::TABLE_NAME . "." . $sortField;
             } else {
                 $sortField = \MessageTypeVariablePeer::MSGTV_NAME;
             }
         } else {
             $sortField = \MessageTypeVariablePeer::MSGTV_NAME;
         }
         if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
             $criteria->addDescendingOrderByColumn($sortField);
         } else {
             $criteria->addAscendingOrderByColumn($sortField);
         }
         if (!is_null($start)) {
             $criteria->setOffset((int) $start);
         }
         if (!is_null($limit)) {
             $criteria->setLimit((int) $limit);
         }
         $rsCriteria = \MessageTypeVariablePeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         while ($rsCriteria->next()) {
             $row = $rsCriteria->getRow();
             $arrayMessage[] = $this->getMessageTypeVariableDataFromRecord($row);
         }
         //Return
         return array("total" => $numRecTotal, "start" => (int) (!is_null($start) ? $start : 0), "limit" => (int) (!is_null($limit) ? $limit : 0), "filter" => !is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) ? $arrayFilterData["filter"] : "", "data" => $arrayMessage);
     } catch (\Exception $e) {
         throw $e;
     }
 }
Exemplo n.º 4
0
 /**
  * Get all Users of a Group
  *
  * @param string $option          Option (USERS, AVAILABLE-USERS)
  * @param string $groupUid        Unique id of Group
  * @param array  $arrayFilterData Data of the filters
  * @param string $sortField       Field name to sort
  * @param string $sortDir         Direction of sorting (ASC, DESC)
  * @param int    $start           Start
  * @param int    $limit           Limit
  *
  * return array Return an array with all Users of a Group
  */
 public function getUsers($option, $groupUid, $arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
 {
     try {
         $arrayUser = array();
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $this->throwExceptionIfNotExistsGroup($groupUid, $this->arrayFieldNameForException["groupUid"]);
         $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
         //Get data
         if (!is_null($limit) && $limit . "" == "0") {
             return $arrayUser;
         }
         //SQL
         switch ($option) {
             case "SUPERVISOR":
                 $flagPermission = true;
                 //Criteria for Supervisor
                 $criteria = $this->getUserCriteria($groupUid, $arrayFilterData);
                 break;
             case "USERS":
                 //Criteria
                 $criteria = $this->getUserCriteria($groupUid, $arrayFilterData);
                 break;
             case "AVAILABLE-USERS":
                 //Get Uids
                 $arrayUid = array();
                 $criteria = $this->getUserCriteria($groupUid);
                 $rsCriteria = \UsersPeer::doSelectRS($criteria);
                 $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                 while ($rsCriteria->next()) {
                     $row = $rsCriteria->getRow();
                     $arrayUid[] = $row["USR_UID"];
                 }
                 //Criteria
                 $criteria = $this->getUserCriteria("", $arrayFilterData, $arrayUid);
                 break;
         }
         //SQL
         if (!is_null($sortField) && trim($sortField) != "") {
             $sortField = strtoupper($sortField);
             if (in_array($sortField, array("USR_UID", "USR_USERNAME", "USR_FIRSTNAME", "USR_LASTNAME", "USR_EMAIL", "USR_STATUS"))) {
                 $sortField = \UsersPeer::TABLE_NAME . "." . $sortField;
             } else {
                 $sortField = \UsersPeer::USR_USERNAME;
             }
         } else {
             $sortField = \UsersPeer::USR_USERNAME;
         }
         if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
             $criteria->addDescendingOrderByColumn($sortField);
         } else {
             $criteria->addAscendingOrderByColumn($sortField);
         }
         if (!is_null($start)) {
             $criteria->setOffset((int) $start);
         }
         if (!is_null($limit)) {
             $criteria->setLimit((int) $limit);
         }
         $rsCriteria = \UsersPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         if (isset($flagPermission) && $flagPermission) {
             \G::LoadSystem('rbac');
             while ($rsCriteria->next()) {
                 $row = $rsCriteria->getRow();
                 $aPermissions = $this->loadUserRolePermission("PROCESSMAKER", $row['USR_UID']);
                 $bInclude = false;
                 foreach ($aPermissions as $aPermission) {
                     if ($aPermission['PER_CODE'] == 'PM_SUPERVISOR') {
                         $bInclude = true;
                     }
                 }
                 if ($bInclude) {
                     $arrayUser[] = $this->getUserDataFromRecord($row);
                 }
             }
         } else {
             while ($rsCriteria->next()) {
                 $row = $rsCriteria->getRow();
                 $arrayUser[] = $this->getUserDataFromRecord($row);
             }
         }
         //Return
         return $arrayUser;
     } catch (\Exception $e) {
         throw $e;
     }
 }
Exemplo n.º 5
0
 /**
  * Get all Roles
  *
  * @param array  $arrayFilterData Data of the filters
  * @param string $sortField       Field name to sort
  * @param string $sortDir         Direction of sorting (ASC, DESC)
  * @param int    $start           Start
  * @param int    $limit           Limit
  *
  * return array Return an array with all Roles
  */
 public function getRoles(array $arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
 {
     try {
         $arrayRole = array();
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
         //Get data
         if (!is_null($limit) && $limit . "" == "0") {
             return $arrayRole;
         }
         //Set variables
         $content = new \Content();
         $role = new \Roles();
         $arrayContentByRole = $content->getAllContentsByRole();
         //SQL
         $criteria = $this->getRoleCriteria();
         $criteria->addAsColumn("ROL_TOTAL_USERS", "(SELECT COUNT(" . \UsersRolesPeer::ROL_UID . ") FROM " . \UsersRolesPeer::TABLE_NAME . " WHERE " . \UsersRolesPeer::ROL_UID . " = " . \RolesPeer::ROL_UID . ")");
         if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
             $criteria->add(\RolesPeer::ROL_CODE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE);
         }
         //SQL
         if (!is_null($sortField) && trim($sortField) != "") {
             $sortField = strtoupper($sortField);
             if (in_array($sortField, array("ROL_UID", "ROL_PARENT", "ROL_STATUS", "ROL_SYSTEM", "ROL_CREATE_DATE", "ROL_UPDATE_DATE"))) {
                 $sortField = \RolesPeer::TABLE_NAME . "." . $sortField;
             } else {
                 $sortField = \RolesPeer::ROL_CODE;
             }
         } else {
             $sortField = \RolesPeer::ROL_CODE;
         }
         if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
             $criteria->addDescendingOrderByColumn($sortField);
         } else {
             $criteria->addAscendingOrderByColumn($sortField);
         }
         if (!is_null($start)) {
             $criteria->setOffset((int) $start);
         }
         if (!is_null($limit)) {
             $criteria->setLimit((int) $limit);
         }
         $rsCriteria = \RolesPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         while ($rsCriteria->next()) {
             $row = $rsCriteria->getRow();
             $roleUid = $row["ROL_UID"];
             if (isset($arrayContentByRole[$roleUid])) {
                 $roleName = $arrayContentByRole[$roleUid];
             } else {
                 $rowAux = $role->load($roleUid);
                 $roleName = $rowAux["ROL_NAME"];
             }
             $row["ROL_NAME"] = $roleName;
             $arrayRole[] = $this->getRoleDataFromRecord($row);
         }
         //Return
         return $arrayRole;
     } catch (\Exception $e) {
         throw $e;
     }
 }
Exemplo n.º 6
0
    /**

     * Get all Users

     *

     * @param array  $arrayFilterData Data of the filters

     * @param string $sortField       Field name to sort

     * @param string $sortDir         Direction of sorting (ASC, DESC)

     * @param int    $start           Start

     * @param int    $limit           Limit

     *

     * return array Return an array with all Users

     */

    public function getUsers($arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)

    {

        try {

            $arrayUser = array();



            $numRecTotal = 0;



            //Verify data

            $process = new \ProcessMaker\BusinessModel\Process();



            $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), array("start" => "start", "limit" => "limit"));



            //Set variables

            $filterName = "filter";



            if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"])) {

                $arrayAux = array(

                    ""      => "filter",

                    "LEFT"  => "lfilter",

                    "RIGHT" => "rfilter"

                );



                $filterName = $arrayAux[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""];

            }



            //Get data

            if (!is_null($limit) && $limit . "" == "0") {

                //Return

                return array(

                    "total"     => $numRecTotal,

                    "start"     => (int)((!is_null($start))? $start : 0),

                    "limit"     => (int)((!is_null($limit))? $limit : 0),

                    $filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "",

                    "data"      => $arrayUser

                );

            }



            //Query

            $criteria = $this->getUserCriteria();



            if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {

                $arraySearch = array(

                    ""      => "%" . $arrayFilterData["filter"] . "%",

                    "LEFT"  => $arrayFilterData["filter"] . "%",

                    "RIGHT" => "%" . $arrayFilterData["filter"]

                );



                $search = $arraySearch[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""];



                $criteria->add(

                    $criteria->getNewCriterion(\UsersPeer::USR_USERNAME,  $search, \Criteria::LIKE)->addOr(

                    $criteria->getNewCriterion(\UsersPeer::USR_FIRSTNAME, $search, \Criteria::LIKE))->addOr(

                    $criteria->getNewCriterion(\UsersPeer::USR_LASTNAME,  $search, \Criteria::LIKE))

                );

            }



            $criteria->add(\UsersPeer::USR_STATUS, "ACTIVE", \Criteria::EQUAL);



            //Number records total

            $criteriaCount = clone $criteria;



            $criteriaCount->clearSelectColumns();

            $criteriaCount->addSelectColumn("COUNT(" . \UsersPeer::USR_UID . ") AS NUM_REC");



            $rsCriteriaCount = \UsersPeer::doSelectRS($criteriaCount);

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



            $result = $rsCriteriaCount->next();

            $row = $rsCriteriaCount->getRow();



            $numRecTotal = (int)($row["NUM_REC"]);



            //Query

            if (!is_null($sortField) && trim($sortField) != "") {

                $sortField = strtoupper($sortField);



                if (in_array(\UsersPeer::TABLE_NAME . "." . $sortField, $criteria->getSelectColumns())) {

                    $sortField = \UsersPeer::TABLE_NAME . "." . $sortField;

                } else {

                    $sortField = \UsersPeer::USR_FIRSTNAME;

                }

            } else {

                $sortField = \UsersPeer::USR_FIRSTNAME;

            }



            if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {

                $criteria->addDescendingOrderByColumn($sortField);

            } else {

                $criteria->addAscendingOrderByColumn($sortField);

            }



            if (!is_null($start)) {

                $criteria->setOffset((int)($start));

            }



            if (!is_null($limit)) {

                $criteria->setLimit((int)($limit));

            }



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

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



            while ($rsCriteria->next()) {

                $row = $rsCriteria->getRow();



                $arrayUser[] = $this->getUserDataFromRecord($row);

            }



            //Return

            return array(

                "total"     => $numRecTotal,

                "start"     => (int)((!is_null($start))? $start : 0),

                "limit"     => (int)((!is_null($limit))? $limit : 0),

                $filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "",

                "data"      => $arrayUser

            );

        } catch (\Exception $e) {

            throw $e;

        }

    }
Exemplo n.º 7
0
 /**
  * Get all Categories
  *
  * @param array  $arrayFilterData Data of the filters
  * @param string $sortField       Field name to sort
  * @param string $sortDir         Direction of sorting (ASC, DESC)
  * @param int    $start           Start
  * @param int    $limit           Limit
  *
  * return array Return an array with all Categories
  */
 public function getCategories(array $arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
 {
     try {
         $arrayCategory = array();
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
         //Get data
         if (!is_null($limit) && $limit . "" == "0") {
             return $arrayCategory;
         }
         //Set variables
         $process = new \Process();
         $arrayTotalProcessesByCategory = $process->getAllProcessesByCategory();
         //SQL
         $criteria = $this->getCategoryCriteria();
         if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
             $criteria->add(\ProcessCategoryPeer::CATEGORY_NAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE);
         }
         //SQL
         if (!is_null($sortField) && trim($sortField) != "") {
             $sortField = strtoupper($sortField);
             $sortField = isset($this->arrayFieldDefinition[$sortField]["fieldName"]) ? $this->arrayFieldDefinition[$sortField]["fieldName"] : $sortField;
             if (in_array($sortField, array("CATEGORY_UID", "CATEGORY_PARENT", "CATEGORY_NAME", "CATEGORY_ICON"))) {
                 $sortField = \ProcessCategoryPeer::TABLE_NAME . "." . $sortField;
             } else {
                 $sortField = \ProcessCategoryPeer::CATEGORY_NAME;
             }
         } else {
             $sortField = \ProcessCategoryPeer::CATEGORY_NAME;
         }
         if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
             $criteria->addDescendingOrderByColumn($sortField);
         } else {
             $criteria->addAscendingOrderByColumn($sortField);
         }
         if (!is_null($start)) {
             $criteria->setOffset((int) $start);
         }
         if (!is_null($limit)) {
             $criteria->setLimit((int) $limit);
         }
         $rsCriteria = \ProcessCategoryPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         while ($rsCriteria->next()) {
             $row = $rsCriteria->getRow();
             $row["CATEGORY_TOTAL_PROCESSES"] = isset($arrayTotalProcessesByCategory[$row["CATEGORY_UID"]]) ? (int) $arrayTotalProcessesByCategory[$row["CATEGORY_UID"]] : 0;
             $arrayCategory[] = $this->getCategoryDataFromRecord($row);
         }
         //Return
         return $arrayCategory;
     } catch (\Exception $e) {
         throw $e;
     }
 }
Exemplo n.º 8
0
 /**
  * Get all Email Servers
  *
  * @param array  $arrayFilterData Data of the filters
  * @param string $sortField       Field name to sort
  * @param string $sortDir         Direction of sorting (ASC, DESC)
  * @param int    $start           Start
  * @param int    $limit           Limit
  *
  * return array Return an array with all Email Servers
  */
 public function getEmailServers($arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
 {
     try {
         $arrayEmailServer = array();
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
         //Get data
         if (!is_null($limit) && $limit . "" == "0") {
             return $arrayEmailServer;
         }
         //SQL
         $criteria = $this->getEmailServerCriteria();
         if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
             $criteria->add($criteria->getNewCriterion(\EmailServerPeer::MESS_ENGINE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr($criteria->getNewCriterion(\EmailServerPeer::MESS_SERVER, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr($criteria->getNewCriterion(\EmailServerPeer::MESS_ACCOUNT, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr($criteria->getNewCriterion(\EmailServerPeer::MESS_FROM_NAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE))->addOr($criteria->getNewCriterion(\EmailServerPeer::SMTPSECURE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)));
         }
         //Number records total
         $criteriaCount = clone $criteria;
         $criteriaCount->clearSelectColumns();
         $criteriaCount->addSelectColumn("COUNT(" . \EmailServerPeer::MESS_UID . ") AS NUM_REC");
         $rsCriteriaCount = \EmailServerPeer::doSelectRS($criteriaCount);
         $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         $rsCriteriaCount->next();
         $row = $rsCriteriaCount->getRow();
         $numRecTotal = $row["NUM_REC"];
         //SQL
         if (!is_null($sortField) && trim($sortField) != "") {
             $sortField = strtoupper($sortField);
             if (in_array($sortField, array("MESS_ENGINE", "MESS_SERVER", "MESS_ACCOUNT", "MESS_FROM_NAME", "SMTPSECURE"))) {
                 $sortField = \EmailServerPeer::TABLE_NAME . "." . $sortField;
             } else {
                 $sortField = \EmailServerPeer::MESS_ENGINE;
             }
         } else {
             $sortField = \EmailServerPeer::MESS_ENGINE;
         }
         if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
             $criteria->addDescendingOrderByColumn($sortField);
         } else {
             $criteria->addAscendingOrderByColumn($sortField);
         }
         if (!is_null($start)) {
             $criteria->setOffset((int) $start);
         }
         if (!is_null($limit)) {
             $criteria->setLimit((int) $limit);
         }
         $rsCriteria = \EmailServerPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         while ($rsCriteria->next()) {
             $row = $rsCriteria->getRow();
             $passwd = $row["MESS_PASSWORD"];
             $passwdDec = \G::decrypt($passwd, "EMAILENCRYPT");
             $auxPass = explode("hash:", $passwdDec);
             if (count($auxPass) > 1) {
                 if (count($auxPass) == 2) {
                     $passwd = $auxPass[1];
                 } else {
                     array_shift($auxPass);
                     $passwd = implode("", $auxPass);
                 }
             }
             $row["MESS_PASSWORD"] = $passwd;
             $arrayEmailServer[] = $this->getEmailServerDataFromRecord($row);
         }
         //Return
         return array("total" => $numRecTotal, "start" => (int) (!is_null($start) ? $start : 0), "limit" => (int) (!is_null($limit) ? $limit : 0), "filter" => !is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) ? $arrayFilterData["filter"] : "", "data" => $arrayEmailServer);
     } catch (\Exception $e) {
         throw $e;
     }
 }
Exemplo n.º 9
0
 /**
  * Get Supervisors
  *
  * @param string $processUid
  * @param string $option
  * @param array  $arrayFilterData
  * @param int    $start
  * @param int    $limit
  * @param string $type
  *
  * @return array
  */
 public function getProcessSupervisors($processUid, $option, $arrayFilterData = null, $start = null, $limit = null, $type = null)
 {
     try {
         require_once PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "UsersRoles.php";
         require_once PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "UsersRolesPeer.php";
         require_once PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Roles.php";
         require_once PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RolesPeer.php";
         require_once PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RolesPermissions.php";
         require_once PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RolesPermissionsPeer.php";
         require_once PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Permissions.php";
         require_once PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "PermissionsPeer.php";
         $arraySupervisor = array();
         $numRecTotal = 0;
         $startbk = $start;
         $limitbk = $limit;
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), array("start" => "start", "limit" => "limit"));
         //Set variables
         $filterName = "filter";
         if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"])) {
             $arrayAux = array("" => "filter", "LEFT" => "lfilter", "RIGHT" => "rfilter");
             $filterName = $arrayAux[isset($arrayFilterData["filterOption"]) ? $arrayFilterData["filterOption"] : ""];
         }
         //Get data
         if (!is_null($limit) && $limit . "" == "0") {
             //Return
             return array("total" => $numRecTotal, "start" => (int) (!is_null($startbk) ? $startbk : 0), "limit" => (int) (!is_null($limitbk) ? $limitbk : 0), $filterName => !is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) ? $arrayFilterData["filter"] : "", "data" => $arraySupervisor);
         }
         //Verify data
         $process->throwExceptionIfNotExistsProcess($processUid, "prj_uid");
         //Set variables
         $numRecTotalGroup = 0;
         $numRecTotalUser = 0;
         $delimiter = \DBAdapter::getStringDelimiter();
         switch ($option) {
             case "ASSIGNED":
                 break;
             case "AVAILABLE":
                 $arrayGroupUid = array();
                 $arrayUserUid = array();
                 $criteria = new \Criteria("workflow");
                 $criteria->addSelectColumn(\ProcessUserPeer::USR_UID);
                 $criteria->addSelectColumn(\ProcessUserPeer::PU_TYPE);
                 $criteria->add(\ProcessUserPeer::PRO_UID, $processUid, \Criteria::EQUAL);
                 $criteria->add(\ProcessUserPeer::PU_TYPE, "%SUPERVISOR%", \Criteria::LIKE);
                 $rsCriteria = \ProcessUserPeer::doSelectRS($criteria);
                 $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                 while ($rsCriteria->next()) {
                     $row = $rsCriteria->getRow();
                     if ($row["PU_TYPE"] == "SUPERVISOR") {
                         $arrayUserUid[] = $row["USR_UID"];
                     } else {
                         $arrayGroupUid[] = $row["USR_UID"];
                     }
                 }
                 $arrayRbacSystemData = array("SYS_UID" => "PROCESSMAKER", "SYS_CODE" => "00000000000000000000000000000002");
                 break;
         }
         //Groups
         //Query
         if (empty($type) || $type == "group") {
             $criteriaGroup = new \Criteria("workflow");
             $criteriaGroup->addSelectColumn(\GroupwfPeer::GRP_UID);
             $criteriaGroup->addAsColumn("GRP_TITLE", \ContentPeer::CON_VALUE);
             switch ($option) {
                 case "ASSIGNED":
                     $criteriaGroup->addSelectColumn(\ProcessUserPeer::PU_UID);
                     $arrayCondition = array();
                     $arrayCondition[] = array(\ProcessUserPeer::USR_UID, \GroupwfPeer::GRP_UID, \Criteria::EQUAL);
                     $arrayCondition[] = array(\GroupwfPeer::GRP_STATUS, $delimiter . "ACTIVE" . $delimiter, \Criteria::EQUAL);
                     $criteriaGroup->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
                     $arrayCondition = array();
                     $arrayCondition[] = array(\GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::EQUAL);
                     $arrayCondition[] = array(\ContentPeer::CON_CATEGORY, $delimiter . "GRP_TITLE" . $delimiter, \Criteria::EQUAL);
                     $arrayCondition[] = array(\ContentPeer::CON_LANG, $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
                     $criteriaGroup->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
                     $criteriaGroup->add(\ProcessUserPeer::PU_TYPE, "GROUP_SUPERVISOR", \Criteria::EQUAL);
                     $criteriaGroup->add(\ProcessUserPeer::PRO_UID, $processUid, \Criteria::EQUAL);
                     break;
                 case "AVAILABLE":
                     $sql = "\n                        SELECT DISTINCT " . \GroupUserPeer::GRP_UID . "\n                        FROM   " . \GroupUserPeer::TABLE_NAME . ", " . \UsersPeer::TABLE_NAME . ",\n                               " . \UsersRolesPeer::TABLE_NAME . ", " . \RolesPermissionsPeer::TABLE_NAME . ", " . \PermissionsPeer::TABLE_NAME . "\n                        WHERE  " . \GroupUserPeer::GRP_UID . " = " . \GroupwfPeer::GRP_UID . " AND\n                               " . \GroupUserPeer::USR_UID . " = " . \UsersPeer::USR_UID . " AND " . \UsersPeer::USR_STATUS . " = " . $delimiter . "ACTIVE" . $delimiter . " AND\n                               " . \UsersPeer::USR_UID . " = " . \UsersRolesPeer::USR_UID . " AND\n                               " . \UsersRolesPeer::ROL_UID . " = " . \RolesPermissionsPeer::ROL_UID . " AND\n                               " . \RolesPermissionsPeer::PER_UID . " = " . \PermissionsPeer::PER_UID . " AND\n                               " . \PermissionsPeer::PER_CODE . " = " . $delimiter . "PM_SUPERVISOR" . $delimiter . " AND\n                               " . \PermissionsPeer::PER_SYSTEM . " = " . $delimiter . $arrayRbacSystemData["SYS_CODE"] . $delimiter . "\n                        ";
                     $arrayCondition = array();
                     $arrayCondition[] = array(\GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::EQUAL);
                     $arrayCondition[] = array(\ContentPeer::CON_CATEGORY, $delimiter . "GRP_TITLE" . $delimiter, \Criteria::EQUAL);
                     $arrayCondition[] = array(\ContentPeer::CON_LANG, $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
                     $criteriaGroup->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
                     $criteriaGroup->add($criteriaGroup->getNewCriterion(\GroupwfPeer::GRP_UID, $arrayGroupUid, \Criteria::NOT_IN)->addAnd($criteriaGroup->getNewCriterion(\GroupwfPeer::GRP_STATUS, "ACTIVE", \Criteria::EQUAL))->addAnd($criteriaGroup->getNewCriterion(\GroupwfPeer::GRP_UID, \GroupwfPeer::GRP_UID . " IN ({$sql})", \Criteria::CUSTOM)));
                     break;
             }
             if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
                 $arraySearch = array("" => "%" . $arrayFilterData["filter"] . "%", "LEFT" => $arrayFilterData["filter"] . "%", "RIGHT" => "%" . $arrayFilterData["filter"]);
                 $search = $arraySearch[isset($arrayFilterData["filterOption"]) ? $arrayFilterData["filterOption"] : ""];
                 $criteriaGroup->add(\ContentPeer::CON_VALUE, $search, \Criteria::LIKE);
             }
             //Number records total
             $criteriaCount = clone $criteriaGroup;
             $criteriaCount->clearSelectColumns();
             $criteriaCount->addSelectColumn("COUNT(" . \GroupwfPeer::GRP_UID . ") AS NUM_REC");
             switch ($option) {
                 case "ASSIGNED":
                     $rsCriteriaCount = \ProcessUserPeer::doSelectRS($criteriaCount);
                     break;
                 case "AVAILABLE":
                     $rsCriteriaCount = \GroupwfPeer::doSelectRS($criteriaCount);
                     break;
             }
             $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
             $result = $rsCriteriaCount->next();
             $row = $rsCriteriaCount->getRow();
             $numRecTotalGroup = (int) $row["NUM_REC"];
             $numRecTotal = $numRecTotal + $numRecTotalGroup;
         }
         //Users
         //Query
         if (empty($type) || $type == "user") {
             $criteriaUser = new \Criteria("workflow");
             $criteriaUser->addSelectColumn(\UsersPeer::USR_UID);
             $criteriaUser->addSelectColumn(\UsersPeer::USR_USERNAME);
             $criteriaUser->addSelectColumn(\UsersPeer::USR_FIRSTNAME);
             $criteriaUser->addSelectColumn(\UsersPeer::USR_LASTNAME);
             $criteriaUser->addSelectColumn(\UsersPeer::USR_EMAIL);
             switch ($option) {
                 case "ASSIGNED":
                     $criteriaUser->addSelectColumn(\ProcessUserPeer::PU_UID);
                     $arrayCondition = array();
                     $arrayCondition[] = array(\ProcessUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::EQUAL);
                     $arrayCondition[] = array(\UsersPeer::USR_STATUS, $delimiter . "ACTIVE" . $delimiter, \Criteria::EQUAL);
                     $criteriaUser->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
                     $criteriaUser->add(\ProcessUserPeer::PU_TYPE, "SUPERVISOR", \Criteria::EQUAL);
                     $criteriaUser->add(\ProcessUserPeer::PRO_UID, $processUid, \Criteria::EQUAL);
                     break;
                 case "AVAILABLE":
                     $sql = "\n                        SELECT DISTINCT " . \UsersRolesPeer::USR_UID . "\n                        FROM   " . \UsersRolesPeer::TABLE_NAME . ", " . \RolesPermissionsPeer::TABLE_NAME . ", " . \PermissionsPeer::TABLE_NAME . "\n                        WHERE  " . \UsersRolesPeer::USR_UID . " = " . \UsersPeer::USR_UID . " AND\n                               " . \UsersRolesPeer::ROL_UID . " = " . \RolesPermissionsPeer::ROL_UID . " AND\n                               " . \RolesPermissionsPeer::PER_UID . " = " . \PermissionsPeer::PER_UID . " AND\n                               " . \PermissionsPeer::PER_CODE . " = " . $delimiter . "PM_SUPERVISOR" . $delimiter . " AND\n                               " . \PermissionsPeer::PER_SYSTEM . " = " . $delimiter . $arrayRbacSystemData["SYS_CODE"] . $delimiter . "\n                        ";
                     $criteriaUser->add($criteriaUser->getNewCriterion(\UsersPeer::USR_UID, $arrayUserUid, \Criteria::NOT_IN)->addAnd($criteriaUser->getNewCriterion(\UsersPeer::USR_STATUS, "ACTIVE", \Criteria::EQUAL))->addAnd($criteriaUser->getNewCriterion(\UsersPeer::USR_UID, \UsersPeer::USR_UID . " IN ({$sql})", \Criteria::CUSTOM)));
                     break;
             }
             if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
                 $arraySearch = array("" => "%" . $arrayFilterData["filter"] . "%", "LEFT" => $arrayFilterData["filter"] . "%", "RIGHT" => "%" . $arrayFilterData["filter"]);
                 $search = $arraySearch[isset($arrayFilterData["filterOption"]) ? $arrayFilterData["filterOption"] : ""];
                 $criteriaUser->add($criteriaUser->getNewCriterion(\UsersPeer::USR_USERNAME, $search, \Criteria::LIKE)->addOr($criteriaUser->getNewCriterion(\UsersPeer::USR_FIRSTNAME, $search, \Criteria::LIKE))->addOr($criteriaUser->getNewCriterion(\UsersPeer::USR_LASTNAME, $search, \Criteria::LIKE)));
             }
             //Number records total
             $criteriaCount = clone $criteriaUser;
             $criteriaCount->clearSelectColumns();
             $criteriaCount->addSelectColumn("COUNT(" . \UsersPeer::USR_UID . ") AS NUM_REC");
             switch ($option) {
                 case "ASSIGNED":
                     $rsCriteriaCount = \ProcessUserPeer::doSelectRS($criteriaCount);
                     break;
                 case "AVAILABLE":
                     $rsCriteriaCount = \UsersPeer::doSelectRS($criteriaCount);
                     break;
             }
             $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
             $result = $rsCriteriaCount->next();
             $row = $rsCriteriaCount->getRow();
             $numRecTotalUser = (int) $row["NUM_REC"];
             $numRecTotal = $numRecTotal + $numRecTotalUser;
         }
         //Groups
         //Query
         if (empty($type) || $type == "group") {
             $criteriaGroup->addAscendingOrderByColumn("GRP_TITLE");
             if (!is_null($start)) {
                 $criteriaGroup->setOffset((int) $start);
             }
             if (!is_null($limit)) {
                 $criteriaGroup->setLimit((int) $limit);
             }
             switch ($option) {
                 case "ASSIGNED":
                     $rsCriteriaGroup = \ProcessUserPeer::doSelectRS($criteriaGroup);
                     break;
                 case "AVAILABLE":
                     $rsCriteriaGroup = \GroupwfPeer::doSelectRS($criteriaGroup);
                     break;
             }
             $rsCriteriaGroup->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
             $numRecGroup = 0;
             while ($rsCriteriaGroup->next()) {
                 $row = $rsCriteriaGroup->getRow();
                 switch ($option) {
                     case "ASSIGNED":
                         $arraySupervisor[] = array("pu_uid" => $row["PU_UID"], "pu_type" => "GROUP_SUPERVISOR", "grp_uid" => $row["GRP_UID"], "grp_name" => $row["GRP_TITLE"]);
                         break;
                     case "AVAILABLE":
                         $arraySupervisor[] = array("grp_uid" => $row["GRP_UID"], "grp_name" => $row["GRP_TITLE"], "obj_type" => "group");
                         break;
                 }
                 $numRecGroup++;
             }
         }
         //Users
         //Query
         if (empty($type) || $type == "user") {
             $flagUser = true;
             if ($numRecTotalGroup > 0) {
                 if ($numRecGroup > 0) {
                     if (!is_null($limit)) {
                         if ($numRecGroup < (int) $limit) {
                             $start = 0;
                             $limit = $limit - $numRecGroup;
                         } else {
                             $flagUser = false;
                         }
                     } else {
                         $start = 0;
                     }
                 } else {
                     $start = (int) $start - $numRecTotalGroup;
                 }
             }
             if ($flagUser) {
                 //Users
                 //Query
                 $criteriaUser->addAscendingOrderByColumn(\UsersPeer::USR_FIRSTNAME);
                 if (!is_null($start)) {
                     $criteriaUser->setOffset((int) $start);
                 }
                 if (!is_null($limit)) {
                     $criteriaUser->setLimit((int) $limit);
                 }
                 switch ($option) {
                     case "ASSIGNED":
                         $rsCriteriaUser = \ProcessUserPeer::doSelectRS($criteriaUser);
                         break;
                     case "AVAILABLE":
                         $rsCriteriaUser = \UsersPeer::doSelectRS($criteriaUser);
                         break;
                 }
                 $rsCriteriaUser->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                 while ($rsCriteriaUser->next()) {
                     $row = $rsCriteriaUser->getRow();
                     switch ($option) {
                         case "ASSIGNED":
                             $arraySupervisor[] = array("pu_uid" => $row["PU_UID"], "pu_type" => "SUPERVISOR", "usr_uid" => $row["USR_UID"], "usr_firstname" => $row["USR_FIRSTNAME"], "usr_lastname" => $row["USR_LASTNAME"], "usr_username" => $row["USR_USERNAME"], "usr_email" => $row["USR_EMAIL"]);
                             break;
                         case "AVAILABLE":
                             $arraySupervisor[] = array("usr_uid" => $row["USR_UID"], "usr_firstname" => $row["USR_FIRSTNAME"], "usr_lastname" => $row["USR_LASTNAME"], "usr_username" => $row["USR_USERNAME"], "usr_email" => $row["USR_EMAIL"], "obj_type" => "user");
                             break;
                     }
                 }
             }
         }
         //Return
         return array("total" => $numRecTotal, "start" => (int) (!is_null($startbk) ? $startbk : 0), "limit" => (int) (!is_null($limitbk) ? $limitbk : 0), $filterName => !is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) ? $arrayFilterData["filter"] : "", "data" => $arraySupervisor);
     } catch (\Exception $e) {
         throw $e;
     }
 }
Exemplo n.º 10
0
 /**
  * Get all Calendars
  *
  * @param array  $arrayFilterData Data of the filters
  * @param string $sortField       Field name to sort
  * @param string $sortDir         Direction of sorting (ASC, DESC)
  * @param int    $start           Start
  * @param int    $limit           Limit
  *
  * return array Return an array with all Calendars
  */
 public function getCalendars($arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
 {
     try {
         $arrayCalendar = array();
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
         //Get data
         if (!is_null($limit) && $limit . "" == "0") {
             return $arrayCalendar;
         }
         //Set variables
         $calendar = new \CalendarDefinition();
         $arrayTotalUsersByCalendar = $calendar->getAllCounterByCalendar("USER");
         $arrayTotalProcessesByCalendar = $calendar->getAllCounterByCalendar("PROCESS");
         $arrayTotalTasksByCalendar = $calendar->getAllCounterByCalendar("TASK");
         //SQL
         $criteria = $this->getCalendarCriteria();
         if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
             $criteria->add($criteria->getNewCriterion(\CalendarDefinitionPeer::CALENDAR_NAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr($criteria->getNewCriterion(\CalendarDefinitionPeer::CALENDAR_DESCRIPTION, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)));
         }
         //SQL
         if (!is_null($sortField) && trim($sortField) != "") {
             $sortField = strtoupper($sortField);
             $sortField = isset($this->arrayFieldDefinition[$sortField]["fieldName"]) ? $this->arrayFieldDefinition[$sortField]["fieldName"] : $sortField;
             switch ($sortField) {
                 case "CALENDAR_UID":
                 case "CALENDAR_NAME":
                 case "CALENDAR_DESCRIPTION":
                 case "CALENDAR_WORK_DAYS":
                 case "CALENDAR_STATUS":
                 case "CALENDAR_CREATE_DATE":
                 case "CALENDAR_UPDATE_DATE":
                     $sortField = \CalendarDefinitionPeer::TABLE_NAME . "." . $sortField;
                     break;
                 default:
                     $sortField = \CalendarDefinitionPeer::CALENDAR_NAME;
                     break;
             }
         } else {
             $sortField = \CalendarDefinitionPeer::CALENDAR_NAME;
         }
         if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
             $criteria->addDescendingOrderByColumn($sortField);
         } else {
             $criteria->addAscendingOrderByColumn($sortField);
         }
         if (!is_null($start)) {
             $criteria->setOffset((int) $start);
         }
         if (!is_null($limit)) {
             $criteria->setLimit((int) $limit);
         }
         $rsCriteria = \CalendarDefinitionPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         while ($rsCriteria->next()) {
             $row = $rsCriteria->getRow();
             $row["CALENDAR_TOTAL_USERS"] = isset($arrayTotalUsersByCalendar[$row["CALENDAR_UID"]]) ? $arrayTotalUsersByCalendar[$row["CALENDAR_UID"]] : 0;
             $row["CALENDAR_TOTAL_PROCESSES"] = isset($arrayTotalProcessesByCalendar[$row["CALENDAR_UID"]]) ? $arrayTotalProcessesByCalendar[$row["CALENDAR_UID"]] : 0;
             $row["CALENDAR_TOTAL_TASKS"] = isset($arrayTotalTasksByCalendar[$row["CALENDAR_UID"]]) ? $arrayTotalTasksByCalendar[$row["CALENDAR_UID"]] : 0;
             $arrayCalendar[] = $this->getCalendarDataFromRecord($row);
         }
         //Return
         return $arrayCalendar;
     } catch (\Exception $e) {
         throw $e;
     }
 }
Exemplo n.º 11
0
 /**
  * Get all Permissions of a Role
  *
  * @param string $roleUid         Unique id of Role
  * @param string $option          Option (PERMISSIONS, AVAILABLE-PERMISSIONS)
  * @param array  $arrayFilterData Data of the filters
  * @param string $sortField       Field name to sort
  * @param string $sortDir         Direction of sorting (ASC, DESC)
  * @param int    $start           Start
  * @param int    $limit           Limit
  *
  * return array Return an array with all Permissions of a Role
  */
 public function getPermissions($roleUid, $option, array $arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null)
 {
     try {
         $arrayPermission = array();
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $role = new \ProcessMaker\BusinessModel\Role();
         $role->throwExceptionIfNotExistsRole($roleUid, $this->arrayFieldNameForException["roleUid"]);
         $process->throwExceptionIfDataNotMetFieldDefinition(array("OPTION" => $option), array("OPTION" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("PERMISSIONS", "AVAILABLE-PERMISSIONS"), "fieldNameAux" => "option")), array("option" => "\$option"), true);
         $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
         //Get data
         if (!is_null($limit) && $limit . "" == "0") {
             return $arrayPermission;
         }
         //Set variables
         $rolePermission = new \RolesPermissions();
         //SQL
         switch ($option) {
             case "PERMISSIONS":
                 //Criteria
                 $criteria = $this->getPermissionCriteria($roleUid);
                 break;
             case "AVAILABLE-PERMISSIONS":
                 //Get Uids
                 $arrayUid = array();
                 $criteria = $this->getPermissionCriteria($roleUid);
                 $rsCriteria = \PermissionsPeer::doSelectRS($criteria);
                 $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                 while ($rsCriteria->next()) {
                     $row = $rsCriteria->getRow();
                     $arrayUid[] = $row["PER_UID"];
                 }
                 //Criteria
                 $criteria = $this->getPermissionCriteria("", $arrayUid);
                 break;
         }
         if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
             $criteria->add(\PermissionsPeer::PER_CODE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE);
         }
         //SQL
         if (!is_null($sortField) && trim($sortField) != "") {
             $sortField = strtoupper($sortField);
             if (in_array($sortField, array("PER_UID", "PER_CODE"))) {
                 $sortField = \PermissionsPeer::TABLE_NAME . "." . $sortField;
             } else {
                 $sortField = \PermissionsPeer::PER_CODE;
             }
         } else {
             $sortField = \PermissionsPeer::PER_CODE;
         }
         if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
             $criteria->addDescendingOrderByColumn($sortField);
         } else {
             $criteria->addAscendingOrderByColumn($sortField);
         }
         if (!is_null($start)) {
             $criteria->setOffset((int) $start);
         }
         if (!is_null($limit)) {
             $criteria->setLimit((int) $limit);
         }
         $rsCriteria = \PermissionsPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         while ($rsCriteria->next()) {
             $row = $rsCriteria->getRow();
             $rolePermission->setPerUid($row["PER_UID"]);
             $row["PER_NAME"] = $rolePermission->getPermissionName();
             $arrayPermission[] = $this->getPermissionDataFromRecord($row);
         }
         //Return
         return $arrayPermission;
     } catch (\Exception $e) {
         throw $e;
     }
 }