| 1 | www | 1 | <?php
 | 
        
           |  |  | 2 | declare(strict_types=1);
 | 
        
           |  |  | 3 |   | 
        
           |  |  | 4 | namespace LeadersLinked\Controller;
 | 
        
           |  |  | 5 |   | 
        
           |  |  | 6 | use Laminas\Db\Adapter\AdapterInterface;
 | 
        
           |  |  | 7 | use Laminas\Cache\Storage\Adapter\AbstractAdapter;
 | 
        
           |  |  | 8 | use Laminas\Mvc\Controller\AbstractActionController;
 | 
        
           |  |  | 9 | use Laminas\Log\LoggerInterface;
 | 
        
           |  |  | 10 | use Laminas\View\Model\ViewModel;
 | 
        
           |  |  | 11 | use Laminas\View\Model\JsonModel;
 | 
        
           |  |  | 12 |   | 
        
           |  |  | 13 | use LeadersLinked\Library\Functions;
 | 
        
           |  |  | 14 | use LeadersLinked\Hydrator\ObjectPropertyHydrator;
 | 
        
           |  |  | 15 | use LeadersLinked\Library\Image;
 | 
        
           |  |  | 16 |   | 
        
           |  |  | 17 |   | 
        
           |  |  | 18 | use LeadersLinked\Mapper\CompanyMapper;
 | 
        
           |  |  | 19 | use LeadersLinked\Mapper\CompanyMicrolearningTopicMapper;
 | 
        
           |  |  | 20 | use LeadersLinked\Mapper\CompanyMicrolearningCapsuleMapper;
 | 
        
           |  |  | 21 | use LeadersLinked\Mapper\CompanyMicrolearningSlideMapper;
 | 
        
           |  |  | 22 | use LeadersLinked\Model\CompanyMicrolearningSlide;
 | 
        
           |  |  | 23 | use LeadersLinked\Model\VideoConvert;
 | 
        
           |  |  | 24 | use LeadersLinked\Mapper\VideoConvertMapper;
 | 
        
           |  |  | 25 | use LeadersLinked\Form\SlideForm;
 | 
        
           |  |  | 26 | use LeadersLinked\Form\SlideTextAddForm;
 | 
        
           |  |  | 27 | use LeadersLinked\Form\SlideTextEditForm;
 | 
        
           |  |  | 28 | use LeadersLinked\Form\SlideImageAddForm;
 | 
        
           |  |  | 29 | use LeadersLinked\Form\SlideImageEditForm;
 | 
        
           |  |  | 30 | use LeadersLinked\Form\SlideVideoAddForm;
 | 
        
           |  |  | 31 | use LeadersLinked\Form\SlideDocumentAddForm;
 | 
        
           |  |  | 32 | use LeadersLinked\Form\SlideDocumentEditForm;
 | 
        
           |  |  | 33 | use LeadersLinked\Form\SlideAudioAddForm;
 | 
        
           |  |  | 34 | use LeadersLinked\Form\SlideAudioEditForm;
 | 
        
           |  |  | 35 | use LeadersLinked\Form\SlideQuizzAddForm;
 | 
        
           |  |  | 36 | use LeadersLinked\Form\SlideQuizzEditForm;
 | 
        
           |  |  | 37 | use LeadersLinked\Form\SlideVideoEditForm;
 | 
        
           |  |  | 38 |   | 
        
           |  |  | 39 |   | 
        
           |  |  | 40 | class MicrolearningSlideController extends AbstractActionController
 | 
        
           |  |  | 41 | {
 | 
        
           |  |  | 42 |     /**
 | 
        
           |  |  | 43 |      *
 | 
        
           |  |  | 44 |      * @var AdapterInterface
 | 
        
           |  |  | 45 |      */
 | 
        
           |  |  | 46 |     private $adapter;
 | 
        
           |  |  | 47 |   | 
        
           |  |  | 48 |   | 
        
           |  |  | 49 |     /**
 | 
        
           |  |  | 50 |      *
 | 
        
           |  |  | 51 |      * @var AbstractAdapter
 | 
        
           |  |  | 52 |      */
 | 
        
           |  |  | 53 |     private $cache;
 | 
        
           |  |  | 54 |   | 
        
           |  |  | 55 |     /**
 | 
        
           |  |  | 56 |      *
 | 
        
           |  |  | 57 |      * @var  LoggerInterface
 | 
        
           |  |  | 58 |      */
 | 
        
           |  |  | 59 |     private $logger;
 | 
        
           |  |  | 60 |   | 
        
           |  |  | 61 |   | 
        
           |  |  | 62 |     /**
 | 
        
           |  |  | 63 |      *
 | 
        
           |  |  | 64 |      * @var array
 | 
        
           |  |  | 65 |      */
 | 
        
           |  |  | 66 |     private $config;
 | 
        
           |  |  | 67 |   | 
        
           |  |  | 68 |     /**
 | 
        
           |  |  | 69 |      *
 | 
        
           |  |  | 70 |      * @param AdapterInterface $adapter
 | 
        
           |  |  | 71 |      * @param AbstractAdapter $cache
 | 
        
           |  |  | 72 |      * @param LoggerInterface $logger
 | 
        
           |  |  | 73 |      * @param array $config
 | 
        
           |  |  | 74 |      */
 | 
        
           |  |  | 75 |     public function __construct($adapter, $cache , $logger,  $config)
 | 
        
           |  |  | 76 |     {
 | 
        
           |  |  | 77 |         $this->adapter      = $adapter;
 | 
        
           |  |  | 78 |         $this->cache        = $cache;
 | 
        
           |  |  | 79 |         $this->logger       = $logger;
 | 
        
           |  |  | 80 |         $this->config       = $config;
 | 
        
           |  |  | 81 |   | 
        
           |  |  | 82 |     }
 | 
        
           |  |  | 83 |   | 
        
           |  |  | 84 |     /**
 | 
        
           |  |  | 85 |      *
 | 
        
           |  |  | 86 |      * Generación del listado de perfiles
 | 
        
           |  |  | 87 |      * {@inheritDoc}
 | 
        
           |  |  | 88 |      * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
 | 
        
           |  |  | 89 |      */
 | 
        
           |  |  | 90 |     public function indexAction()
 | 
        
           |  |  | 91 |     {
 | 
        
           |  |  | 92 |         $currentUserPlugin = $this->plugin('currentUserPlugin');
 | 
        
           |  |  | 93 |         $currentUser = $currentUserPlugin->getUser();
 | 
        
           |  |  | 94 |         $currentCompany = $currentUserPlugin->getCompany();
 | 
        
           |  |  | 95 |   | 
        
           |  |  | 96 |         $request = $this->getRequest();
 | 
        
           |  |  | 97 |         if($request->isGet()) {
 | 
        
           |  |  | 98 |   | 
        
           |  |  | 99 |   | 
        
           |  |  | 100 |             $headers  = $request->getHeaders();
 | 
        
           |  |  | 101 |   | 
        
           |  |  | 102 |             $isJson = false;
 | 
        
           |  |  | 103 |             if($headers->has('Accept')) {
 | 
        
           |  |  | 104 |                 $accept = $headers->get('Accept');
 | 
        
           |  |  | 105 |   | 
        
           |  |  | 106 |                 $prioritized = $accept->getPrioritized();
 | 
        
           |  |  | 107 |   | 
        
           |  |  | 108 |                 foreach($prioritized as $key => $value) {
 | 
        
           |  |  | 109 |                     $raw = trim($value->getRaw());
 | 
        
           |  |  | 110 |   | 
        
           |  |  | 111 |                     if(!$isJson) {
 | 
        
           |  |  | 112 |                         $isJson = strpos($raw, 'json');
 | 
        
           |  |  | 113 |                     }
 | 
        
           |  |  | 114 |   | 
        
           |  |  | 115 |                 }
 | 
        
           |  |  | 116 |             }
 | 
        
           |  |  | 117 |   | 
        
           |  |  | 118 |             if($isJson) {
 | 
        
           |  |  | 119 |   | 
        
           |  |  | 120 |   | 
        
           |  |  | 121 |                 $topic_uuid     = filter_var($this->params()->fromQuery('topic_uuid'), FILTER_SANITIZE_STRING);
 | 
        
           |  |  | 122 |                 $capsule_uuid   = filter_var($this->params()->fromQuery('capsule_uuid'), FILTER_SANITIZE_STRING);
 | 
        
           |  |  | 123 |   | 
        
           |  |  | 124 |                 $data = [
 | 
        
           |  |  | 125 |                     'link_add' => '',
 | 
        
           |  |  | 126 |                     'items' => [] ,
 | 
        
           |  |  | 127 |                     'total' => 0,
 | 
        
           |  |  | 128 |   | 
        
           |  |  | 129 |                 ];
 | 
        
           |  |  | 130 |   | 
        
           |  |  | 131 |   | 
        
           |  |  | 132 |                 if(!$topic_uuid) {
 | 
        
           |  |  | 133 |                     return new JsonModel([
 | 
        
           |  |  | 134 |                         'success' => true,
 | 
        
           |  |  | 135 |                         'data' => $data
 | 
        
           |  |  | 136 |                     ]);
 | 
        
           |  |  | 137 |   | 
        
           |  |  | 138 |                 }
 | 
        
           |  |  | 139 |   | 
        
           |  |  | 140 |   | 
        
           |  |  | 141 |                 $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
 | 
        
           |  |  | 142 |                 $topic = $topicMapper->fetchOneByUuid($topic_uuid);
 | 
        
           |  |  | 143 |                 if(!$topic) {
 | 
        
           |  |  | 144 |                     return new JsonModel([
 | 
        
           |  |  | 145 |                         'success' => true,
 | 
        
           |  |  | 146 |                         'data' => 'ERROR_TOPIC_NOT_FOUND'
 | 
        
           |  |  | 147 |                     ]);
 | 
        
           |  |  | 148 |                 }
 | 
        
           |  |  | 149 |   | 
        
           |  |  | 150 |                 if($topic->company_id != $currentCompany->id) {
 | 
        
           |  |  | 151 |                     return new JsonModel([
 | 
        
           |  |  | 152 |                         'success' => true,
 | 
        
           |  |  | 153 |                         'data' => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 154 |                     ]);
 | 
        
           |  |  | 155 |                 }
 | 
        
           |  |  | 156 |   | 
        
           |  |  | 157 |   | 
        
           |  |  | 158 |   | 
        
           |  |  | 159 |                 if(!$capsule_uuid) {
 | 
        
           |  |  | 160 |                     $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
 | 
        
           |  |  | 161 |                     $records = $capsuleMapper->fetchAllByCompanyIdAndTopicId($topic->company_id, $topic->id);
 | 
        
           |  |  | 162 |   | 
        
           |  |  | 163 |                     $capsules = [];
 | 
        
           |  |  | 164 |                     foreach($records as $record)
 | 
        
           |  |  | 165 |                     {
 | 
        
           |  |  | 166 |                         if(!$capsule_uuid) {
 | 
        
           |  |  | 167 |                             $capsule_uuid = $record->uuid;
 | 
        
           |  |  | 168 |                         }
 | 
        
           |  |  | 169 |   | 
        
           |  |  | 170 |                         $capsules[ $record->uuid ] = $record->name;
 | 
        
           |  |  | 171 |                     }
 | 
        
           |  |  | 172 |   | 
        
           |  |  | 173 |                     $data['capsules']  = $capsules;
 | 
        
           |  |  | 174 |                 }
 | 
        
           |  |  | 175 |   | 
        
           |  |  | 176 |                 if(!$capsule_uuid) {
 | 
        
           |  |  | 177 |                     return new JsonModel([
 | 
        
           |  |  | 178 |                         'success' => true,
 | 
        
           |  |  | 179 |                         'data' => $data
 | 
        
           |  |  | 180 |                     ]);
 | 
        
           |  |  | 181 |   | 
        
           |  |  | 182 |                 }
 | 
        
           |  |  | 183 |   | 
        
           |  |  | 184 |                 $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
 | 
        
           |  |  | 185 |                 $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
 | 
        
           |  |  | 186 |   | 
        
           |  |  | 187 |   | 
        
           |  |  | 188 |   | 
        
           |  |  | 189 |                 if(!$capsule) {
 | 
        
           |  |  | 190 |                     return new JsonModel([
 | 
        
           |  |  | 191 |                         'success' => true,
 | 
        
           |  |  | 192 |                         'data' => 'ERROR_CAPSULE_NOT_FOUND'
 | 
        
           |  |  | 193 |                     ]);
 | 
        
           |  |  | 194 |                 }
 | 
        
           |  |  | 195 |   | 
        
           |  |  | 196 |                 if($capsule->topic_id != $topic->id) {
 | 
        
           |  |  | 197 |                     return new JsonModel([
 | 
        
           |  |  | 198 |                         'success' => true,
 | 
        
           |  |  | 199 |                         'data' => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 200 |                     ]);
 | 
        
           |  |  | 201 |                 }
 | 
        
           |  |  | 202 |   | 
        
           |  |  | 203 |                 $search = $this->params()->fromQuery('search', []);
 | 
        
           |  |  | 204 |                 $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
 | 
        
           |  |  | 205 |   | 
        
           |  |  | 206 |                 $page               = intval($this->params()->fromQuery('start', 1), 10);
 | 
        
           |  |  | 207 |                 $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
 | 
        
           |  |  | 208 |                 $order =  $this->params()->fromQuery('order', []);
 | 
        
           |  |  | 209 |                 $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
 | 
        
           |  |  | 210 |                 $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var( $order[0]['dir'], FILTER_SANITIZE_STRING));
 | 
        
           |  |  | 211 |   | 
        
           |  |  | 212 |                 $fields =  ['name'];
 | 
        
           |  |  | 213 |                 $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
 | 
        
           |  |  | 214 |   | 
        
           |  |  | 215 |                 if(!in_array($order_direction, ['ASC', 'DESC'])) {
 | 
        
           |  |  | 216 |                     $order_direction = 'ASC';
 | 
        
           |  |  | 217 |                 }
 | 
        
           |  |  | 218 |   | 
        
           |  |  | 219 |   | 
        
           |  |  | 220 |                 $acl = $this->getEvent()->getViewModel()->getVariable('acl');
 | 
        
           |  |  | 221 |                 $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/slides/add');
 | 
        
           |  |  | 222 |                 $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/slides/edit');
 | 
        
           |  |  | 223 |                 $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/slides/delete');
 | 
        
           |  |  | 224 |   | 
        
           |  |  | 225 |                 $slideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
 | 
        
           |  |  | 226 |                 $paginator = $slideMapper->fetchAllDataTableByCompanyIdAndTopicIdAndCapsuleId($currentCompany->id, $topic->id, $capsule->id,  $search, $page, $records_x_page, $order_field, $order_direction);
 | 
        
           |  |  | 227 |   | 
        
           |  |  | 228 |                 $records = $paginator->getCurrentItems();
 | 
        
           |  |  | 229 |   | 
        
           |  |  | 230 |   | 
        
           |  |  | 231 |                 $items = [];
 | 
        
           |  |  | 232 |                 foreach($records as $record)
 | 
        
           |  |  | 233 |                 {
 | 
        
           |  |  | 234 |   | 
        
           |  |  | 235 |                     $params = [
 | 
        
           |  |  | 236 |                         'topic_uuid'    => $topic->uuid,
 | 
        
           |  |  | 237 |                         'capsule_uuid'  => $capsule->uuid,
 | 
        
           |  |  | 238 |                         'slide_uuid'    => $record->uuid,
 | 
        
           |  |  | 239 |   | 
        
           |  |  | 240 |                     ];
 | 
        
           |  |  | 241 |   | 
        
           |  |  | 242 |   | 
        
           |  |  | 243 |                     $item = [
 | 
        
           |  |  | 244 |   | 
        
           |  |  | 245 |                         'name' => $record->name,
 | 
        
           |  |  | 246 |                         'details' => [
 | 
        
           |  |  | 247 |                             'type' => '',
 | 
        
           |  |  | 248 |                          ],
 | 
        
           |  |  | 249 |                          'media' => [
 | 
        
           |  |  | 250 |                             'image' => '',
 | 
        
           |  |  | 251 |                             'audio' => '',
 | 
        
           |  |  | 252 |                             'video' => '',
 | 
        
           |  |  | 253 |                             'document' => '',
 | 
        
           |  |  | 254 |                             'text'
 | 
        
           |  |  | 255 |                         ],
 | 
        
           |  |  | 256 |   | 
        
           |  |  | 257 |                         'actions' => [
 | 
        
           |  |  | 258 |                             'link_edit' => $allowEdit ? $this->url()->fromRoute('microlearning/content/slides/edit', $params)  : '',
 | 
        
           |  |  | 259 |                             'link_delete' => $allowDelete ? $this->url()->fromRoute('microlearning/content/slides/delete', $params )  : '',
 | 
        
           |  |  | 260 |                          ],
 | 
        
           |  |  | 261 |   | 
        
           |  |  | 262 |                     ];
 | 
        
           |  |  | 263 |   | 
        
           |  |  | 264 |   | 
        
           |  |  | 265 |                     switch($record->type)
 | 
        
           |  |  | 266 |                     {
 | 
        
           |  |  | 267 |                         case CompanyMicrolearningSlide::TYPE_AUDIO :
 | 
        
           |  |  | 268 |   | 
        
           |  |  | 269 |                             $item['media']['audio'] =  $this->url()->fromRoute('storage', ['type' => 'microlearning-slide', 'code' => $record->uuid, 'filename' =>  $record->file ]);
 | 
        
           |  |  | 270 |                             $item['media']['image'] = $this->url()->fromRoute('storage', ['type' => 'microlearning-slide', 'code' => $record->uuid, 'filename' =>  $record->background ]);
 | 
        
           |  |  | 271 |                             $item['details']['type'] = 'LABEL_AUDIO';
 | 
        
           |  |  | 272 |                             break;
 | 
        
           |  |  | 273 |   | 
        
           |  |  | 274 |                         case CompanyMicrolearningSlide::TYPE_VIDEO :
 | 
        
           |  |  | 275 |                             $item['media']['video'] =  $this->url()->fromRoute('storage', ['type' => 'microlearning-slide', 'code' => $record->uuid, 'filename' =>  $record->file ]);
 | 
        
           |  |  | 276 |                             $item['media']['image'] = $this->url()->fromRoute('storage', ['type' => 'microlearning-slide', 'code' => $record->uuid, 'filename' =>  $record->background ]);
 | 
        
           |  |  | 277 |                             $item['details']['type'] = 'LABEL_VIDEO';
 | 
        
           |  |  | 278 |                             break;
 | 
        
           |  |  | 279 |   | 
        
           |  |  | 280 |                         case CompanyMicrolearningSlide::TYPE_DOCUMENT :
 | 
        
           |  |  | 281 |                             $item['media']['document'] =  $this->url()->fromRoute('storage', ['type' => 'microlearning-slide', 'code' => $record->uuid, 'filename' =>  $record->file ]);
 | 
        
           |  |  | 282 |                             $item['media']['image'] = $this->url()->fromRoute('storage', ['type' => 'microlearning-slide', 'code' => $record->uuid, 'filename' =>  $record->background ]);
 | 
        
           |  |  | 283 |                             $item['details']['type'] = 'LABEL_DOCUMENT';
 | 
        
           |  |  | 284 |                             break;
 | 
        
           |  |  | 285 |   | 
        
           |  |  | 286 |                         case CompanyMicrolearningSlide::TYPE_TEXT :
 | 
        
           |  |  | 287 |                             $item['media']['image'] = $this->url()->fromRoute('storage', ['type' => 'microlearning-slide', 'code' => $record->uuid, 'filename' =>  $record->background ]);
 | 
        
           |  |  | 288 |                             $item['media']['text'] = $this->url()->fromRoute('microlearning/content/slides/text', $params);
 | 
        
           |  |  | 289 |                             $item['details']['type'] = 'LABEL_TEXT';
 | 
        
           |  |  | 290 |                             break;
 | 
        
           |  |  | 291 |   | 
        
           |  |  | 292 |                         case CompanyMicrolearningSlide::TYPE_QUIZ :
 | 
        
           |  |  | 293 |                             $item['media']['image'] = $this->url()->fromRoute('storage', ['type' => 'microlearning-slide', 'code' => $record->uuid, 'filename' =>  $record->background ]);
 | 
        
           |  |  | 294 |                             $item['details']['type'] = 'LABEL_QUIZ';
 | 
        
           |  |  | 295 |                             break;
 | 
        
           |  |  | 296 |   | 
        
           |  |  | 297 |                         case CompanyMicrolearningSlide::TYPE_IMAGE :
 | 
        
           |  |  | 298 |                             $item['media']['image'] = $this->url()->fromRoute('storage', ['type' => 'microlearning-slide', 'code' => $record->uuid, 'filename' =>  $record->file ]);
 | 
        
           |  |  | 299 |                             $item['details']['type'] = 'LABEL_IMAGE';
 | 
        
           |  |  | 300 |                             break;
 | 
        
           |  |  | 301 |   | 
        
           |  |  | 302 |                     }
 | 
        
           |  |  | 303 |   | 
        
           |  |  | 304 |   | 
        
           |  |  | 305 |                     array_push($items, $item);
 | 
        
           |  |  | 306 |   | 
        
           |  |  | 307 |                 }
 | 
        
           |  |  | 308 |   | 
        
           |  |  | 309 |                 if($allowAdd && $topic && $capsule) {
 | 
        
           |  |  | 310 |                     $data['link_add'] = $this->url()->fromRoute('microlearning/content/slides/add', ['topic_uuid' => $topic->uuid, 'capsule_uuid' => $capsule->uuid ]);
 | 
        
           |  |  | 311 |                 }
 | 
        
           |  |  | 312 |                 $data['items'] = $items;
 | 
        
           |  |  | 313 |                 $data['total'] = $paginator->getTotalItemCount();
 | 
        
           |  |  | 314 |   | 
        
           |  |  | 315 |                 return new JsonModel([
 | 
        
           |  |  | 316 |                     'success' => true,
 | 
        
           |  |  | 317 |                     'data' => $data
 | 
        
           |  |  | 318 |                 ]);
 | 
        
           |  |  | 319 |   | 
        
           |  |  | 320 |             } else {
 | 
        
           |  |  | 321 |                 $image_size = $this->config['leaderslinked.image_sizes.microlearning_image_upload'];
 | 
        
           |  |  | 322 |   | 
        
           |  |  | 323 |                 $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
 | 
        
           |  |  | 324 |                 $topics = $topicMapper->fetchAllByCompanyId($currentCompany->id);
 | 
        
           |  |  | 325 |   | 
        
           |  |  | 326 |                 if($topics) {
 | 
        
           |  |  | 327 |                     $topic_id = $topics[0]->id;
 | 
        
           |  |  | 328 |                 }  else {
 | 
        
           |  |  | 329 |                     $topic_id = 0;
 | 
        
           |  |  | 330 |                 }
 | 
        
           |  |  | 331 |   | 
        
           |  |  | 332 |   | 
        
           |  |  | 333 |                 $form = new SlideForm($this->adapter,  $currentCompany->id, $topic_id);
 | 
        
           |  |  | 334 |                 $formTextAdd = new SlideTextAddForm();
 | 
        
           |  |  | 335 |                 $formTextEdit = new SlideTextEditForm();
 | 
        
           |  |  | 336 |                 $formImageAdd = new SlideImageAddForm();
 | 
        
           |  |  | 337 |                 $formImageEdit = new SlideImageEditForm();
 | 
        
           |  |  | 338 |                 $formVideoAdd = new SlideVideoAddForm();
 | 
        
           |  |  | 339 |                 $formVideoEdit = new SlideVideoEditForm();
 | 
        
           |  |  | 340 |                 $formDocumentAdd = new SlideDocumentAddForm();
 | 
        
           |  |  | 341 |                 $formDocumentEdit = new SlideDocumentEditForm();
 | 
        
           |  |  | 342 |                 $formAudioAdd = new SlideAudioAddForm();
 | 
        
           |  |  | 343 |                 $formAudioEdit = new SlideAudioEditForm();
 | 
        
           |  |  | 344 |                 $formQuizzAdd = new SlideQuizzAddForm($this->adapter, $currentCompany->id);
 | 
        
           |  |  | 345 |                 $formQuizzEdit = new SlideQuizzEditForm($this->adapter, $currentCompany->id);
 | 
        
           |  |  | 346 |   | 
        
           |  |  | 347 |                 $this->layout()->setTemplate('layout/layout-backend.phtml');
 | 
        
           |  |  | 348 |                 $viewModel = new ViewModel();
 | 
        
           |  |  | 349 |                 $viewModel->setTemplate('leaders-linked/microlearning-slides/index.phtml');
 | 
        
           |  |  | 350 |                 $viewModel->setVariables([
 | 
        
           |  |  | 351 |                     'form' => $form,
 | 
        
           |  |  | 352 |                     'formTextAdd' => $formTextAdd,
 | 
        
           |  |  | 353 |                     'formTextEdit' => $formTextEdit,
 | 
        
           |  |  | 354 |                     'formImageAdd' => $formImageAdd,
 | 
        
           |  |  | 355 |                     'formImageEdit' => $formImageEdit,
 | 
        
           |  |  | 356 |                     'formVideoAdd' => $formVideoAdd,
 | 
        
           |  |  | 357 |                     'formVideoEdit' => $formVideoEdit,
 | 
        
           |  |  | 358 |                     'formDocumentAdd' => $formDocumentAdd,
 | 
        
           |  |  | 359 |                     'formDocumentEdit' => $formDocumentEdit,
 | 
        
           |  |  | 360 |                     'formAudioAdd' => $formAudioAdd,
 | 
        
           |  |  | 361 |                     'formAudioEdit' => $formAudioEdit,
 | 
        
           |  |  | 362 |                     'formQuizzAdd' => $formQuizzAdd,
 | 
        
           |  |  | 363 |                     'formQuizzEdit' => $formQuizzEdit,
 | 
        
           |  |  | 364 |                     'image_size' => $image_size,
 | 
        
           |  |  | 365 |   | 
        
           |  |  | 366 |                 ]);
 | 
        
           |  |  | 367 |                 return $viewModel ;
 | 
        
           |  |  | 368 |             }
 | 
        
           |  |  | 369 |         }
 | 
        
           |  |  | 370 |   | 
        
           |  |  | 371 |         return new JsonModel([
 | 
        
           |  |  | 372 |             'success' => false,
 | 
        
           |  |  | 373 |             'data' => 'ERROR_METHOD_NOT_ALLOWED'
 | 
        
           |  |  | 374 |         ]);
 | 
        
           |  |  | 375 |   | 
        
           |  |  | 376 |   | 
        
           |  |  | 377 |   | 
        
           |  |  | 378 |   | 
        
           |  |  | 379 |   | 
        
           |  |  | 380 |   | 
        
           |  |  | 381 |   | 
        
           |  |  | 382 |     }
 | 
        
           |  |  | 383 |   | 
        
           |  |  | 384 |     public function addAction()
 | 
        
           |  |  | 385 |     {
 | 
        
           |  |  | 386 |   | 
        
           |  |  | 387 |         $currentUserPlugin = $this->plugin('currentUserPlugin');
 | 
        
           |  |  | 388 |         $currentUser = $currentUserPlugin->getUser();
 | 
        
           |  |  | 389 |         $currentCompany = $currentUserPlugin->getCompany();
 | 
        
           |  |  | 390 |   | 
        
           |  |  | 391 |         $request    = $this->getRequest();
 | 
        
           |  |  | 392 |         $topic_uuid   = $this->params()->fromRoute('topic_uuid');
 | 
        
           |  |  | 393 |         $capsule_uuid = $this->params()->fromRoute('capsule_uuid');
 | 
        
           |  |  | 394 |   | 
        
           |  |  | 395 |   | 
        
           |  |  | 396 |   | 
        
           |  |  | 397 |         $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
 | 
        
           |  |  | 398 |         $topic = $topicMapper->fetchOneByUuid($topic_uuid);
 | 
        
           |  |  | 399 |         if(!$topic) {
 | 
        
           |  |  | 400 |             return new JsonModel([
 | 
        
           |  |  | 401 |                 'success'   => false,
 | 
        
           |  |  | 402 |                 'data'   => 'ERROR_TOPIC_NOT_FOUND'
 | 
        
           |  |  | 403 |             ]);
 | 
        
           |  |  | 404 |         }
 | 
        
           |  |  | 405 |   | 
        
           |  |  | 406 |         if($topic->company_id != $currentCompany->id) {
 | 
        
           |  |  | 407 |             return new JsonModel([
 | 
        
           |  |  | 408 |                 'success'   => false,
 | 
        
           |  |  | 409 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 410 |             ]);
 | 
        
           |  |  | 411 |         }
 | 
        
           |  |  | 412 |   | 
        
           |  |  | 413 |   | 
        
           |  |  | 414 |         $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
 | 
        
           |  |  | 415 |         $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
 | 
        
           |  |  | 416 |         if(!$capsule) {
 | 
        
           |  |  | 417 |             return new JsonModel([
 | 
        
           |  |  | 418 |                 'success'   => false,
 | 
        
           |  |  | 419 |                 'data'   => 'ERROR_CAPSULE_NOT_FOUND'
 | 
        
           |  |  | 420 |             ]);
 | 
        
           |  |  | 421 |         }
 | 
        
           |  |  | 422 |   | 
        
           |  |  | 423 |         if($capsule->topic_id != $topic->id) {
 | 
        
           |  |  | 424 |             return new JsonModel([
 | 
        
           |  |  | 425 |                 'success'   => false,
 | 
        
           |  |  | 426 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 427 |             ]);
 | 
        
           |  |  | 428 |         }
 | 
        
           |  |  | 429 |   | 
        
           |  |  | 430 |   | 
        
           |  |  | 431 |         if($request->isPost()) {
 | 
        
           |  |  | 432 |   | 
        
           |  |  | 433 |             $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
 | 
        
           |  |  | 434 |   | 
        
           |  |  | 435 |             switch($dataPost['type'])
 | 
        
           |  |  | 436 |             {
 | 
        
           |  |  | 437 |                 case CompanyMicrolearningSlide::TYPE_AUDIO :
 | 
        
           |  |  | 438 |                     $form = new SlideAudioAddForm();
 | 
        
           |  |  | 439 |                     break;
 | 
        
           |  |  | 440 |   | 
        
           |  |  | 441 |                 case CompanyMicrolearningSlide::TYPE_VIDEO :
 | 
        
           |  |  | 442 |                     $form = new SlideVideoAddForm();
 | 
        
           |  |  | 443 |                     break;
 | 
        
           |  |  | 444 |   | 
        
           |  |  | 445 |                 case CompanyMicrolearningSlide::TYPE_DOCUMENT:
 | 
        
           |  |  | 446 |                     $form = new SlideDocumentAddForm();
 | 
        
           |  |  | 447 |                     break;
 | 
        
           |  |  | 448 |   | 
        
           |  |  | 449 |                 case CompanyMicrolearningSlide::TYPE_IMAGE :
 | 
        
           |  |  | 450 |                     $form = new SlideImageAddForm();
 | 
        
           |  |  | 451 |                     break;
 | 
        
           |  |  | 452 |   | 
        
           |  |  | 453 |   | 
        
           |  |  | 454 |                 case CompanyMicrolearningSlide::TYPE_QUIZ:
 | 
        
           |  |  | 455 |                     $form = new SlideQuizzAddForm($this->adapter, $currentCompany->id);
 | 
        
           |  |  | 456 |                     break;
 | 
        
           |  |  | 457 |   | 
        
           |  |  | 458 |                 default :
 | 
        
           |  |  | 459 |                     $form = new SlideTextAddForm();
 | 
        
           |  |  | 460 |                     break;
 | 
        
           |  |  | 461 |             }
 | 
        
           |  |  | 462 |   | 
        
           |  |  | 463 |             $form->setData($dataPost);
 | 
        
           |  |  | 464 |   | 
        
           |  |  | 465 |             if($form->isValid()) {
 | 
        
           |  |  | 466 |                 $dataPost = (array) $form->getData();
 | 
        
           |  |  | 467 |   | 
        
           |  |  | 468 |                 $hydrator = new ObjectPropertyHydrator();
 | 
        
           |  |  | 469 |                 $slide = new CompanyMicrolearningSlide();
 | 
        
           |  |  | 470 |                 $hydrator->hydrate($dataPost, $slide);
 | 
        
           |  |  | 471 |   | 
        
           |  |  | 472 |                 $slide->company_id = $topic->company_id;
 | 
        
           |  |  | 473 |                 $slide->topic_id = $topic->id;
 | 
        
           |  |  | 474 |                 $slide->capsule_id = $capsule->id;
 | 
        
           |  |  | 475 |                 $slide->file = null;
 | 
        
           |  |  | 476 |                 $slide->background = null;
 | 
        
           | 6194 | nelberth | 477 |   | 
        
           | 1 | www | 478 |                 $slideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
 | 
        
           |  |  | 479 |                 if($slideMapper->insert($slide)) {
 | 
        
           |  |  | 480 |                     $slide = $slideMapper->fetchOne($slide->id);
 | 
        
           |  |  | 481 |   | 
        
           |  |  | 482 |                     $files = $this->getRequest()->getFiles()->toArray();
 | 
        
           | 6196 | nelberth | 483 |   | 
        
           | 6498 | nelberth | 484 |   | 
        
           | 6196 | nelberth | 485 |   | 
        
           |  |  | 486 |                     if($slide->type == CompanyMicrolearningSlide::TYPE_IMAGE) {
 | 
        
           | 6498 | nelberth | 487 |                         $fileBase64Content = $this->params()->fromPost('file');
 | 
        
           | 6197 | nelberth | 488 |   | 
        
           |  |  | 489 |                         try {
 | 
        
           |  |  | 490 |   | 
        
           |  |  | 491 |                             $fileBase64Content = base64_decode($fileBase64Content);
 | 
        
           | 6204 | nelberth | 492 |                             $filename      = 'slide-' .uniqid() . '.png';
 | 
        
           |  |  | 493 |                             $tmp_filename = 'data' . DIRECTORY_SEPARATOR . 'tmp';
 | 
        
           |  |  | 494 |                             $target_path = $this->config['leaderslinked.fullpath.microlearning_slide'] .  $slide->uuid;
 | 
        
           |  |  | 495 |                             if(!file_exists($target_path)) {
 | 
        
           |  |  | 496 |                                 mkdir($target_path, 0755, true);
 | 
        
           | 6197 | nelberth | 497 |                             }
 | 
        
           | 6204 | nelberth | 498 |                             $tmp_filename = 'data' . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . $filename;
 | 
        
           |  |  | 499 |                                 file_put_contents($tmp_filename, $fileBase64Content);
 | 
        
           | 6197 | nelberth | 500 |   | 
        
           |  |  | 501 |                             list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.microlearning_image_size']);
 | 
        
           |  |  | 502 |   | 
        
           | 6204 | nelberth | 503 |                             $crop_to_dimensions = true;
 | 
        
           |  |  | 504 |                             if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions )) {
 | 
        
           |  |  | 505 |                                 $slide->file = basename($filename);
 | 
        
           |  |  | 506 |                                 $slideMapper->update($slide);
 | 
        
           | 6197 | nelberth | 507 |                             }
 | 
        
           |  |  | 508 |                         } catch(\Throwable $e) {
 | 
        
           |  |  | 509 |                             error_log($e->getTraceAsString());
 | 
        
           | 6499 | nelberth | 510 |                         }
 | 
        
           | 6196 | nelberth | 511 |   | 
        
           |  |  | 512 |                     }
 | 
        
           |  |  | 513 |   | 
        
           |  |  | 514 |   | 
        
           |  |  | 515 |   | 
        
           |  |  | 516 |   | 
        
           | 1 | www | 517 |                     $target_path = $this->config['leaderslinked.fullpath.microlearning_slide'] .  $slide->uuid;
 | 
        
           |  |  | 518 |                     if(!file_exists($target_path)) {
 | 
        
           |  |  | 519 |                         mkdir($target_path, 0755, true);
 | 
        
           |  |  | 520 |                     }
 | 
        
           |  |  | 521 |   | 
        
           |  |  | 522 |   | 
        
           |  |  | 523 |                     if(isset($files['file']) && empty($files['file']['error'])) {
 | 
        
           |  |  | 524 |                         $tmp_filename       = $files['file']['tmp_name'];
 | 
        
           |  |  | 525 |                         $original_filename  = trim(strtolower($files['file']['name']));
 | 
        
           |  |  | 526 |   | 
        
           |  |  | 527 |   | 
        
           |  |  | 528 |   | 
        
           |  |  | 529 |   | 
        
           |  |  | 530 |   | 
        
           |  |  | 531 |                         if($slide->file) {
 | 
        
           |  |  | 532 |                             if(!image ::delete($target_path, $slide->file)) {
 | 
        
           |  |  | 533 |                                 return new JsonModel([
 | 
        
           |  |  | 534 |                                     'success'   => false,
 | 
        
           |  |  | 535 |                                     'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
 | 
        
           |  |  | 536 |                                 ]);
 | 
        
           |  |  | 537 |                             }
 | 
        
           |  |  | 538 |                         }
 | 
        
           |  |  | 539 |   | 
        
           |  |  | 540 |                         if($slide->type == CompanyMicrolearningSlide::TYPE_DOCUMENT) {
 | 
        
           |  |  | 541 |                             try {
 | 
        
           |  |  | 542 |   | 
        
           |  |  | 543 |                                 $parts = explode('.', $original_filename);
 | 
        
           |  |  | 544 |                                 $filename = 'document-' . uniqid() . '.' . $parts[ count($parts) - 1 ];
 | 
        
           |  |  | 545 |   | 
        
           |  |  | 546 |                                 $full_filename = $target_path  . DIRECTORY_SEPARATOR .$filename;
 | 
        
           |  |  | 547 |                                 if(move_uploaded_file($tmp_filename, $full_filename)) {
 | 
        
           |  |  | 548 |                                     $slide->file = basename($full_filename);
 | 
        
           |  |  | 549 |                                     $slideMapper->update($slide);
 | 
        
           |  |  | 550 |                                 }
 | 
        
           |  |  | 551 |                             } catch(\Throwable $e) {
 | 
        
           |  |  | 552 |                                 error_log($e->getTraceAsString());
 | 
        
           |  |  | 553 |                             }
 | 
        
           |  |  | 554 |                         }
 | 
        
           |  |  | 555 |   | 
        
           |  |  | 556 |                         if($slide->type == CompanyMicrolearningSlide::TYPE_AUDIO) {
 | 
        
           |  |  | 557 |                             try {
 | 
        
           |  |  | 558 |   | 
        
           |  |  | 559 |                                 $parts = explode('.', $original_filename);
 | 
        
           |  |  | 560 |                                 $filename = 'audio-' . uniqid() . '.' . $parts[ count($parts) - 1 ];
 | 
        
           |  |  | 561 |   | 
        
           |  |  | 562 |                                 $full_filename      = $target_path  . DIRECTORY_SEPARATOR .$filename;
 | 
        
           |  |  | 563 |                                 if(move_uploaded_file($tmp_filename , $full_filename)) {
 | 
        
           |  |  | 564 |   | 
        
           |  |  | 565 |   | 
        
           |  |  | 566 |                                     $generateFileName   = substr($filename, 0, strrpos($filename, '.'));
 | 
        
           |  |  | 567 |                                     $generateFile       =  $target_path  . DIRECTORY_SEPARATOR . $generateFileName .  '.mp3';
 | 
        
           |  |  | 568 |                                     $cmd                = "/usr/bin/ffmpeg -i $full_filename -b:a 320000 $generateFile";
 | 
        
           |  |  | 569 |                                     exec($cmd);
 | 
        
           |  |  | 570 |   | 
        
           |  |  | 571 |                                     $slide->file = basename($full_filename);
 | 
        
           |  |  | 572 |                                     $slideMapper->update($slide);
 | 
        
           |  |  | 573 |                                 }
 | 
        
           |  |  | 574 |   | 
        
           |  |  | 575 |                             } catch(\Throwable $e) {
 | 
        
           |  |  | 576 |                                 error_log($e->getTraceAsString());
 | 
        
           |  |  | 577 |                             }
 | 
        
           |  |  | 578 |                         }
 | 
        
           |  |  | 579 |   | 
        
           |  |  | 580 |                         if($slide->type == CompanyMicrolearningSlide::TYPE_VIDEO) {
 | 
        
           |  |  | 581 |                             try {
 | 
        
           |  |  | 582 |                                 $parts = explode('.', $original_filename);
 | 
        
           |  |  | 583 |                                 $filename = 'video-' . uniqid() . '.' . $parts[ count($parts) - 1 ];
 | 
        
           |  |  | 584 |   | 
        
           |  |  | 585 |                                 $full_filename      = $target_path  . DIRECTORY_SEPARATOR .$filename;
 | 
        
           |  |  | 586 |   | 
        
           |  |  | 587 |                                 if(move_uploaded_file($tmp_filename , $full_filename)) {
 | 
        
           |  |  | 588 |   | 
        
           |  |  | 589 |                                     $videoConvert = new VideoConvert();
 | 
        
           |  |  | 590 |                                     $videoConvert->filename = $full_filename;
 | 
        
           |  |  | 591 |                                     $videoConvert->type = VideoConvert::TYPE_MICRO_LEARNING;
 | 
        
           |  |  | 592 |   | 
        
           |  |  | 593 |                                     $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
 | 
        
           |  |  | 594 |                                     $videoConvertMapper->insert($videoConvert);
 | 
        
           |  |  | 595 |   | 
        
           |  |  | 596 |                                     $slide->file = basename($full_filename);
 | 
        
           |  |  | 597 |                                     $slideMapper->update($slide);
 | 
        
           |  |  | 598 |                                 }
 | 
        
           |  |  | 599 |   | 
        
           |  |  | 600 |                             } catch(\Throwable $e) {
 | 
        
           |  |  | 601 |                                 echo $e->getMessage();
 | 
        
           |  |  | 602 |   | 
        
           |  |  | 603 |                                 error_log($e->getTraceAsString());
 | 
        
           |  |  | 604 |                             }
 | 
        
           |  |  | 605 |                         }
 | 
        
           |  |  | 606 |   | 
        
           | 6187 | nelberth | 607 |   | 
        
           | 1 | www | 608 |                     }
 | 
        
           |  |  | 609 |   | 
        
           |  |  | 610 |                     if(isset($files['background']) && empty($files['background']['error'])) {
 | 
        
           |  |  | 611 |                         if($slide->background) {
 | 
        
           |  |  | 612 |                             if(!image ::delete($target_path, $slide->background)) {
 | 
        
           |  |  | 613 |                                 return new JsonModel([
 | 
        
           |  |  | 614 |                                     'success'   => false,
 | 
        
           |  |  | 615 |                                     'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
 | 
        
           |  |  | 616 |                                 ]);
 | 
        
           |  |  | 617 |                             }
 | 
        
           |  |  | 618 |                         }
 | 
        
           |  |  | 619 |   | 
        
           |  |  | 620 |                         $tmp_filename  = $files['background']['tmp_name'];
 | 
        
           |  |  | 621 |   | 
        
           |  |  | 622 |                         try {
 | 
        
           |  |  | 623 |                             list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.microlearning_image_size']);
 | 
        
           |  |  | 624 |   | 
        
           |  |  | 625 |                             $filename = 'background-' .uniqid() . '.png';
 | 
        
           |  |  | 626 |                             $crop_to_dimensions = true;
 | 
        
           |  |  | 627 |                             if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
 | 
        
           |  |  | 628 |                                 $slide->background = $filename;
 | 
        
           |  |  | 629 |                                 $slideMapper->update($slide);
 | 
        
           |  |  | 630 |                             }
 | 
        
           |  |  | 631 |                         } catch(\Throwable $e) {
 | 
        
           |  |  | 632 |                             error_log($e->getTraceAsString());
 | 
        
           |  |  | 633 |                         }
 | 
        
           |  |  | 634 |                     }
 | 
        
           |  |  | 635 |   | 
        
           |  |  | 636 |                     $this->logger->info('Se agrego la diapositiva ' . $slide->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
 | 
        
           |  |  | 637 |   | 
        
           |  |  | 638 |                     $data = [
 | 
        
           |  |  | 639 |                         'success'   => true,
 | 
        
           |  |  | 640 |                         'data'   => 'LABEL_RECORD_ADDED'
 | 
        
           |  |  | 641 |                     ];
 | 
        
           |  |  | 642 |                 } else {
 | 
        
           |  |  | 643 |                     $data = [
 | 
        
           |  |  | 644 |                         'success'   => false,
 | 
        
           |  |  | 645 |                         'data'      => $topicMapper->getError()
 | 
        
           |  |  | 646 |                     ];
 | 
        
           |  |  | 647 |   | 
        
           |  |  | 648 |                 }
 | 
        
           |  |  | 649 |   | 
        
           |  |  | 650 |                 return new JsonModel($data);
 | 
        
           |  |  | 651 |   | 
        
           |  |  | 652 |             } else {
 | 
        
           |  |  | 653 |                 $messages = [];
 | 
        
           |  |  | 654 |                 $form_messages = (array) $form->getMessages();
 | 
        
           |  |  | 655 |                 foreach($form_messages  as $fieldname => $field_messages)
 | 
        
           |  |  | 656 |                 {
 | 
        
           |  |  | 657 |   | 
        
           |  |  | 658 |                     $messages[$fieldname] = array_values($field_messages);
 | 
        
           |  |  | 659 |                 }
 | 
        
           |  |  | 660 |   | 
        
           |  |  | 661 |                 return new JsonModel([
 | 
        
           |  |  | 662 |                     'success'   => false,
 | 
        
           |  |  | 663 |                     'data'   => $messages
 | 
        
           |  |  | 664 |                 ]);
 | 
        
           |  |  | 665 |             }
 | 
        
           |  |  | 666 |   | 
        
           |  |  | 667 |         } else {
 | 
        
           |  |  | 668 |             $data = [
 | 
        
           |  |  | 669 |                 'success' => false,
 | 
        
           |  |  | 670 |                 'data' => 'ERROR_METHOD_NOT_ALLOWED'
 | 
        
           |  |  | 671 |             ];
 | 
        
           |  |  | 672 |   | 
        
           |  |  | 673 |             return new JsonModel($data);
 | 
        
           |  |  | 674 |         }
 | 
        
           |  |  | 675 |   | 
        
           |  |  | 676 |         return new JsonModel($data);
 | 
        
           |  |  | 677 |     }
 | 
        
           |  |  | 678 |   | 
        
           |  |  | 679 |     /**
 | 
        
           |  |  | 680 |      *
 | 
        
           |  |  | 681 |      * Borrar un perfil excepto el público
 | 
        
           |  |  | 682 |      * @return \Laminas\View\Model\JsonModel
 | 
        
           |  |  | 683 |      */
 | 
        
           |  |  | 684 |     public function deleteAction()
 | 
        
           |  |  | 685 |     {
 | 
        
           |  |  | 686 |         $currentUserPlugin = $this->plugin('currentUserPlugin');
 | 
        
           |  |  | 687 |         $currentUser = $currentUserPlugin->getUser();
 | 
        
           |  |  | 688 |         $currentCompany = $currentUserPlugin->getCompany();
 | 
        
           |  |  | 689 |   | 
        
           |  |  | 690 |         $request    = $this->getRequest();
 | 
        
           |  |  | 691 |         $topic_uuid   = $this->params()->fromRoute('topic_uuid');
 | 
        
           |  |  | 692 |         $capsule_uuid = $this->params()->fromRoute('capsule_uuid');
 | 
        
           |  |  | 693 |         $slide_uuid = $this->params()->fromRoute('slide_uuid');
 | 
        
           |  |  | 694 |   | 
        
           |  |  | 695 |   | 
        
           |  |  | 696 |   | 
        
           |  |  | 697 |         $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
 | 
        
           |  |  | 698 |         $topic = $topicMapper->fetchOneByUuid($topic_uuid);
 | 
        
           |  |  | 699 |         if(!$topic) {
 | 
        
           |  |  | 700 |             return new JsonModel([
 | 
        
           |  |  | 701 |                 'success'   => false,
 | 
        
           |  |  | 702 |                 'data'   => 'ERROR_TOPIC_NOT_FOUND'
 | 
        
           |  |  | 703 |             ]);
 | 
        
           |  |  | 704 |         }
 | 
        
           |  |  | 705 |   | 
        
           |  |  | 706 |         if($topic->company_id != $currentCompany->id) {
 | 
        
           |  |  | 707 |             return new JsonModel([
 | 
        
           |  |  | 708 |                 'success'   => false,
 | 
        
           |  |  | 709 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 710 |             ]);
 | 
        
           |  |  | 711 |         }
 | 
        
           |  |  | 712 |   | 
        
           |  |  | 713 |         $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
 | 
        
           |  |  | 714 |         $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
 | 
        
           |  |  | 715 |         if(!$capsule) {
 | 
        
           |  |  | 716 |             return new JsonModel([
 | 
        
           |  |  | 717 |                 'success'   => false,
 | 
        
           |  |  | 718 |                 'data'   => 'ERROR_CAPSULE_NOT_FOUND'
 | 
        
           |  |  | 719 |             ]);
 | 
        
           |  |  | 720 |         }
 | 
        
           |  |  | 721 |   | 
        
           |  |  | 722 |         if($capsule->topic_id != $topic->id) {
 | 
        
           |  |  | 723 |             return new JsonModel([
 | 
        
           |  |  | 724 |                 'success'   => false,
 | 
        
           |  |  | 725 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 726 |             ]);
 | 
        
           |  |  | 727 |         }
 | 
        
           |  |  | 728 |   | 
        
           |  |  | 729 |         $slideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
 | 
        
           |  |  | 730 |         $slide = $slideMapper->fetchOneByUuid($slide_uuid);
 | 
        
           |  |  | 731 |         if(!$slide) {
 | 
        
           |  |  | 732 |             return new JsonModel([
 | 
        
           |  |  | 733 |                 'success'   => false,
 | 
        
           |  |  | 734 |                 'data'   => 'ERROR_SLIDE_NOT_FOUND'
 | 
        
           |  |  | 735 |             ]);
 | 
        
           |  |  | 736 |         }
 | 
        
           |  |  | 737 |   | 
        
           |  |  | 738 |         if($slide->capsule_id != $capsule->id) {
 | 
        
           |  |  | 739 |             return new JsonModel([
 | 
        
           |  |  | 740 |                 'success'   => false,
 | 
        
           |  |  | 741 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 742 |             ]);
 | 
        
           |  |  | 743 |         }
 | 
        
           |  |  | 744 |   | 
        
           |  |  | 745 |         if($request->isPost()) {
 | 
        
           |  |  | 746 |   | 
        
           |  |  | 747 |             $result =  $slideMapper->delete($slide);
 | 
        
           |  |  | 748 |             if($result) {
 | 
        
           |  |  | 749 |                 $this->logger->info('Se borro la diapositiva : ' .  $capsule->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
 | 
        
           |  |  | 750 |                 try {
 | 
        
           |  |  | 751 |                     $target_path = $this->config['leaderslinked.fullpath.microlearning_slide'] . $slide->uuid;
 | 
        
           |  |  | 752 |                     if(file_exists($target_path)) {
 | 
        
           |  |  | 753 |                         Functions::rmDirRecursive($target_path);
 | 
        
           |  |  | 754 |                     }
 | 
        
           |  |  | 755 |                 } catch(\Throwable $e) {
 | 
        
           |  |  | 756 |                     error_log($e->getTraceAsString());
 | 
        
           |  |  | 757 |                 }
 | 
        
           |  |  | 758 |   | 
        
           |  |  | 759 |   | 
        
           |  |  | 760 |                 $data = [
 | 
        
           |  |  | 761 |                     'success' => true,
 | 
        
           |  |  | 762 |                     'data' => 'LABEL_RECORD_DELETED'
 | 
        
           |  |  | 763 |                 ];
 | 
        
           |  |  | 764 |             } else {
 | 
        
           |  |  | 765 |   | 
        
           |  |  | 766 |                 $data = [
 | 
        
           |  |  | 767 |                     'success'   => false,
 | 
        
           |  |  | 768 |                     'data'      => $capsuleMapper->getError()
 | 
        
           |  |  | 769 |                 ];
 | 
        
           |  |  | 770 |   | 
        
           |  |  | 771 |                 return new JsonModel($data);
 | 
        
           |  |  | 772 |             }
 | 
        
           |  |  | 773 |   | 
        
           |  |  | 774 |         } else {
 | 
        
           |  |  | 775 |             $data = [
 | 
        
           |  |  | 776 |                 'success' => false,
 | 
        
           |  |  | 777 |                 'data' => 'ERROR_METHOD_NOT_ALLOWED'
 | 
        
           |  |  | 778 |             ];
 | 
        
           |  |  | 779 |   | 
        
           |  |  | 780 |             return new JsonModel($data);
 | 
        
           |  |  | 781 |         }
 | 
        
           |  |  | 782 |   | 
        
           |  |  | 783 |         return new JsonModel($data);
 | 
        
           |  |  | 784 |     }
 | 
        
           |  |  | 785 |   | 
        
           |  |  | 786 |   | 
        
           |  |  | 787 |     public function editAction()
 | 
        
           |  |  | 788 |     {
 | 
        
           |  |  | 789 |         $currentUserPlugin = $this->plugin('currentUserPlugin');
 | 
        
           |  |  | 790 |         $currentUser = $currentUserPlugin->getUser();
 | 
        
           |  |  | 791 |         $currentCompany = $currentUserPlugin->getCompany();
 | 
        
           |  |  | 792 |   | 
        
           |  |  | 793 |         $request    = $this->getRequest();
 | 
        
           |  |  | 794 |         $topic_uuid   = $this->params()->fromRoute('topic_uuid');
 | 
        
           |  |  | 795 |         $capsule_uuid = $this->params()->fromRoute('capsule_uuid');
 | 
        
           |  |  | 796 |         $slide_uuid   = $this->params()->fromRoute('slide_uuid');
 | 
        
           |  |  | 797 |   | 
        
           |  |  | 798 |   | 
        
           |  |  | 799 |         $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
 | 
        
           |  |  | 800 |         $topic = $topicMapper->fetchOneByUuid($topic_uuid);
 | 
        
           |  |  | 801 |         if(!$topic) {
 | 
        
           |  |  | 802 |             return new JsonModel([
 | 
        
           |  |  | 803 |                 'success'   => false,
 | 
        
           |  |  | 804 |                 'data'   => 'ERROR_TOPIC_NOT_FOUND'
 | 
        
           |  |  | 805 |             ]);
 | 
        
           |  |  | 806 |         }
 | 
        
           |  |  | 807 |   | 
        
           |  |  | 808 |         if($topic->company_id != $currentCompany->id) {
 | 
        
           |  |  | 809 |             return new JsonModel([
 | 
        
           |  |  | 810 |                 'success'   => false,
 | 
        
           |  |  | 811 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 812 |             ]);
 | 
        
           |  |  | 813 |         }
 | 
        
           |  |  | 814 |   | 
        
           |  |  | 815 |         $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
 | 
        
           |  |  | 816 |         $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
 | 
        
           |  |  | 817 |         if(!$capsule) {
 | 
        
           |  |  | 818 |             return new JsonModel([
 | 
        
           |  |  | 819 |                 'success'   => false,
 | 
        
           |  |  | 820 |                 'data'   => 'ERROR_CAPSULE_NOT_FOUND'
 | 
        
           |  |  | 821 |             ]);
 | 
        
           |  |  | 822 |         }
 | 
        
           |  |  | 823 |   | 
        
           |  |  | 824 |         if($capsule->topic_id != $topic->id) {
 | 
        
           |  |  | 825 |             return new JsonModel([
 | 
        
           |  |  | 826 |                 'success'   => false,
 | 
        
           |  |  | 827 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 828 |             ]);
 | 
        
           |  |  | 829 |         }
 | 
        
           |  |  | 830 |   | 
        
           |  |  | 831 |   | 
        
           |  |  | 832 |         $slideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
 | 
        
           |  |  | 833 |         $slide = $slideMapper->fetchOneByUuid($slide_uuid);
 | 
        
           |  |  | 834 |         if(!$slide) {
 | 
        
           |  |  | 835 |             return new JsonModel([
 | 
        
           |  |  | 836 |                 'success'   => false,
 | 
        
           |  |  | 837 |                 'data'   => 'ERROR_SLIDE_NOT_FOUND'
 | 
        
           |  |  | 838 |             ]);
 | 
        
           |  |  | 839 |         }
 | 
        
           |  |  | 840 |   | 
        
           |  |  | 841 |         if($slide->capsule_id != $capsule->id) {
 | 
        
           |  |  | 842 |             return new JsonModel([
 | 
        
           |  |  | 843 |                 'success'   => false,
 | 
        
           |  |  | 844 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 845 |             ]);
 | 
        
           |  |  | 846 |         }
 | 
        
           |  |  | 847 |   | 
        
           |  |  | 848 |         if($request->isGet()) {
 | 
        
           |  |  | 849 |             $data = [
 | 
        
           |  |  | 850 |                 'success' => true,
 | 
        
           |  |  | 851 |                 'data' => [
 | 
        
           |  |  | 852 |                     'name' => $slide->name,
 | 
        
           |  |  | 853 |                     'type' => $slide->type,
 | 
        
           |  |  | 854 |                     'description' => $slide->description,
 | 
        
           |  |  | 855 |                     'order' => $slide->order,
 | 
        
           |  |  | 856 |                     'quiz_id' => $slide->quiz_id
 | 
        
           |  |  | 857 |                 ]
 | 
        
           |  |  | 858 |             ];
 | 
        
           |  |  | 859 |   | 
        
           |  |  | 860 |             return new JsonModel($data);
 | 
        
           |  |  | 861 |         }
 | 
        
           |  |  | 862 |         else if($request->isPost()) {
 | 
        
           |  |  | 863 |             $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
 | 
        
           |  |  | 864 |   | 
        
           |  |  | 865 |             switch($dataPost['type'])
 | 
        
           |  |  | 866 |             {
 | 
        
           |  |  | 867 |                 case CompanyMicrolearningSlide::TYPE_AUDIO :
 | 
        
           |  |  | 868 |                     $form = new SlideAudioEditForm();
 | 
        
           |  |  | 869 |                     break;
 | 
        
           |  |  | 870 |   | 
        
           |  |  | 871 |                 case CompanyMicrolearningSlide::TYPE_VIDEO :
 | 
        
           |  |  | 872 |                     $form = new SlideVideoEditForm();
 | 
        
           |  |  | 873 |                     break;
 | 
        
           |  |  | 874 |   | 
        
           |  |  | 875 |                 case CompanyMicrolearningSlide::TYPE_DOCUMENT:
 | 
        
           |  |  | 876 |                     $form = new SlideDocumentEditForm();
 | 
        
           |  |  | 877 |                     break;
 | 
        
           |  |  | 878 |   | 
        
           |  |  | 879 |                 case CompanyMicrolearningSlide::TYPE_IMAGE :
 | 
        
           |  |  | 880 |                     $form = new SlideImageEditForm();
 | 
        
           |  |  | 881 |                     break;
 | 
        
           |  |  | 882 |   | 
        
           |  |  | 883 |                 case CompanyMicrolearningSlide::TYPE_QUIZ:
 | 
        
           |  |  | 884 |                     $form = new SlideQuizzEditForm($this->adapter, $currentCompany->id);
 | 
        
           |  |  | 885 |                     break;
 | 
        
           |  |  | 886 |   | 
        
           |  |  | 887 |                 default :
 | 
        
           |  |  | 888 |                     $form = new SlideTextEditForm();
 | 
        
           |  |  | 889 |                     break;
 | 
        
           |  |  | 890 |   | 
        
           |  |  | 891 |             }
 | 
        
           |  |  | 892 |             $form->setData($dataPost);
 | 
        
           |  |  | 893 |   | 
        
           |  |  | 894 |             if($form->isValid()) {
 | 
        
           |  |  | 895 |                 $dataPost = (array) $form->getData();
 | 
        
           |  |  | 896 |                 $hydrator = new ObjectPropertyHydrator();
 | 
        
           |  |  | 897 |                 $hydrator->hydrate($dataPost, $slide);
 | 
        
           |  |  | 898 |   | 
        
           |  |  | 899 |                 $slide->file = null;
 | 
        
           |  |  | 900 |                 $slide->background = null;
 | 
        
           |  |  | 901 |   | 
        
           |  |  | 902 |                 if($slideMapper->update($slide)) {
 | 
        
           |  |  | 903 |                     $slide = $slideMapper->fetchOne($slide->id);
 | 
        
           |  |  | 904 |   | 
        
           |  |  | 905 |   | 
        
           |  |  | 906 |                     $target_path = $this->config['leaderslinked.fullpath.microlearning_slide'] .  $slide->uuid;
 | 
        
           |  |  | 907 |                     if(!file_exists($target_path)) {
 | 
        
           |  |  | 908 |                         mkdir($target_path, 0755, true);
 | 
        
           |  |  | 909 |                     }
 | 
        
           |  |  | 910 |   | 
        
           |  |  | 911 |                     $files = $this->getRequest()->getFiles()->toArray();
 | 
        
           |  |  | 912 |   | 
        
           |  |  | 913 |                     if(isset($files['file']) && empty($files['file']['error'])) {
 | 
        
           |  |  | 914 |                         $tmp_filename       = $files['file']['tmp_name'];
 | 
        
           |  |  | 915 |                         $original_filename  = trim(strtolower($files['file']['name']));
 | 
        
           |  |  | 916 |   | 
        
           |  |  | 917 |   | 
        
           |  |  | 918 |                         if($slide->file) {
 | 
        
           |  |  | 919 |                             if(!image ::delete($target_path, $slide->file)) {
 | 
        
           |  |  | 920 |                                 return new JsonModel([
 | 
        
           |  |  | 921 |                                     'success'   => false,
 | 
        
           |  |  | 922 |                                     'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
 | 
        
           |  |  | 923 |                                 ]);
 | 
        
           |  |  | 924 |                             }
 | 
        
           |  |  | 925 |                         }
 | 
        
           |  |  | 926 |   | 
        
           |  |  | 927 |                         if($slide->type == CompanyMicrolearningSlide::TYPE_DOCUMENT) {
 | 
        
           |  |  | 928 |                             try {
 | 
        
           |  |  | 929 |   | 
        
           |  |  | 930 |                                 $parts = explode('.', $original_filename);
 | 
        
           |  |  | 931 |                                 $filename = 'document-' . uniqid() . '.' . $parts[ count($parts) - 1 ];
 | 
        
           |  |  | 932 |   | 
        
           |  |  | 933 |                                 $full_filename = $target_path  . DIRECTORY_SEPARATOR .$filename;
 | 
        
           |  |  | 934 |                                 if(move_uploaded_file($tmp_filename, $full_filename)) {
 | 
        
           |  |  | 935 |                                     $slide->file = basename($full_filename);
 | 
        
           |  |  | 936 |                                     $slideMapper->update($slide);
 | 
        
           |  |  | 937 |                                 }
 | 
        
           |  |  | 938 |                             } catch(\Throwable $e) {
 | 
        
           |  |  | 939 |                                 error_log($e->getTraceAsString());
 | 
        
           |  |  | 940 |                             }
 | 
        
           |  |  | 941 |                         }
 | 
        
           |  |  | 942 |   | 
        
           |  |  | 943 |                         if($slide->type == CompanyMicrolearningSlide::TYPE_AUDIO) {
 | 
        
           |  |  | 944 |                             try {
 | 
        
           |  |  | 945 |   | 
        
           |  |  | 946 |                                 $parts = explode('.', $original_filename);
 | 
        
           |  |  | 947 |                                 $filename = 'audio-' . uniqid() . '.' . $parts[ count($parts) - 1 ];
 | 
        
           |  |  | 948 |   | 
        
           |  |  | 949 |                                 $full_filename      = $target_path  . DIRECTORY_SEPARATOR .$filename;
 | 
        
           |  |  | 950 |                                 if(move_uploaded_file($tmp_filename , $full_filename)) {
 | 
        
           |  |  | 951 |   | 
        
           |  |  | 952 |   | 
        
           |  |  | 953 |                                     $generateFileName   = substr($filename, 0, strrpos($filename, '.'));
 | 
        
           |  |  | 954 |                                     $generateFile       =  $target_path  . DIRECTORY_SEPARATOR . $generateFileName .  '.mp3';
 | 
        
           |  |  | 955 |                                     $cmd                = "/usr/bin/ffmpeg -i $full_filename -b:a 320000 $generateFile";
 | 
        
           |  |  | 956 |                                     exec($cmd);
 | 
        
           |  |  | 957 |   | 
        
           |  |  | 958 |                                     $slide->file = basename($full_filename);
 | 
        
           |  |  | 959 |                                     $slideMapper->update($slide);
 | 
        
           |  |  | 960 |                                 }
 | 
        
           |  |  | 961 |   | 
        
           |  |  | 962 |                             } catch(\Throwable $e) {
 | 
        
           |  |  | 963 |                                 error_log($e->getTraceAsString());
 | 
        
           |  |  | 964 |                             }
 | 
        
           |  |  | 965 |                         }
 | 
        
           |  |  | 966 |   | 
        
           |  |  | 967 |                         if($slide->type == CompanyMicrolearningSlide::TYPE_VIDEO) {
 | 
        
           |  |  | 968 |                             try {
 | 
        
           |  |  | 969 |                                 $parts = explode('.', $original_filename);
 | 
        
           |  |  | 970 |                                 $filename = 'video-' . uniqid() . '.' . $parts[ count($parts) - 1 ];
 | 
        
           |  |  | 971 |   | 
        
           |  |  | 972 |                                 $full_filename      = $target_path  . DIRECTORY_SEPARATOR .$filename;
 | 
        
           |  |  | 973 |   | 
        
           |  |  | 974 |                                 if(move_uploaded_file($tmp_filename , $full_filename)) {
 | 
        
           |  |  | 975 |   | 
        
           |  |  | 976 |                                     $videoConvert = new VideoConvert();
 | 
        
           |  |  | 977 |                                     $videoConvert->filename = $full_filename;
 | 
        
           |  |  | 978 |                                     $videoConvert->type = VideoConvert::TYPE_MICRO_LEARNING;
 | 
        
           |  |  | 979 |   | 
        
           |  |  | 980 |                                     $videoConvertMapper = VideoConvertMapper::getInstance($this->adapter);
 | 
        
           |  |  | 981 |                                     $videoConvertMapper->insert($videoConvert);
 | 
        
           |  |  | 982 |   | 
        
           |  |  | 983 |                                     $slide->file = basename($full_filename);
 | 
        
           |  |  | 984 |                                     $slideMapper->update($slide);
 | 
        
           |  |  | 985 |                                 }
 | 
        
           |  |  | 986 |   | 
        
           |  |  | 987 |                             } catch(\Throwable $e) {
 | 
        
           |  |  | 988 |                                 echo $e->getMessage();
 | 
        
           |  |  | 989 |   | 
        
           |  |  | 990 |                                 error_log($e->getTraceAsString());
 | 
        
           |  |  | 991 |                             }
 | 
        
           |  |  | 992 |                         }
 | 
        
           |  |  | 993 |   | 
        
           |  |  | 994 |                         if($slide->type == CompanyMicrolearningSlide::TYPE_IMAGE) {
 | 
        
           |  |  | 995 |                             try {
 | 
        
           |  |  | 996 |                                 list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.microlearning_image_size']);
 | 
        
           |  |  | 997 |   | 
        
           |  |  | 998 |                                 $filename = 'slide-' .uniqid() . '.png';
 | 
        
           |  |  | 999 |                                 $crop_to_dimensions = true;
 | 
        
           |  |  | 1000 |                                 if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
 | 
        
           |  |  | 1001 |                                     $slide->file = $filename;
 | 
        
           |  |  | 1002 |                                     $slideMapper->update($slide);
 | 
        
           |  |  | 1003 |                                 }
 | 
        
           |  |  | 1004 |                             } catch(\Throwable $e) {
 | 
        
           |  |  | 1005 |                                 error_log($e->getTraceAsString());
 | 
        
           |  |  | 1006 |                             }
 | 
        
           |  |  | 1007 |                         }
 | 
        
           |  |  | 1008 |                     }
 | 
        
           |  |  | 1009 |   | 
        
           |  |  | 1010 |                     if(isset($files['background']) && empty($files['background']['error'])) {
 | 
        
           |  |  | 1011 |                         if($slide->background) {
 | 
        
           |  |  | 1012 |                             if(!image ::delete($target_path, $slide->background)) {
 | 
        
           |  |  | 1013 |                                 return new JsonModel([
 | 
        
           |  |  | 1014 |                                     'success'   => false,
 | 
        
           |  |  | 1015 |                                     'data'   =>  'ERROR_THERE_WAS_AN_ERROR'
 | 
        
           |  |  | 1016 |                                 ]);
 | 
        
           |  |  | 1017 |                             }
 | 
        
           |  |  | 1018 |                         }
 | 
        
           |  |  | 1019 |   | 
        
           |  |  | 1020 |                         $tmp_filename  = $files['background']['tmp_name'];
 | 
        
           |  |  | 1021 |   | 
        
           |  |  | 1022 |                         try {
 | 
        
           |  |  | 1023 |                             list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.microlearning_image_size']);
 | 
        
           |  |  | 1024 |   | 
        
           |  |  | 1025 |                             $filename = 'background-' .uniqid() . '.png';
 | 
        
           |  |  | 1026 |                             $crop_to_dimensions = true;
 | 
        
           |  |  | 1027 |                             if(Image::uploadImage($tmp_filename, $target_path, $filename, $target_width, $target_height, $crop_to_dimensions)) {
 | 
        
           |  |  | 1028 |                                 $slide->background = $filename;
 | 
        
           |  |  | 1029 |                                 $slideMapper->update($slide);
 | 
        
           |  |  | 1030 |                             }
 | 
        
           |  |  | 1031 |                         } catch(\Throwable $e) {
 | 
        
           |  |  | 1032 |                             error_log($e->getTraceAsString());
 | 
        
           |  |  | 1033 |                         }
 | 
        
           |  |  | 1034 |                     }
 | 
        
           |  |  | 1035 |   | 
        
           |  |  | 1036 |                     $this->logger->info('Se edito la diapositiva ' . $slide->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
 | 
        
           |  |  | 1037 |   | 
        
           |  |  | 1038 |                     $data = [
 | 
        
           |  |  | 1039 |                         'success'   => true,
 | 
        
           |  |  | 1040 |                         'data'   => 'LABEL_RECORD_UPDATED'
 | 
        
           |  |  | 1041 |                     ];
 | 
        
           |  |  | 1042 |                 } else {
 | 
        
           |  |  | 1043 |                     $data = [
 | 
        
           |  |  | 1044 |                         'success'   => false,
 | 
        
           |  |  | 1045 |                         'data'      => $capsuleMapper->getError()
 | 
        
           |  |  | 1046 |                     ];
 | 
        
           |  |  | 1047 |   | 
        
           |  |  | 1048 |                 }
 | 
        
           |  |  | 1049 |   | 
        
           |  |  | 1050 |                 return new JsonModel($data);
 | 
        
           |  |  | 1051 |   | 
        
           |  |  | 1052 |             } else {
 | 
        
           |  |  | 1053 |                 $messages = [];
 | 
        
           |  |  | 1054 |                 $form_messages = (array) $form->getMessages();
 | 
        
           |  |  | 1055 |                 foreach($form_messages  as $fieldname => $field_messages)
 | 
        
           |  |  | 1056 |                 {
 | 
        
           |  |  | 1057 |   | 
        
           |  |  | 1058 |                     $messages[$fieldname] = array_values($field_messages);
 | 
        
           |  |  | 1059 |                 }
 | 
        
           |  |  | 1060 |   | 
        
           |  |  | 1061 |                 return new JsonModel([
 | 
        
           |  |  | 1062 |                     'success'   => false,
 | 
        
           |  |  | 1063 |                     'data'   => $messages
 | 
        
           |  |  | 1064 |                 ]);
 | 
        
           |  |  | 1065 |             }
 | 
        
           |  |  | 1066 |         } else {
 | 
        
           |  |  | 1067 |             $data = [
 | 
        
           |  |  | 1068 |                 'success' => false,
 | 
        
           |  |  | 1069 |                 'data' => 'ERROR_METHOD_NOT_ALLOWED'
 | 
        
           |  |  | 1070 |             ];
 | 
        
           |  |  | 1071 |   | 
        
           |  |  | 1072 |             return new JsonModel($data);
 | 
        
           |  |  | 1073 |         }
 | 
        
           |  |  | 1074 |   | 
        
           |  |  | 1075 |         return new JsonModel($data);
 | 
        
           |  |  | 1076 |     }
 | 
        
           |  |  | 1077 |   | 
        
           |  |  | 1078 |   | 
        
           |  |  | 1079 |     public function textAction()
 | 
        
           |  |  | 1080 |     {
 | 
        
           |  |  | 1081 |         $currentUserPlugin = $this->plugin('currentUserPlugin');
 | 
        
           |  |  | 1082 |         $currentUser = $currentUserPlugin->getUser();
 | 
        
           |  |  | 1083 |         $currentCompany = $currentUserPlugin->getCompany();
 | 
        
           |  |  | 1084 |   | 
        
           |  |  | 1085 |         $request    = $this->getRequest();
 | 
        
           |  |  | 1086 |         $topic_uuid   = $this->params()->fromRoute('topic_uuid');
 | 
        
           |  |  | 1087 |         $capsule_uuid = $this->params()->fromRoute('capsule_uuid');
 | 
        
           |  |  | 1088 |         $slide_uuid   = $this->params()->fromRoute('slide_uuid');
 | 
        
           |  |  | 1089 |   | 
        
           |  |  | 1090 |   | 
        
           |  |  | 1091 |         $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
 | 
        
           |  |  | 1092 |         $topic = $topicMapper->fetchOneByUuid($topic_uuid);
 | 
        
           |  |  | 1093 |         if(!$topic) {
 | 
        
           |  |  | 1094 |             return new JsonModel([
 | 
        
           |  |  | 1095 |                 'success'   => false,
 | 
        
           |  |  | 1096 |                 'data'   => 'ERROR_TOPIC_NOT_FOUND'
 | 
        
           |  |  | 1097 |             ]);
 | 
        
           |  |  | 1098 |         }
 | 
        
           |  |  | 1099 |   | 
        
           |  |  | 1100 |         if($topic->company_id != $currentCompany->id) {
 | 
        
           |  |  | 1101 |             return new JsonModel([
 | 
        
           |  |  | 1102 |                 'success'   => false,
 | 
        
           |  |  | 1103 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 1104 |             ]);
 | 
        
           |  |  | 1105 |         }
 | 
        
           |  |  | 1106 |   | 
        
           |  |  | 1107 |         $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
 | 
        
           |  |  | 1108 |         $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
 | 
        
           |  |  | 1109 |         if(!$capsule) {
 | 
        
           |  |  | 1110 |             return new JsonModel([
 | 
        
           |  |  | 1111 |                 'success'   => false,
 | 
        
           |  |  | 1112 |                 'data'   => 'ERROR_CAPSULE_NOT_FOUND'
 | 
        
           |  |  | 1113 |             ]);
 | 
        
           |  |  | 1114 |         }
 | 
        
           |  |  | 1115 |   | 
        
           |  |  | 1116 |         if($capsule->topic_id != $topic->id) {
 | 
        
           |  |  | 1117 |             return new JsonModel([
 | 
        
           |  |  | 1118 |                 'success'   => false,
 | 
        
           |  |  | 1119 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 1120 |             ]);
 | 
        
           |  |  | 1121 |         }
 | 
        
           |  |  | 1122 |   | 
        
           |  |  | 1123 |   | 
        
           |  |  | 1124 |         $slideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
 | 
        
           |  |  | 1125 |         $slide = $slideMapper->fetchOneByUuid($slide_uuid);
 | 
        
           |  |  | 1126 |         if(!$slide) {
 | 
        
           |  |  | 1127 |             return new JsonModel([
 | 
        
           |  |  | 1128 |                 'success'   => false,
 | 
        
           |  |  | 1129 |                 'data'   => 'ERROR_SLIDE_NOT_FOUND'
 | 
        
           |  |  | 1130 |             ]);
 | 
        
           |  |  | 1131 |         }
 | 
        
           |  |  | 1132 |   | 
        
           |  |  | 1133 |         if($slide->capsule_id != $capsule->id) {
 | 
        
           |  |  | 1134 |             return new JsonModel([
 | 
        
           |  |  | 1135 |                 'success'   => false,
 | 
        
           |  |  | 1136 |                 'data'   => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 1137 |             ]);
 | 
        
           |  |  | 1138 |         }
 | 
        
           |  |  | 1139 |   | 
        
           |  |  | 1140 |         if($request->isGet()) {
 | 
        
           |  |  | 1141 |             $data = [
 | 
        
           |  |  | 1142 |                 'success' => true,
 | 
        
           |  |  | 1143 |                 'data' => $slide->description,
 | 
        
           |  |  | 1144 |             ];
 | 
        
           |  |  | 1145 |   | 
        
           |  |  | 1146 |             return new JsonModel($data);
 | 
        
           |  |  | 1147 |   | 
        
           |  |  | 1148 |         } else {
 | 
        
           |  |  | 1149 |             $data = [
 | 
        
           |  |  | 1150 |                 'success' => false,
 | 
        
           |  |  | 1151 |                 'data' => 'ERROR_METHOD_NOT_ALLOWED'
 | 
        
           |  |  | 1152 |             ];
 | 
        
           |  |  | 1153 |   | 
        
           |  |  | 1154 |             return new JsonModel($data);
 | 
        
           |  |  | 1155 |         }
 | 
        
           |  |  | 1156 |   | 
        
           |  |  | 1157 |         return new JsonModel($data);
 | 
        
           |  |  | 1158 |     }
 | 
        
           |  |  | 1159 |   | 
        
           |  |  | 1160 |   | 
        
           |  |  | 1161 |   | 
        
           |  |  | 1162 |   | 
        
           |  |  | 1163 |   | 
        
           |  |  | 1164 | }
 |