* @link https://TheTempusProject.com * @license https://opensource.org/licenses/MIT [MIT LICENSE] */ namespace TheTempusProject\Controllers\Admin; use TheTempusProject\Bedrock\Functions\Check; use TheTempusProject\Bedrock\Functions\Upload; use TheTempusProject\Bedrock\Functions\Input; use TheTempusProject\Houdini\Classes\Issues; use TheTempusProject\Houdini\Classes\Views; use TheTempusProject\Houdini\Classes\Navigation; use TheTempusProject\Houdini\Classes\Components; use TheTempusProject\Houdini\Classes\Forms as FormGen; use TheTempusProject\Classes\AdminController; use TheTempusProject\Classes\Forms; use TheTempusProject\Models\Bugtracker as BugtrackerModel; use TheTempusProject\TheTempusProject as App; use TheTempusProject\Models\Comments; class Bugtracker extends AdminController { protected static $tracker; protected static $comments; public function __construct() { parent::__construct(); self::$tracker = new BugtrackerModel; self::$title = 'Admin - Bug-Tracker'; $view = Navigation::activePageSelect( 'nav.admin', '/admin/bugtracker' ); Components::set( 'ADMINNAV', $view ); } public function index( $data = null ) { Views::view( 'bugtracker.admin.list', self::$tracker->list() ); } public function create( $data = null ) { $form = ''; $form .= FormGen::getFormFieldHtml( 'title', 'Title', 'text', Input::post('title') ); $form .= FormGen::getFormFieldHtml( 'description', 'Description', 'block', Input::post('description') ); $form .= FormGen::getFormFieldHtml( 'bugImage', 'Screenshot', 'file', '' ); $form .= FormGen::getFormFieldHtml( 'url', 'URL (if possible)', 'text', '' ); $form .= FormGen::getFormFieldHtml( 'repeat', 'Has this happened more than once', 'radio' ); Components::set( 'TRACKER_FORM', $form ); if ( !Input::exists( 'submit' ) ) { return Views::view( 'bugtracker.admin.create' ); } if ( !Forms::check( 'newBugTracker' ) ) { Issues::add( 'error', [ 'There was an error with your request.' => Check::userErrors() ] ); return Views::view( 'bugtracker.admin.create' ); } $image = ''; if ( Input::exists( 'bugImage' ) ) { $folder = IMAGE_UPLOAD_DIRECTORY . App::$activeUser->username . DIRECTORY_SEPARATOR; if ( !Upload::image( 'bugImage', $folder ) ) { Issues::add( 'error', [ 'There was an error with your upload.' => Check::systemErrors() ] ); } else { $route = str_replace( APP_ROOT_DIRECTORY, '', $folder ); $image = $route . Upload::last(); } } $result = self::$tracker->create( App::$activeUser->ID, Input::post( 'url' ), $image, Input::post( 'repeat' ), Input::post( 'description' ), Input::post( 'title' ), ); if ( $result ) { Issues::add( 'success', 'Your tracker has been created.' ); return $this->index(); } else { Issues::add( 'error', [ 'There was an unknown error submitting your data.' => Check::userErrors() ] ); return $this->index(); } } public function edit( $data = null ) { if ( !Input::exists( 'submit' ) ) { $bug = self::$tracker->findById( $data ); $statusList = [ TRACKER_STATUS_IN_PROGRESS => TRACKER_STATUS_IN_PROGRESS, TRACKER_STATUS_TESTING => TRACKER_STATUS_TESTING, TRACKER_STATUS_NEW => TRACKER_STATUS_NEW, TRACKER_STATUS_FIXED => TRACKER_STATUS_FIXED, TRACKER_STATUS_CLOSED => TRACKER_STATUS_CLOSED, ]; $form = ''; $form .= FormGen::getFormFieldHtml( 'title', 'Title', 'text', $bug->title ); $form .= FormGen::getFormFieldHtml( 'description', 'Description', 'block', $bug->description ); $form .= FormGen::getFormFieldHtml( 'bugImage', 'Screenshot', 'file', $bug->image ); $form .= FormGen::getFormFieldHtml( 'url', 'Page you were on', 'text', $bug->url ); $form .= FormGen::getFormFieldHtml( 'repeat', 'Has this happened more than once', 'radio', $bug->repeatable ); $form .= FormGen::getFormFieldHtml( 'status', 'Status', 'customSelect', $bug->status, $statusList ); Components::set( 'TRACKER_FORM', $form ); return Views::view( 'bugtracker.admin.edit', $bug ); } if ( !Forms::check( 'editBugTracker' ) ) { Issues::add( 'error', [ 'There was an error with your form.' => Check::userErrors() ] ); return $this->index(); } $image = ''; if ( Input::exists( 'bugImage' ) ) { $folder = IMAGE_UPLOAD_DIRECTORY . App::$activeUser->username . DIRECTORY_SEPARATOR; if ( !Upload::image( 'bugImage', $folder ) ) { Issues::add( 'error', [ 'There was an error with your upload.' => Check::systemErrors() ] ); } else { $image = $folder . Upload::last(); } } $tracker = self::$tracker->updateTracker( $data, Input::post( 'url' ), $image, Input::post( 'repeat' ), Input::post( 'description' ), Input::post( 'title' ), Input::post( 'status' ) ); if ( true === $tracker ) { Issues::add( 'success', 'Tracker Updated.' ); return $this->index(); } Issues::add( 'error', 'There was an error with your request.' ); $this->index(); } public function view( $id = null ) { if ( empty( self::$comments ) ) { self::$comments = new Comments; } $data = self::$tracker->findById( $id ); if ( $data === false ) { Issues::add( 'error', 'Tracker not found.' ); return $this->index(); } if ( Input::exists( 'contentId' ) ) { $this->comments( 'post', Input::post( 'contentId' ) ); } if ( empty( self::$comments ) ) { self::$comments = new Comments; } Components::set( 'CONTENT_ID', $id ); Components::set( 'COMMENT_TYPE', 'admin/bugtracker' ); Components::set( 'count', self::$comments->count( 'tracker', $id ) ); Components::set( 'NEWCOMMENT', Views::simpleView( 'comments.create' ) ); Components::set( 'COMMENTS', Views::simpleView( 'comments.list', self::$comments->display( 10, 'tracker', $id ) ) ); Views::view( 'bugtracker.admin.view', $data ); } public function delete( $data = null ) { if ( $data == null ) { if ( Input::exists( 'T_' ) ) { $data = Input::post( 'T_' ); } } if ( !self::$tracker->delete( $data ) ) { Issues::add( 'error', 'There was an error with your request.' ); } else { Issues::add( 'success', 'Tracker has been deleted' ); } $this->index(); } public function comments( $sub = null, $data = null ) { if ( empty( self::$comments ) ) { self::$comments = new Comments; } if ( empty( $sub ) || empty( $data ) ) { Session::flash( 'error', 'Whoops, try again.' ); Redirect::to( 'admin/bugtracker' ); } switch ( $sub ) { case 'post': $content = self::$tracker->findById( $data ); if ( empty( $content ) ) { Session::flash( 'error', 'Unknown Post.' ); Redirect::to( 'admin/bugtracker' ); } return self::$comments->formPost( 'tracker', $content, 'admin/bugtracker/view/' ); case 'edit': $content = self::$comments->findById( $data ); if ( empty( $content ) ) { Session::flash( 'error', 'Unknown Comment.' ); Redirect::to( 'admin/bugtracker' ); } return self::$comments->formEdit( 'tracker', $content, 'admin/bugtracker/view/' ); case 'delete': $content = self::$comments->findById( $data ); if ( empty( $content ) ) { Session::flash( 'error', 'Unknown Comment.' ); Redirect::to( 'admin/bugtracker' ); } return self::$comments->formDelete( 'tracker', $content, 'admin/bugtracker/view/' ); } } }