/** * ฟังก์ชั่นส่งเมล์จากแม่แบบจดหมาย * * @param int $id ID ของจดหมายที่ต้องการส่ง * @param string $module ชื่อโมดูลของจดหมายที่ต้องการส่ง * @param array $datas ข้อมูลที่จะถูกแทนที่ลงในจดหมาย ในรูป 'ตัวแปร'=>'ข้อความ' * @param string $to ที่อยู่อีเมล์ผู้รับ คั่นแต่ละรายชื่อด้วย , * @return string สำเร็จคืนค่าว่าง ไม่สำเร็จ คืนค่าข้อความผิดพลาด */ public static function send($id, $module, $datas, $to) { $model = new static(); $sql = "SELECT `from_email`,`copy_to`,`subject`,`detail` FROM `" . $model->tableWithPrefix('emailtemplate') . "`"; $sql .= " WHERE `module`=:module AND `email_id`=:email_id AND `language` IN (:language,'th')"; $sql .= " LIMIT 1"; $where = array(':module' => $module, ':email_id' => (int) $id, ':language' => \Language::name()); $email = $model->db->customQuery($sql, true, $where, $model->cache); if (empty($email)) { return \Language::get('email template not found'); } else { $email = $email[0]; // ผู้ส่ง $from = empty($email['from_email']) ? self::$cfg->noreply_email : $email['from_email']; // ข้อความในอีเมล์ $replace = array('/%WEBTITLE%/' => strip_tags(self::$cfg->web_title), '/%WEBURL%/' => WEB_URL, '/%ADMINEMAIL%/' => $from, '/%TIME%/' => \Date::format()); $replace = \Arraytool::replace($replace, $datas); \Arraytool::extract($replace, $keys, $values); $msg = preg_replace($keys, $values, $email['detail']); $subject = preg_replace($keys, $values, $email['subject']); $to = explode(',', $to); if (!empty($email['copy_to'])) { $to[] = $email['copy_to']; } // ส่งอีเมล์ return self::custom(implode(',', $to), $from, $subject, $msg); } }
/** * แทนที่ข้อความด้วยข้อมูลจากแอเรย์ รองรับข้อมูลรูปแบบแอเรย์ย่อยๆ * * @param string $text * @param array $array array($key1 => $value1, $key2 => $value2, array($key3 => $value3, $key4 => $value4)) * @return string */ public static function replaceAll($text, $array) { if (!empty($array)) { $keys = array(); $values = array(); \Arraytool::extract($array, $keys, $values); $text = str_replace($keys, $values, $text); } return $text; }