jidaikobo-shibata/a11yc

View on GitHub
classes/Controller/IssueRead.php

Summary

Maintainability
A
3 hrs
Test Coverage
<?php
/**
 * A11yc\Controller\Issue
 *
 * @package    part of A11yc
 * @author     Jidaikobo Inc.
 * @license    The MIT License (MIT)
 * @copyright  Jidaikobo Inc.
 * @link       http://www.jidaikobo.com
 */
namespace A11yc\Controller;

use A11yc\Model;

trait IssueRead
{
    /**
     * view Issue
     *
     * @param Array $users
     * @param INTEGER $current_user_id
     * @param BOOL $current_user_id
     * @return Void
     */
    public static function issue($users = array(), $current_user_id = NULL, $is_admin = false)
    {
        $id = intval(Input::get('id'));
        $issue = Model\Issue::fetch($id);
        if (empty($issue) || Arr::get($issue, 'trash') == 1) Util::error('issue not found');

        if (is_null($current_user_id))
        {
            $current_user = Users::fetchCurrentUser();
            $current_user_id = $current_user['id'];
            $users = Users::fetchUsersOpt();
            $is_admin = $current_user[0] == 'root';
        }

        if (Input::isPostExists())
        {
            // update status
            if ($issue['status'] != Input::post('status'))
            {
                Model\Issue::updatePartial($id, 'status', Input::post('status', 0));
            }

            // update message
            $bbs = array();
            foreach (Input::postArr('a11yc_issuesbbs') as $k => $v)
            {
                if (empty($v)) continue;
                $vals = array(
                    'uid'        => $current_user_id,
                    'message'    => $v,
                );

                $date_key = is_numeric($k) ? 'updated_at' : 'created_at' ;
                $vals[$date_key] = date('Y-m-d H:i:s');

                $bbs[] = $vals;
            }
            $r = Model\Issue::updatePartial($id, 'bbs', $bbs);

            $mess_type = $r ? 'messages' : 'errors';
            $mess_str  = $r ? A11YC_LANG_UPDATE_SUCCEED : A11YC_LANG_UPDATE_FAILED;
            Session::add('messages', $mess_type, $mess_str);
            $issue = Model\Issue::fetch($id, true);
        }

        View::assign('current_user_id', $current_user_id);
        View::assign('status',          Values::issueStatus());
        View::assign('is_admin',        $is_admin);
        View::assign('users',           $users);
        View::assign('issue',           $issue);
        View::assign('title',           A11YC_LANG_ISSUE_TITLE);
        View::assign('form',            View::fetchTpl('issue/message.php'), FALSE);
        View::assign('body',            View::fetchTpl('issue/view.php'), FALSE);
    }
}