| Current Path : /var/www/html/components/com_jchat/Controller/ |
| Current File : /var/www/html/components/com_jchat/Controller/AttachmentsController.php |
<?php
namespace JExtstore\Component\JChat\Site\Controller;
/**
* @package JCHAT::ATTACHMENTS::components::com_jchat
* @subpackage controllers
* @author Joomla! Extensions Store
* @copyright (C) 2024 - Joomla! Extensions Store
* @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html
*/
defined('_JEXEC') or die('Restricted access');
use JExtstore\Component\JChat\Administrator\Framework\Controller as JChatController;
/**
* Attachment files controller
* Manage all actions, from show to upload/download
*
* @package JCHAT::ATTACHMENTS::components::com_jchat
* @subpackage controllers
* @since 1.0
*/
class AttachmentsController extends JChatController {
/**
* Set model state always getting fresh vars from POST request
*
* @access protected
* @param string $scope
* @param boolean $ordering
* @return object
*/
protected function setModelState($scope = 'default', $ordering = true): object {
// Get default model
$defaultModel = $this->getModel();
// Set model state for basic stream
$defaultModel->setState('from', $this->app->getInput()->getString('from', session_id()));
$defaultModel->setState('to', $this->app->getInput()->getString('to', -1));
$defaultModel->setState('tologged', $this->app->getInput()->getInt('tologged'));
$defaultModel->setState('option', $this->option);
$defaultModel->setState('receiver', $this->app->getInput()->getString('receiver', null));
$defaultModel->setState('idMessage', $this->app->getInput()->getInt('idMessage', 0));
$defaultModel->setState('isLiveStreaming', $this->app->getInput()->getInt('livestreaming', null));
return $defaultModel;
}
/**
* Display only form for users
*
* @access public
* @return void
*/
public function display($cachable = false, $urlparams = false) {
// Populate model state and get model
$model = $this->setModelState('chatattachments', false);
// Show always form view
parent::display($cachable, $urlparams);
}
/**
* Save uploaded file to cache folder to let it stream to target user
*
* @access public
* @return bool
*/
public function saveEntity(): bool {
// Populate model state and get model
$model = $this->setModelState('chatattachments', false);
// Upload file
$model->storeEntity();
// Show always form view
parent::display();
return true;
}
/**
* Download uploaded file sent by other user, view not needed in this case
*
* @access public
* @return void
*/
public function showEntity() {
// Populate model state and get model
$model = $this->setModelState('chatattachments', false);
// Upload file
$model->loadEntity();
}
}