* @link https://TheTempusProject.com * @license https://opensource.org/licenses/MIT [MIT LICENSE] */ namespace TheTempusProject\Controllers; use TheTempusProject\Hermes\Functions\Redirect; use TheTempusProject\Bedrock\Functions\Check; use TheTempusProject\Bedrock\Functions\Input; use TheTempusProject\Bedrock\Functions\Session; use TheTempusProject\Houdini\Classes\Issues; use TheTempusProject\Houdini\Classes\Views; use TheTempusProject\Classes\Controller; use TheTempusProject\Classes\Forms; use TheTempusProject\Models\Review; use TheTempusProject\TheTempusProject as App; use TheTempusProject\Houdini\Classes\Components; use TheTempusProject\Houdini\Classes\Template; use TheTempusProject\Models\Reviewcategory; use TheTempusProject\Houdini\Classes\Forms as HoudiniForms; class Reviews extends Controller { protected static $reviews; protected static $categories; public function __construct() { self::$title = 'Reviews - {SITENAME}'; self::$pageDescription = 'On this page you can submit a reviews for a product from the site.'; if ( ! App::$isLoggedIn ) { Session::flash( 'notice', 'You must be logged in to review products.' ); return Redirect::home(); } parent::__construct(); self::$reviews = new Review; self::$categories = new Reviewcategory; Components::append( 'TEMPLATE_JS_INCLUDES', Template::parse('' ) ); Components::append( 'TEMPLATE_CSS_INCLUDES', Template::parse('') ); } public function index() { $reviews = Views::simpleView( 'reviews.list', self::$reviews->byUser() ); Components::set( 'reviews', $reviews ); Views::view( 'reviews.index' ); } public function review( $slug = null ) { $category = self::$categories->findBySlug( $slug ); if ( ! $category ) { $selectedCategory = '0'; $reviewCategorySelect = HoudiniForms::getSelectHtml( 'review_category_id', self::$categories->simple(), $selectedCategory, ); Components::set( 'reviewCategorySelect', $reviewCategorySelect ); } else { $selectedCategory = $category->ID; Components::set( 'reviewCategorySelect', '' ); } if ( ! Input::exists('submit') ) { return Views::view( 'reviews.create' ); } if ( ! Forms::check( 'createReview' ) ) { Issues::add( 'error', [ 'There was an error with your review.' => Check::userErrors() ] ); return Views::view( 'reviews.create' ); } $result = self::$reviews->create( Input::post('title'), Input::post('rating'), Input::post('review'), Input::post('review_category_id') ); if ( true === $result ) { Session::flash( 'success', 'Your review has been received.' ); Redirect::to( 'home/index' ); } else { Issues::add( 'error', 'There was an unresolved error while submitting your review.' ); return Views::view( 'reviews.create' ); } } }