Exemplo n.º 1
0
 protected function getListData($op)
 {
     switch ($op) {
         case "rule":
         case "berule":
             if ($op == "rule") {
                 $where = "fr.uid = {$this->uid}";
             } else {
                 $where = "fr.toid = {$this->uid} AND fr.status = 1";
             }
             $sqlText = "SELECT fr.*,ft.name as typeName,fr.toid as userID FROM {{flow_rule}} fr LEFT JOIN {{flow_type}} ft ON ft.flowid = fr.flowid LEFT JOIN {{user}} u ON fr.toid = u.uid WHERE {$where} ORDER BY fr.ruleid DESC";
             break;
         case "record":
         case "berecord":
             if ($op == "record") {
                 $idField = "uid";
             } else {
                 $idField = "toid";
             }
             $sqlText = "SELECT log.flowid,log.runid,log.runname,log.processid,log.toid as userID,log.time,frp.flag,frp.flowprocess,ft.type,ft.name as typeName,ft.flowid FROM {{flow_run_log}} log INNER JOIN {{flow_type}} ft ON log.flowid = ft.flowid LEFT JOIN {{flow_run_process}} frp ON frp.runid = log.runid WHERE frp.processid = log.processid AND log.{$idField} = {$this->uid} AND log.type = 2 GROUP BY log.processid ORDER BY log.runid DESC";
             break;
     }
     $query = Ibos::app()->db->createCommand()->setText($sqlText)->query();
     $count = $query->count();
     $pages = PageUtil::create($count, $this->getListPageSize());
     $offset = $pages->getOffset();
     $limit = $pages->getLimit();
     $list = Ibos::app()->db->createCommand()->setText($sqlText . " LIMIT {$offset},{$limit}")->queryAll();
     $now = strtotime(date("Y-m-d", TIMESTAMP));
     $proceses = FlowProcess::model()->fetchAllProcessSortByFlowId();
     foreach ($list as &$rec) {
         if ($op == "rule" || $op == "berule") {
             $condition1 = WfHandleUtil::compareTimestamp($now, $rec["begindate"]);
             $condition2 = WfHandleUtil::compareTimestamp($now, $rec["enddate"]);
             $rec["enabled"] = false;
             $rec["datedesc"] = "";
             if ($rec["status"] == 1) {
                 if ($rec["begindate"] != 0 && $rec["enddate"] != 0) {
                     $rec["datedesc"] = date("Y-m-d", $rec["begindate"]) . "--" . date("Y-m-d", $rec["enddate"]);
                     if (0 <= $condition1 && $condition2 <= 0) {
                         $rec["enabled"] = true;
                     }
                 } elseif ($rec["begindate"] != 0) {
                     $rec["datedesc"] = Ibos::lang("Entrust begin with", "", array("{date}" => date("Y-m-d", $rec["begindate"])));
                     if (0 <= $condition1) {
                         $rec["enabled"] = true;
                     }
                 } elseif ($rec["enddate"] != 0) {
                     $rec["datedesc"] = Ibos::lang("Entrust finish up width", "", array("{date}" => date("Y-m-d", $rec["enddate"])));
                     if ($condition2 <= 0) {
                         $rec["enabled"] = true;
                     }
                 } else {
                     $rec["datedesc"] = Ibos::lang("Always effective");
                     $rec["enabled"] = true;
                 }
             }
         } else {
             $rec["key"] = WfCommonUtil::param(array("runid" => $rec["runid"], "processid" => $rec["processid"], "flowprocess" => $rec["flowprocess"], "flowid" => $rec["flowid"]));
             if ($rec["type"] == 1) {
                 if (isset($proceses[$rec["flowid"]][$rec["flowprocess"]])) {
                     $rec["processname"] = $proceses[$rec["flowid"]][$rec["flowprocess"]]["name"];
                 }
             } else {
                 $rec["processname"] = Ibos::lang("Steps", "", array("{step}" => $rec["processid"]));
             }
         }
         $rec["user"] = User::model()->fetchByUid($rec["userID"]);
     }
     return array("pages" => $pages, "list" => $list);
 }