public static function indexationBuild() { set_time_limit(0); /* * ****** PAGE ******* */ $pageSelect = new PagesIndex(); $select = $pageSelect->select()->where('PI_Status = 1'); $pageData = $pageSelect->fetchAll($select)->toArray(); $cpt = count($pageData); for ($i = 0; $i < $cpt; $i++) { $indexData['action'] = "add"; $indexData['pageID'] = $pageData[$i]['PI_PageID']; $indexData['moduleID'] = 0; $indexData['contentID'] = $pageData[$i]['PI_PageID']; $indexData['languageID'] = $pageData[$i]['PI_LanguageID']; $indexData['title'] = $pageData[$i]['PI_PageTitle']; $indexData['text'] = ''; $indexData['link'] = ''; $indexData['contents'] = $pageData[$i]['PI_PageTitle']; Cible_FunctionsIndexation::indexation($indexData); } /* * ****** TEXT ******* */ if (class_exists('Text', false)) { $textSelect = new Text(); $select = $textSelect->select()->setIntegrityCheck(false)->from('TextData', array('ID' => 'TD_ID', 'LanguageID' => 'TD_LanguageID', 'Text' => 'TD_OnlineText'))->join('Blocks', 'B_ID = TD_BlockID', array('BlockID' => 'B_ID', 'ModuleID' => 'B_ModuleID'))->where('B_Online = 1')->join('PagesIndex', 'PI_PageID = B_PageID', array('PageID' => 'PI_PageID', 'Title' => 'PI_PageTitle'))->where('PI_Status = 1')->where('PI_LanguageID = TD_LanguageID'); $textData = $textSelect->fetchAll($select)->toArray(); $cpt = count($textData); for ($i = 0; $i < $cpt; $i++) { $indexData['action'] = "add"; $indexData['pageID'] = $textData[$i]['PageID']; $indexData['moduleID'] = $textData[$i]['ModuleID']; $indexData['contentID'] = $textData[$i]['ID']; $indexData['languageID'] = $textData[$i]['LanguageID']; $indexData['title'] = $textData[$i]['Title']; $indexData['text'] = ''; $indexData['link'] = ''; $indexData['contents'] = $textData[$i]['Title'] . " " . $textData[$i]['Text']; Cible_FunctionsIndexation::indexation($indexData); } } /* * ********************* */ /* * ****** NEWS ******* */ if (class_exists('NewsData', false)) { $newsSelect = new NewsData(); $select = $newsSelect->select()->setIntegrityCheck(false)->from('NewsData', array('NewsID' => 'ND_ID', 'CategoryID' => 'ND_CategoryID'))->join('NewsIndex', 'NI_NewsDataID = ND_ID', array('LanguageID' => 'NI_LanguageID', 'NewsTitle' => 'NI_Title', 'NewsBrief' => 'NI_Brief', 'NewsText' => 'NI_Text', 'NewsImageAlt' => 'NI_ImageAlt'))->where('NI_Status = 1'); $newsData = $newsSelect->fetchAll($select); $cpt = count($newsData); for ($i = 0; $i < $cpt; $i++) { $indexData['action'] = "add"; $indexData['pageID'] = $newsData[$i]['CategoryID']; $indexData['moduleID'] = 2; $indexData['contentID'] = $newsData[$i]['NewsID']; $indexData['languageID'] = $newsData[$i]['LanguageID']; $indexData['title'] = $newsData[$i]['NewsTitle']; $indexData['text'] = ''; $indexData['link'] = ''; $indexData['contents'] = $newsData[$i]['NewsTitle'] . " " . $newsData[$i]['NewsBrief'] . " " . $newsData[$i]['NewsText'] . " " . $newsData[$i]['NewsImageAlt']; Cible_FunctionsIndexation::indexation($indexData); } } /* * ********************* */ /* * ****** EVENTS ******* */ if (class_exists('EventsIndex', false)) { $eventsSelect = new EventsIndex(); $select = $eventsSelect->select()->setIntegrityCheck(false)->from('EventsIndex', array('ID' => 'EI_EventsDataID', 'LanguageID' => 'EI_LanguageID', 'Title' => 'EI_Title', 'Brief' => 'EI_Brief', 'Text' => 'EI_Text', 'ImageAlt' => 'EI_ImageAlt'))->join('EventsData', 'ED_ID = EI_EventsDataID', array('CategoryID' => 'ED_CategoryID'))->where('EI_Status = 1'); $eventsData = $eventsSelect->fetchAll($select)->toArray(); $cpt = count($eventsData); for ($i = 0; $i < $cpt; $i++) { $indexData['action'] = "add"; $indexData['pageID'] = $eventsData[$i]['CategoryID']; $indexData['moduleID'] = 7; $indexData['contentID'] = $eventsData[$i]['ID']; $indexData['languageID'] = $eventsData[$i]['LanguageID']; $indexData['title'] = $eventsData[$i]['Title']; $indexData['text'] = ''; $indexData['link'] = ''; $indexData['contents'] = $eventsData[$i]['Title'] . " " . $eventsData[$i]['Brief'] . " " . $eventsData[$i]['Text'] . " " . $eventsData[$i]['ImageAlt']; Cible_FunctionsIndexation::indexation($indexData); } } /* * ********************* */ /* * ****** GALLERY ******* */ if (class_exists('Galleries', false)) { $gallerySelect = new Galleries(); $select = $gallerySelect->select()->setIntegrityCheck(false)->from('Galleries', array('ID' => 'G_ID', 'CategoryID' => 'G_CategoryID'))->where('G_Online = 1')->join('GalleriesIndex', 'GI_GalleryID = G_ID', array('LanguageID' => 'GI_LanguageID', 'Title' => 'GI_Title', 'Description' => 'GI_Description'))->join('ImagesIndex', 'II_ImageID = G_ImageID', array('ImageTitle' => 'II_Title', 'ImageDescription' => 'II_Description'))->where('II_LanguageID = GI_LanguageID'); $galleryData = $gallerySelect->fetchAll($select); $cpt = count($galleryData); for ($i = 0; $i < $cpt; $i++) { $indexData['action'] = "add"; $indexData['pageID'] = $galleryData[$i]['CategoryID']; $indexData['moduleID'] = 9; $indexData['contentID'] = $galleryData[$i]['ID']; $indexData['languageID'] = $galleryData[$i]['LanguageID']; $indexData['title'] = $galleryData[$i]['Title']; $indexData['text'] = ''; $indexData['link'] = 'gallery'; $indexData['contents'] = $galleryData[$i]['Title'] . " " . $galleryData[$i]['Description'] . " " . $galleryData[$i]['ImageTitle'] . " " . $galleryData[$i]['ImageDescription']; Cible_FunctionsIndexation::indexation($indexData); $imagesSelect = new GalleriesImages(); $select = $imagesSelect->select()->setIntegrityCheck(false)->from('Galleries_Images', array('ID' => 'GI_ImageID'))->where('GI_GalleryID = ?', $galleryData[$i]['ID'])->where('GI_Online = 1')->join('ImagesIndex', 'II_ImageID = GI_ImageID', array('LanguageID' => 'II_LanguageID', 'Title' => 'II_Title', 'Description' => 'II_Description')); $imagesData = $imagesSelect->fetchAll($select); $cptImage = count($imagesData); for ($y = 0; $y < $cptImage; $y++) { $indexData['action'] = "add"; $indexData['pageID'] = $galleryData[$i]['CategoryID']; $indexData['moduleID'] = 9; $indexData['contentID'] = $galleryData[$i]['ID']; $indexData['languageID'] = $imagesData[$y]['LanguageID']; $indexData['title'] = $imagesData[$y]['Title']; $indexData['text'] = ''; $indexData['link'] = 'image'; $indexData['contents'] = $imagesData[$y]['Title'] . " " . $imagesData[$y]['Description']; Cible_FunctionsIndexation::indexation($indexData); } } } /* * ********************* */ /* * ****** NEWSLETTERS ******* */ if (class_exists('NewsletterRelease', false)) { $newsletterSelect = new NewsletterReleases(); $select = $newsletterSelect->select()->from('Newsletter_Releases', array('ID' => 'NR_ID', 'LanguageID' => 'NR_LanguageID', 'Title' => 'NR_Title'))->where('NR_Online = 1'); $newsletterData = $newsletterSelect->fetchAll($select)->toArray(); $cpt = count($newsletterData); for ($i = 0; $i < $cpt; $i++) { $indexData['action'] = "add"; $indexData['pageID'] = $newsletterData[$i]['ID']; $indexData['moduleID'] = 8; $indexData['contentID'] = $newsletterData[$i]['ID']; $indexData['languageID'] = $newsletterData[$i]['LanguageID']; $indexData['title'] = $newsletterData[$i]['Title']; $indexData['text'] = ''; $indexData['link'] = 'release'; $indexData['contents'] = $newsletterData[$i]['Title']; Cible_FunctionsIndexation::indexation($indexData); $articlesSelect = new NewsletterArticles(); $select = $articlesSelect->select()->from('Newsletter_Articles', array('ID' => 'NA_ID', 'Title' => 'NA_Title', 'Resume' => 'NA_Resume', 'Text' => 'NA_Text'))->where('NA_ReleaseID = ?', $newsletterData[$i]['ID']); $articlesData = $articlesSelect->fetchAll($select); $cptArticle = count($articlesData); for ($y = 0; $y < $cptArticle; $y++) { $indexData['action'] = "add"; $indexData['pageID'] = $newsletterData[$i]['ID']; $indexData['moduleID'] = 8; $indexData['contentID'] = $articlesData[$y]['ID']; $indexData['languageID'] = $newsletterData[$i]['LanguageID']; $indexData['title'] = $articlesData[$y]['Title']; $indexData['text'] = ''; $indexData['link'] = 'article'; $indexData['contents'] = $articlesData[$y]['Title'] . " " . $articlesData[$y]['Resume'] . " " . $articlesData[$y]['Text']; Cible_FunctionsIndexation::indexation($indexData); } } } /* * ********************* */ }
public function listarchivesAction() { // Newsletter ID and Category ID $categoryID = $this->_getParam('categoryID'); $newsletterID = $this->_getParam('newsletterID'); $back_to_newsletter = !empty($newsletterID) ? "/ID/{$newsletterID}" : ''; // Get the Newsletter ID to dont show $newsletterSelect = new NewsletterReleases(); $select = $newsletterSelect->select()->setIntegrityCheck(false); $select->from('Newsletter_Releases')->join('Languages', 'L_ID = NR_LanguageID', array())->join('CategoriesIndex', 'CI_CategoryID = NR_CategoryID', array())->join('Newsletter_Models_Index', 'NMI_NewsletterModelID = NR_ModelID', array())->join('Newsletter_Models', 'NM_ID = NMI_NewsletterModelID', array())->where('CI_LanguageID = ?', Zend_Registry::get("languageID"))->where('NR_LanguageID = ?', Zend_Registry::get("languageID"))->where('NR_Online = ?', 1)->order('NR_Date DESC'); $newsletterData = $newsletterSelect->fetchRow($select); $actualNewsletterOnline = $newsletterData['NR_ID']; if ($actualNewsletterOnline != '') { if (empty($categoryID) || $categoryID == '') { $categoryID = $newsletterData['NR_CategoryID']; } //get all releases exept the one online $releasesSelect = new NewsletterReleases(); $select = $releasesSelect->select()->setIntegrityCheck(false); $select->from('Newsletter_Releases')->join('CategoriesIndex', 'CI_CategoryID = NR_CategoryID')->join('Status', 'Newsletter_Releases.NR_Online = Status.S_ID')->where('CI_LanguageID = ?', Zend_Registry::get("languageID"))->where('NR_LanguageID = ?', Zend_Registry::get("languageID"))->where('NR_Online = ?', 1)->where('NR_CategoryID = ?', $categoryID)->where('NR_ID <> ?', $actualNewsletterOnline)->order('NR_Date DESC'); $releasesData = $releasesSelect->fetchAll($select); $this->view->assign('listArchives', $releasesData); $this->view->assign('subscribeLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'subscribe', 8)); $this->view->assign('unsubscribeLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'unsubscribe', 8)); //$this->view->assign('detailsRelease', $this->view->baseUrl()."/".Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'details_release', 8)); $this->view->assign('detailsRelease', Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'details_release', 8)); //$this->view->assign('back_to_release', Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'details_release', 8)); $this->view->assign('back_to_release', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'details_release', 8) . $back_to_newsletter); $this->view->assign('archivesLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($categoryID, 'list_archives', 8) . '/categoryID/' . $categoryID); } else { $this->view->assign('listArchives', array()); $blockID = $this->_getParam('BlockID'); $blockParams = Cible_FunctionsBlocks::getBlockParameters($blockID)->toArray(); $newsletterCategoryID = $blockParams[0]['P_Value']; $this->view->assign('subscribeLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($newsletterCategoryID, 'subscribe', 8)); $this->view->assign('unsubscribeLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($newsletterCategoryID, 'unsubscribe', 8)); $this->view->assign('back_to_release', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($newsletterCategoryID, 'details_release', 8) . $back_to_newsletter); $this->view->assign('archivesLink', $this->view->baseUrl() . "/" . Cible_FunctionsCategories::getPagePerCategoryView($newsletterCategoryID, 'list_archives', 8) . '/categoryID/' . $newsletterCategoryID); } }
/** * Save and / or send email to the selected list. * Set the filter and the status of recipients. * * @return void */ public function manageSendAction() { $this->view->title = "Gestion de l'envoie de l'infolettre"; if ($this->view->aclIsAllowed('newsletter', 'manage', true)) { $blockID = (int) $this->_getParam('blockID'); $pageID = (int) $this->_getParam('pageID'); $newsletterID = (int) $this->_getParam('newsletterID'); //Fetch data of the current newsletter $releaseSelect = new NewsletterReleases(); $select = $releaseSelect->select()->where('NR_ID = ?', $newsletterID); $releaseData = $releaseSelect->fetchRow($select); $releaseDataArray = $releaseData->toArray(); // Display data if newsletter exists if (count($releaseDataArray) > 0) { // generate the form $baseDir = $this->view->baseUrl(); $cancelUrl = "/newsletter/index/edit/blockID/{$blockID}/pageID/{$pageID}/newsletterID/{$newsletterID}"; $oDate = new Zend_Date($releaseDataArray['NR_MailingDateTimeScheduled'], 'fr'); $listeID = (int) $this->_getParam('listeID'); // List of filters with numbers of members $collectionsSelect = new NewsletterFilterCollectionsSet(); $select = $collectionsSelect->select()->order('NFCS_Name'); $collectionsData = $collectionsSelect->fetchAll($select); $collectionList = array(); $arraySelect = array(); foreach ($collectionsData as $collection) { $members = $this->_countFilterMembers($collection['NFCS_ID']); $nbMembers = count($members['members']); $collectionList[$collection['NFCS_ID']] = $collection['NFCS_Name'] . ' (' . $nbMembers . ' dest.)'; $arraySelect[$collection['NFCS_ID']] = $members["selection"]; } $releaseArrayMembers = array(); $result = array(); // Récupère les éléments d'une liste en particulier $planedDate = $oDate->toString('YYYY-MM-dd'); $planedTime = $oDate->toString('HH:mm'); // options to the form $form = new FormNewsletterManageSend(array('status' => $releaseDataArray['NR_Status'], 'planedDate' => $planedDate, 'planedTime' => $planedTime, 'baseDir' => $baseDir, 'cancelUrl' => $baseDir . $cancelUrl, 'filterList' => $collectionList)); $db = Zend_Registry::get('db'); if (!$listeID) { $listeID = $releaseDataArray["NR_CollectionFiltersID"]; } if ($listeID > 0) { $result = $db->fetchAll($arraySelect[$listeID]); } $this->view->form = $form; $this->view->releaseData = $releaseDataArray; $this->view->rsDataMembers = $result; if ($releaseDataArray['NR_Status'] != 0) { // List of members who already have recieved the newsletter. $alreadyMembersRecievedSelect = new NewsletterReleasesMembers(); $select = $alreadyMembersRecievedSelect->select()->where('NRM_ReleaseID = ?', $releaseDataArray['NR_ID'])->order('NRM_DateTimeReceived'); $alreadyMembersRecievedData = $alreadyMembersRecievedSelect->fetchAll($select); $i = 0; $y = 0; $cpt = 0; $lastDate = ""; foreach ($alreadyMembersRecievedData as $alreadyMember) { if ($lastDate == "") { $lastDate = substr($alreadyMember['NRM_DateTimeReceived'], 0, 10); } if (substr($alreadyMember['NRM_DateTimeReceived'], 0, 10) != $lastDate) { $endDate = $alreadyMember['NRM_DateTimeReceived']; $dateTimeDiff = $this->get_time_difference($startDate, $endDate); $time = $dateTimeDiff['hours'] . " heure(s):" . $dateTimeDiff['minutes'] . " minute(s):" . $dateTimeDiff['seconds'] . " seconde(s)"; $members[$y]['date'] = $lastDate; $members[$y]['time'] = $time; $members[$y]['count'] = $cpt; $y++; $i = 0; $cpt = 0; } if ($i == 0) { $startDate = $alreadyMember['NRM_DateTimeReceived']; $lastDate = substr($alreadyMember['NRM_DateTimeReceived'], 0, 10); $i++; } $cpt++; } if ($alreadyMembersRecievedData->count() > 0) { $count = $alreadyMembersRecievedData->count() - 1; $endDate = $alreadyMembersRecievedData[$count]['NRM_DateTimeReceived']; $dateTimeDiff = $this->get_time_difference($startDate, $endDate); $time = $dateTimeDiff['hours'] . " heure(s):" . $dateTimeDiff['minutes'] . " minute(s):" . $dateTimeDiff['seconds'] . " seconde(s)"; $members[$y]['date'] = $lastDate; $members[$y]['time'] = $time; $members[$y]['count'] = $cpt; $this->view->members = $members; } else { $dateTimeDiff = $this->get_time_difference($releaseDataArray['NR_MailingDateTimeStart'], $releaseDataArray['NR_MailingDateTimeEnd']); $time = $dateTimeDiff['hours'] . " heure(s):" . $dateTimeDiff['minutes'] . " minute(s):" . $dateTimeDiff['seconds'] . " seconde(s)"; $members[0]['date'] = substr($releaseDataArray['NR_MailingDateTimeStart'], 0, 10); $members[0]['time'] = $time; $members[0]['count'] = 0; } $this->view->members = $members; } else { $this->view->members = ""; } if ($this->_request->isPost()) { $formData = $this->_request->getPost(); if ($form->isValid($formData)) { $releaseData['NR_MailingDateTimeScheduled'] = $form->getValue('NR_MailingDate') . " " . $form->getValue('NR_MailingTime') . ":00"; $releaseData['NR_Status'] = $form->getValue('NR_Status'); $releaseData['NR_CollectionFiltersID'] = $form->getValue('NR_CollectionFiltersID'); $releaseData->save(); if ($formData['newsletter_send']) { $this->_redirect("/newsletter/index/send-newsletter/newsletterID/{$newsletterID}"); } else { $this->_redirect($cancelUrl); } } else { $form->populate($formData); } } else { $form->populate($releaseData->toArray()); if ($releaseData['NR_Status'] == 0) { $form->getElement('NR_Status')->setValue(3); } if ($listeID != "") { $form->getElement('NR_CollectionFiltersID')->setValue($listeID); } $form->getElement('NR_MailingDate')->setValue(substr($releaseData['NR_MailingDateTimeScheduled'], 0, 10)); $form->getElement('NR_MailingTime')->setValue(substr($releaseData['NR_MailingDateTimeScheduled'], 10, 6)); } } } }
function deleteAction() { $this->view->title = "'Suppression d'un article à une parution"; $this->view->assign('isXmlHttpRequest', $this->_isXmlHttpRequest); $this->view->assign('success', false); if ($this->view->aclIsAllowed('newsletter', 'manage', true)) { // variables $articleID = $this->_getParam('articleID'); $newsletterID = $this->_getParam('newsletterID'); $return = "/newsletter/index/edit/newsletterID/{$newsletterID}"; $this->view->return = $this->view->baseUrl() . $return; $newsletterArticleSelect = new NewsletterArticles(); $select = $newsletterArticleSelect->select(); $select->where('NA_ID = ?', $articleID); $newsletterArticleData = $newsletterArticleSelect->fetchRow($select); if (!$newsletterArticleData) { if ($this->_request->isPost()) { $this->view->assign('success', true); } $this->view->assign('deleted', true); $this->view->assign('articleID', $articleID); } else { $this->view->assign('deleted', false); $this->view->newsletterArticle = $newsletterArticleData->toArray(); if ($this->_request->isPost()) { $del = $this->_request->getPost('delete'); if ($del && $newsletterArticleData) { // delete index // check if release is online $releaseSelect = new NewsletterReleases(); $select = $releaseSelect->select()->where('NR_ID = ?', $newsletterArticleData['NA_ReleaseID']); $releaseData = $releaseSelect->fetchRow($select); $indexData['moduleID'] = 8; $indexData['contentID'] = $newsletterArticleData['NA_ID']; $indexData['languageID'] = $releaseData['NR_LanguageID']; $indexData['action'] = 'delete'; Cible_FunctionsIndexation::indexation($indexData); Cible_FunctionsGeneral::delFolder("../../{$this->_config->document_root}/data/images/newsletter/{$newsletterID}/{$articleID}"); // update position for all article higher $newsletterArticlePosition = new NewsletterArticles(); $where = 'NA_PositionID > ' . $newsletterArticleData['NA_PositionID']; $where .= ' AND NA_ReleaseID = ' . $newsletterArticleData['NA_ReleaseID']; $where .= ' AND NA_ZoneID = ' . $newsletterArticleData['NA_ZoneID']; $newsletterArticlePosition->update(array('NA_PositionID' => new Zend_Db_Expr('NA_PositionID - 1 ')), $where); $newsletterArticleData->delete(); if (!$this->_isXmlHttpRequest) { $this->_redirect($return); } else { $this->view->assign('success', true); $this->view->assign('articleID', $articleID); } } else { $this->_redirect($return); } } } } }
function deleteAction() { // web page title $this->view->title = "Suppression d'un destinataire"; if ($this->view->aclIsAllowed('newsletter', 'manage', true)) { // variables $pageID = (int) $this->_getParam('pageID'); $blockID = (int) $this->_getParam('blockID'); $newsletterID = (int) $this->_getParam('newsletterID'); $recipientID = (int) $this->_getParam('recipientID'); $return = "/newsletter/index/manage-recipients/blockID/{$blockID}/pageID/{$pageID}/newsletterID/{$newsletterID}"; $this->view->return = $this->view->baseUrl() . $return; $profile = new Profile(2); $recipientDetails = $profile->getMemberDetails($recipientID); $this->view->recipient = $recipientDetails; if ($this->_request->isPost()) { $del = $this->_request->getPost('delete'); if ($del) { // search the category id of the release $categorySelect = new NewsletterReleases(); $select = $categorySelect->select(); $select->where('NR_ID = ?', $newsletterID); $categoryData = $categorySelect->fetchRow($select); $categoryData = $categoryData->toArray(); if ($categoryData) { $categories = explode(",", $recipientDetails['newsletter_categories']); $searchID = array_search($categoryData['NR_CategoryID'], $categories, true); $categories[$searchID] = ""; $categories = array_filter($categories, "is_numeric"); $val = implode(',', $categories); $profile->updateMember($recipientID, array("newsletter_categories" => "{$val}")); } } $this->_redirect($return); } } }