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); }