guni12/comment

View on GitHub
src/Comments/CommController.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Anax\Comments;

use \Anax\Configure\ConfigureInterface;
use \Anax\Configure\ConfigureTrait;
use \Anax\DI\InjectionAwareInterface;
use \Anax\DI\InjectionAwareTrait;
use \Anax\Comments\HTMLForm\CreateCommForm;
use \Anax\Comments\HTMLForm\UpdateCommForm;
use \Anax\Comments\HTMLForm\DeleteCommForm;
use \Anax\Comments\HTMLForm\AdminDeleteCommForm;
use \Anax\Comments\ShowOneService;
use \Anax\Comments\ShowAllService;

/**
 * A controller class.
 */
class CommController implements
    ConfigureInterface,
    InjectionAwareInterface
{
    use ConfigureTrait,
        InjectionAwareTrait;


    /**
     * Sends data to view
     *
     * @param string $title
     * @param string $crud, path to view
     * @param array $data, htmlcontent to view
     */
    public function toRender($title, $crud, $data)
    {
        $view       = $this->di->get("view");
        $pageRender = $this->di->get("pageRender");
        $view->add($crud, $data);
        $tempfix = "";
        $pageRender->renderPage($tempfix, ["title" => $title]);
    }


    /**
     * Show all items.
     *
     * @return void
     */
    public function getIndex()
    {
        $title      = "Inlägg";

        $text = new ShowAllService($this->di);

        $data = [
            "items" => $text->getHTML(),
        ];

        $crud = "comm/crud/front";
        $this->toRender($title, $crud, $data);
    }



    /**
     * Handler with form to create a new item.
     *
     * @return void
     */
    public function getPostCreateItem($id = null)
    {
        $title      = "Skriv ett inlägg";

        $session = $this->di->get("session");
        $sess = $session->get("user");

        if ($sess) {
            $form       = new CreateCommForm($this->di, $sess['id'], $id);
            $form->check();

            $data = [
                "form" => $form->getHTML(),
            ];
        } else {
            $data = [
                "form" => "Enbart för inloggade. Sorry!",
            ];
        }

        $crud = "comm/crud/create";
        $this->toRender($title, $crud, $data);
    }


    /**
    *
    * @return sessionobject
    */
    public function getSess()
    {
        $session = $this->di->get("session");
        $sess = $session->get("user");
        return $sess;
    }


    /**
     * Handler with form to delete an item.
     *
     * @return void
     */
    public function getPostDeleteItem($id)
    {
        $title      = "Ta bort ett inlägg";
        $sess = $this->getSess();

        if ($sess) {
            $form       = new DeleteCommForm($this->di, $id);
            $form->check();

            $data = [
                "form" => $form->getHTML(),
            ];
        } else {
            $data = [
                "form" => "Enbart för inloggade. Sorry!",
            ];
        }

        $crud = "comm/crud/delete";
        $this->toRender($title, $crud, $data);
    }



    /**
     * Handler with form to update an item.
     *
     * @return void
     */
    public function getPostAdminDeleteItem()
    {
        $title      = "Ta bort text";
        $form       = new AdminDeleteCommForm($this->di);

        $form->check();

        $data = [
            "form" => $form->getHTML(),
        ];

        $crud = "comm/crud/admindelete";
        $this->toRender($title, $crud, $data);
    }



    /**
     * Handler with form to update an item.
     *
     * @return void
     */
    public function getPostUpdateItem($id)
    {
        $title      = "Uppdatera ditt inlägg";

        $sess = $this->getSess();

        if ($sess) {
            $form       = new UpdateCommForm($this->di, $id, $sess['id']);
            $form->check();

            $data = [
                "form" => $form->getHTML(),
            ];
        } else {
            $data = [
                "form" => "Enbart för inloggade. Sorry!",
            ];
        }

        $crud = "comm/crud/update";
        $this->toRender($title, $crud, $data);
    }


    /**
     * Handler with form to just show an item.
     *
     * @return void
     */
    public function getPostShow($id)
    {
        $title      = "Inlägg";
        $text       = new ShowOneService($this->di, $id);

        $data = [
            "items" => $text->getHTML(),
        ];

        $crud = "comm/crud/view-one";
        $this->toRender($title, $crud, $data);
    }
}