id) $idLang = $lang->id; } } elseif (isset($to['employee'])) { $toMail = $to['employee']; if (!$idLang) { $employeeObj = new Employee(); if (($employee = $employeeObj->getByEmail($toMail)) && ($lang = new Language($employee->id_lang)) && $lang->id) $idLang = $employee->id_lang; } } else return false; } else $toMail = $to; if (!$toMail) return false; $ssl = Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE'); if (EtsRVUnsubscribe:: isUnsubscribe($toMail)) { return true; } else $templateVars['{unsubscribe}'] = Context::getContext()->link->getModuleLink(self::ETS_RV_MODULE_NAME, 'unsubscribe', array('email' => $toMail, 'verify' => EtsRVTools::encrypt($toMail)), $ssl); if (!$idLang) $idLang = Context::getContext()->language->id; if (!$idLang) $idLang = Configuration::get('PS_LANG_DEFAULT'); //Build to subject: if ($subject == null) { $subject = EtsRVEmailTemplate::getSubjectByLangShop($template, $idLang, $id_shop); if (!$subject) return false; } elseif (is_array($subject) && isset($subject['origin']) && isset($subject['translation']) && isset($subject['specific'])) { if (version_compare(_PS_VERSION_, '1.7', '>=')) { $locale = isset($lang) ? $lang->locale : Language::getLocaleByIso(Language::getIsoById($idLang)); $subject = Translate::getModuleTranslation(self::ETS_RV_MODULE_NAME, $subject['origin'], $subject['specific'], isset($subject['params']) ? $subject['params'] : null, false, $locale); } else { $subject = self::trans($subject['origin'], isset($lang) ? $lang : $idLang, $subject['specific']); } if (!$subject) $subject = $subject['translation']; } elseif (is_array($subject)) return false; $res = true; $guid = sha1(uniqid()); $templateVars['{tracking}'] = Context::getContext()->link->getModuleLink(self::ETS_RV_MODULE_NAME, 'image', ['uid' => $guid], $ssl); $templateVars['{logo_img}'] = self::getShopLogoMail($id_shop); if (isset($templateVars['{product_name}'])) $subject = str_replace('{product_name}', $templateVars['{product_name}'], $subject); if (isset($templateVars['{object}'])) $subject = str_replace('{object}', $templateVars['{object}'], $subject); if (isset($templateVars['{customer_name}'])) $subject = str_replace('{customer_name}', $templateVars['{customer_name}'], $subject); if (isset($templateVars['{from_person_name}'])) $subject = str_replace('{from_person_name}', $templateVars['{from_person_name}'], $subject); if (isset($templateVars['{shop_name}'])) $subject = str_replace('{shop_name}', $templateVars['{shop_name}'], $subject); if (isset($templateVars['{voucher_value}'])) $templateVars['{discount_value}'] = $templateVars['{voucher_value}']; // Push to queue: if ($push_to_queue) { $content = null; if (isset($templateVars['{content}'])) { $content = $templateVars['{content}']; unset($templateVars['{content}']); } $queue = new EtsRVEmailQueue(); $queue->id_lang = $idLang; $queue->id_shop = $id_shop; $queue->template = $template; $queue->subject = $subject; $queue->content = $content; $queue->template_vars = json_encode($templateVars); $queue->to_email = $toMail; $queue->to_name = $toName; $queue->id_customer = $id_customer; $queue->employee = $employee; if ($schedule) { $scheduleTime = trim(Configuration::getGlobalValue('ETS_RV_CRONJOB_SCHEDULE_TIME')); if ($scheduleTime !== '') { $queue->schedule_time = time() + (int)$scheduleTime * 86400; } } $res &= $queue->add(); } // Add tracking: $tracking = new EtsRVTracking(); $tracking->id_shop = $id_shop; $tracking->id_customer = $id_customer; $tracking->employee = $employee; $tracking->product_comment_id = $product_comment_id; $tracking->product_id = $product_id; $tracking->ip_address = ($ip_address = Tools::getRemoteAddr()) && $ip_address == '::1' ? '127.0.0.1' : $ip_address; $tracking->email = $toMail; $tracking->guid = $guid; $tracking->is_read = 0; $tracking->delivered = $push_to_queue ? 0 : 1; $tracking->subject = $subject; $tracking->id_order = $id_order; if (isset($queue)) { $tracking->queue_id = $queue->id; } $res &= $tracking->add(); if ($tracking->id > 0 && $cart_rule_id > 0) { $res &= EtsRVTracking::trackingDiscount($tracking->id, $cart_rule_id); } // Not push to queue then run sendmail now: if (!$push_to_queue) { EtsRVTools::getInstance()->replaceShortCode($templateVars, $idLang); $res &= Mail::send( $idLang, $template, $subject, $templateVars, $toMail, $toName, null, null, null, null, dirname(__FILE__) . '/../mails/', false, $id_shop ); } return $res; } public static function getShopLogoMail($id_shop = null) { if ($id_shop == null) $id_shop = Context::getContext()->shop->id; if (Configuration::get('PS_LOGO_MAIL') !== false && @file_exists(_PS_IMG_DIR_ . Configuration::get('PS_LOGO_MAIL', null, null, $id_shop))) $logo = Configuration::get('PS_LOGO_MAIL', null, null, $id_shop); elseif (file_exists(_PS_IMG_DIR_ . Configuration::get('PS_LOGO', null, null, $id_shop))) $logo = Configuration::get('PS_LOGO', null, null, $id_shop); else $logo = ''; $base = Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE') ? 'https://' . Context::getContext()->shop->domain_ssl : 'http://' . Context::getContext()->shop->domain; return $logo !== '' ? $base . Context::getContext()->shop->getBaseURI() . 'img/' . $logo : ''; } }