Beispiel #1
0
 function unsubscribe($subid, $listids)
 {
     $app = JFactory::getApplication();
     if (acymailing_level(3)) {
         $campaignClass = acymailing_get('helper.campaign');
         $campaignClass->stop($subid, $listids);
     }
     $config = acymailing_config();
     static $alreadySent = false;
     if ($this->sendNotif and !$alreadySent and $config->get('notification_unsub') and !$app->isAdmin()) {
         $alreadySent = true;
         $mailer = acymailing_get('helper.mailer');
         $mailer->report = false;
         $mailer->autoAddUser = true;
         $mailer->checkConfirmField = false;
         $userClass = acymailing_get('class.subscriber');
         $subscriber = $userClass->get($subid);
         $ipClass = acymailing_get('helper.user');
         $mailer->addParam('survey', $this->survey);
         $listSubClass = acymailing_get('class.listsub');
         $mailer->addParam('user:subscription', $listSubClass->getSubscriptionString($subscriber->subid));
         $mailer->addParam('user:subscriptiondates', $listSubClass->getSubscriptionString($subscriber->subid, true));
         $mailer->addParamInfo();
         $subscriber->ip = $ipClass->getIP();
         foreach ($subscriber as $fieldname => $value) {
             $mailer->addParam('user:'******',', $config->get('notification_unsub'));
         foreach ($allUsers as $oneUser) {
             $mailer->sendOne('notification_unsub', $oneUser);
         }
     }
     $db = JFactory::getDBO();
     if ($this->forceConf || ($this->sendConf and !$app->isAdmin())) {
         $db->setQuery('SELECT DISTINCT `unsubmailid` FROM ' . acymailing_table('list') . ' WHERE `listid` IN (' . implode(',', $listids) . ') AND `published` = 1  AND `unsubmailid` > 0');
         $messages = acymailing_loadResultArray($db);
         if (!empty($messages)) {
             $config = acymailing_config();
             $mailHelper = acymailing_get('helper.mailer');
             $mailHelper->report = $config->get('unsub_message', true);
             $mailHelper->checkAccept = false;
             foreach ($messages as $mailid) {
                 $mailHelper->trackEmail = true;
                 $mailHelper->sendOne($mailid, $subid);
             }
         }
     }
     //end only frontend
     $db->setQuery('DELETE  FROM ' . acymailing_table('queue') . ' WHERE `subid` = ' . (int) $subid . ' AND `mailid` IN (SELECT `mailid` FROM ' . acymailing_table('listmail') . ' WHERE `listid` IN (' . implode(',', $listids) . '))');
     $db->query();
     JPluginHelper::importPlugin('acymailing');
     $dispatcher = JDispatcher::getInstance();
     $resultsTrigger = $dispatcher->trigger('onAcyUnsubscribe', array($subid, $listids));
 }
Beispiel #2
0
 public function acymailing_generateautonews(&$email)
 {
     $time = time();
     $tags = $this->acypluginsHelper->extractTags($email, 'autocontent');
     $return = new stdClass();
     $return->status = true;
     $return->message = '';
     $this->tags = array();
     if (empty($tags)) {
         return $return;
     }
     foreach ($tags as $oneTag => $parameter) {
         if (isset($this->tags[$oneTag])) {
             continue;
         }
         $allcats = explode('-', $parameter->id);
         $selectedArea = array();
         foreach ($allcats as $oneCat) {
             if (!ACYMAILING_J16) {
                 $sectype = substr($oneCat, 0, 3);
                 $num = substr($oneCat, 3);
                 if (empty($num)) {
                     continue;
                 }
                 if ($sectype == 'cat') {
                     $selectedArea[] = 'catid = ' . (int) $num;
                 } elseif ($sectype == 'sec') {
                     $selectedArea[] = 'sectionid = ' . (int) $num;
                 }
             } else {
                 if (empty($oneCat)) {
                     continue;
                 }
                 $selectedArea[] = intval($oneCat);
             }
         }
         $query = 'SELECT a.id FROM `#__content` as a ';
         $where = array();
         if (!empty($parameter->tags) && version_compare(JVERSION, '3.1.0', '>=')) {
             $tagsArray = explode(',', $parameter->tags);
             JArrayHelper::toInteger($tagsArray);
             if (!empty($tagsArray)) {
                 foreach ($tagsArray as $oneTagId) {
                     $query .= 'JOIN #__contentitem_tag_map AS tagsmap' . $oneTagId . ' ON (a.id = tagsmap' . $oneTagId . '.content_item_id AND tagsmap' . $oneTagId . '.type_alias LIKE "com_content.article" AND tagsmap' . $oneTagId . '.tag_id = ' . $oneTagId . ') ';
                 }
             }
         }
         if (!empty($parameter->featured)) {
             if (ACYMAILING_J16) {
                 $where[] = 'a.featured = 1';
             } else {
                 $query .= 'JOIN `#__content_frontpage` as b ON a.id = b.content_id ';
                 $where[] = 'b.content_id IS NOT NULL';
             }
         }
         if (!empty($parameter->nofeatured)) {
             if (ACYMAILING_J16) {
                 $where[] = 'a.featured = 0';
             } else {
                 $query .= 'LEFT JOIN `#__content_frontpage` as b ON a.id = b.content_id ';
                 $where[] = 'b.content_id IS NULL';
             }
         }
         if (ACYMAILING_J16 && !empty($parameter->subcats) && !empty($selectedArea)) {
             $this->db->setQuery('SELECT lft,rgt FROM #__categories WHERE id IN (' . implode(',', $selectedArea) . ')');
             $catinfos = $this->db->loadObjectList();
             if (!empty($catinfos)) {
                 $whereCats = array();
                 foreach ($catinfos as $onecat) {
                     $whereCats[] = 'lft > ' . $onecat->lft . ' AND rgt < ' . $onecat->rgt;
                 }
                 $this->db->setQuery('SELECT id FROM #__categories WHERE (' . implode(') OR (', $whereCats) . ')');
                 $othercats = acymailing_loadResultArray($this->db);
                 $selectedArea = array_merge($selectedArea, $othercats);
             }
         }
         if (!empty($selectedArea)) {
             if (!ACYMAILING_J16) {
                 $where[] = implode(' OR ', $selectedArea);
             } else {
                 $filter_cat = '`catid` IN (' . implode(',', $selectedArea) . ')';
                 if (file_exists(JPATH_SITE . DS . 'components' . DS . 'com_multicats')) {
                     $filter_cat = '`catid` REGEXP "^([0-9]+,)*' . implode('(,[0-9]+)*$" OR `catid` REGEXP "^([0-9]+,)*', $selectedArea) . '(,[0-9]+)*$"';
                 }
                 $where[] = $filter_cat;
             }
         }
         if (!empty($parameter->excludedcats)) {
             $excludedCats = explode('-', $parameter->excludedcats);
             JArrayHelper::toInteger($excludedCats);
             $filter_cat = '`catid` NOT IN ("' . implode('","', $excludedCats) . '")';
             if (file_exists(JPATH_SITE . DS . 'components' . DS . 'com_multicats')) {
                 $filter_cat = '`catid` NOT REGEXP "^([0-9]+,)*' . implode('(,[0-9]+)*$" AND `catid` NOT REGEXP "^([0-9]+,)*', $excludedCats) . '(,[0-9]+)*$"';
             }
             $where[] = $filter_cat;
         }
         if (!empty($parameter->filter) && !empty($email->params['lastgenerateddate'])) {
             $condition = '(`publish_up` > \'' . date('Y-m-d H:i:s', $email->params['lastgenerateddate'] - date('Z')) . '\' AND `publish_up` < \'' . date('Y-m-d H:i:s', $time - date('Z')) . '\')';
             $condition .= ' OR (`created` > \'' . date('Y-m-d H:i:s', $email->params['lastgenerateddate'] - date('Z')) . '\' AND `created` < \'' . date('Y-m-d H:i:s', $time - date('Z')) . '\')';
             if ($parameter->filter == 'modify') {
                 $modify = '(`modified` > \'' . date('Y-m-d H:i:s', $email->params['lastgenerateddate'] - date('Z')) . '\' AND `modified` < \'' . date('Y-m-d H:i:s', $time - date('Z')) . '\')';
                 if (!empty($parameter->maxpublished)) {
                     $modify = '(' . $modify . ' AND `publish_up` > \'' . date('Y-m-d H:i:s', time() - date('Z') - (int) $parameter->maxpublished * 60 * 60 * 24) . '\')';
                 }
                 $condition .= ' OR ' . $modify;
             }
             $where[] = $condition;
         }
         if (!empty($parameter->maxcreated)) {
             $date = $parameter->maxcreated;
             if (strpos($parameter->maxcreated, '[time]') !== false) {
                 $date = acymailing_replaceDate(str_replace('[time]', '{time}', $parameter->maxcreated));
             }
             if (!is_numeric($date)) {
                 $date = strtotime($parameter->maxcreated);
             }
             if (empty($date)) {
                 acymailing_display('Wrong date format (' . $parameter->maxcreated . ' in ' . $oneTag . '), please use YYYY-MM-DD', 'warning');
             }
             $where[] = '`created` < ' . $this->db->Quote(date('Y-m-d H:i:s', $date)) . ' OR `publish_up` < ' . $this->db->Quote(date('Y-m-d H:i:s', $date));
         } else {
             $where[] = '`publish_up` < \'' . date('Y-m-d H:i:s', $time - date('Z')) . '\'';
         }
         if (!empty($parameter->mincreated)) {
             $date = $parameter->mincreated;
             if (strpos($parameter->mincreated, '[time]') !== false) {
                 $date = acymailing_replaceDate(str_replace('[time]', '{time}', $parameter->mincreated));
             }
             if (!is_numeric($date)) {
                 $date = strtotime($parameter->mincreated);
             }
             if (empty($date)) {
                 acymailing_display('Wrong date format (' . $parameter->mincreated . ' in ' . $oneTag . '), please use YYYY-MM-DD', 'warning');
             }
             $where[] = '`created` > ' . $this->db->Quote(date('Y-m-d H:i:s', $date)) . ' OR `publish_up` > ' . $this->db->Quote(date('Y-m-d H:i:s', $date));
         }
         if (!empty($parameter->meta)) {
             $allMetaTags = explode(',', $parameter->meta);
             $metaWhere = array();
             foreach ($allMetaTags as $oneMeta) {
                 if (empty($oneMeta)) {
                     continue;
                 }
                 $metaWhere[] = "`metakey` LIKE '%" . acymailing_getEscaped($oneMeta, true) . "%'";
             }
             if (!empty($metaWhere)) {
                 $where[] = implode(' OR ', $metaWhere);
             }
         }
         $where[] = '`publish_down` > \'' . date('Y-m-d H:i:s', $time - date('Z')) . '\' OR `publish_down` = 0';
         if (empty($parameter->unpublished)) {
             $where[] = 'state = 1';
         } else {
             $where[] = 'state = 0';
         }
         if (!ACYMAILING_J16) {
             if (isset($parameter->access)) {
                 $where[] = 'access <= ' . intval($parameter->access);
             } else {
                 if ($this->params->get('contentaccess', 'registered') == 'registered') {
                     $where[] = 'access <= 1';
                 } elseif ($this->params->get('contentaccess', 'registered') == 'public') {
                     $where[] = 'access = 0';
                 }
             }
         } elseif (isset($parameter->access)) {
             if (strpos($parameter->access, ',')) {
                 $allAccess = explode(',', $parameter->access);
                 JArrayHelper::toInteger($allAccess);
                 $where[] = 'access IN (' . implode(',', $allAccess) . ')';
             } else {
                 $where[] = 'access = ' . intval($parameter->access);
             }
         }
         if (ACYMAILING_J16 && !empty($parameter->language)) {
             $allLanguages = explode(',', $parameter->language);
             $langWhere = 'language IN (';
             foreach ($allLanguages as $oneLanguage) {
                 $langWhere .= $this->db->Quote(trim($oneLanguage)) . ',';
             }
             $where[] = trim($langWhere, ',') . ')';
         }
         $query .= ' WHERE (' . implode(') AND (', $where) . ')';
         if (!empty($parameter->order)) {
             $ordering = explode(',', $parameter->order);
             if ($ordering[0] == 'rand') {
                 $query .= ' ORDER BY rand()';
             } else {
                 $query .= ' ORDER BY `' . acymailing_secureField($ordering[0]) . '` ' . acymailing_secureField($ordering[1]) . ' , a.`id` DESC';
             }
         }
         $start = '';
         if (!empty($parameter->start)) {
             $start = intval($parameter->start) . ',';
         }
         if (empty($parameter->max)) {
             $parameter->max = 100;
         }
         $query .= ' LIMIT ' . $start . (int) $parameter->max;
         $this->db->setQuery($query);
         $allArticles = acymailing_loadResultArray($this->db);
         if (!empty($parameter->min) && count($allArticles) < $parameter->min) {
             $return->status = false;
             $return->message = 'Not enough articles for the tag ' . $oneTag . ' : ' . count($allArticles) . ' / ' . $parameter->min . ' between ' . acymailing_getDate($email->params['lastgenerateddate']) . ' and ' . acymailing_getDate($time);
         }
         $stringTag = empty($parameter->noentrytext) ? '' : $parameter->noentrytext;
         if (!empty($allArticles)) {
             if (file_exists(ACYMAILING_MEDIA . 'plugins' . DS . 'autocontent.php')) {
                 ob_start();
                 require ACYMAILING_MEDIA . 'plugins' . DS . 'autocontent.php';
                 $stringTag = ob_get_clean();
             } else {
                 $arrayElements = array();
                 $numArticle = 1;
                 foreach ($allArticles as $oneArticleId) {
                     $args = array();
                     $args[] = 'joomlacontent:' . $oneArticleId;
                     $args[] = 'num:' . $numArticle++;
                     if (!empty($parameter->invert) && $numArticle % 2 == 1) {
                         $args[] = 'invert';
                     }
                     if (!empty($parameter->type)) {
                         $args[] = 'type:' . $parameter->type;
                     }
                     if (!empty($parameter->format)) {
                         $args[] = 'format:' . $parameter->format;
                     }
                     if (!empty($parameter->template)) {
                         $args[] = 'template:' . $parameter->template;
                     }
                     if (!empty($parameter->jtags)) {
                         $args[] = 'jtags';
                     }
                     if (!empty($parameter->link)) {
                         $args[] = 'link';
                     }
                     if (!empty($parameter->author)) {
                         $args[] = 'author';
                     }
                     if (!empty($parameter->autologin)) {
                         $args[] = 'autologin';
                     }
                     if (!empty($parameter->cattitle)) {
                         $args[] = 'cattitle';
                     }
                     if (!empty($parameter->cattitlelink)) {
                         $args[] = 'cattitlelink';
                     }
                     if (!empty($parameter->lang)) {
                         $args[] = 'lang:' . $parameter->lang;
                     }
                     if (!empty($parameter->theme)) {
                         $args[] = 'theme';
                     }
                     if (!empty($parameter->clean)) {
                         $args[] = 'clean';
                     }
                     if (!empty($parameter->notitle)) {
                         $args[] = 'notitle';
                     }
                     if (!empty($parameter->nopictstyle)) {
                         $args[] = 'nopictstyle';
                     }
                     if (!empty($parameter->nopictlink)) {
                         $args[] = 'nopictlink';
                     }
                     if (!empty($parameter->created)) {
                         $args[] = 'created';
                     }
                     if (!empty($parameter->noattach)) {
                         $args[] = 'noattach';
                     }
                     if (!empty($parameter->itemid)) {
                         $args[] = 'itemid:' . $parameter->itemid;
                     }
                     if (!empty($parameter->noreadmore)) {
                         $args[] = 'noreadmore';
                     }
                     if (isset($parameter->pict)) {
                         $args[] = 'pict:' . $parameter->pict;
                     }
                     if (!empty($parameter->wrap)) {
                         $args[] = 'wrap:' . $parameter->wrap;
                     }
                     if (!empty($parameter->maxwidth)) {
                         $args[] = 'maxwidth:' . $parameter->maxwidth;
                     }
                     if (!empty($parameter->maxheight)) {
                         $args[] = 'maxheight:' . $parameter->maxheight;
                     }
                     if (!empty($parameter->readmore)) {
                         $args[] = 'readmore:' . $parameter->readmore;
                     }
                     if (!empty($parameter->dateformat)) {
                         $args[] = 'dateformat:' . $parameter->dateformat;
                     }
                     if (!empty($parameter->textafter)) {
                         $args[] = 'textafter:' . $parameter->textafter;
                     }
                     if (!empty($parameter->maxchar)) {
                         $args[] = 'maxchar:' . $parameter->maxchar;
                     }
                     if (!empty($parameter->share)) {
                         $args[] = 'share:' . $parameter->share;
                     }
                     if (!empty($parameter->sharetxt)) {
                         $args[] = 'sharetxt:' . $parameter->sharetxt;
                     }
                     if (!empty($parameter->catpict)) {
                         $args[] = 'catpict';
                     }
                     if (!empty($parameter->catmaxwidth)) {
                         $args[] = 'catmaxwidth:' . $parameter->catmaxwidth;
                     }
                     if (!empty($parameter->catmaxheight)) {
                         $args[] = 'catmaxheight:' . $parameter->catmaxheight;
                     }
                     $arrayElements[] = '{' . implode('|', $args) . '}';
                 }
                 $stringTag = $this->acypluginsHelper->getFormattedResult($arrayElements, $parameter);
             }
         }
         $this->tags[$oneTag] = $stringTag;
     }
     return $return;
 }
Beispiel #3
0
    private function _displayHTML()
    {
        $config =& acymailing_config();
        $app = JFactory::getApplication();
        $mediaFolders = explode(',', $config->get('mediafolder', 'media/com_acymailing/upload'));
        $mediaFolders = $this->_generateSpecificFolders($mediaFolders);
        $receivedFolder = $app->getUserStateFromRequest(ACYMAILING_COMPONENT . ".acyeditor.selected_folder", 'selected_folder', '', 'string');
        $defaultFolder = reset($mediaFolders);
        if (!empty($receivedFolder)) {
            $allowed = false;
            foreach ($mediaFolders as $oneMedia) {
                if (preg_match('#^' . preg_quote($oneMedia) . '[a-z_0-9\\-/]*$#i', $receivedFolder)) {
                    $allowed = true;
                    break;
                }
            }
            if ($allowed) {
                $defaultFolder = $receivedFolder;
            } else {
                acymailing_display('You are not allowed to access this folder', 'error');
            }
        }
        $uploadPath = JPath::clean(ACYMAILING_ROOT . trim(str_replace('/', DS, trim($defaultFolder)), DS));
        $uploadedImage = JRequest::getVar('uploadedImage', array(), 'files', 'array');
        if (!empty($uploadedImage)) {
            if (!empty($uploadedImage['name'])) {
                if ($this->_importImage($uploadedImage, $uploadPath)) {
                    $uploadMessage = 'success';
                } else {
                    $uploadMessage = 'error';
                }
            } else {
                $uploadMessage = 'error';
                $this->message = JText::_('BROWSE_FILE');
            }
        }
        $pictToDelete = JRequest::getString('pictName', '');
        if (!empty($pictToDelete) && file_exists($uploadPath . DS . $pictToDelete)) {
            $db = JFactory::getDBO();
            $db->setQuery('SELECT * FROM #__acymailing_mail WHERE body like \'%src="' . ACYMAILING_LIVE . $defaultFolder . '/' . $pictToDelete . '"%\'');
            $checkPict = acymailing_loadResultArray($db);
            if (!empty($checkPict)) {
                acymailing_display(JText::_('ACY_CANT_DELETE') . ': ' . implode($checkPict, ', '), 'error');
            } else {
                if (JFile::delete($uploadPath . DS . $pictToDelete)) {
                    acymailing_display(JText::_('ACY_DELETED_PICT_SUCCESS'), 'success');
                } else {
                    acymailing_display(JText::_('ACY_DELETED_PICT_ERROR'), 'error');
                }
            }
        }
        ?>

		<div id="acy_media_browser" >
			<!-- <br style="font-size:1px"/> -->
			<table id="acy_media_browser_table" style="height:420px;">
				<tr>
					<td style="width:65%; vertical-align:top;">
						<?php 
        $folders = $this->_generateArborescence($mediaFolders);
        foreach ($folders as $folder) {
            $this->values[] = JHTML::_('select.option', $folder, $folder);
        }
        echo '<div style="display:inline-block;width:100%;">';
        echo '<form method="post" action="index.php?option=com_acymailing&ctrl=' . (JFactory::getApplication()->isAdmin() ? '' : 'front') . 'editor&task=createFolder" >';
        echo '<div id="acy_media_browser_path_dropdown" >';
        echo JHTML::_('select.genericlist', $this->values, 'acy_media_browser_files_path', 'class="inputbox chzn-done" size="1" onchange="changeFolder(this.value)" style="width:350px; min-height:19px;" ', 'value', 'text', $defaultFolder) . '<br />';
        echo '</div>';
        echo '<div id="acy_media_browser_global_create_folder" >';
        echo '<div id="acy_media_browser_create_folder" >';
        echo '<button id="create_folder_btn" class="btn" onclick="displayAppropriateField(this.id)" type="button" style="width:100%;" >' . JText::_('CREATE_FOLDER') . '</button>';
        echo '</div>';
        echo '<div id="acy_media_browser_area_create_folder" style=\'display:none;\'>';
        echo '<input id="subFolderName" name="subFolderName" type="text" placeholder="' . JText::_('FOLDER_NAME') . '" name="text" required="required" />';
        echo '<input type="submit" class="btn btn-primary" value="' . JText::_('ACY_APPLY') . '" />';
        echo '</div>';
        echo '</div>';
        echo JHTML::_('form.token');
        echo '</form>';
        echo '</div>';
        acymailing_createDir($uploadPath);
        $files = JFolder::files($uploadPath);
        echo '<ul id="acy_media_browser_list">';
        if (!empty($uploadMessage)) {
            if ($uploadMessage == 'success') {
                acymailing_display($this->message);
            } else {
                if ($uploadMessage == 'error') {
                    acymailing_display($this->message, 'error');
                }
            }
        }
        $images = array();
        $imagesFound = false;
        foreach ($files as $k => $file) {
            if (strrpos($file, '.') === false) {
                continue;
            }
            $ext = strtolower(substr($file, strrpos($file, '.') + 1));
            $extensions = array('jpg', 'jpeg', 'png', 'gif');
            if (!in_array($ext, $extensions)) {
                continue;
            }
            $imagesFound = true;
            $images[] = $file;
            $imageSize = getimagesize($uploadPath . DS . $file);
            ?>
							<li class="acy_media_browser_images" id="acy_media_browser_images_<?php 
            echo $k;
            ?>
" onmouseover="toggleImageInfo(<?php 
            echo $k;
            ?>
, 'display')" onmouseout="toggleImageInfo(<?php 
            echo $k;
            ?>
, 'hide')" >
								<img class="acy_media_browser_image" id="acy_media_browser_image_<?php 
            echo $k;
            ?>
" src="<?php 
            echo ACYMAILING_LIVE . $defaultFolder . '/' . $file;
            ?>
"></img>
								<a href="#" onclick="displayImageFromUrl('<?php 
            echo ACYMAILING_LIVE . $defaultFolder . '/' . $file;
            ?>
', 'success', '<?php 
            echo $file;
            ?>
', '<?php 
            echo $imageSize[0];
            ?>
', '<?php 
            echo $imageSize[1];
            ?>
'); return false;" >
									<div id="acy_media_browser_image_info_<?php 
            echo $k;
            ?>
" style="box-shadow: 1px 1px 2px 1px rgba(0, 0, 0, 0.2); text-shadow:1px 1px 1px #ffffff; border:2px solid #fff; padding-top:40px; text-align:center; vertical-align:middle; color:#333; font-weight:bold; position:absolute; top:0px; left:0px; bottom:0px; right:0px; display:none; background-color: rgba(255,255,255,0.8);">
										<img class="acy_media_browser_delete" id="acy_media_browser_delete_<?php 
            echo $k;
            ?>
" src="<?php 
            echo ACYMAILING_LIVE . 'media' . DS . ACYMAILING_COMPONENT . DS . 'images' . DS . 'editor' . DS . 'delete.png';
            ?>
" onclick="deletePicture('<?php 
            echo $file;
            ?>
')"/>
										<?php 
            echo $file;
            ?>
<br />
										<span class="acy_media_browser_image_size" ><?php 
            echo $imageSize[0] . 'x' . $imageSize[1];
            ?>
 - <?php 
            echo round(filesize($uploadPath . DS . $file) * 0.0009765625, 2) . ' ko';
            ?>
<br /></span>
									</div>
								</a>
							</li>
						<?php 
        }
        if (!$imagesFound) {
            acymailing_display(JText::_('NO_FILE_FOUND'), 'warning');
        }
        ?>

						</ul>

						<!-- Here we give the possibility to import a file or specify and url -->
						<div id="acy_media_browser_actions" >
							<div id="acy_media_browser_containing_block">
								<div id="acy_media_browser_buttons_block" >
									<button type="button"  class="btn" id="upload_image_btn" onclick="displayAppropriateField(this.id)"> <?php 
        echo JText::_('UPLOAD_NEW_IMAGE');
        ?>
</button>
									<?php 
        echo JText::_('ACY_OR');
        ?>
									<button type="button"  class="btn" id="import_from_url_btn" onclick="displayAppropriateField(this.id)"> <?php 
        echo JText::_('INSERT_IMAGE_FROM_URL');
        ?>
 </button>
								</div>
								<div id="acy_media_browser_hidden_elements">
									<div id="upload_image" style="position: relative; padding-top:5px;	display:none; text-align: center;">
										<form method="post"  name="adminForm" id="adminForm" enctype="multipart/form-data" style="margin:0px; margin-top:3px;" >
											<input type="file" style="width:auto;" name="uploadedImage" /><br />
											<input type="hidden" name="task" value="browse" />
											<input type="hidden" name="selected_folder" value="<?php 
        echo htmlspecialchars($defaultFolder, ENT_COMPAT, 'UTF-8');
        ?>
" />
											<?php 
        echo JHTML::_('form.token');
        ?>
										</form>
										<button class="btn btn-primary" type="button" onclick="submitbutton();"> <?php 
        echo JText::_('IMPORT');
        ?>
 </button>
										<span style="position:absolute; top:5px; left:5px;" id="acy_back_from_upload" onclick="displayAppropriateField(this.id)" ><a href="javascript:void(0);">&#8592 <?php 
        echo JText::_('MEDIA_BACK');
        ?>
</a></span>
									</div>
									<div id="import_from_url" style="padding-top:9px; position:relative; ">
										<input type="text" id="acy_media_browser_url_input" class="inputbox" oninput="testImage(this.value, displayImageFromUrl)" value="http://" />
										<?php 
        ?>
										<div id="acy_media_browser_insert_message"></div>
										<span style="position:absolute; top:5px; left:5px;" id="acy_back_from_url" onclick="displayAppropriateField(this.id)" ><a href="javascript:void(0);">&#8592 <?php 
        echo JText::_('MEDIA_BACK');
        ?>
</a></span>
									</div>
								</div>
							</div>
						</div>
					</td>
					<!-- IMAGE INFORMATION -->
					<td id="acy_media_browser_image_details_row" >
						<div id="acy_media_browser_image_details"  >
							<div id="acy_media_browser_image_selected" style=" max-width:230px; max-height:190px; display:none;	margin:auto; margin-bottom:10px;"></div>
							<div id="acy_media_browser_image_selected_info" style=""></div>
							<div id="acy_media_browser_image_selected_details" >
								<label for="acy_media_browser_image_title" style="float:left;"><?php 
        echo JText::_('ACY_TITLE');
        ?>
</label>
								<input type="text" id="acy_media_browser_image_title" class="inputbox" style="width:100%"  value="" />
								<?php 
        $imageZone = JRequest::getVar('image_zone', array(), '', 'array');
        if (!empty($imageZone)) {
            ?>
									<label for="acy_media_browser_image_target"><?php 
            echo JText::_('ACY_LINK');
            ?>
</label>
									<input type="text" id="acy_media_browser_image_target" placeholder="<?php 
            echo ACYMAILING_LIVE;
            ?>
..." class="inputbox" style="width:100%"  value="" />
								<?php 
        } else {
            ?>
									<label for="acy_media_browser_image_width" style="display:inline;"><?php 
            echo JText::_('CAPTCHA_WIDTH');
            ?>
</label>	<input type="text" id="acy_media_browser_image_width"  style="width:23%;"  value="" oninput="calculateSize(0, this.value)" />
									<br /><label for="acy_media_browser_image_height" style="display:inline;"><?php 
            echo JText::_('CAPTCHA_HEIGHT');
            ?>
</label>	<input type="text" id="acy_media_browser_image_height"  style="width:22%;"  value="" oninput="calculateSize(this.value, 0)" />
									<br /><label for="acy_media_browser_image_align" style="display:inline;"><?php 
            echo JText::_('ALIGNMENT');
            ?>
</label>
									<select id="acy_media_browser_image_align" class="chzn-done" style="width:50%">
										<option value=""><?php 
            echo JText::_('NOT_SET');
            ?>
</option>
										<option value="left"><?php 
            echo JText::_('ACY_LEFT');
            ?>
</option>
										<option value="right"><?php 
            echo JText::_('ACY_RIGHT');
            ?>
</option>
									</select><br />
									<label for="acy_media_browser_image_margin" style="display:inline;"><?php 
            echo JText::_('ACY_MARGIN');
            ?>
</label>	<input type="text" style="width:23%;"  id="acy_media_browser_image_margin"  value="" /><br />
									<label for="acy_media_browser_image_border" style="display:inline;"><?php 
            echo JText::_('ACY_BORDER');
            ?>
</label>	<input type="text" style="width:23%;"  id="acy_media_browser_image_border"  value="" /><br />
									<label for="acy_media_browser_image_class" style="display:inline;"><?php 
            echo JText::_('ACY_CLASS');
            ?>
</label>	<input type="text" style="width:50%;"  id="acy_media_browser_image_class"  value="" />
									<input type="hidden" id="acy_media_browser_image_linkhref"  value="" />
								<?php 
        }
        ?>
							</div>
							<button class="btn btn-primary" type="button" onclick="validateImage();window.parent.SqueezeBox.close();" style=" position:absolute; bottom:6px; right:6px; "><?php 
        echo JText::_('INSERT');
        ?>
 </button>
						</div>
					</td>
				</tr>
			</table>
		</div>
		<?php 
        $imageZone = JRequest::getVar('image_zone', array(), '', 'array');
        if ($imageZone) {
            echo '<script>checkSelected(true);</script>';
        } else {
            echo '<script>checkSelected();</script>';
        }
        if (isset($uploadMessage) && $uploadMessage == 'success') {
            $imageSize = getimagesize(ACYMAILING_LIVE . rtrim($defaultFolder, '/') . '/' . $this->imageName);
            echo '<script> displayImageFromUrl(\'' . ACYMAILING_LIVE . rtrim($defaultFolder, '/') . '/' . $this->imageName . '\',\'success\', \'' . $this->imageName . '\',' . $imageSize[0] . ',' . $imageSize[1] . ');</script>';
        }
    }
Beispiel #4
0
 function complete_abtest($typeAction, $mailid)
 {
     $db = JFactory::getDBO();
     $db->setQuery("SELECT abtesting FROM #__acymailing_mail WHERE mailid=" . (int) $mailid);
     $resDetails = acymailing_loadResultArray($db);
     $abTestDetail = unserialize($resDetails[0]);
     $dataForCopy = array('mailid' => $mailid, 'abTestDetail' => $abTestDetail);
     $newMailid = $this->abTest_createFinalNewletter($typeAction, $dataForCopy);
     $queueClass = acymailing_get('class.queue');
     $time = time();
     $queueClass->queue($newMailid, $time);
     $mailidsTest = $abTestDetail['mailids'];
     $db->setQuery("SELECT subid FROM #__acymailing_userstats WHERE mailid IN (" . $mailidsTest . ")");
     $resUsersFromTest = acymailing_loadResultArray($db);
     if (!empty($resUsersFromTest)) {
         $db->setQuery("DELETE FROM #__acymailing_queue WHERE subid IN (" . implode(',', $resUsersFromTest) . ") AND mailid=" . $newMailid);
         $db->query();
     }
     $abTestDetail['status'] = 'abTestFinalSend';
     $abTestDetail['newMail'] = $newMailid;
     $query = "UPDATE #__acymailing_mail SET abtesting=" . $db->quote(serialize($abTestDetail)) . " WHERE mailid IN (" . $mailidsTest . ")";
     $db->setQuery($query);
     $db->query();
     return $newMailid;
 }
Beispiel #5
0
 private function _ifstatement(&$email, $user)
 {
     if (isset($this->foundtags[$email->mailid])) {
         return;
     }
     $match = '#{if:(.*)}(.*){/if}#Uis';
     $variables = array('subject', 'body', 'altbody');
     $found = false;
     foreach ($variables as $var) {
         if (empty($email->{$var})) {
             continue;
         }
         $found = preg_match_all($match, $email->{$var}, $results[$var]) || $found;
         if (empty($results[$var][0])) {
             unset($results[$var]);
         }
     }
     if (!$found) {
         $this->foundtags[$email->mailid] = false;
         return;
     }
     $app = JFactory::getApplication();
     static $a = false;
     $tags = array();
     foreach ($results as $var => $allresults) {
         foreach ($allresults[0] as $i => $oneTag) {
             if (isset($tags[$oneTag])) {
                 continue;
             }
             if (!preg_match('#^([^=!<>~]+)(=|!=|<|>|&gt;|&lt;|~)([^=!<>~]+)$#i', $allresults[1][$i], $operators)) {
                 if ($app->isAdmin()) {
                     acymailing_display('Operation not found : ' . $allresults[1][$i], 'error');
                 }
                 $tags[$oneTag] = $allresults[2][$i];
                 continue;
             }
             $field = trim($operators[1]);
             $prop = '';
             $operatorsParts = explode('.', $operators[1]);
             $operatorComp = 'acymailing';
             if (count($operatorsParts) == 2 and in_array($operatorsParts[0], array('acymailing', 'joomla', 'var'))) {
                 $operatorComp = $operatorsParts[0];
                 $field = $operatorsParts[1];
             }
             if ($operatorComp == 'joomla') {
                 if (!empty($user->userid)) {
                     if ($field == 'gid' && ACYMAILING_J16) {
                         $db = JFactory::getDBO();
                         $db->setQuery('SELECT group_id FROM #__user_usergroup_map WHERE user_id = ' . intval($user->userid));
                         $prop = implode(';', acymailing_loadResultArray($db));
                     } else {
                         $db = JFactory::getDBO();
                         $db->setQuery('SELECT * FROM #__users WHERE id = ' . intval($user->userid));
                         $juser = $db->loadObject();
                         if (isset($juser->{$field})) {
                             $prop = strtolower($juser->{$field});
                         } else {
                             if ($app->isAdmin() && !$a) {
                                 acymailing_display('User variable not set : ' . $field . ' in ' . $allresults[1][$i], 'error');
                             }
                             $a = true;
                         }
                     }
                 }
             } elseif ($operatorComp == 'var') {
                 $prop = $field;
             } else {
                 if (!isset($user->{$field})) {
                     if ($app->isAdmin() && !$a) {
                         acymailing_display('User variable not set : ' . $field . ' in ' . $allresults[1][$i], 'error');
                     }
                     $a = true;
                 } else {
                     $prop = strtolower($user->{$field});
                 }
             }
             $tags[$oneTag] = '';
             $val = trim(strtolower($operators[3]));
             if ($operators[2] == '=' and $prop == $val || in_array($prop, explode(';', $val)) || in_array($val, explode(';', $prop))) {
                 $tags[$oneTag] = $allresults[2][$i];
             } elseif ($operators[2] == '!=' and $prop != $val) {
                 $tags[$oneTag] = $allresults[2][$i];
             } elseif ($operators[2] == '>' || $operators[2] == '&gt;' and $prop > $val) {
                 $tags[$oneTag] = $allresults[2][$i];
             } elseif ($operators[2] == '<' || $operators[2] == '&lt;' and $prop < $val) {
                 $tags[$oneTag] = $allresults[2][$i];
             } elseif ($operators[2] == '~' and strpos($prop, $val) !== false) {
                 $tags[$oneTag] = $allresults[2][$i];
             }
         }
     }
     foreach ($results as $var => $allresults) {
         $email->{$var} = str_replace(array_keys($tags), $tags, $email->{$var});
     }
 }
 function confirmSubscription($subid)
 {
     $historyClass = acymailing_get('class.acyhistory');
     $historyClass->insert($subid, 'confirmed');
     $userHelper = acymailing_get('helper.user');
     $ip = $userHelper->getIP();
     $this->database->setQuery('UPDATE ' . acymailing_table('subscriber') . ' SET `confirmed` = 1, `confirmed_date` = ' . time() . ', `confirmed_ip` = ' . $this->database->Quote($ip) . ' WHERE `subid` = ' . intval($subid) . ' LIMIT 1');
     if (!$this->database->query()) {
         acymailing_display('Please contact the admin of this website with the error message :<br />' . substr(strip_tags($this->database->getErrorMsg()), 0, 200) . '...', 'error');
         exit;
     }
     $this->database->setQuery('SELECT `listid` FROM ' . acymailing_table('listsub') . ' WHERE `status` = 2 AND `subid` = ' . intval($subid));
     $listids = acymailing_loadResultArray($this->database);
     JPluginHelper::importPlugin('acymailing');
     $dispatcher = JDispatcher::getInstance();
     $dispatcher->trigger('onAcyConfirmUser', array($subid));
     if ($this->geolocRight) {
         $classGeoloc = acymailing_get('class.geolocation');
         $this->geolocData = $classGeoloc->saveGeolocation('confirm', $subid);
     }
     if (empty($listids)) {
         return;
     }
     $listsubClass = acymailing_get('class.listsub');
     $listsubClass->sendConf = $this->sendWelcome;
     $listsubClass->forceConf = $this->forceConf;
     $listsubClass->sendNotif = $this->sendNotif;
     $listsubClass->updateSubscription($subid, array(1 => $listids));
 }
Beispiel #7
0
 function onAcyProcessFilter_joomlagroup(&$query, $filter, $num)
 {
     $operator = empty($filter['type']) || $filter['type'] == 'IN' ? 'IS NOT NULL AND joomlauser' . $num . '.' . (ACYMAILING_J16 ? 'user_' : '') . 'id != 0' : "IS NULL";
     $filter['group'] = intval($filter['group']);
     if (!empty($filter['subgroups'])) {
         $db = JFactory::getDBO();
         $groupTable = ACYMAILING_J16 ? 'usergroups' : 'core_acl_aro_groups';
         $db->setQuery('SELECT lft, rgt FROM #__' . $groupTable . ' WHERE id = ' . $filter['group']);
         $lftrgt = $db->loadObject();
         $db->setQuery('SELECT id FROM #__' . $groupTable . ' WHERE lft > ' . $lftrgt->lft . ' AND rgt < ' . $lftrgt->rgt);
         $allGroups = acymailing_loadResultArray($db);
         array_unshift($allGroups, $filter['group']);
         $value = ' IN (' . implode(', ', $allGroups) . ')';
     } else {
         $value = ' = ' . $filter['group'];
     }
     if (!ACYMAILING_J16) {
         $query->leftjoin['joomlauser' . $num] = "#__users AS joomlauser{$num} ON joomlauser{$num}.id = sub.userid AND joomlauser{$num}.gid" . $value;
         $query->where[] = "joomlauser{$num}.id " . $operator;
     } else {
         $query->leftjoin['joomlauser' . $num] = "#__user_usergroup_map AS joomlauser{$num} ON joomlauser{$num}.user_id = sub.userid AND joomlauser{$num}.group_id" . $value;
         $query->where[] = "joomlauser{$num}.user_id " . $operator;
     }
 }
Beispiel #8
0
 function test()
 {
     if (!$this->isAllowed($this->aclCat, 'manage')) {
         return;
     }
     $this->store();
     $tempid = acymailing_getCID('tempid');
     $test_selection = JRequest::getVar('test_selection', '', '', 'string');
     if (empty($tempid) or empty($test_selection)) {
         return;
     }
     $mailer = acymailing_get('helper.mailer');
     $mailer->report = true;
     $config = acymailing_config();
     $subscriberClass = acymailing_get('class.subscriber');
     $userHelper = acymailing_get('helper.user');
     JPluginHelper::importPlugin('acymailing');
     $dispatcher = JDispatcher::getInstance();
     $receivers = array();
     if ($test_selection == 'users') {
         $receiverEntry = JRequest::getVar('test_emails', '', '', 'string');
         if (!empty($receiverEntry)) {
             if (substr_count($receiverEntry, '@') > 1) {
                 $receivers = explode(',', trim(preg_replace('# +#', '', $receiverEntry)));
             } else {
                 $receivers[] = trim($receiverEntry);
             }
         }
     } else {
         $gid = JRequest::getInt('test_group', '-1');
         if ($gid == -1) {
             return false;
         }
         $db = JFactory::getDBO();
         if (!ACYMAILING_J16) {
             $db->setQuery('SELECT email FROM ' . acymailing_table('users', false) . ' WHERE gid = ' . intval($gid));
         } else {
             $db->setQuery('SELECT u.email FROM ' . acymailing_table('users', false) . ' AS u JOIN ' . acymailing_table('user_usergroup_map', false) . ' AS ugm ON u.id = ugm.user_id WHERE ugm.group_id = ' . intval($gid));
         }
         $receivers = acymailing_loadResultArray($db);
     }
     if (empty($receivers)) {
         acymailing_enqueueMessage(JText::_('NO_SUBSCRIBER'), 'notice');
         return $this->edit();
     }
     $classTemplate = acymailing_get('class.template');
     $myTemplate = $classTemplate->get($tempid);
     $myTemplate->sendHTML = 1;
     $myTemplate->mailid = 0;
     $myTemplate->template = $myTemplate;
     if (empty($myTemplate->subject)) {
         $myTemplate->subject = $myTemplate->name;
     }
     if (empty($myTemplate->altBody)) {
         $myTemplate->altbody = $mailer->textVersion($myTemplate->body);
     }
     $dispatcher->trigger('acymailing_replacetags', array(&$myTemplate, true));
     $myTemplate->body = acymailing_absoluteURL($myTemplate->body);
     $result = true;
     foreach ($receivers as $receiveremail) {
         $copy = $myTemplate;
         $mailer->clearAll();
         $mailer->setFrom($copy->fromemail, $copy->fromname);
         if (!empty($copy->replyemail)) {
             $replyToName = $config->get('add_names', true) ? $mailer->cleanText($copy->replyname) : '';
             $mailer->AddReplyTo($mailer->cleanText($copy->replyemail), $replyToName);
         }
         $receiver = $subscriberClass->get($receiveremail);
         if (empty($receiver->subid)) {
             if ($userHelper->validEmail($receiveremail)) {
                 $newUser = new stdClass();
                 $newUser->email = $receiveremail;
                 $subscriberClass->sendConf = false;
                 $subid = $subscriberClass->save($newUser);
                 $receiver = $subscriberClass->get($subid);
             }
             if (empty($receiver->subid)) {
                 continue;
             }
         }
         $addedName = $config->get('add_names', true) ? $mailer->cleanText($receiver->name) : '';
         $mailer->AddAddress($mailer->cleanText($receiver->email), $addedName);
         $dispatcher->trigger('acymailing_replaceusertags', array(&$copy, &$receiver, true));
         $mailer->isHTML(true);
         $mailer->Body = $copy->body;
         $mailer->Subject = $copy->subject;
         if ($config->get('multiple_part', false)) {
             $mailer->AltBody = $copy->altbody;
         }
         $mailer->send();
     }
     return $this->edit();
 }
Beispiel #9
0
 function sobipro()
 {
     $config = acymailing_config();
     $app = JFactory::getApplication();
     $db = JFactory::getDBO();
     $sobiproImport = JRequest::getVar('config', array(), 'POST', 'array');
     $newConfig = new stdClass();
     $affectedRows = 0;
     $newConfig->sobipro_import = serialize($sobiproImport);
     $config->save($newConfig);
     foreach ($sobiproImport as $oneImport => $oneValue) {
         $query = 'SELECT fid, nid FROM #__sobipro_field WHERE fid="' . $oneValue['sobiEmail'] . '" OR fid="' . $oneValue['sobiName'] . '"';
         $db->setQuery($query);
         $nidResult = $db->loadObjectList("fid");
         if (empty($nidResult[$oneValue['sobiEmail']]) or empty($nidResult[$oneValue['sobiName']])) {
             continue;
         }
         $time = time();
         $query = 'INSERT IGNORE INTO ' . acymailing_table('subscriber') . ' (`email`,`name`,`confirmed`,`created`,`enabled`,`accept`,`html`) SELECT b.baseData AS email, a.baseData AS name, 1 as confirmed, ' . $time . ' as created, 1 as enabled, 1 as accept, 1 as html FROM #__sobipro_field_data AS a LEFT JOIN #__sobipro_field_data AS b ON a.sid=b.sid WHERE a.`fid` = ' . $nidResult[$oneValue["sobiName"]]->fid . ' AND b.`fid` = ' . $nidResult[$oneValue["sobiEmail"]]->fid . ' AND b.baseData LIKE "%@%" AND b.baseData IS NOT NULL AND a.baseData IS NOT NULL ORDER by a.sid ';
         $db->setQuery($query);
         $db->query();
         $affectedRows += $db->getAffectedRows();
     }
     $app->enqueueMessage(JText::sprintf('IMPORT_NEW', $affectedRows));
     $query = 'SELECT b.subid FROM `#__sobipro_field_data` as a JOIN ' . acymailing_table('subscriber') . ' as b on a.baseData = b.email';
     $this->db->setQuery($query);
     $this->allSubid = acymailing_loadResultArray($this->db);
     $this->_subscribeUsers();
     $this->_displaySubscribedResult();
     return true;
 }
Beispiel #10
0
 function deleteAddress(&$allSubid, $userList)
 {
     $db = JFactory::getDBO();
     $subscriberClass = acymailing_get('class.subscriber');
     $IdArray = array();
     foreach ($allSubid as $oneID) {
         $IdArray[] = $db->Quote($oneID);
     }
     $query = 'SELECT subid FROM  #__acymailing_subscriber WHERE zoholist LIKE "' . $userList[0] . '" AND zohoid IS NOT NULL AND subid NOT IN (' . implode(',', $IdArray) . ')';
     $db->setQuery($query);
     $subidToDelete = acymailing_loadResultArray($db);
     $subscriberClass->delete($subidToDelete);
 }
Beispiel #11
0
 function onAcyProcessFilter_hikaorder(&$query, $filter, $num)
 {
     if (!$this->loadAcymailing()) {
         return;
     }
     $config =& hikashop_config();
     $statuses = explode(',', $config->get('invoice_order_statuses', 'confirmed,shipped'));
     $condition = array();
     foreach ($statuses as $status) {
         $condition[] = $query->db->Quote($status);
     }
     $myquery = "SELECT DISTINCT b.user_email\r\n\t\t\t\t\tFROM #__hikashop_order_product AS a\r\n\t\t\t\t\tLEFT JOIN #__hikashop_order AS c ON a.order_id = c.order_id\r\n\t\t\t\t\tLEFT JOIN #__hikashop_user AS b on c.order_user_id = b.user_id\r\n\t\t\t\t\tWHERE c.order_status IN (" . implode(',', $condition) . ")";
     if (!empty($filter['product']) and is_numeric($filter['product'])) {
         $myquery .= " AND a.product_id = " . (int) $filter['product'];
     } elseif (!empty($filter['cat']) and is_numeric($filter['cat'])) {
         $myquery .= " AND a.product_id IN (SELECT product_id FROM #__hikashop_product_category WHERE category_id = " . $filter['cat'] . ")";
     }
     $datesVar = array('creationdatesup', 'creationdateinf');
     foreach ($datesVar as $oneDate) {
         if (empty($filter[$oneDate])) {
             continue;
         }
         $filter[$oneDate] = acymailing_replaceDate($filter[$oneDate]);
         if (!is_numeric($filter[$oneDate])) {
             $filter[$oneDate] = strtotime($filter[$oneDate]);
         }
     }
     if (empty($filter['datefield'])) {
         $filter['datefield'] = 'order_created';
     }
     if (!empty($filter['creationdateinf'])) {
         $myquery .= ' AND c.`' . $filter['datefield'] . '` > ' . $filter['creationdateinf'];
     }
     if (!empty($filter['creationdatesup'])) {
         $myquery .= ' AND c.`' . $filter['datefield'] . '` < ' . $filter['creationdatesup'];
     }
     $query->db->setQuery($myquery);
     $allEmails = acymailing_loadResultArray($query->db);
     if (empty($allEmails)) {
         $allEmails[] = 'none';
     }
     if (empty($filter['type'])) {
         $query->where[] = "sub.email NOT IN ('" . implode("','", $allEmails) . "')";
     } else {
         $query->where[] = "sub.email IN ('" . implode("','", $allEmails) . "')";
     }
 }
Beispiel #12
0
	function sendarchive(){

		$config = acymailing_config();
		if(!$config->get('show_receiveemail',0)) return $this->listing();

		JRequest::checkToken() or die( 'Please make sure your cookies are enabled' );
		acymailing_checkRobots();

		$receiveEmails = JRequest::getVar( 'receivemail', array(), '', 'array' );

		$email = trim(JRequest::getString('email'));

		$userClass = acymailing_get('helper.user');
		if(!$userClass->validEmail($email,true)){
			echo "<script>alert('".JText::_('VALID_EMAIL',true)."'); window.history.go(-1);</script>";
			exit;
		}

		$captchaClass = acymailing_get('class.acycaptcha');
		$captchaClass->state = 'acycaptchacomponent';
		if(!$captchaClass->check(JRequest::getString('acycaptcha'))){
			$captchaClass->returnError();
		}

		JArrayHelper::toInteger( $receiveEmails, array() );

		$db = JFactory::getDBO();
		$db->setQuery("SELECT mailid FROM #__acymailing_mail WHERE mailid IN ('".implode("','",$receiveEmails)."') AND published = 1 AND visible = 1");
		$mailids = acymailing_loadResultArray($db);

		$receiver = new stdClass();
		$receiver->email = $email;
		$receiver->subid = 0;
		$receiver->html = 1;
		$receiver->name = trim(strip_tags(JRequest::getString('name','')));

		$mailerHelper = acymailing_get('helper.mailer');
		$mailerHelper->checkConfirmField = false;
		$mailerHelper->checkEnabled = false;
		$mailerHelper->checkAccept = false;
		$mailerHelper->loadedToSend = true;

		foreach($mailids as $oneMailid){
			$mailerHelper->sendOne($oneMailid,$receiver);
		}

		return $this->listing();
	}
Beispiel #13
0
 function confirmSubscription($subid)
 {
     $historyClass = acymailing_get('class.acyhistory');
     $historyClass->insert($subid, 'confirmed');
     $this->database->setQuery('UPDATE ' . acymailing_table('subscriber') . ' SET `confirmed` = 1 WHERE `subid` = ' . intval($subid) . ' LIMIT 1');
     $this->database->query();
     $this->database->setQuery('SELECT `listid` FROM ' . acymailing_table('listsub') . ' WHERE `status` = 2 AND `subid` = ' . intval($subid));
     $listids = acymailing_loadResultArray($this->database);
     if (empty($listids)) {
         return;
     }
     $listsubClass = acymailing_get('class.listsub');
     $listsubClass->sendConf = $this->sendWelcome;
     $listsubClass->sendNotif = $this->sendNotif;
     $listsubClass->updateSubscription($subid, array(1 => $listids));
 }
Beispiel #14
0
 function _sendtest()
 {
     JRequest::checkToken() or die('Invalid Token');
     $mailid = acymailing_getCID('mailid');
     $test_selection = JRequest::getVar('test_selection', '', '', 'string');
     if (empty($mailid) or empty($test_selection)) {
         return false;
     }
     $app = JFactory::getApplication();
     $mailer = acymailing_get('helper.mailer');
     $mailer->forceVersion = JRequest::getVar('test_html', 1, '', 'int');
     $mailer->autoAddUser = true;
     if ($app->isAdmin()) {
         $mailer->SMTPDebug = 1;
     }
     $mailer->checkConfirmField = false;
     $comment = JRequest::getString('commentTest', '');
     if (!empty($comment)) {
         $mailer->introtext = '<div align="center" style="width:600px;margin:auto;margin-top:10px;margin-bottom:10px;padding:10px;border:1px solid #cccccc;background-color:#f6f6f6;color:#333333;">' . nl2br($comment) . '</div>';
     }
     $receivers = array();
     if ($test_selection == 'users') {
         $receiverEntry = JRequest::getVar('test_emails', '', '', 'string');
         if (!empty($receiverEntry)) {
             if (substr_count($receiverEntry, '@') > 1) {
                 $receivers = explode(',', trim(preg_replace('# +#', '', $receiverEntry)));
             } else {
                 $receivers[] = trim($receiverEntry);
             }
         }
     } else {
         $gid = JRequest::getInt('test_group', '-1');
         if ($gid == -1) {
             return false;
         }
         $db = JFactory::getDBO();
         if (!ACYMAILING_J16) {
             $db->setQuery('SELECT email FROM ' . acymailing_table('users', false) . ' WHERE gid = ' . intval($gid));
         } else {
             $db->setQuery('SELECT u.email FROM ' . acymailing_table('users', false) . ' AS u JOIN ' . acymailing_table('user_usergroup_map', false) . ' AS ugm ON u.id = ugm.user_id WHERE ugm.group_id = ' . intval($gid));
         }
         $receivers = acymailing_loadResultArray($db);
     }
     if (empty($receivers)) {
         $app->enqueueMessage(JText::_('NO_SUBSCRIBER'), 'notice');
         return false;
     }
     $result = true;
     foreach ($receivers as $receiver) {
         $result = $mailer->sendOne($mailid, $receiver) && $result;
     }
     return $result;
 }
Beispiel #15
0
 public function acymailing_generateautonews(&$email)
 {
     $acypluginsHelper = acymailing_get('helper.acyplugins');
     $return = new stdClass();
     $return->status = true;
     $return->message = '';
     $time = time();
     $match = '#{autocontent:(.*)}#Ui';
     $variables = array('subject', 'body', 'altbody');
     $found = false;
     foreach ($variables as $var) {
         if (empty($email->{$var})) {
             continue;
         }
         $found = preg_match_all($match, $email->{$var}, $results[$var]) || $found;
         if (empty($results[$var][0])) {
             unset($results[$var]);
         }
     }
     if (!$found) {
         return $return;
     }
     $this->tags = array();
     $db = JFactory::getDBO();
     foreach ($results as $var => $allresults) {
         foreach ($allresults[0] as $i => $oneTag) {
             if (isset($this->tags[$oneTag])) {
                 continue;
             }
             $parameter = $acypluginsHelper->extractTag($allresults[1][$i]);
             $allcats = explode('-', $parameter->id);
             $selectedArea = array();
             foreach ($allcats as $oneCat) {
                 if (!ACYMAILING_J16) {
                     $sectype = substr($oneCat, 0, 3);
                     $num = substr($oneCat, 3);
                     if (empty($num)) {
                         continue;
                     }
                     if ($sectype == 'cat') {
                         $selectedArea[] = 'catid = ' . (int) $num;
                     } elseif ($sectype == 'sec') {
                         $selectedArea[] = 'sectionid = ' . (int) $num;
                     }
                 } else {
                     if (empty($oneCat)) {
                         continue;
                     }
                     $selectedArea[] = (int) $oneCat;
                 }
             }
             $query = 'SELECT a.id FROM `#__content` as a ';
             $where = array();
             if (!empty($parameter->featured)) {
                 if (ACYMAILING_J16) {
                     $where[] = 'a.featured = 1';
                 } else {
                     $query .= 'JOIN `#__content_frontpage` as b ON a.id = b.content_id ';
                     $where[] = 'b.content_id IS NOT NULL';
                 }
             }
             if (!empty($parameter->nofeatured)) {
                 if (ACYMAILING_J16) {
                     $where[] = 'a.featured = 0';
                 } else {
                     $query .= 'LEFT JOIN `#__content_frontpage` as b ON a.id = b.content_id ';
                     $where[] = 'b.content_id IS NULL';
                 }
             }
             if (ACYMAILING_J16 && !empty($parameter->subcats) && !empty($selectedArea)) {
                 $db->setQuery('SELECT lft,rgt FROM #__categories WHERE id IN (' . implode(',', $selectedArea) . ')');
                 $catinfos = $db->loadObjectList();
                 if (!empty($catinfos)) {
                     $whereCats = array();
                     foreach ($catinfos as $onecat) {
                         $whereCats[] = 'lft > ' . $onecat->lft . ' AND rgt < ' . $onecat->rgt;
                     }
                     $db->setQuery('SELECT id FROM #__categories WHERE (' . implode(') OR (', $whereCats) . ')');
                     $othercats = acymailing_loadResultArray($db);
                     $selectedArea = array_merge($selectedArea, $othercats);
                 }
             }
             if (!empty($selectedArea)) {
                 if (!ACYMAILING_J16) {
                     $where[] = implode(' OR ', $selectedArea);
                 } else {
                     $where[] = '`catid` IN (' . implode(',', $selectedArea) . ')';
                 }
             }
             if (!empty($parameter->excludedcats)) {
                 $excludedCats = explode('-', $parameter->excludedcats);
                 JArrayHelper::toInteger($excludedCats);
                 $where[] = '`catid` NOT IN ("' . implode('","', $excludedCats) . '")';
             }
             if (!empty($parameter->filter) and !empty($email->params['lastgenerateddate'])) {
                 $condition = '`publish_up` >\'' . date('Y-m-d H:i:s', $email->params['lastgenerateddate'] - date('Z')) . '\'';
                 $condition .= ' OR `created` >\'' . date('Y-m-d H:i:s', $email->params['lastgenerateddate'] - date('Z')) . '\'';
                 if ($parameter->filter == 'modify') {
                     $condition .= ' OR (';
                     $condition .= ' `modified` > \'' . date('Y-m-d H:i:s', $email->params['lastgenerateddate'] - date('Z')) . '\'';
                     if (!empty($parameter->maxpublished)) {
                         $condition .= ' AND `publish_up` > \'' . date('Y-m-d H:i:s', time() - date('Z') - (int) $parameter->maxpublished * 60 * 60 * 24) . '\'';
                     }
                     $condition .= ')';
                 }
                 $where[] = $condition;
             }
             if (!empty($parameter->maxcreated)) {
                 $date = strtotime($parameter->maxcreated);
                 if (empty($date)) {
                     acymailing_display('Wrong date format (' . $parameter->maxcreated . ' in ' . $oneTag . '), please use YYYY-MM-DD', 'warning');
                 }
                 $where[] = '`created` < ' . $db->Quote(date('Y-m-d H:i:s', $date));
             }
             if (!empty($parameter->mincreated)) {
                 $date = strtotime($parameter->mincreated);
                 if (empty($date)) {
                     acymailing_display('Wrong date format (' . $parameter->mincreated . ' in ' . $oneTag . '), please use YYYY-MM-DD', 'warning');
                 }
                 $where[] = '`created` > ' . $db->Quote(date('Y-m-d H:i:s', $date));
             }
             if (!empty($parameter->meta)) {
                 $allMetaTags = explode(',', $parameter->meta);
                 $metaWhere = array();
                 foreach ($allMetaTags as $oneMeta) {
                     if (empty($oneMeta)) {
                         continue;
                     }
                     $metaWhere[] = "`metakey` LIKE '%" . acymailing_getEscaped($oneMeta, true) . "%'";
                 }
                 if (!empty($metaWhere)) {
                     $where[] = implode(' OR ', $metaWhere);
                 }
             }
             $where[] = '`publish_up` < \'' . date('Y-m-d H:i:s', $time - date('Z')) . '\'';
             $where[] = '`publish_down` > \'' . date('Y-m-d H:i:s', $time - date('Z')) . '\' OR `publish_down` = 0';
             $where[] = 'state = 1';
             if (!ACYMAILING_J16) {
                 if (isset($parameter->access)) {
                     $where[] = 'access <= ' . intval($parameter->access);
                 } else {
                     if ($this->params->get('contentaccess', 'registered') == 'registered') {
                         $where[] = 'access <= 1';
                     } elseif ($this->params->get('contentaccess', 'registered') == 'public') {
                         $where[] = 'access = 0';
                     }
                 }
             } elseif (isset($parameter->access)) {
                 $where[] = 'access = ' . intval($parameter->access);
             }
             if (!empty($parameter->language)) {
                 $allLanguages = explode(',', $parameter->language);
                 $langWhere = 'language IN (';
                 foreach ($allLanguages as $oneLanguage) {
                     $langWhere .= $db->Quote(trim($oneLanguage)) . ',';
                 }
                 $where[] = trim($langWhere, ',') . ')';
             }
             $query .= ' WHERE (' . implode(') AND (', $where) . ')';
             if (!empty($parameter->order)) {
                 if ($parameter->order == 'rand') {
                     $query .= ' ORDER BY rand()';
                 } else {
                     $ordering = explode(',', $parameter->order);
                     $query .= ' ORDER BY `' . acymailing_secureField($ordering[0]) . '` ' . acymailing_secureField($ordering[1]) . ' , a.`id` DESC';
                 }
             }
             $start = '';
             if (!empty($parameter->start)) {
                 $start = intval($parameter->start) . ',';
             }
             if (empty($parameter->max)) {
                 $parameter->max = 100;
             }
             $query .= ' LIMIT ' . $start . (int) $parameter->max;
             $db->setQuery($query);
             $allArticles = acymailing_loadResultArray($db);
             if (!empty($parameter->min) and count($allArticles) < $parameter->min) {
                 $return->status = false;
                 $return->message = 'Not enough articles for the tag ' . $oneTag . ' : ' . count($allArticles) . ' / ' . $parameter->min . ' between ' . acymailing_getDate($email->params['lastgenerateddate']) . ' and ' . acymailing_getDate($time);
             }
             $stringTag = empty($parameter->noentrytext) ? '' : $parameter->noentrytext;
             if (!empty($allArticles)) {
                 if (file_exists(ACYMAILING_MEDIA . 'plugins' . DS . 'autocontent.php')) {
                     ob_start();
                     require ACYMAILING_MEDIA . 'plugins' . DS . 'autocontent.php';
                     $stringTag = ob_get_clean();
                 } else {
                     $arrayElements = array();
                     $numArticle = 1;
                     foreach ($allArticles as $oneArticleId) {
                         $args = array();
                         $args[] = 'joomlacontent:' . $oneArticleId;
                         $args[] = 'num:' . $numArticle++;
                         if (!empty($parameter->type)) {
                             $args[] = 'type:' . $parameter->type;
                         }
                         if (!empty($parameter->link)) {
                             $args[] = 'link';
                         }
                         if (!empty($parameter->author)) {
                             $args[] = 'author';
                         }
                         if (!empty($parameter->autologin)) {
                             $args[] = 'autologin';
                         }
                         if (!empty($parameter->cattitle)) {
                             $args[] = 'cattitle';
                         }
                         if (!empty($parameter->lang)) {
                             $args[] = 'lang:' . $parameter->lang;
                         }
                         if (!empty($parameter->theme)) {
                             $args[] = 'theme';
                         }
                         if (!empty($parameter->clean)) {
                             $args[] = 'clean';
                         }
                         if (!empty($parameter->notitle)) {
                             $args[] = 'notitle';
                         }
                         if (!empty($parameter->created)) {
                             $args[] = 'created';
                         }
                         if (!empty($parameter->noattach)) {
                             $args[] = 'noattach';
                         }
                         if (!empty($parameter->itemid)) {
                             $args[] = 'itemid:' . $parameter->itemid;
                         }
                         if (!empty($parameter->noreadmore)) {
                             $args[] = 'noreadmore';
                         }
                         if (isset($parameter->pict)) {
                             $args[] = 'pict:' . $parameter->pict;
                         }
                         if (!empty($parameter->wrap)) {
                             $args[] = 'wrap:' . $parameter->wrap;
                         }
                         if (!empty($parameter->maxwidth)) {
                             $args[] = 'maxwidth:' . $parameter->maxwidth;
                         }
                         if (!empty($parameter->maxheight)) {
                             $args[] = 'maxheight:' . $parameter->maxheight;
                         }
                         if (!empty($parameter->readmore)) {
                             $args[] = 'readmore:' . $parameter->readmore;
                         }
                         if (!empty($parameter->dateformat)) {
                             $args[] = 'dateformat:' . $parameter->dateformat;
                         }
                         if (!empty($parameter->textafter)) {
                             $args[] = 'textafter:' . $parameter->textafter;
                         }
                         if (!empty($parameter->maxchar)) {
                             $args[] = 'maxchar:' . $parameter->maxchar;
                         }
                         if (!empty($parameter->share)) {
                             $args[] = 'share:' . $parameter->share;
                         }
                         if (!empty($parameter->sharetxt)) {
                             $args[] = 'sharetxt:' . $parameter->sharetxt;
                         }
                         $arrayElements[] = '{' . implode('|', $args) . '}';
                     }
                     $stringTag = $acypluginsHelper->getFormattedResult($arrayElements, $parameter);
                 }
             }
             $this->tags[$oneTag] = $stringTag;
         }
     }
     return $return;
 }
Beispiel #16
0
 function unsubscribed()
 {
     $app = JFactory::getApplication();
     $pageInfo = new stdClass();
     $pageInfo->filter = new stdClass();
     $pageInfo->filter->order = new stdClass();
     $pageInfo->limit = new stdClass();
     $pageInfo->elements = new stdClass();
     $paramBase = ACYMAILING_COMPONENT . '.' . $this->getName() . $this->getLayout();
     $pageInfo->filter->order->value = $app->getUserStateFromRequest($paramBase . ".filter_order", 'filter_order', 'a.date', 'cmd');
     $pageInfo->filter->order->dir = $app->getUserStateFromRequest($paramBase . ".filter_order_Dir", 'filter_order_Dir', 'desc', 'word');
     if (strtolower($pageInfo->filter->order->dir) !== 'desc') {
         $pageInfo->filter->order->dir = 'asc';
     }
     $pageInfo->search = $app->getUserStateFromRequest($paramBase . ".search", 'search', '', 'string');
     $pageInfo->search = JString::strtolower(trim($pageInfo->search));
     $selectedMail = $app->getUserStateFromRequest($paramBase . "filter_mail", 'filter_mail', 0, 'int');
     $pageInfo->limit->value = $app->getUserStateFromRequest($paramBase . '.list_limit', 'limit', $app->getCfg('list_limit'), 'int');
     $pageInfo->limit->start = JRequest::getInt('start', $app->getUserStateFromRequest($paramBase . '.limitstart', 'limitstart', 0, 'int'));
     $db = JFactory::getDBO();
     $filters = array();
     $filters[] = "a.action = " . $db->Quote($this->getLayout());
     if (!empty($pageInfo->search)) {
         $searchVal = '\'%' . acymailing_getEscaped($pageInfo->search) . '%\'';
         $filters[] = implode(" LIKE {$searchVal} OR ", $this->searchHistory) . " LIKE {$searchVal}";
     }
     if (!empty($selectedMail)) {
         $filters[] = 'a.mailid = ' . $selectedMail;
     }
     $query = 'SELECT ' . implode(' , ', $this->historyFields) . ' FROM ' . acymailing_table('history') . ' as a';
     $query .= ' JOIN ' . acymailing_table('mail') . ' as b on a.mailid = b.mailid';
     $query .= ' JOIN ' . acymailing_table('subscriber') . ' as c on a.subid = c.subid';
     $query .= ' WHERE (' . implode(') AND (', $filters) . ')';
     if (!empty($pageInfo->filter->order->value)) {
         $query .= ' ORDER BY ' . $pageInfo->filter->order->value . ' ' . $pageInfo->filter->order->dir;
     }
     if (empty($pageInfo->limit->value)) {
         $pageInfo->limit->value = 100;
     }
     $db->setQuery($query, $pageInfo->limit->start, $pageInfo->limit->value);
     $rows = $db->loadObjectList();
     $queryCount = 'SELECT COUNT(*) FROM #__acymailing_history as a';
     if (!empty($pageInfo->search)) {
         $queryCount .= ' JOIN ' . acymailing_table('mail') . ' as b on a.mailid = b.mailid';
         $queryCount .= ' JOIN ' . acymailing_table('subscriber') . ' as c on a.subid = c.subid';
     }
     $queryCount .= ' WHERE (' . implode(') AND (', $filters) . ')';
     $db->setQuery($queryCount);
     $pageInfo->elements->total = $db->loadResult();
     $pageInfo->elements->page = count($rows);
     jimport('joomla.html.pagination');
     $pagination = new JPagination($pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value);
     $query = 'SELECT DISTINCT a.mailid FROM `#__acymailing_history` as a WHERE a.action = ' . $db->Quote($this->getLayout()) . ' AND a.mailid > 0';
     $db->setQuery($query);
     $allMailids = acymailing_loadResultArray($db);
     $emails = array();
     if (!empty($allMailids)) {
         if (!empty($selectedMail) && !in_array($selectedMail, $allMailids)) {
             array_unshift($allMailids, $selectedMail);
         }
         $query = 'SELECT subject, mailid FROM `#__acymailing_mail` WHERE mailid IN (' . implode(',', $allMailids) . ') ORDER BY mailid DESC';
         $db->setQuery($query);
         $emails = $db->loadObjectList();
     }
     $newsletters = array();
     $newsletters[] = JHTML::_('select.option', '0', JText::_('ALL_EMAILS'));
     foreach ($emails as $oneMail) {
         $newsletters[] = JHTML::_('select.option', $oneMail->mailid, $oneMail->subject);
     }
     $filterMail = JHTML::_('select.genericlist', $newsletters, 'filter_mail', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', (int) $selectedMail);
     $this->assignRef('filterMail', $filterMail);
     $this->assignRef('rows', $rows);
     $this->assignRef('pageInfo', $pageInfo);
     $this->assignRef('pagination', $pagination);
 }
Beispiel #17
0
 function onAcyProcessAction_acymailingfield($cquery, $action, $num)
 {
     $subClass = acymailing_get('class.subscriber');
     if ($action['action'] == 'confirm') {
         $cquery->where['confirmed'] = 'sub.confirmed = 0';
         $cquery->db->setQuery($cquery->getQuery(array('sub.subid')));
         $allSubids = acymailing_loadResultArray($cquery->db);
         if (!empty($allSubids)) {
             $subClass->sendConf = false;
             $subClass->sendWelcome = false;
             $subClass->sendNotif = false;
             foreach ($allSubids as $oneId) {
                 $subClass->confirmSubscription($oneId);
             }
         }
         unset($cquery->where['confirmed']);
         return JText::sprintf('NB_CONFIRMED', count($allSubids));
     }
     if ($action['action'] == 'enable') {
         $query = 'UPDATE #__acymailing_subscriber as sub';
         if (!empty($cquery->join)) {
             $query .= ' JOIN ' . implode(' JOIN ', $cquery->join);
         }
         if (!empty($cquery->leftjoin)) {
             $query .= ' LEFT JOIN ' . implode(' LEFT JOIN ', $cquery->leftjoin);
         }
         $query .= " SET sub.enabled = 1";
         if (!empty($cquery->where)) {
             $query .= ' WHERE (' . implode(') AND (', $cquery->where) . ')';
         }
         $cquery->db->setQuery($query);
         $cquery->db->query();
         $nbAffected = $cquery->db->getAffectedRows();
         return JText::sprintf('NB_ENABLED', $nbAffected);
     }
     if ($action['action'] == 'block') {
         $query = 'UPDATE #__acymailing_subscriber as sub';
         if (!empty($cquery->join)) {
             $query .= ' JOIN ' . implode(' JOIN ', $cquery->join);
         }
         if (!empty($cquery->leftjoin)) {
             $query .= ' LEFT JOIN ' . implode(' LEFT JOIN ', $cquery->leftjoin);
         }
         $query .= " SET sub.enabled = 0";
         if (!empty($cquery->where)) {
             $query .= ' WHERE (' . implode(') AND (', $cquery->where) . ')';
         }
         $cquery->db->setQuery($query);
         $cquery->db->query();
         $nbAffected = $cquery->db->getAffectedRows();
         return JText::sprintf('NB_BLOCKED', $nbAffected);
     }
     if ($action['action'] == 'delete') {
         $query = $cquery->getQuery(array('sub.subid'));
         $cquery->db->setQuery($query);
         $allSubids = acymailing_loadResultArray($cquery->db);
         $nbAffected = $subClass->delete($allSubids);
         return JText::sprintf('IMPORT_DELETE', $nbAffected);
     }
     return 'Filter AcyMailingField error, action not found : ' . $action['action'];
 }
 function onAcyProcessAction_list($cquery, $action, $num)
 {
     $listid = $action['selectedlist'];
     $listClass = acymailing_get('class.list');
     if (is_numeric($listid)) {
         if (empty($action['status'])) {
             $query = 'DELETE listremove.* FROM ' . acymailing_table('listsub') . ' as listremove ';
             $query .= 'JOIN #__acymailing_subscriber as sub ON listremove.subid = sub.subid ';
             if (!empty($cquery->join)) {
                 $query .= ' JOIN ' . implode(' JOIN ', $cquery->join);
             }
             if (!empty($cquery->leftjoin)) {
                 $query .= ' LEFT JOIN ' . implode(' LEFT JOIN ', $cquery->leftjoin);
             }
             $query .= ' WHERE listremove.listid = ' . $listid;
             if (!empty($cquery->where)) {
                 $query .= ' AND (' . implode(') AND (', $cquery->where) . ')';
             }
         } else {
             $query = 'INSERT IGNORE INTO ' . acymailing_table('listsub') . ' (listid,subid,subdate,status) ';
             $query .= $cquery->getQuery(array($listid, 'sub.subid', time(), 1));
         }
         $cquery->db->setQuery($query);
         $cquery->db->query();
         $nbsubscribed = $cquery->db->getAffectedRows();
         $myList = $listClass->get($listid);
         if (empty($action['status'])) {
             return JText::sprintf('IMPORT_REMOVE', $nbsubscribed, '<b><i>' . $myList->name . '</i></b>');
         } else {
             return JText::sprintf('IMPORT_SUBSCRIBE_CONFIRMATION', $nbsubscribed, '<b><i>' . $myList->name . '</i></b>');
         }
     }
     $listid = intval($listid);
     $myList = $listClass->get($listid);
     if (empty($action['status'])) {
         $query = 'SELECT listremove.`subid` FROM #__acymailing_listsub as listremove';
         $query .= ' JOIN #__acymailing_subscriber as sub ON listremove.subid = sub.subid ';
         if (!empty($cquery->join)) {
             $query .= ' JOIN ' . implode(' JOIN ', $cquery->join);
         }
         if (!empty($cquery->leftjoin)) {
             $query .= ' LEFT JOIN ' . implode(' LEFT JOIN ', $cquery->leftjoin);
         }
         $query .= ' WHERE listremove.listid = ' . $listid;
         if (!empty($cquery->where)) {
             $query .= ' AND (' . implode(') AND (', $cquery->where) . ')';
         }
     } else {
         $query = 'SELECT sub.`subid` FROM #__acymailing_subscriber as sub';
         $query .= ' LEFT JOIN #__acymailing_listsub as listsubscribe ON listsubscribe.subid = sub.subid AND listsubscribe.listid = ' . $listid;
         if (!empty($cquery->join)) {
             $query .= ' JOIN ' . implode(' JOIN ', $cquery->join);
         }
         if (!empty($cquery->leftjoin)) {
             $query .= ' LEFT JOIN ' . implode(' LEFT JOIN ', $cquery->leftjoin);
         }
         $query .= ' WHERE listsubscribe.subid IS NULL';
         if (!empty($cquery->where)) {
             $query .= ' AND (' . implode(') AND (', $cquery->where) . ')';
         }
     }
     $cquery->db->setQuery($query);
     $subids = acymailing_loadResultArray($cquery->db);
     if (!empty($subids)) {
         $listsubClass = acymailing_get('class.listsub');
         if (!empty($action['status']) && !empty($action['delaynum'])) {
             $listsubClass->campaigndelay = strtotime('+' . intval($action['delaynum']) . ' ' . $action['delaytype']) - time();
         }
         $listsubClass->checkAccess = false;
         $listsubClass->sendNotif = false;
         $listsubClass->sendConf = false;
         foreach ($subids as $subid) {
             if (empty($action['status'])) {
                 $listsubClass->removeSubscription($subid, array($listid));
             } else {
                 $listsubClass->addSubscription($subid, array('1' => array($listid)));
             }
         }
     }
     $nbsubscribed = count($subids);
     if (empty($action['status'])) {
         return JText::sprintf('IMPORT_REMOVE', $nbsubscribed, '<b><i>' . $myList->name . '</i></b>');
     } else {
         return JText::sprintf('IMPORT_SUBSCRIBE_CONFIRMATION', $nbsubscribed, '<b><i>' . $myList->name . '</i></b>');
     }
 }
 function onAcyProcessAction_acymailingfield($cquery, $action, $num)
 {
     $subClass = acymailing_get('class.subscriber');
     if ($action['action'] == 'confirm') {
         $cquery->where['confirmed'] = 'sub.confirmed = 0';
         $cquery->db->setQuery($cquery->getQuery(array('sub.subid')));
         $allSubids = acymailing_loadResultArray($cquery->db);
         if (!empty($allSubids)) {
             $subClass->sendConf = false;
             $subClass->sendWelcome = false;
             $subClass->sendNotif = false;
             foreach ($allSubids as $oneId) {
                 $subClass->confirmSubscription($oneId);
             }
         }
         unset($cquery->where['confirmed']);
         return JText::sprintf('NB_CONFIRMED', count($allSubids));
     }
     if ($action['action'] == 'enable') {
         $action['map'] = 'enabled';
         $action['value'] = 1;
         return $this->onAcyProcessAction_acymailingfieldval($cquery, $action, $num);
     }
     if ($action['action'] == 'block') {
         $action['map'] = 'enabled';
         $action['value'] = 0;
         return $this->onAcyProcessAction_acymailingfieldval($cquery, $action, $num);
     }
     if ($action['action'] == 'unconfirm') {
         $action['map'] = 'confirmed';
         $action['value'] = 0;
         return $this->onAcyProcessAction_acymailingfieldval($cquery, $action, $num);
     }
     if ($action['action'] == 'delete') {
         $query = $cquery->getQuery(array('sub.subid'));
         $cquery->db->setQuery($query);
         $allSubids = acymailing_loadResultArray($cquery->db);
         $nbAffected = $subClass->delete($allSubids);
         return JText::sprintf('IMPORT_DELETE', $nbAffected);
     }
     return 'Filter AcyMailingField error, action not found : ' . $action['action'];
 }
Beispiel #20
0
 private function _getFormListNames()
 {
     $allLists = array_merge(JRequest::getVar('subscription', '', '', 'array'), explode(',', JRequest::getVar('hiddenlists', '', '', 'string')));
     $data = JRequest::getVar('data', '', '', 'array');
     if (!empty($data['listsub'])) {
         foreach ($data['listsub'] as $i => $oneList) {
             if ($oneList['status'] != 1) {
                 unset($data['listsub'][$i]);
             }
         }
         $allLists = array_merge($allLists, array_keys($data['listsub']));
     }
     if (empty($allLists)) {
         return array();
     }
     JArrayHelper::toInteger($allLists);
     foreach ($allLists as $i => $oneList) {
         if (empty($oneList)) {
             unset($allLists[$i]);
         }
     }
     if (empty($allLists)) {
         return array();
     }
     $db = JFactory::getDBO();
     $db->setQuery('SELECT name FROM #__acymailing_list WHERE listid IN (' . implode(',', $allLists) . ')');
     return acymailing_loadResultArray($db);
 }
Beispiel #21
0
 private function _ifstatement(&$email, $user, $loop = 1)
 {
     if (isset($this->noIfStatementTags[$email->mailid])) {
         return;
     }
     $isAdmin = JFactory::getApplication()->isAdmin();
     if ($loop > 3) {
         if ($isAdmin) {
             acymailing_display('You cannot have more than 3 nested {if} tags.', 'warning');
         }
         return;
     }
     $match = '#{if:(((?!{if).)*)}(((?!{if).)*){/if}#Uis';
     $variables = array('subject', 'body', 'altbody', 'From', 'FromName', 'ReplyTo');
     $found = false;
     foreach ($variables as $var) {
         if (empty($email->{$var})) {
             continue;
         }
         if (is_array($email->{$var})) {
             foreach ($email->{$var} as $i => &$arrayField) {
                 if (empty($arrayField) || !is_array($arrayField)) {
                     continue;
                 }
                 foreach ($arrayField as $key => &$oneval) {
                     $found = preg_match_all($match, $oneval, $results[$var . $i . '-' . $key]) || $found;
                     if (empty($results[$var . $i . '-' . $key][0])) {
                         unset($results[$var . $i . '-' . $key]);
                     }
                 }
             }
         } else {
             $found = preg_match_all($match, $email->{$var}, $results[$var]) || $found;
             if (empty($results[$var][0])) {
                 unset($results[$var]);
             }
         }
     }
     if (!$found) {
         if ($loop == 1) {
             $this->noIfStatementTags[$email->mailid] = true;
         }
         return;
     }
     static $a = false;
     $tags = array();
     foreach ($results as $var => $allresults) {
         foreach ($allresults[0] as $i => $oneTag) {
             if (isset($tags[$oneTag])) {
                 continue;
             }
             if (!preg_match('#^([^=!<>~]+)(=|!=|<|>|&gt;|&lt;|~|!~)([^=!<>~]+)$#i', $allresults[1][$i], $operators)) {
                 if ($isAdmin) {
                     acymailing_display('Operation not found : ' . $allresults[1][$i], 'error');
                 }
                 $tags[$oneTag] = $allresults[3][$i];
                 continue;
             }
             $field = trim($operators[1]);
             $prop = '';
             $operatorsParts = explode('.', $operators[1]);
             $operatorComp = 'acymailing';
             if (count($operatorsParts) == 2 && in_array($operatorsParts[0], array('acymailing', 'joomla', 'var'))) {
                 $operatorComp = $operatorsParts[0];
                 $field = $operatorsParts[1];
             }
             if ($operatorComp == 'joomla') {
                 if (!empty($user->userid)) {
                     if ($field == 'gid' && ACYMAILING_J16) {
                         $db = JFactory::getDBO();
                         $db->setQuery('SELECT group_id FROM #__user_usergroup_map WHERE user_id = ' . intval($user->userid));
                         $prop = implode(';', acymailing_loadResultArray($db));
                     } else {
                         $db = JFactory::getDBO();
                         $db->setQuery('SELECT * FROM #__users WHERE id = ' . intval($user->userid));
                         $juser = $db->loadObject();
                         if (isset($juser->{$field})) {
                             $prop = strtolower($juser->{$field});
                         } else {
                             if ($isAdmin && !$a) {
                                 acymailing_display('User variable not set : ' . $field . ' in ' . $allresults[1][$i], 'error');
                             }
                             $a = true;
                         }
                     }
                 }
             } elseif ($operatorComp == 'var') {
                 $prop = strtolower($field);
             } else {
                 if (!isset($user->{$field})) {
                     if ($isAdmin && !$a) {
                         acymailing_display('User variable not set : ' . $field . ' in ' . $allresults[1][$i], 'error');
                     }
                     $a = true;
                 } else {
                     $prop = strtolower($user->{$field});
                 }
             }
             $tags[$oneTag] = '';
             $val = trim(strtolower($operators[3]));
             if ($operators[2] == '=' && ($prop == $val || in_array($prop, explode(';', $val)) || in_array($val, explode(';', $prop)))) {
                 $tags[$oneTag] = $allresults[3][$i];
             } elseif ($operators[2] == '!=' && $prop != $val) {
                 $tags[$oneTag] = $allresults[3][$i];
             } elseif (($operators[2] == '>' || $operators[2] == '&gt;') && $prop > $val) {
                 $tags[$oneTag] = $allresults[3][$i];
             } elseif (($operators[2] == '<' || $operators[2] == '&lt;') && $prop < $val) {
                 $tags[$oneTag] = $allresults[3][$i];
             } elseif ($operators[2] == '~' && strpos($prop, $val) !== false) {
                 $tags[$oneTag] = $allresults[3][$i];
             } elseif ($operators[2] == '!~' && strpos($prop, $val) === false) {
                 $tags[$oneTag] = $allresults[3][$i];
             }
         }
     }
     foreach ($variables as &$var) {
         if (empty($email->{$var})) {
             continue;
         }
         if (is_array($email->{$var})) {
             foreach ($email->{$var} as &$arrayField) {
                 if (empty($arrayField) || !is_array($arrayField)) {
                     continue;
                 }
                 foreach ($arrayField as &$oneval) {
                     $oneval = str_replace(array_keys($tags), $tags, $oneval);
                 }
             }
         } else {
             $email->{$var} = str_replace(array_keys($tags), $tags, $email->{$var});
         }
     }
     $this->_ifstatement($email, $user, $loop + 1);
 }
Beispiel #22
0
 function installExtensions()
 {
     $path = ACYMAILING_BACK . 'extensions';
     $dirs = JFolder::folders($path);
     if (!ACYMAILING_J16) {
         if (file_exists(ACYMAILING_BACK . 'config.xml')) {
             JFile::delete(ACYMAILING_BACK . 'config.xml');
         }
         $query = "SELECT CONCAT(`folder`,`element`) FROM #__plugins WHERE `folder` = 'acymailing' OR `element` LIKE '%acy%'";
         $query .= " UNION SELECT `module` FROM #__modules WHERE `module` LIKE '%acymailing%'";
         $this->db->setQuery($query);
         $existingExtensions = acymailing_loadResultArray($this->db);
     } else {
         $this->db->setQuery("SELECT CONCAT(`folder`,`element`) FROM #__extensions WHERE `folder` = 'acymailing' OR `element` LIKE '%acy%'");
         $existingExtensions = acymailing_loadResultArray($this->db);
     }
     $plugins = array();
     $modules = array();
     $extensioninfo = array();
     //array('name','ordering','required table or published')
     $extensioninfo['mod_acymailing'] = array('AcyMailing Module');
     $extensioninfo['plg_acymailing_share'] = array('AcyMailing : share on social networks', 20, 1);
     $extensioninfo['plg_acymailing_contentplugin'] = array('AcyMailing : trigger Joomla Content plugins', 15, 0);
     $extensioninfo['plg_acymailing_managetext'] = array('AcyMailing Manage text', 10, 1);
     $extensioninfo['plg_acymailing_tablecontents'] = array('AcyMailing table of contents generator', 5, 1);
     $extensioninfo['plg_acymailing_online'] = array('AcyMailing Tag : Website links', 6, 1);
     $extensioninfo['plg_acymailing_stats'] = array('AcyMailing : Statistics Plugin', 50, 1);
     $extensioninfo['plg_acymailing_tagcbuser'] = array('AcyMailing Tag : CB User information', 4, '#__comprofiler');
     $extensioninfo['plg_acymailing_tagcontent'] = array('AcyMailing Tag : content insertion', 11, 1);
     $extensioninfo['plg_acymailing_tagmodule'] = array('AcyMailing Tag : Insert a Module', 12, 1);
     $extensioninfo['plg_acymailing_tagsubscriber'] = array('AcyMailing Tag : Subscriber information', 2, 1);
     $extensioninfo['plg_acymailing_tagsubscription'] = array('AcyMailing Tag : Manage the Subscription', 1, 1);
     $extensioninfo['plg_acymailing_tagtime'] = array('AcyMailing Tag : Date / Time', 5, 1);
     $extensioninfo['plg_acymailing_taguser'] = array('AcyMailing Tag : Joomla User Information', 3, 1);
     $extensioninfo['plg_acymailing_virtuemart'] = array('AcyMailing Tag : VirtueMart integration', 7, '#__vm_product');
     $extensioninfo['plg_acymailing_template'] = array('AcyMailing Template Class Replacer', 25, 1);
     $extensioninfo['plg_acymailing_urltracker'] = array('AcyMailing : Handle Click tracking part1', 30, 1);
     $extensioninfo['plg_system_acymailingurltracker'] = array('AcyMailing : Handle Click tracking part2', 1, 1);
     $extensioninfo['plg_system_regacymailing'] = array('AcyMailing : (auto)Subscribe during Joomla registration', 0, 1);
     $extensioninfo['plg_system_vmacymailing'] = array('AcyMailing : VirtueMart checkout subscription', 0, 0);
     $extensioninfo['plg_editors_acyeditor'] = array('AcyMailing Editor', 5, 1);
     $extensioninfo['plg_acymailing_geolocation'] = array('AcyMailing Geolocation : Tag and filter', 10, 1);
     $extensioninfo['plg_system_acymailingclassmail'] = array('Override Joomla mailing system', 1, 0);
     $listTables = $this->db->getTableList();
     $fromVersion = JRequest::getCmd('fromversion');
     foreach ($dirs as $oneDir) {
         $arguments = explode('_', $oneDir);
         if (!isset($extensioninfo[$oneDir])) {
             continue;
         }
         $additionalInfo = new stdClass();
         if ($arguments[0] == 'mod') {
             $arguments[2] = $oneDir;
         }
         if (ACYMAILING_J16 && !empty($arguments[2]) && file_exists($path . DS . $oneDir . DS . $arguments[2] . '.xml')) {
             $xmlFile = simplexml_load_file($path . DS . $oneDir . DS . $arguments[2] . '.xml');
             $additionalInfo->version = (string) $xmlFile->version;
             $additionalInfo->author = (string) $xmlFile->author;
             $additionalInfo->creationDate = (string) $xmlFile->creationDate;
             $extension = $arguments[0] == 'mod' ? $oneDir : $arguments[1] . $arguments[2];
             if (in_array($extension, $existingExtensions) && version_compare($fromVersion, '4.8.1', '<')) {
                 $query = "UPDATE `#__extensions` SET `manifest_cache` = " . $this->db->Quote(json_encode($additionalInfo)) . " WHERE (type = ";
                 if ($arguments[0] == 'mod') {
                     $query .= "'module' AND `element` = " . $this->db->Quote($oneDir) . ")";
                 } else {
                     $query .= "'plugin' AND folder = " . $this->db->Quote($arguments[1]) . " AND `element` = " . $this->db->Quote($arguments[2]) . ")";
                 }
                 $this->db->setQuery($query);
                 $this->db->query();
             }
         }
         if ($arguments[0] == 'plg') {
             $newPlugin = new stdClass();
             if (!empty($additionalInfo)) {
                 $newPlugin->additionalInfo = json_encode($additionalInfo);
             }
             $newPlugin->name = $oneDir;
             if (isset($extensioninfo[$oneDir][0])) {
                 $newPlugin->name = $extensioninfo[$oneDir][0];
             }
             $newPlugin->type = 'plugin';
             $newPlugin->folder = $arguments[1];
             $newPlugin->element = $arguments[2];
             $newPlugin->enabled = 1;
             if (isset($extensioninfo[$oneDir][2])) {
                 if (is_numeric($extensioninfo[$oneDir][2])) {
                     $newPlugin->enabled = $extensioninfo[$oneDir][2];
                 } elseif (!in_array(str_replace('#__', $this->db->getPrefix(), $extensioninfo[$oneDir][2]), $listTables)) {
                     $newPlugin->enabled = 0;
                 }
             }
             $newPlugin->params = '{}';
             $newPlugin->ordering = 0;
             if (isset($extensioninfo[$oneDir][1])) {
                 $newPlugin->ordering = $extensioninfo[$oneDir][1];
             }
             if (!acymailing_createDir(ACYMAILING_ROOT . 'plugins' . DS . $newPlugin->folder)) {
                 continue;
             }
             if (!ACYMAILING_J16) {
                 $destinationFolder = ACYMAILING_ROOT . 'plugins' . DS . $newPlugin->folder;
             } else {
                 $destinationFolder = ACYMAILING_ROOT . 'plugins' . DS . $newPlugin->folder . DS . $newPlugin->element;
                 if (!acymailing_createDir($destinationFolder)) {
                     continue;
                 }
             }
             if (!$this->copyFolder($path . DS . $oneDir, $destinationFolder)) {
                 continue;
             }
             if (in_array($newPlugin->folder . $newPlugin->element, $existingExtensions)) {
                 continue;
             }
             $plugins[] = $newPlugin;
         } elseif ($arguments[0] == 'mod') {
             $newModule = new stdClass();
             if (!empty($additionalInfo)) {
                 $newModule->additionalInfo = json_encode($additionalInfo);
             }
             $newModule->name = $oneDir;
             if (isset($extensioninfo[$oneDir][0])) {
                 $newModule->name = $extensioninfo[$oneDir][0];
             }
             $newModule->type = 'module';
             $newModule->folder = '';
             $newModule->element = $oneDir;
             $newModule->enabled = 1;
             $newModule->params = '{}';
             $newModule->ordering = 0;
             if (isset($extensioninfo[$oneDir][1])) {
                 $newModule->ordering = $extensioninfo[$oneDir][1];
             }
             $destinationFolder = ACYMAILING_ROOT . 'modules' . DS . $oneDir;
             if (!acymailing_createDir($destinationFolder)) {
                 continue;
             }
             if (!$this->copyFolder($path . DS . $oneDir, $destinationFolder)) {
                 continue;
             }
             if (in_array($newModule->element, $existingExtensions)) {
                 continue;
             }
             $modules[] = $newModule;
         } else {
             acymailing_display('Could not handle : ' . $oneDir, 'error');
         }
     }
     if (!empty($this->errors)) {
         acymailing_display($this->errors, 'error');
     }
     if (!ACYMAILING_J16) {
         $extensions = $plugins;
     } else {
         $extensions = array_merge($plugins, $modules);
     }
     $success = array();
     if (!empty($extensions)) {
         if (!ACYMAILING_J16) {
             $queryExtensions = 'INSERT INTO `#__plugins` (`name`,`element`,`folder`,`published`,`ordering`) VALUES ';
         } else {
             $queryExtensions = 'INSERT INTO `#__extensions` (`name`,`element`,`folder`,`enabled`,`ordering`,`type`,`access`,`manifest_cache`) VALUES ';
         }
         foreach ($extensions as $oneExt) {
             $queryExtensions .= '(' . $this->db->Quote($oneExt->name) . ',' . $this->db->Quote($oneExt->element) . ',' . $this->db->Quote($oneExt->folder) . ',' . $oneExt->enabled . ',' . $oneExt->ordering;
             if (ACYMAILING_J16) {
                 $queryExtensions .= ',' . $this->db->Quote($oneExt->type) . ',1,' . $this->db->Quote(!empty($oneExt->additionalInfo) ? $oneExt->additionalInfo : '');
             }
             $queryExtensions .= '),';
             if ($oneExt->type != 'module') {
                 $success[] = JText::sprintf('PLUG_INSTALLED', $oneExt->name);
             }
         }
         $queryExtensions = trim($queryExtensions, ',');
         $this->db->setQuery($queryExtensions);
         $this->db->query();
     }
     if (!empty($modules)) {
         foreach ($modules as $oneModule) {
             if (!ACYMAILING_J16) {
                 $queryModule = 'INSERT INTO `#__modules` (`title`,`position`,`published`,`module`) VALUES ';
                 $queryModule .= '(' . $this->db->Quote($oneModule->name) . ",'left',0," . $this->db->Quote($oneModule->element) . ")";
             } else {
                 $queryModule = 'INSERT INTO `#__modules` (`title`,`position`,`published`,`module`,`access`,`language`) VALUES ';
                 $queryModule .= '(' . $this->db->Quote($oneModule->name) . ",'position-7',0," . $this->db->Quote($oneModule->element) . ",1,'*')";
             }
             $this->db->setQuery($queryModule);
             $this->db->query();
             $moduleId = $this->db->insertid();
             $this->db->setQuery('INSERT IGNORE INTO `#__modules_menu` (`moduleid`,`menuid`) VALUES (' . $moduleId . ',0)');
             $this->db->query();
             $success[] = JText::sprintf('MODULE_INSTALLED', $oneModule->name);
         }
     }
     if (ACYMAILING_J16) {
         $this->db->setQuery("UPDATE `#__extensions` SET `access` = 1 WHERE ( `folder` = 'acymailing' OR `element` LIKE '%acymailing%' ) AND `type` = 'plugin'");
         $this->db->query();
     }
     $this->cleanPluginCache();
     if (!empty($success)) {
         acymailing_display($success, 'success');
     }
 }
Beispiel #23
0
 function abtesting()
 {
     $app = JFactory::getApplication();
     $mailids = JRequest::getString('mailid');
     $validationStatus = JRequest::getString('validationStatus');
     $noMsg = false;
     $noBtn = false;
     if (!empty($mailids) && strpos($mailids, ',') !== false) {
         $db = JFactory::getDBO();
         $warningMsg = array();
         $mailsArray = explode(',', $mailids);
         JArrayHelper::toInteger($mailsArray);
         $mailids = implode(',', $mailsArray);
         $this->assign('mailid', $mailids);
         $query = 'SELECT abtesting FROM #__acymailing_mail WHERE mailid IN (' . implode(',', $mailsArray) . ') AND abtesting IS NOT NULL';
         $db->setQuery($query);
         $resDetail = acymailing_loadResultArray($db);
         if (!empty($resDetail) && count($resDetail) != count($mailsArray)) {
             $titlePage = JText::_('ABTESTING');
             acymailing_display(JText::_('ABTESTING_MISSINGEMAIL'), 'warning');
             $this->assign('missingMail', true);
         } else {
             $abTestDetail = array();
             if (empty($resDetail)) {
                 $abTestDetail['mailids'] = $mailids;
                 $abTestDetail['prct'] = 10;
                 $abTestDetail['delay'] = 2;
                 $abTestDetail['action'] = 'manual';
             } else {
                 $abTestDetail = unserialize($resDetail[0]);
                 $savedIds = explode(',', $abTestDetail['mailids']);
                 sort($savedIds);
                 sort($mailsArray);
                 if (!empty($abTestDetail['status']) && in_array($abTestDetail['status'], array('inProgress', 'testSendOver', 'abTestFinalSend')) && $savedIds != $mailsArray) {
                     $warningMsg[] = JText::_('ABTESTING_TESTEXIST');
                     $mailsArray = $savedIds;
                     $mailids = implode(',', $mailsArray);
                 }
                 $this->assign('savedValues', true);
                 if ($abTestDetail['status'] == 'inProgress') {
                     $warningMsg[] = JText::_('ABTESTING_INPROGRESS');
                 }
             }
             if ($validationStatus == 'abTestAdd') {
                 $noMsg = true;
             }
             if (!empty($abTestDetail['status']) && $abTestDetail['status'] == 'abTestFinalSend' && !empty($abTestDetail['newMail'])) {
                 $mailInQueueErrorMsg = JText::_('ABTESTING_FINALMAILINQUEUE');
                 $mailTocheck = '=' . $abTestDetail['newMail'];
             } else {
                 $mailInQueueErrorMsg = JText::_('ABTESTING_TESTMAILINQUEUE');
                 $mailTocheck = ' IN (' . implode(',', $mailsArray) . ')';
             }
             $query = "SELECT COUNT(*) FROM #__acymailing_queue WHERE mailid" . $mailTocheck;
             $db->setQuery($query);
             $queueCheck = $db->loadResult();
             if (!empty($queueCheck) && $validationStatus != 'abTestAdd') {
                 acymailing_display($mailInQueueErrorMsg, 'error');
                 $noMsg = true;
             }
             if (!empty($resDetail) && empty($queueCheck) && in_array($abTestDetail['status'], array('inProgress', 'abTestFinalSend'))) {
                 if ($abTestDetail['status'] == 'inProgress') {
                     $abTestDetail['status'] = 'testSendOver';
                 } else {
                     $abTestDetail['status'] = 'completed';
                 }
                 $query = "UPDATE #__acymailing_mail SET abtesting=" . $db->quote(serialize($abTestDetail)) . " WHERE mailid IN (" . implode(',', $mailsArray) . ")";
                 $db->setQuery($query);
                 $db->query();
             }
             if (!empty($abTestDetail['status']) && $abTestDetail['status'] == 'testSendOver') {
                 acymailing_display(JText::_('ABTESTING_READYTOSEND'), 'info');
             }
             if (!empty($abTestDetail['status']) && $abTestDetail['status'] == 'completed') {
                 acymailing_display(JText::_('ABTESTING_COMPLETE'), 'info');
             }
             $this->assign('abTestDetail', $abTestDetail);
             $nbMails = count($mailsArray);
             $titleStr = "A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z";
             $titlePage = JText::sprintf('ABTESTING_TITLE', substr($titleStr, 0, min($nbMails, 26) * 2 - 1));
             $mailClass = acymailing_get('class.mail');
             $mailsDetails = array();
             foreach ($mailsArray as $mailid) {
                 $mailsDetails[] = $mailClass->get($mailid);
             }
             $this->assign('mailsdetails', $mailsDetails);
             $mailerHelper = acymailing_get('helper.mailer');
             $mailerHelper->loadedToSend = false;
             $mailReceiver = $mailerHelper->load($mailsArray[0]);
             $listmailClass = acymailing_get('class.listmail');
             $lists = $listmailClass->getReceivers($mailReceiver->mailid, true, false);
             $this->assign('lists', $lists);
             $this->assign('mailReceiver', $mailReceiver);
             $filterClass = acymailing_get('class.filter');
             $this->assign('filterClass', $filterClass);
             $listids = array();
             foreach ($lists as $oneList) {
                 $listids[] = $oneList->listid;
             }
             $nbTotalReceivers = $filterClass->countReceivers($listids, $this->mailReceiver->filter, $this->mailReceiver->mailid);
             if ($nbTotalReceivers < 50) {
                 $warningMsg[] = JText::sprintf('ABTESTING_NOTENOUGHUSER', $nbTotalReceivers);
                 $noBtn = true;
             }
             $this->assign('nbTotalReceivers', $nbTotalReceivers);
             $this->assign('nbTestReceivers', floor($nbTotalReceivers * $abTestDetail['prct'] / 100));
             if ($noMsg || $noBtn) {
                 $this->assign('noButton', true);
             }
             $queryStat = 'SELECT mailid, openunique, clickunique, senthtml, senttext, bounceunique FROM #__acymailing_stats WHERE mailid IN (' . $mailids . ')';
             $db->setQuery($queryStat);
             $resStat = $db->loadObjectList('mailid');
             if (!empty($resStat)) {
                 $this->assign('statMail', $resStat);
                 $warningMsg[] = JText::_('ABTESTING_STAT_WARNING');
             }
             if (!empty($warningMsg) && $noMsg == false) {
                 acymailing_display(implode('<br />', $warningMsg), 'warning');
             }
         }
     } else {
         $titlePage = JText::_('ABTESTING');
     }
     $this->assign('validationStatus', $validationStatus);
     $this->assign('titlePage', $titlePage);
     $this->assign('app', $app);
     if ($app->isAdmin()) {
         acymailing_setTitle(JText::_('ABTESTING'), $this->icon, $this->ctrl . '&task=abtesting');
         $bar = JToolBar::getInstance('toolbar');
     }
 }
Beispiel #24
0
 function getAffectedCampaigns($listids)
 {
     $query = 'SELECT DISTINCT a.campaignid FROM ' . acymailing_table('listcampaign') . ' as a JOIN ' . acymailing_table('list') . ' as b on a.campaignid = b.listid WHERE a.listid IN (' . implode(',', $listids) . ') AND b.type = \'campaign\' AND b.published = 1';
     $this->database->setQuery($query);
     return acymailing_loadResultArray($this->database);
 }
Beispiel #25
0
 function _sendtest()
 {
     JRequest::checkToken() or die('Invalid Token');
     $mailid = acymailing_getCID('mailid');
     $receiver_type = JRequest::getVar('receiver_type', '', '', 'string');
     if (empty($mailid) or empty($receiver_type)) {
         return false;
     }
     $mailer = acymailing_get('helper.mailer');
     $mailer->forceVersion = JRequest::getVar('test_html', 1, '', 'int');
     $mailer->autoAddUser = true;
     $mailer->SMTPDebug = 1;
     $mailer->checkConfirmField = false;
     $receivers = array();
     if ($receiver_type == 'user') {
         $user = JFactory::getUser();
         $receivers[] = $user->email;
     } elseif ($receiver_type == 'other') {
         $receiverEntry = JRequest::getVar('test_email', '', '', 'string');
         if (substr_count($receiverEntry, '@') > 1) {
             $receivers = explode(' ', trim(preg_replace('# +#', ' ', str_replace(array(';', ','), ' ', $receiverEntry))));
         } else {
             $receivers[] = trim($receiverEntry);
         }
     } else {
         $gid = substr($receiver_type, strpos($receiver_type, '_') + 1);
         if (empty($gid)) {
             return false;
         }
         $db = JFactory::getDBO();
         $db->setQuery('SELECT email from ' . acymailing_table('users', false) . ' WHERE gid = ' . intval($gid));
         $receivers = acymailing_loadResultArray($db);
     }
     if (empty($receivers)) {
         $app = JFactory::getApplication();
         $app->enqueueMessage(JText::_('NO_SUBSCRIBER'), 'notice');
         return false;
     }
     $result = true;
     foreach ($receivers as $receiver) {
         $result = $mailer->sendOne($mailid, $receiver) && $result;
     }
     return $result;
 }