1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| <?php
namespace App\Frontend\Modules\News;
use \OCFram\BackController;
use \OCFram\HTTPRequest;
use \Entity\Comment;
use \FormBuilder\CommentFormBuilder;
use \OCFram\FormHandler;
use \OCFram\Cache;
class NewsController extends BackController
{
public function executeIndex(HTTPRequest $request)
{
$nombreNews = $this->app->config()->get('nombre_news');
$nombreCaracteres = $this->app->config()->get('nombre_caracteres');
// On ajoute une définition pour le titre.
$this->page->addVar('title', 'Liste des '.$nombreNews.' dernières news');
// On récupère le manager des news.
$manager = $this->managers->getManagerOf('News');
$listeNews = $manager->getList(0, $nombreNews);
foreach ($listeNews as $news)
{
if (strlen($news->contenu()) > $nombreCaracteres)
{
$debut = substr($news->contenu(), 0, $nombreCaracteres);
$debut = substr($debut, 0, strrpos($debut, ' ')) . '...';
$news->setContenu($debut);
}
}
// On ajoute la variable $listeNews à la vue.
$this->page->addVar('listeNews', $listeNews);
}
public function executeShow(HTTPRequest $request)
{
$news = $this->managers->getManagerOf('News')->getUnique($request->getData('id'));
if (empty($news))
{
$this->app->httpResponse()->redirect404();
}
$this->page->addVar('title', $news->titre());
$this->page->addVar('news', $news);
$this->page->addVar('comments', $this->managers->getManagerOf('Comments')->getListOf($news->id()));
}
public function executeInsertComment(HTTPRequest $request)
{
// Si le formulaire a été envoyé.
if ($request->method() == 'POST')
{
$comment = new Comment([
'news' => $request->getData('news'),
'auteur' => $request->postData('auteur'),
'contenu' => $request->postData('contenu')
]);
}
else
{
$comment = new Comment;
}
$formBuilder = new CommentFormBuilder($comment);
$formBuilder->build();
$form = $formBuilder->form();
$formHandler = new FormHandler($form, $this->managers->getManagerOf('Comments'), $request);
if ($formHandler->process())
{
$this->app->user()->setFlash('Le commentaire a bien été ajouté, merci !');
$this->app->httpResponse()->redirect('news-'.$request->getData('news').'.html');
}
$this->page->addVar('comment', $comment);
$this->page->addVar('form', $form->createView());
$this->page->addVar('title', 'Ajout d\'un commentaire');
}
} |
Partager