Example #1
0
 public function doAction()
 {
     $out = '';
     $cName = $this->doorGets->controllerNameNow();
     // Init langue
     $lgActuel = $this->doorGets->getLangueTradution();
     $moduleInfos = $this->doorGets->moduleInfos($this->doorGets->Uri, $lgActuel);
     $User = $this->doorGets->user;
     // Init url redirection
     $redirectUrl = './?controller=module' . $moduleInfos['type'] . '&uri=' . $this->doorGets->Uri . '&lg=' . $lgActuel;
     // Check if is content modo
     in_array($moduleInfos['id'], $User['liste_module_modo']) ? $is_modo = true : ($is_modo = false);
     // Check if is module modo
     in_array('module', $User['liste_module_interne']) && in_array('module_' . $moduleInfos['type'], $User['liste_module_interne']) ? $is_modules_modo = true : ($is_modules_modo = false);
     // check if user can edit content
     in_array($moduleInfos['id'], $User['liste_module_edit']) ? $user_can_edit = true : ($user_can_edit = false);
     // check if user can delete content
     in_array($moduleInfos['id'], $User['liste_module_delete']) ? $user_can_delete = true : ($user_can_delete = false);
     // Init count total contents
     $countContents = 0;
     $arrForCountSearchQuery[] = array('key' => "id_user", 'type' => '=', 'value' => $User['id']);
     $countContents = $this->doorGets->getCountTable($this->doorGets->Table, $arrForCountSearchQuery);
     // Check limit to add content
     $isLimited = 0;
     if (array_key_exists($moduleInfos['id'], $User['liste_module_limit']) && $User['liste_module_limit'] !== '0') {
         $isLimited = (int) $User['liste_module_limit'][$moduleInfos['id']];
     }
     // get Content for edit / delete
     $params = $this->doorGets->Params();
     if (array_key_exists('id', $params['GET'])) {
         $id = $params['GET']['id'];
         $isContent = $this->doorGets->dbQS($id, $this->doorGets->Table);
         if (!empty($isContent)) {
             if ($lgGroupe = @unserialize($isContent['groupe_traduction'])) {
                 $idLgGroupe = $lgGroupe[$lgActuel];
                 $isContentTraduction = $this->doorGets->dbQS($idLgGroupe, $this->doorGets->Table . '_traduction');
                 if (!empty($isContentTraduction)) {
                     $isContent = array_merge($isContent, $isContentTraduction);
                 }
                 // test if user can edit content
                 if ($isContent['id_user'] !== $this->doorGets->user['id'] && !in_array($isContent['id_groupe'], $this->doorGets->user['liste_enfant_modo'])) {
                     FlashInfo::set($this->doorGets->__("Vous n'avez pas les droits pour afficher ce contenu"), "error");
                     $this->doorGets->_redirect($redirectUrl);
                 }
             }
         }
     }
     $champsNonObligatoire = array('article_tinymce', 'meta_titre', 'meta_description', 'meta_keys', 'sendto', 'id_disqus', 'image_gallery', 'meta_facebook_titre', 'meta_facebook_description', 'meta_facebook_image', 'meta_twitter_titre', 'meta_twitter_description', 'meta_twitter_image', 'meta_twitter_player');
     $messageSuccess = $this->doorGets->__("Vos informations ont bien été mises à jour");
     switch ($this->Action) {
         case 'add':
             if (!empty($this->doorGets->Form->i)) {
                 $this->doorGets->checkMode();
                 $cResultsInt = $this->doorGets->getCountTable($this->doorGets->Table);
                 $listToCategories = '';
                 // gestion des champs vide
                 foreach ($this->doorGets->Form->i as $k => $v) {
                     if (!in_array($k, $champsNonObligatoire) && empty($v)) {
                         $this->doorGets->Form->e[$cName . '_add_' . $k] = 'ok';
                     }
                     $iCat = explode('_', $k);
                     if (!empty($iCat) && $iCat[0] === 'categories' && is_numeric($iCat[1])) {
                         $listToCategories .= $iCat[1] . ',';
                         unset($this->doorGets->Form->i[$k]);
                     }
                 }
                 $extension = '.png';
                 if (isset($_FILES[$cName . '_add_image']) && ($_FILES[$cName . '_add_image']["type"] == "image/jpeg" || $_FILES[$cName . '_add_image']["type"] == "image/png") && $_FILES[$cName . '_add_image']["error"] === 0) {
                     if ($_FILES[$cName . '_add_image']["type"] == "image/jpeg") {
                         $extension = '.jpg';
                     }
                 } else {
                     $this->doorGets->Form->e[$cName . '_add_image'] = 'ok';
                 }
                 if (empty($this->doorGets->Form->e)) {
                     $uni = time() . '-' . uniqid('doorgets') . '';
                     $nameFileImage = $uni . '-' . $this->doorGets->Uri;
                     $this->doorGets->Form->i['image'] = $nameFileImage;
                     $send_img = UploadImage::send($this->doorGets->getRealUri($this->doorGets->Uri), $_FILES[$cName . '_add_image']['tmp_name'], $_FILES[$cName . '_add_image']['name'], $nameFileImage, 257);
                     if ($send_img !== null) {
                         $this->doorGets->Form->i['image'] = strtolower($send_img);
                     }
                 }
                 if (empty($this->doorGets->Form->e)) {
                     $image_gallery = $this->doorGets->Form->i['image_gallery'];
                     // Copy images gallery to real path
                     $this->doorGets->copyFileToRealPath($this->doorGets->Uri, $image_gallery);
                 }
                 // validation si aucune erreur
                 if (empty($this->doorGets->Form->e)) {
                     if (!array_key_exists('active', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['active'] = 3;
                     }
                     if (!array_key_exists('author_badge', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['author_badge'] = $is_modo ? 0 : $moduleInfos['author_badge'];
                     }
                     if (!array_key_exists('comments', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['comments'] = 0;
                     }
                     if (!array_key_exists('partage', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['partage'] = 0;
                     }
                     if (!array_key_exists('facebook', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['facebook'] = 0;
                     }
                     if (!array_key_exists('disqus', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['disqus'] = 0;
                     }
                     if (!array_key_exists('in_rss', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['in_rss'] = 0;
                     }
                     //
                     $data['pseudo'] = $User['pseudo'];
                     $data['author_badge'] = $this->doorGets->Form->i['author_badge'];
                     $data['id_user'] = $this->doorGets->user['id'];
                     $data['id_groupe'] = $this->doorGets->user['groupe'];
                     $data['categorie'] = $listToCategories;
                     $data['ordre'] = $cResultsInt + 1;
                     $data['active'] = $this->doorGets->Form->i['active'];
                     if (!$is_modo) {
                         $data['active'] = 3;
                     }
                     $data['comments'] = $this->doorGets->Form->i['comments'];
                     $data['partage'] = $this->doorGets->Form->i['partage'];
                     $data['facebook'] = $this->doorGets->Form->i['facebook'];
                     $data['disqus'] = $this->doorGets->Form->i['disqus'];
                     $data['in_rss'] = $this->doorGets->Form->i['in_rss'];
                     $data['date_creation'] = time();
                     $idContent = $this->doorGets->dbQI($data, $this->doorGets->Table);
                     //
                     foreach ($this->doorGets->getAllLanguages() as $k => $v) {
                         $dataNext = array('titre' => $this->doorGets->Form->i['titre'], 'uri' => $this->doorGets->Form->i['uri'], 'article_tinymce' => $this->doorGets->Form->i['article_tinymce'], 'meta_titre' => $this->doorGets->Form->i['meta_titre'], 'meta_description' => $this->doorGets->Form->i['meta_description'], 'meta_keys' => $this->doorGets->Form->i['meta_keys'], 'image' => $this->doorGets->Form->i['image'], 'image_gallery' => $image_gallery, 'meta_facebook_type' => $this->doorGets->Form->i['meta_facebook_type'], 'meta_facebook_titre' => $this->doorGets->Form->i['meta_facebook_titre'], 'meta_facebook_description' => $this->doorGets->Form->i['meta_facebook_description'], 'meta_facebook_image' => $this->doorGets->Form->i['meta_facebook_image'], 'meta_twitter_type' => $this->doorGets->Form->i['meta_twitter_type'], 'meta_twitter_titre' => $this->doorGets->Form->i['meta_twitter_titre'], 'meta_twitter_description' => $this->doorGets->Form->i['meta_twitter_description'], 'meta_twitter_image' => $this->doorGets->Form->i['meta_twitter_image'], 'meta_twitter_player' => $this->doorGets->Form->i['meta_twitter_player']);
                         $dataNext['categorie'] = $listToCategories;
                         $dataNext['date_modification'] = $data['date_creation'];
                         $dataNext['id_content'] = $idContent;
                         $dataNext['langue'] = $k;
                         $dataNext['uri'] = $this->doorGets->Form->i['uri'] . '-' . $idContent . '-' . $k;
                         $idTraduction[$k] = $this->doorGets->dbQI($dataNext, $this->doorGets->Table . '_traduction');
                     }
                     // Tracker
                     $usersTracking = new UsersTrackEntity(null, $this->doorGets);
                     $usersTracking->setIdSession(session_id())->setIpUser($_SERVER['REMOTE_ADDR'])->setUrlPage($_SERVER['REQUEST_URI'])->setUrlReferer($_SERVER['HTTP_REFERER'])->setIdUser($User['id'])->setTitle($dataNext['titre'])->setIdGroupe($User['groupe'])->setLangue($lgActuel)->setUriModule($this->doorGets->Uri)->setIdContent($idContent)->setAction($this->Action)->setDate(time())->save();
                     if (!$is_modo) {
                         $moderation = new ModerationEntity(null, $this->doorGets);
                         $moderation->setIdContent($idContent)->setIdUser($User['id'])->setPseudo($User['pseudo'])->setIdGroupe($User['groupe'])->setUriModule($this->doorGets->Uri)->setTypeModule('image')->setAction($this->Action)->setLangue($lgActuel)->setDateCreation(time())->save();
                         $this->doorGets->sendEmailNotificationToGroupe($moduleInfos['uri_notification_moderator'], $moduleInfos['id']);
                         $messageSuccess = $this->doorGets->__("Votre contenu est en cours de modération");
                     }
                     $dataModification['groupe_traduction'] = serialize($idTraduction);
                     $this->doorGets->dbQU($idContent, $dataModification, $this->doorGets->Table);
                     $this->doorGets->successHeaderResponse($messageSuccess, $redirectUrl . '&action=edit&id=' . $idContent);
                 }
                 $this->doorGets->errorHeaderResponse($this->doorGets->__("Veuillez remplir correctement le formulaire"), $this->doorGets->Form->e);
             }
             break;
         case 'edit':
             if (!empty($this->doorGets->Form->i) && $user_can_edit) {
                 $this->doorGets->checkMode();
                 $this->doorGets->Form->i['image'] = $isContent['image'];
                 $listToCategories = '';
                 // gestion des champs vide
                 foreach ($this->doorGets->Form->i as $k => $v) {
                     if (!in_array($k, $champsNonObligatoire) && empty($v)) {
                         $this->doorGets->Form->e[$cName . '_edit_' . $k] = 'ok';
                     }
                     $iCat = explode('_', $k);
                     if (!empty($iCat) && $iCat[0] === 'categories' && is_numeric($iCat[1])) {
                         $listToCategories .= $iCat[1] . ',';
                         unset($this->doorGets->Form->i[$k]);
                     }
                 }
                 $extension = '.png';
                 if (isset($_FILES[$cName . '_edit_image']) && ($_FILES[$cName . '_edit_image']["type"] == "image/jpeg" || $_FILES[$cName . '_edit_image']["type"] == "image/png") && $_FILES[$cName . '_edit_image']["error"] === 0) {
                     if ($_FILES[$cName . '_edit_image']["type"] == "image/jpeg") {
                         $extension = '.jpg';
                     }
                 }
                 if (empty($this->doorGets->Form->e)) {
                     $uni = time() . '-' . uniqid('doorgets') . '';
                     $nameFileImage = $uni . '-' . $this->doorGets->Uri;
                     $send_img = UploadImage::send($this->doorGets->getRealUri($this->doorGets->Uri), $_FILES[$cName . '_edit_image']['tmp_name'], $_FILES[$cName . '_edit_image']['name'], $nameFileImage, 257);
                     if ($send_img !== null) {
                         $this->doorGets->Form->i['image'] = strtolower($send_img);
                     }
                 }
                 if (empty($this->doorGets->Form->e)) {
                     $image_gallery = $this->doorGets->Form->i['image_gallery'];
                     // Copy images gallery to real path
                     $this->doorGets->copyFileToRealPath($this->doorGets->Uri, $image_gallery);
                 }
                 if (empty($this->doorGets->Form->e)) {
                     if (!array_key_exists('active', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['active'] = $isContent['active'];
                     }
                     if (!array_key_exists('author_badge', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['author_badge'] = $is_modo ? 0 : $isContent['author_badge'];
                     }
                     if (!array_key_exists('comments', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['comments'] = $is_modo ? 0 : $isContent['comments'];
                     }
                     if (!array_key_exists('partage', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['partage'] = $is_modo ? 0 : $isContent['partage'];
                     }
                     if (!array_key_exists('facebook', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['facebook'] = $is_modo ? 0 : $isContent['facebook'];
                     }
                     if (!array_key_exists('disqus', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['disqus'] = $is_modo ? 0 : $isContent['disqus'];
                     }
                     if (!array_key_exists('in_rss', $this->doorGets->Form->i)) {
                         $this->doorGets->Form->i['in_rss'] = $is_modo ? 0 : $isContent['in_rss'];
                     }
                     $dataContenu['categorie'] = $listToCategories;
                     $dataContenu['author_badge'] = $this->doorGets->Form->i['author_badge'];
                     $dataContenu['active'] = $this->doorGets->Form->i['active'];
                     if (!$is_modo) {
                         $dataContenu['active'] = 3;
                     }
                     $dataContenu['comments'] = $this->doorGets->Form->i['comments'];
                     $dataContenu['partage'] = $this->doorGets->Form->i['partage'];
                     $dataContenu['facebook'] = $this->doorGets->Form->i['facebook'];
                     $dataContenu['disqus'] = $this->doorGets->Form->i['disqus'];
                     $dataContenu['in_rss'] = $this->doorGets->Form->i['in_rss'];
                     $dataTraduction = array('titre' => $this->doorGets->Form->i['titre'], 'uri' => $this->doorGets->Form->i['uri'], 'article_tinymce' => $this->doorGets->Form->i['article_tinymce'], 'meta_titre' => $this->doorGets->Form->i['meta_titre'], 'meta_description' => $this->doorGets->Form->i['meta_description'], 'meta_keys' => $this->doorGets->Form->i['meta_keys'], 'categorie' => $listToCategories, 'image' => $this->doorGets->Form->i['image'], 'image_gallery' => $image_gallery, 'meta_facebook_type' => $this->doorGets->Form->i['meta_facebook_type'], 'meta_facebook_titre' => $this->doorGets->Form->i['meta_facebook_titre'], 'meta_facebook_description' => $this->doorGets->Form->i['meta_facebook_description'], 'meta_facebook_image' => $this->doorGets->Form->i['meta_facebook_image'], 'meta_twitter_type' => $this->doorGets->Form->i['meta_twitter_type'], 'meta_twitter_titre' => $this->doorGets->Form->i['meta_twitter_titre'], 'meta_twitter_description' => $this->doorGets->Form->i['meta_twitter_description'], 'meta_twitter_image' => $this->doorGets->Form->i['meta_twitter_image'], 'meta_twitter_player' => $this->doorGets->Form->i['meta_twitter_player'], 'date_modification' => time());
                     $dataVersion = $dataTraduction;
                     $this->saveLastContentVersion($isContent['id_content'], $dataVersion);
                     // Tracker
                     $usersTracking = new UsersTrackEntity(null, $this->doorGets);
                     $usersTracking->setIdSession(session_id())->setIpUser($_SERVER['REMOTE_ADDR'])->setUrlPage($_SERVER['REQUEST_URI'])->setUrlReferer($_SERVER['HTTP_REFERER'])->setIdUser($User['id'])->setTitle($dataTraduction['titre'])->setIdGroupe($User['groupe'])->setLangue($lgActuel)->setUriModule($this->doorGets->Uri)->setIdContent($isContent['id_content'])->setAction($this->Action)->setDate(time())->save();
                     if (!$is_modo) {
                         $moderation = new ModerationEntity(null, $this->doorGets);
                         $moderation->setIdContent($isContent['id_content'])->setIdUser($User['id'])->setPseudo($User['pseudo'])->setIdGroupe($User['groupe'])->setUriModule($this->doorGets->Uri)->setTypeModule('image')->setAction($this->Action)->setLangue($lgActuel)->setDateCreation(time())->save();
                         $this->doorGets->sendEmailNotificationToGroupe($moduleInfos['uri_notification_moderator'], $moduleInfos['id']);
                         $messageSuccess = $this->doorGets->__("Votre contenu est en cours de modération");
                     } else {
                         $uri_module = $this->doorGets->Uri;
                         $id_content = $isContent['id_content'];
                         $this->doorGets->dbQL("\n                                DELETE FROM _moderation \n                                WHERE id_content = '{$id_content}' \n                                AND uri_module = '{$uri_module}'\n                                LIMIT 1000\n                            ");
                         $uriNotification = $dataContenu['active'] === '2' ? $moduleInfos['uri_notification_user_success'] : $moduleInfos['uri_notification_user_error'];
                         $this->doorGets->sendEmailNotificationToUser($uriNotification, $isContent['id_user']);
                     }
                     // Update Data
                     $this->doorGets->dbQU($isContent['id_content'], $dataContenu, $this->doorGets->Table);
                     $this->doorGets->dbQU($isContent['id'], $dataTraduction, $this->doorGets->Table . '_traduction');
                     $this->doorGets->successHeaderResponse($messageSuccess);
                 }
                 $this->doorGets->errorHeaderResponse($this->doorGets->__("Veuillez remplir correctement le formulaire"), $this->doorGets->Form->e);
             }
             break;
         case 'delete':
             if (!empty($this->doorGets->Form->i) && $user_can_delete) {
                 $this->doorGets->checkMode();
                 if (empty($this->doorGets->Form->e)) {
                     $lgGroupe = unserialize($isContent['groupe_traduction']);
                     foreach ($lgGroupe as $v) {
                         @$this->doorGets->dbQD($v, $this->doorGets->Table . '_traduction');
                     }
                     @unlink(BASE . 'data/' . $this->doorGets->getRealUri($this->doorGets->Uri) . '/' . $isContent['image']);
                     $this->doorGets->dbQD($isContent['id_content'], $this->doorGets->Table);
                     $this->doorGets->dbQL("DELETE FROM _dg_comments WHERE uri_module = '" . $this->doorGets->Uri . "' AND uri_content = '" . $isContent['id_content'] . "' ");
                     $this->doorGets->dbQL("UPDATE " . $this->doorGets->Table . " SET ordre = ordre - 1 WHERE ordre > " . $isContent['ordre'] . " ");
                     //$this->doorGets->clearDBCache();
                     // Tracker
                     $usersTracking = new UsersTrackEntity(null, $this->doorGets);
                     $usersTracking->setIdSession(session_id())->setIpUser($_SERVER['REMOTE_ADDR'])->setUrlPage($_SERVER['REQUEST_URI'])->setUrlReferer($_SERVER['HTTP_REFERER'])->setIdUser($User['id'])->setTitle($isContent['titre'])->setIdGroupe($User['groupe'])->setLangue($lgActuel)->setUriModule($this->doorGets->Uri)->setIdContent($isContent['id_content'])->setAction($this->Action)->setDate(time())->save();
                     $this->doorGets->successHeaderResponse($this->doorGets->__("Les données sont supprimées"), $redirectUrl);
                 }
             }
             break;
     }
 }