openlucius-2.0.0-alpha3/modules/apps/ol_files/src/Controller/FilesController.php
modules/apps/ol_files/src/Controller/FilesController.php
<?php
namespace Drupal\ol_files\Controller;
use Drupal\Component\Utility\Html;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Form\FormBuilder;
use Drupal\Core\Pager\PagerManager;
use Drupal\Core\Pager\PagerParameters;
use Drupal\ol_files\Services\OlFolders;
use Drupal\ol_files\Services\OlTextDocs;
use Drupal\ol_main\Services\OlComments;
use Drupal\ol_main\Services\OlFiles;
use Drupal\ol_main\Services\OlSections;
use Drupal\ol_members\Services\OlMembers;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Class FilesController.
*/
class FilesController extends ControllerBase {
/**
* @var $form_builder
*/
protected $form_builder;
/**
* @var $files
*/
protected $files;
/**
* @var $folders
*/
protected $folders;
/**
* @var $pager
*/
protected $pager;
/**
* @var $pager_params
*/
protected $pager_params;
/**
* @var $text_docs
*/
protected $text_docs;
/**
* @var $comments
*/
protected $comments;
/**
* @var $members
*/
protected $members;
/**
* @var $sections
*/
protected $sections;
/**
* {@inheritdoc}
*/
public function __construct(FormBuilder $form_builder, OlFiles $files, OlFolders $folders, PagerManager $pager, PagerParameters $pager_params, OlTextDocs $text_docs, OlComments $comments, OlMembers $members, OlSections $sections) {
$this->form_builder = $form_builder;
$this->files = $files;
$this->folders = $folders;
$this->pager = $pager;
$this->pager_params = $pager_params;
$this->text_docs = $text_docs;
$this->comments = $comments;
$this->members = $members;
$this->sections = $sections;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('form_builder'),
$container->get('olmain.files'),
$container->get('olfiles.folders'),
$container->get('pager.manager'),
$container->get('pager.parameters'),
$container->get('olfiles.textdocs'),
$container->get('olmain.comments'),
$container->get('olmembers.members'),
$container->get('olmain.sections')
);
}
/**
* @param $gid
*
* @return mixed
*/
public function getFiles($gid){
$folders = $this->folders->getFoldersData($gid);
$path = \Drupal::request()->getpathInfo();
$current_folder = Html::escape(\Drupal::request()->query->get('folder'));
$page_title = $this->sections->getSectionOverrideTitle('files', 'Docs & Files');
// Get forms.
$file_form = $this->form_builder->getForm(\Drupal\ol_files\Form\AddOlFileForm::class);
$folder_form = $this->form_builder->getForm(\Drupal\ol_files\Form\AddFolderForm::class);
$remove_from_folder = $this->form_builder->getForm(\Drupal\ol_files\Form\RemoveFileFromFolderForm::class);
$text_doc_form = $this->form_builder->getForm(\Drupal\ol_files\Form\TextDocForm::class);
// Pager initialization.
$page = $this->pager_params->findPage();
$num_per_page = 10;
$offset = $num_per_page * $page;
// Get and render files.
$file_list_data = $this->files->getFileListPage($num_per_page, $offset, false, $current_folder);
$files = $this->files->renderFileListPage($file_list_data);
// Pager, now that we have the total number of results .
$total_result = $this->files->getFileListPage(null, null, true, $current_folder);
$pager = $this->pager->createPager($total_result, $num_per_page);
$pager->getCurrentPage();
// Build theme vars.
$theme_vars = [
'file_form' => $file_form,
'files' => $files,
'folder_form' => $folder_form,
'folders' => $folders,
'path' => $path,
'current_folder' => $current_folder,
'remove_from_folder' => $remove_from_folder,
'text_doc_form' => $text_doc_form,
'page_title' => $page_title,
];
// Build render array.
$render[] = [
'#theme' => 'files_list',
'#vars' => $theme_vars,
'#type' => 'remote',
'#attached' => [
'library' => 'ol_files/ol_files',
],
];
// Add pager to the render array and return.
$render[] = ['#type' => 'pager'];
return $render;
}
/**
* Needs to be migrated to dynamic form -and modal.
*/
public function removeFolder(){
$this->folders->removeFolder();
}
public function getTextDoc($id){
// Get data.
$data = $this->text_docs->getTextDocData($id);
$title = $this->text_docs->getTextDocTitle($data);
$text_doc = $this->text_docs->renderTextDoc($data);
$comment_form = \Drupal::formBuilder()->getForm(\Drupal\ol_main\Form\CommentForm::class, null, null, 'text_doc', $id);
$comment_items = $this->comments->getComments($id, 'text_doc', 'asc');
$current_user_picture = $this->members->getUserPictureUrl(); // Should move to CommentForm
// Build it.
$theme_vars = [
'text_doc' => $text_doc,
'title' => $title,
'comment_form' => $comment_form,
'comment_items' => $comment_items,
'current_user_picture' => $current_user_picture,
];
return [
'#theme' => 'text_doc_page',
'#vars' => $theme_vars,
'#attached' => [
'library' => [
'ol_messages/ol_messages',
'ol_main/ol_comments'
],
],
];
}
}
