Rev 15376 | Rev 15459 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(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\Hydrator\ObjectPropertyHydrator;use LeadersLinked\Library\Image;use LeadersLinked\Mapper\CompanyMapper;use LeadersLinked\Mapper\CompanyMicrolearningTopicMapper;use LeadersLinked\Model\CompanyMicrolearningTopic;use LeadersLinked\Form\TopicAddForm;use LeadersLinked\Form\TopicEditForm;use LeadersLinked\Mapper\CompanyMicrolearningCapsuleMapper;use LeadersLinked\Form\MyPrivateNetworkIntroForm;use LeadersLinked\Mapper\NetworkMapper;use LeadersLinked\Form\MyPrivateNetworkStylesFilter;use LeadersLinked\Form\MyPrivateNetworkStylesForm;use LeadersLinked\Form\MyPrivateNetworkLogoForm;use LeadersLinked\Form\MyPrivateNetworkCalendarForm;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);$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' => $this->config['leaderslinked.image_sizes.network_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', $this->config['leaderslinked.image_sizes.network_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);$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' => $this->config['leaderslinked.image_sizes.network_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', $this->config['leaderslinked.image_sizes.network_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);$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' => $this->config['leaderslinked.image_sizes.network_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', $this->config['leaderslinked.image_sizes.network_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);}}