public function get($f3) { $issue = new \Model\Issue\Detail(); // Build filter string $filter = array(); $get = $f3->get("GET"); $db = $f3->get("db.instance"); foreach ($issue->fields(false) as $i) { if (isset($get[$i])) { $filter[] = "`{$i}` = " . $db->quote($get[$i]); } } $filter_str = $filter ? implode(' AND ', $filter) : null; // Build options $options = array(); if ($f3->get("GET.order")) { $options["order"] = $f3->get("GET.order") . " " . $f3->get("GET.ascdesc"); } // Load issues $result = $issue->paginate($f3->get("GET.offset") / ($f3->get("GET.limit") ?: 30), $f3->get("GET.limit") ?: 30, $filter_str, $options); // Build result objects $issues = array(); foreach ($result["subset"] as $iss) { $issues[] = $this->_issueMultiArray($iss); } // Output response $this->_printJson(array("total_count" => $result["total"], "limit" => $result["limit"], "issues" => $issues, "offset" => $result["pos"] * $result["limit"])); }
/** * GET /search * Search for issues * * @param \Base $f3 */ public function search($f3) { $q = $f3->get("GET.q"); if (preg_match("/^#([0-9]+)\$/", $q, $matches)) { $f3->reroute("/issues/{$matches[1]}"); } $issues = new \Model\Issue\Detail(); $args = $f3->get("GET"); if (empty($args["page"])) { $args["page"] = 0; } $where = $this->_buildSearchWhere($q); if (empty($args["closed"])) { $where[0] .= " AND status_closed = '0'"; } $issue_page = $issues->paginate($args["page"], 50, $where, array("order" => "created_date DESC")); $f3->set("issues", $issue_page); if ($issue_page["count"] > 7) { if ($issue_page["pos"] <= 3) { $min = 0; } else { $min = $issue_page["pos"] - 3; } if ($issue_page["pos"] < $issue_page["count"] - 3) { $max = $issue_page["pos"] + 3; } else { $max = $issue_page["count"] - 1; } } else { $min = 0; $max = $issue_page["count"] - 1; } $f3->set("pages", range($min, $max)); $f3->set("show_filters", false); $this->_render("issues/search.html"); }
public function single($f3, $params) { $this->_requireLogin(); $user = new \Model\User(); $user->load(array("username = ? AND deleted_date IS NULL", $params["username"])); if ($user->id) { $f3->set("title", $user->name); $f3->set("this_user", $user); // Extra arrays required for bulk update $status = new \Model\Issue\Status(); $f3->set("statuses", $status->find(null, null, $f3->get("cache_expire.db"))); $f3->set("users", $user->getAll()); $f3->set("groups", $user->getAllGroups()); $priority = new \Model\Issue\Priority(); $f3->set("priorities", $priority->find(null, array("order" => "value DESC"), $f3->get("cache_expire.db"))); $type = new \Model\Issue\Type(); $f3->set("types", $type->find(null, null, $f3->get("cache_expire.db"))); $issue = new \Model\Issue\Detail(); $f3->set("created_issues", $issue->paginate(0, 200, array("status_closed = '0' AND deleted_date IS NULL AND author_id = ?", $user->id), array("order" => "priority DESC, due_date DESC"))); $f3->set("assigned_issues", $issue->paginate(0, 200, array("status_closed = '0' AND deleted_date IS NULL AND owner_id = ?", $user->id), array("order" => "priority DESC, due_date DESC"))); $f3->set("overdue_issues", $issue->paginate(0, 200, array("status_closed = '0' AND deleted_date IS NULL AND owner_id = ? AND due_date IS NOT NULL AND due_date < ?", $user->id, date("Y-m-d", \Helper\View::instance()->utc2local())), array("order" => "due_date ASC"))); $this->_render("user/single.html"); } else { $f3->error(404); } }
/** * @param \Base $f3 * @param array $params */ public function search($f3, $params) { $query = "%" . $f3->get("GET.q") . "%"; if (preg_match("/^#([0-9]+)\$/", $f3->get("GET.q"), $matches)) { $f3->reroute("/issues/{$matches[1]}"); } $issues = new \Model\Issue\Detail(); $args = $f3->get("GET"); if (empty($args["page"])) { $args["page"] = 0; } $where = "(id = ? OR name LIKE ? OR description LIKE ?\n\t\t\t\tOR author_name LIKE ? OR owner_name LIKE ?\n\t\t\t\tOR author_username LIKE ? OR owner_username LIKE ?\n\t\t\t\tOR author_email LIKE ? OR owner_email LIKE ?)\n\t\t\tAND deleted_date IS NULL"; if (empty($args["closed"])) { $where .= " AND status_closed = '0'"; } $issue_page = $issues->paginate($args["page"], 50, array($where, $f3->get("GET.q"), $query, $query, $query, $query, $query, $query, $query, $query), array("order" => "created_date DESC")); $f3->set("issues", $issue_page); if ($issue_page["count"] > 7) { if ($issue_page["pos"] <= 3) { $min = 0; } else { $min = $issue_page["pos"] - 3; } if ($issue_page["pos"] < $issue_page["count"] - 3) { $max = $issue_page["pos"] + 3; } else { $max = $issue_page["count"] - 1; } } else { $min = 0; $max = $issue_page["count"] - 1; } $f3->set("pages", range($min, $max)); $f3->set("show_filters", false); $this->_render("issues/search.html"); }
public function search($f3, $params) { $query = "%" . $f3->get("GET.q") . "%"; if (preg_match("/^#([0-9]+)\$/", $f3->get("GET.q"), $matches)) { $f3->reroute("/issues/{$matches[1]}"); } $issues = new \Model\Issue\Detail(); $args = $f3->get("GET"); if (empty($args["page"])) { $args["page"] = 0; } $where = "(id = ? OR name LIKE ? OR description LIKE ?\n\t\t\t\tOR author_name LIKE ? OR owner_name LIKE ?\n\t\t\t\tOR author_username LIKE ? OR owner_username LIKE ?\n\t\t\t\tOR author_email LIKE ? OR owner_email LIKE ?)\n\t\t\tAND deleted_date IS NULL"; $issue_page = $issues->paginate($args["page"], 50, array($where, $f3->get("GET.q"), $query, $query, $query, $query, $query, $query, $query, $query), array("order" => "created_date DESC")); $f3->set("issues", $issue_page); $f3->set("show_filters", false); $this->_render("issues/search.html"); }