/** * Single tag route (/tag/@tag) * @param \Base $f3 * @param array $params */ public function single($f3, $params) { $tag = new \Model\Issue\Tag(); $tag->load(array("tag = ?", $params["tag"])); if (!$tag->id) { $f3->error(404); return; } $issue = new \Model\Issue\Detail(); $issue_ids = implode(',', $tag->issues()); $f3->set("title", "#" . $params["tag"] . " - " . $f3->get("dict.issue_tags")); $f3->set("tag", $tag); $f3->set("issues.subset", $issue->find("id IN ({$issue_ids})")); $this->_render("tag/single.html"); }
public function tag_single($f3, $params) { $tag = new \Model\Issue\Tag(); $issueIds = $tag->issues($params['tag']); $return = array(); if ($issueIds) { $issue = new \Model\Issue\Detail(); $issues = $issue->find(array("id IN (" . implode(",", $issueIds) . ") AND deleted_date IS NULL")); foreach ($issues as $item) { $return[] = $this->_issueMultiArray($item); } } $this->_printJson($return); }
/** * Finds and saves the current issue's tags * @return Issue */ function saveTags() { $tag = new \Model\Issue\Tag(); $issue_id = $this->get("id"); $str = $this->get("description"); $count = preg_match_all("/(?<=\\W#|^#)[a-z][a-z0-9_-]*[a-z0-9]+(?=\\W|\$)/i", $str, $matches); $tag->deleteByIssueId($issue_id); if ($count) { foreach ($matches[0] as $match) { $tag->reset(); $tag->tag = str_replace("_", "-", $match); $tag->issue_id = $issue_id; $tag->save(); } } return $this; }
/** * Finds and saves the current issue's tags * @return Issue */ function saveTags() { $tag = new \Model\Issue\Tag(); $issue_id = $this->id; $str = $this->description; $count = preg_match_all("/(?<=[^a-z\\/&]#|^#)[a-z][a-z0-9_-]*[a-z0-9]+(?=[^a-z\\/]|\$)/i", $str, $matches); if ($issue_id) { $tag->deleteByIssueId($issue_id); } if ($count) { foreach ($matches[0] as $match) { $tag->reset(); $tag->tag = preg_replace("/[_-]+/", "-", ltrim($match, "#")); $tag->issue_id = $issue_id; $tag->save(); } } return $this; }