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)); }
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; }
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);">← <?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);">← <?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>'; } }
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; }
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('#^([^=!<>~]+)(=|!=|<|>|>|<|~)([^=!<>~]+)$#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] == '>' and $prop > $val) { $tags[$oneTag] = $allresults[2][$i]; } elseif ($operators[2] == '<' || $operators[2] == '<' 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)); }
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; } }
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(); }
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; }
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); }
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) . "')"; } }
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(); }
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)); }
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; }
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; }
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); }
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']; }
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); }
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('#^([^=!<>~]+)(=|!=|<|>|>|<|~|!~)([^=!<>~]+)$#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] == '>') && $prop > $val) { $tags[$oneTag] = $allresults[3][$i]; } elseif (($operators[2] == '<' || $operators[2] == '<') && $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); }
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'); } }
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'); } }
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); }
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; }