Rev 15451 | Rev 16766 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php
declare(strict_types=1);
namespace LeadersLinked\Controller;
use Laminas\Db\Adapter\AdapterInterface;
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Log\LoggerInterface;
use Laminas\View\Model\ViewModel;
use Laminas\View\Model\JsonModel;
use LeadersLinked\Library\Functions;
use LeadersLinked\Library\Image;
use LeadersLinked\Mapper\NetworkMapper;
use LeadersLinked\Form\MyPrivateNetwork\MyPrivateNetworkIntroForm;
use LeadersLinked\Form\MyPrivateNetwork\MyPrivateNetworkStylesForm;
use LeadersLinked\Form\MyPrivateNetwork\MyPrivateNetworkLogoForm;
use LeadersLinked\Form\MyPrivateNetwork\MyPrivateNetworkCalendarForm;
use LeadersLinked\Mapper\ThemeMapper;
class MyPrivateNetworkController extends AbstractActionController
{
/**
*
* @var AdapterInterface
*/
private $adapter;
/**
*
* @var AbstractAdapter
*/
private $cache;
/**
*
* @var LoggerInterface
*/
private $logger;
/**
*
* @var array
*/
private $config;
/**
*
* @param AdapterInterface $adapter
* @param AbstractAdapter $cache
* @param LoggerInterface $logger
* @param array $config
*/
public function __construct($adapter, $cache , $logger, $config)
{
$this->adapter = $adapter;
$this->cache = $cache;
$this->logger = $logger;
$this->config = $config;
}
/**
*
* Generación del listado de perfiles
* {@inheritDoc}
* @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
*/
public function indexAction()
{
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
public function introAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
$currentNetwork = $currentNetworkPlugin->getNetwork();
$networkMapper = NetworkMapper::getInstance($this->adapter);
$network = $networkMapper->fetchOne($currentNetwork->id);
$request = $this->getRequest();
if($request->isGet()) {
$form = new MyPrivateNetworkIntroForm();
$form->setData([
'intro' => $network->intro
]);
$this->layout()->setTemplate('layout/layout-backend');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/my-private-network/intro.phtml');
$viewModel->setVariable('form', $form);
return $viewModel ;
}
else if($request->isPost()) {
$form = new MyPrivateNetworkIntroForm();;
$dataPost = $request->getPost()->toArray();
$form->setData($dataPost);
if($form->isValid()) {
$dataPost = (array) $form->getData();
$network->intro = $dataPost['intro'];
if($networkMapper->update($network)) {
$this->logger->info('Se actualizo el texto intro de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
'data' => 'LABEL_RECORD_UPDATED'
];
} else {
$data = [
'success' => false,
'data' => $networkMapper->getError()
];
}
return new JsonModel($data);
} else {
$messages = [];
$form_messages = (array) $form->getMessages();
foreach($form_messages as $fieldname => $field_messages)
{
$messages[$fieldname] = array_values($field_messages);
}
return new JsonModel([
'success' => false,
'data' => $messages
]);
}
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
return new JsonModel($data);
}
public function stylesAndColorsAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
$currentNetwork = $currentNetworkPlugin->getNetwork();
$networkMapper = NetworkMapper::getInstance($this->adapter);
$network = $networkMapper->fetchOne($currentNetwork->id);
$request = $this->getRequest();
if($request->isGet()) {
$search_key = 'css_';
$search_length = strlen($search_key);
$search_exclude_key = 'css_calendar_';
$search_exclude_length = strlen($search_exclude_key);
$data = [];
foreach($network as $key => $value)
{
if(substr($key, 0, $search_length) == $search_key && substr($key, 0, $search_exclude_length) != $search_exclude_key ) {
$data[$key] = $network->{$key};
}
}
$form = new MyPrivateNetworkStylesForm();
$form->setData($data);
$this->layout()->setTemplate('layout/layout-backend');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/my-private-network/styles-and-colors.phtml');
$viewModel->setVariable('form', $form);
return $viewModel ;
}
else if($request->isPost()) {
$form = new MyPrivateNetworkStylesForm();
$dataPost = $request->getPost()->toArray();
$form->setData($dataPost);
if($form->isValid()) {
$search_key = 'css_';
$search_length = strlen($search_key);
$search_exclude_key = 'css_calendar_';
$search_exclude_length = strlen($search_exclude_key);
$dataPost = (array) $form->getData();
foreach($network as $key => $value)
{
if(substr($key, 0, $search_length) == $search_key && substr($key, 0, $search_exclude_length) != $search_exclude_key ) {
$network->{$key} = $dataPost[$key];
}
}
if($networkMapper->update($network)) {
$this->logger->info('Se actualizo los estilos y colores de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
'data' => 'LABEL_RECORD_UPDATED'
];
} else {
$data = [
'success' => false,
'data' => $networkMapper->getError()
];
}
return new JsonModel($data);
} else {
$messages = [];
$form_messages = (array) $form->getMessages();
foreach($form_messages as $fieldname => $field_messages)
{
$messages[$fieldname] = array_values($field_messages);
}
return new JsonModel([
'success' => false,
'data' => $messages
]);
}
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
return new JsonModel($data);
}
public function logoAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
$currentNetwork = $currentNetworkPlugin->getNetwork();
$networkMapper = NetworkMapper::getInstance($this->adapter);
$network = $networkMapper->fetchOne($currentNetwork->id);
$themeMapper = ThemeMapper::getInstance($this->adapter);
$theme = $themeMapper->fetchOne($currentNetwork->theme_id);
$request = $this->getRequest();
if($request->isGet()) {
$form = new MyPrivateNetworkLogoForm();
$this->layout()->setTemplate('layout/layout-backend');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/my-private-network/logo.phtml');
$viewModel->setVariables([
'form' => $form,
'image_size' => $theme->imagesize_logo,
]);
return $viewModel ;
}
else if($request->isPost()) {
$form = new MyPrivateNetworkLogoForm();
$dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
$form->setData($dataPost);
if($form->isValid()) {
$dataPost = (array) $form->getData();
list($target_width, $target_height) = explode('x', $theme->imagesize_logo);
$path = $this->config['leaderslinked.fullpath.network'];
$target_path = $path . $currentNetwork->uuid;
if(!file_exists($target_path)) {
mkdir($target_path, 0755, true);
}
$files = $this->getRequest()->getFiles()->toArray();
$tmp_filename = $files['file']['tmp_name'];
try {
if($network->logo) {
if(!image ::delete($target_path, $network->logo)) {
return new JsonModel([
'success' => false,
'data' => 'ERROR_THERE_WAS_AN_ERROR'
]);
}
}
$filename = 'logo.png';
$crop_to_dimensions = false;
if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
$network->logo = $filename;
;
}
} catch(\Throwable $e) {
error_log($e->getTraceAsString());
}
if($networkMapper->update($network)) {
$this->logger->info('Se actualizo el logo de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
'data' => 'LABEL_RECORD_UPDATED'
];
} else {
$data = [
'success' => false,
'data' => $networkMapper->getError()
];
}
return new JsonModel($data);
} else {
$messages = [];
$form_messages = (array) $form->getMessages();
foreach($form_messages as $fieldname => $field_messages)
{
$messages[$fieldname] = array_values($field_messages);
}
return new JsonModel([
'success' => false,
'data' => $messages
]);
}
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
return new JsonModel($data);
}
public function navbarAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
$currentNetwork = $currentNetworkPlugin->getNetwork();
$networkMapper = NetworkMapper::getInstance($this->adapter);
$network = $networkMapper->fetchOne($currentNetwork->id);
$themeMapper = ThemeMapper::getInstance($this->adapter);
$theme = $themeMapper->fetchOne($currentNetwork->theme_id);
$request = $this->getRequest();
if($request->isGet()) {
$form = new MyPrivateNetworkLogoForm();
$this->layout()->setTemplate('layout/layout-backend');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/my-private-network/navbar.phtml');
$viewModel->setVariables([
'form' => $form,
'image_size' => $theme->imagesize_navbar,
]);
return $viewModel ;
}
else if($request->isPost()) {
$form = new MyPrivateNetworkLogoForm();
$dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
$form->setData($dataPost);
if($form->isValid()) {
$dataPost = (array) $form->getData();
list($target_width, $target_height) = explode('x', $theme->imagesize_navbar);
$path = $this->config['leaderslinked.fullpath.network'];
$target_path = $path . $currentNetwork->uuid;
if(!file_exists($target_path)) {
mkdir($target_path, 0755, true);
}
$files = $this->getRequest()->getFiles()->toArray();
$tmp_filename = $files['file']['tmp_name'];
try {
if($network->navbar) {
if(!image ::delete($target_path, $network->navbar)) {
return new JsonModel([
'success' => false,
'data' => 'ERROR_THERE_WAS_AN_ERROR'
]);
}
}
$filename = 'navbar.png';
$crop_to_dimensions = false;
if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
$network->navbar = $filename;
;
}
} catch(\Throwable $e) {
error_log($e->getTraceAsString());
}
if($networkMapper->update($network)) {
$this->logger->info('Se actualizo el navbar de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
'data' => 'LABEL_RECORD_UPDATED'
];
} else {
$data = [
'success' => false,
'data' => $networkMapper->getError()
];
}
return new JsonModel($data);
} else {
$messages = [];
$form_messages = (array) $form->getMessages();
foreach($form_messages as $fieldname => $field_messages)
{
$messages[$fieldname] = array_values($field_messages);
}
return new JsonModel([
'success' => false,
'data' => $messages
]);
}
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
return new JsonModel($data);
}
public function faviconAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
$currentNetwork = $currentNetworkPlugin->getNetwork();
$networkMapper = NetworkMapper::getInstance($this->adapter);
$network = $networkMapper->fetchOne($currentNetwork->id);
$themeMapper = ThemeMapper::getInstance($this->adapter);
$theme = $themeMapper->fetchOne($currentNetwork->theme_id);
$request = $this->getRequest();
if($request->isGet()) {
$form = new MyPrivateNetworkLogoForm();
$this->layout()->setTemplate('layout/layout-backend');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/my-private-network/favico.phtml');
$viewModel->setVariables([
'form' => $form,
'image_size' => $theme->imagesize_favico,
]);
return $viewModel ;
}
else if($request->isPost()) {
$form = new MyPrivateNetworkLogoForm();
$dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
$form->setData($dataPost);
if($form->isValid()) {
$dataPost = (array) $form->getData();
list($target_width, $target_height) = explode('x', $theme->imagesize_favico);
$path = $this->config['leaderslinked.fullpath.network'];
$target_path = $path . $currentNetwork->uuid;
if(!file_exists($target_path)) {
mkdir($target_path, 0755, true);
}
$files = $this->getRequest()->getFiles()->toArray();
$tmp_filename = $files['file']['tmp_name'];
try {
if($network->favico) {
if(!image ::delete($target_path, $network->favico)) {
return new JsonModel([
'success' => false,
'data' => 'ERROR_THERE_WAS_AN_ERROR'
]);
}
}
$filename = 'favico.png';
$crop_to_dimensions = false;
if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
$network->favico = $filename;
;
}
} catch(\Throwable $e) {
error_log($e->getTraceAsString());
}
if($networkMapper->update($network)) {
$this->logger->info('Se actualizo el favico de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
'data' => 'LABEL_RECORD_UPDATED'
];
} else {
$data = [
'success' => false,
'data' => $networkMapper->getError()
];
}
return new JsonModel($data);
} else {
$messages = [];
$form_messages = (array) $form->getMessages();
foreach($form_messages as $fieldname => $field_messages)
{
$messages[$fieldname] = array_values($field_messages);
}
return new JsonModel([
'success' => false,
'data' => $messages
]);
}
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
return new JsonModel($data);
}
public function calendarAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
$currentNetwork = $currentNetworkPlugin->getNetwork();
$networkMapper = NetworkMapper::getInstance($this->adapter);
$network = $networkMapper->fetchOne($currentNetwork->id);
$request = $this->getRequest();
if($request->isGet()) {
$search_key = 'css_calendar_';
$search_length = strlen($search_key);
$data = [];
foreach($network as $key => $value)
{
if(substr($key, 0, $search_length) == $search_key) {
$data[$key] = $network->{$key};
}
}
$form = new MyPrivateNetworkCalendarForm();
$form->setData($data);
$this->layout()->setTemplate('layout/layout-backend');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/my-private-network/calendar.phtml');
$viewModel->setVariable('form', $form);
return $viewModel ;
}
else if($request->isPost()) {
$form = new MyPrivateNetworkCalendarForm();
$dataPost = $request->getPost()->toArray();
$form->setData($dataPost);
if($form->isValid()) {
$dataPost = (array) $form->getData();
$search_key = 'css_calendar_';
$search_length = strlen($search_key);
foreach($network as $key => $value)
{
if(substr($key, 0, $search_length) == $search_key) {
$network->{$key} = $dataPost[$key];
}
}
if($networkMapper->update($network)) {
$this->logger->info('Se actualizo los colores del calendario de la red : ' . $network->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
'data' => 'LABEL_RECORD_UPDATED'
];
} else {
$data = [
'success' => false,
'data' => $networkMapper->getError()
];
}
return new JsonModel($data);
} else {
$messages = [];
$form_messages = (array) $form->getMessages();
foreach($form_messages as $fieldname => $field_messages)
{
$messages[$fieldname] = array_values($field_messages);
}
return new JsonModel([
'success' => false,
'data' => $messages
]);
}
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
return new JsonModel($data);
}
}