Example #1
0
 /**
  * Converts the wiki [[page]] and [[text|page]] to HTML links.
  *
  * @param string $text
  *
  * @return string
  */
 public static function wikiLinks($text)
 {
     return preg_replace_callback("|\\[\\[(?P<page>[\\w\\d\\-_]+)(\\|(?P<text>[\\s\\w\\d\\-_]+))?\\]\\]|", function ($matches) {
         $project = currentProject();
         if (!$project) {
             return $matches[0];
         }
         if (!isset($matches['text'])) {
             $matches['text'] = $matches['page'];
         }
         return HTML::link($matches['text'], routePath('wiki_page', ['slug' => $matches['page']]));
     }, $text);
 }
Example #2
0
<?php

$ticket = db()->prepare('
    SELECT
        t.*,
        u.username AS user_username,
        s.name AS status_name,
        tp.name AS type_name,
        m.name AS milestone_name,
        m.slug AS milestone_slug,
        c.name AS component_name
    FROM ' . PREFIX . 'tickets t
    LEFT JOIN ' . PREFIX . 'users u ON u.id = t.user_id
    LEFT JOIN ' . PREFIX . 'statuses s ON s.id = t.status_id
    LEFT JOIN ' . PREFIX . 'types tp ON tp.id = t.type_id
    LEFT JOIN ' . PREFIX . 'milestones m ON m.id = t.milestone_id
    LEFT JOIN ' . PREFIX . 'components c ON c.id = t.component_id
    WHERE t.ticket_id = ?
    AND t.project_id = ?
    LIMIT 1
');
$ticket->bindValue(1, Request::$properties->get('id'), PDO::PARAM_INT);
$ticket->bindValue(2, currentProject()['id'], PDO::PARAM_INT);
$ticket->execute();
return view('tickets/show.phtml', ['ticket' => $ticket->fetch()]);
Example #3
0
<?php

/*!
 * Traq Lite
 * Copyright (c) 2009-2016 Jack P.
 * https://github.com/nirix/traq-lite
 *
 * Licensed under the BSD 3-Clause license.
 */
$tickets = db()->prepare('
    SELECT
        t.*,
        u.username AS user_username,
        s.name AS status_name,
        tp.name AS type_name,
        m.name AS milestone_name,
        m.slug AS milestone_slug,
        c.name AS component_name
    FROM ' . PREFIX . 'tickets t
    LEFT JOIN ' . PREFIX . 'users u ON u.id = t.user_id
    LEFT JOIN ' . PREFIX . 'statuses s ON s.id = t.status_id
    LEFT JOIN ' . PREFIX . 'types tp ON tp.id = t.type_id
    LEFT JOIN ' . PREFIX . 'milestones m ON m.id = t.milestone_id
    LEFT JOIN ' . PREFIX . 'components c ON c.id = t.component_id
    WHERE t.project_id = ?
');
$tickets->execute([currentProject()['id']]);
return view('tickets/index.phtml', ['tickets' => $tickets->fetchAll()]);
Example #4
0
<?php

/*!
 * Traq Lite
 * Copyright (c) 2009-2016 Jack P.
 * https://github.com/nirix/traq-lite
 *
 * Licensed under the BSD 3-Clause license.
 */
if (!currentProject()) {
    return show404();
}
return view('projects/show.phtml', ['project' => currentProject()]);
Example #5
0
<?php

/*!
 * Traq Lite
 * Copyright (c) 2009-2016 Jack P.
 * https://github.com/nirix/traq-lite
 *
 * Licensed under the BSD 3-Clause license.
 */
$milestones = db()->prepare('
    SELECT name, slug, description
    FROM ' . PREFIX . 'milestones
    WHERE project_id = ?
    ORDER BY display_order
');
$milestones->execute([currentProject()['id']]);
return view('roadmap/index.phtml', ['milestones' => $milestones->fetchAll()]);
Example #6
0
/**
 * @param string $append
 *
 * @return string
 */
function projectUrl($append = null)
{
    return baseUrl(currentProject()['slug']) . rtrim('/' . ltrim($append, '/'), '/');
}
Example #7
0
 */
use Traq\Models\Ticket;
$ticket = new Ticket(['status_id' => 1]);
if (Request::$method == 'POST') {
    $ticketId = currentProject()->get('next_ticket_id');
    $ticket->set(['ticket_id' => $ticketId, 'summary' => Request::$post['summary'], 'body' => Request::$post['body'], 'project_id' => currentProject()->get('id'), 'user_id' => currentUser()->get('id'), 'type_id' => Request::$post['type_id'], 'status_id' => Request::$post['status_id'], 'milestone_id' => Request::$post['milestone_id'], 'component_id' => Request::$post['component_id']]);
    if ($ticket->validate()) {
        db()->beginTransaction();
        $query = db()->prepare('
            INSERT INTO ' . PREFIX . 'tickets
            (ticket_id, summary, body, project_id, user_id, type_id, status_id, milestone_id, component_id, created_at)
            VALUES (:ticket_id, :summary, :body, :project_id, :user_id, :type_id, :status_id, :milestone_id, :component_id, NOW())
        ');
        $query->bindValue(':ticket_id', $ticket['ticket_id'], PDO::PARAM_INT);
        $query->bindValue(':summary', $ticket['summary']);
        $query->bindValue(':body', $ticket['body']);
        $query->bindValue(':project_id', $ticket['project_id'], PDO::PARAM_INT);
        $query->bindValue(':user_id', $ticket['user_id'], PDO::PARAM_INT);
        $query->bindValue(':type_id', $ticket['type_id'], PDO::PARAM_INT);
        $query->bindValue(':status_id', $ticket['status_id'], PDO::PARAM_INT);
        $query->bindValue(':milestone_id', $ticket['milestone_id'], PDO::PARAM_INT);
        $query->bindValue(':component_id', $ticket['component_id'] ?: null);
        $query->execute();
        $update = db()->prepare('UPDATE ' . PREFIX . 'projects SET next_ticket_id = next_ticket_id + 1 WHERE id = ? LIMIT 1');
        $update->bindValue(1, currentProject()->get('id'), PDO::PARAM_INT);
        $update->execute();
        db()->commit();
        return redirect('/' . currentProject()->get('slug') . '/tickets/' . $ticketId);
    }
}
return view('tickets/new.phtml', ['ticket' => $ticket]);
Example #8
0
<?php

$milestone = db()->prepare('
    SELECT * FROM ' . PREFIX . 'milestones WHERE slug = ? AND project_id = ? LIMIT 1
');
$milestone->bindValue(1, Request::$properties->get('slug'));
$milestone->bindValue(2, currentProject()['id'], PDO::PARAM_INT);
$milestone->execute();
return view('roadmap/show.phtml', ['milestone' => $milestone->fetch()]);