XoopsModules25x /
oledrion
This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include, or for example
via PHP's auto-loading mechanism.
| 1 | <?php |
||
| 2 | /* |
||
| 3 | You may not change or alter any portion of this comment or credits |
||
| 4 | of supporting developers from this source code or any supporting source code |
||
| 5 | which is considered copyrighted (c) material of the original comment or credit authors. |
||
| 6 | |||
| 7 | This program is distributed in the hope that it will be useful, |
||
| 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
| 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
||
| 10 | */ |
||
| 11 | |||
| 12 | /** |
||
| 13 | * oledrion |
||
| 14 | * |
||
| 15 | * @copyright {@link https://xoops.org/ XOOPS Project} |
||
| 16 | * @license {@link http://www.fsf.org/copyleft/gpl.html GNU public license} |
||
| 17 | * @author Hervé Thouzard (http://www.herve-thouzard.com/) |
||
| 18 | */ |
||
| 19 | |||
| 20 | use XoopsModules\Oledrion; |
||
| 21 | |||
| 22 | /** |
||
| 23 | * Création du contenu d'une newsletter (dans l'administration) |
||
| 24 | */ |
||
| 25 | if (!defined('OLEDRION_ADMIN')) { |
||
| 26 | exit(); |
||
| 27 | } |
||
| 28 | switch ($action) { |
||
| 29 | // **************************************************************************************************************** |
||
| 30 | case 'default': // Création de la newsletter |
||
| 31 | |||
| 32 | // **************************************************************************************************************** |
||
| 33 | xoops_cp_header(); |
||
| 34 | $adminObject = \Xmf\Module\Admin::getInstance(); |
||
| 35 | $adminObject->displayNavigation('index.php?op=newsletter'); |
||
| 36 | // Oledrion\Utility::htitle(_MI_OLEDRION_ADMENU7, 4); |
||
| 37 | |||
| 38 | // require_once OLEDRION_PATH . 'class/XoopsObjectTree.php'; |
||
| 39 | $sform = new \XoopsThemeForm(_MI_OLEDRION_ADMENU7, 'frmnewsletter', $baseurl); |
||
| 40 | $datesTray = new \XoopsFormElementTray(_AM_OLEDRION_NEWSLETTER_BETWEEN); |
||
| 41 | $minDate = $maxDate = 0; |
||
| 42 | $productsHandler->getMinMaxPublishedDate($minDate, $maxDate); |
||
| 43 | $date1 = new \XoopsFormTextDateSelect('', 'date1', 15, $minDate); |
||
| 44 | $date2 = new \XoopsFormTextDateSelect(_AM_OLEDRION_EXPORT_AND, 'date2', 15, $maxDate); |
||
| 45 | $datesTray->addElement($date1); |
||
| 46 | $datesTray->addElement($date2); |
||
| 47 | $sform->addElement($datesTray); |
||
| 48 | |||
| 49 | $categories = $categoryHandler->getAllCategories(new Oledrion\Parameters()); |
||
| 50 | $mytree = new Oledrion\XoopsObjectTree($categories, 'cat_cid', 'cat_pid'); |
||
| 51 | |||
| 52 | $htmlSelect = $mytree->makeSelectElement('cat_cid', 'cat_title', '-', 0, true, 0, _AM_OLEDRION_ALL, _AM_OLEDRION_IN_CATEGORY); |
||
| 53 | $sform->addElement($htmlSelect); |
||
| 54 | |||
| 55 | $sform->addElement(new \XoopsFormHidden('op', 'newsletter'), false); |
||
| 56 | $sform->addElement(new \XoopsFormHidden('action', 'launch'), false); |
||
| 57 | $sform->addElement(new \XoopsFormRadioYN(_AM_OLEDRION_REMOVE_BR, 'removebr', 1), false); |
||
| 58 | $sform->addElement(new \XoopsFormRadioYN(_AM_OLEDRION_NEWSLETTER_HTML_TAGS, 'removehtml', 0), false); |
||
| 59 | $sform->addElement(new \XoopsFormTextArea(_AM_OLEDRION_NEWSLETTER_HEADER, 'header', '', 4, 70), false); |
||
| 60 | $sform->addElement(new \XoopsFormTextArea(_AM_OLEDRION_NEWSLETTER_FOOTER, 'footer', '', 4, 70), false); |
||
| 61 | $buttonTray = new \XoopsFormElementTray('', ''); |
||
| 62 | $submit_btn = new \XoopsFormButton('', 'post', _SUBMIT, 'submit'); |
||
| 63 | $buttonTray->addElement($submit_btn); |
||
| 64 | $sform->addElement($buttonTray); |
||
| 65 | $sform = Oledrion\Utility::formMarkRequiredFields($sform); |
||
| 66 | $sform->display(); |
||
| 67 | require_once OLEDRION_ADMIN_PATH . 'admin_footer.php'; |
||
| 68 | |||
| 69 | break; |
||
| 70 | // **************************************************************************************************************** |
||
| 71 | case 'launch': // Création effective de la newsletter |
||
| 72 | |||
| 73 | // **************************************************************************************************************** |
||
| 74 | xoops_cp_header(); |
||
| 75 | $adminObject = \Xmf\Module\Admin::getInstance(); |
||
| 76 | $adminObject->displayNavigation('index.php?op=newsletter'); |
||
| 77 | // Oledrion\Utility::htitle(_MI_OLEDRION_ADMENU7, 4); |
||
| 78 | |||
| 79 | $newsletterTemplate = ''; |
||
| 80 | /** @var Oledrion\Helper $helper */ |
||
| 81 | $helper = Oledrion\Helper::getInstance(); |
||
| 82 | $helper->loadLanguage('newsletter'); |
||
| 83 | echo '<br>'; |
||
| 84 | $removeBr = \Xmf\Request::getInt('removebr', 0, 'POST'); |
||
| 85 | $removeHtml = \Xmf\Request::getInt('removehtml', 0, 'POST'); |
||
| 86 | $header = \Xmf\Request::getString('header', '', 'POST'); |
||
| 87 | $footer = \Xmf\Request::getString('footer', '', 'POST'); |
||
| 88 | $date1 = strtotime($_POST['date1']); |
||
| 89 | $date2 = strtotime($_POST['date2']); |
||
| 90 | $cat_id = \Xmf\Request::getInt('cat_cid', 0, 'POST'); |
||
| 91 | $products = $categories = []; |
||
| 92 | $products = $productsHandler->getProductsForNewsletter(new Oledrion\Parameters([ |
||
| 93 | 'startingDate' => $date1, |
||
| 94 | 'endingDate' => $date2, |
||
| 95 | 'category' => $cat_id, |
||
| 96 | ])); |
||
| 97 | $newsfile = OLEDRION_NEWSLETTER_PATH; |
||
| 98 | $categories = $categoryHandler->getAllCategories(new Oledrion\Parameters([ |
||
| 99 | 'start' => 0, |
||
| 100 | 'limit' => 0, |
||
| 101 | 'sort' => 'cat_title', |
||
| 102 | 'order' => 'ASC', |
||
| 103 | 'idaskey' => true, |
||
| 104 | ])); |
||
| 105 | $vats = $vatHandler->getAllVats(new Oledrion\Parameters()); |
||
| 106 | |||
| 107 | $fp = fopen($newsfile, 'wb'); |
||
| 108 | if (!$fp) { |
||
|
0 ignored issues
–
show
introduced
by
Loading history...
|
|||
| 109 | Oledrion\Utility::redirect(_AM_OLEDRION_ERROR_7, $baseurl . '?op=newsletter', 5); |
||
| 110 | } |
||
| 111 | if ('' !== xoops_trim($header)) { |
||
| 112 | fwrite($fp, $header); |
||
| 113 | } |
||
| 114 | foreach ($products as $item) { |
||
| 115 | $content = $newsletterTemplate; |
||
| 116 | $tblTmp = $tblTmp2 = []; |
||
| 117 | $criteria = new \CriteriaCompo(); |
||
| 118 | $criteria->add(new \Criteria('pm_product_id', $item->getVar('product_id'), '=')); |
||
| 119 | $tblTmp = $productsmanuHandler->getObjects($criteria); |
||
| 120 | foreach ($tblTmp as $productManufacturer) { |
||
| 121 | $tblTmp2[] = $productManufacturer->getVar('pm_manu_id'); |
||
| 122 | } |
||
| 123 | $manufacturers = $manufacturerHandler->getObjects(new \Criteria('manu_id', '(' . implode(',', $tblTmp2) . ')', 'IN'), true); |
||
| 124 | $tblTmp = []; |
||
| 125 | foreach ($manufacturers as $manufacturer) { |
||
| 126 | $tblTmp[] = $manufacturer->getVar('manu_commercialname') . ' ' . $manufacturer->getVar('manu_name'); |
||
| 127 | } |
||
| 128 | |||
| 129 | $search = [ |
||
| 130 | '%title%', |
||
| 131 | '%category%', |
||
| 132 | '%author%', |
||
| 133 | '%published%', |
||
| 134 | '%price%', |
||
| 135 | '%money%', |
||
| 136 | '%hometext%', |
||
| 137 | '%fulltext%', |
||
| 138 | '%discountprice%', |
||
| 139 | '%link%', |
||
| 140 | '%product_sku%', |
||
| 141 | '%product_extraid%', |
||
| 142 | '%product_width%', |
||
| 143 | '%product_date%', |
||
| 144 | '%product_shipping_price%', |
||
| 145 | '%product_stock%', |
||
| 146 | '%product_unitmeasure1%', |
||
| 147 | '%product_weight%', |
||
| 148 | '%product_unitmeasure2%', |
||
| 149 | '%product_download_url%', |
||
| 150 | '%product_length%', |
||
| 151 | ]; |
||
| 152 | $replace = [ |
||
| 153 | $item->getVar('product_title'), |
||
| 154 | $categories[$item->getVar('product_cid')]->getVar('cat_title'), |
||
| 155 | implode(', ', $tblTmp), |
||
| 156 | formatTimestamp($item->getVar('product_submitted'), 's'), |
||
| 157 | Oledrion\Utility::getTTC($item->getVar('product_price'), $vats[$item->getVar('product_vat_id')]->getVar('vat_rate')), |
||
| 158 | Oledrion\Utility::getModuleOption('money_short'), |
||
| 159 | $item->getVar('product_summary'), |
||
| 160 | $item->getVar('product_description'), |
||
| 161 | Oledrion\Utility::getTTC($item->getVar('product_discount_price'), $vats[$item->getVar('product_vat_id')]->getVar('vat_rate')), |
||
| 162 | $item->getLink(), |
||
| 163 | $item->getVar('product_sku'), |
||
| 164 | $item->getVar('product_extraid'), |
||
| 165 | $item->getVar('product_width'), |
||
| 166 | $item->getVar('product_date'), |
||
| 167 | $item->getVar('product_shipping_price'), |
||
| 168 | $item->getVar('product_stock'), |
||
| 169 | $item->getVar('product_unitmeasure1'), |
||
| 170 | $item->getVar('product_weight'), |
||
| 171 | $item->getVar('product_unitmeasure2'), |
||
| 172 | $item->getVar('product_download_url'), |
||
| 173 | $item->getVar('product_length'), |
||
| 174 | ]; |
||
| 175 | $content = str_replace($search, $replace, $content); |
||
| 176 | if ($removeBr) { |
||
| 177 | $content = str_replace('<br>', "\r\n", $content); |
||
| 178 | } |
||
| 179 | if ($removeHtml) { |
||
| 180 | $content = strip_tags($content); |
||
| 181 | } |
||
| 182 | fwrite($fp, $content); |
||
| 183 | } |
||
| 184 | if ('' !== xoops_trim($footer)) { |
||
| 185 | fwrite($fp, $footer); |
||
| 186 | } |
||
| 187 | fclose($fp); |
||
| 188 | $newsfile = OLEDRION_NEWSLETTER_URL; |
||
| 189 | echo "<a href='$newsfile' target='_blank'>" . _AM_OLEDRION_NEWSLETTER_READY . '</a>'; |
||
| 190 | require_once OLEDRION_ADMIN_PATH . 'admin_footer.php'; |
||
| 191 | |||
| 192 | break; |
||
| 193 | } |
||
| 194 |