array('type' => 'delivery','name' => "发货"), 'o2opickup'=>array('type' => 'o2opickup','name' => "门店自提"), 'o2oship'=>array('type' => 'o2oship','name' => "门店配送"), 'einvoice'=>array('type' => 'einvoice','name' => "电子发票"), 'express'=>array('type' => 'express','name' => "发货揽收"), 'received'=>array('type' => 'received','name' => "发货签收"), 'login'=>array('type' => 'login','name' => "登录"), ); /** * 获取发送短信的触发事件类型列表 * * @param void * @return void */ static public function getEventTypes(){ return self::$__eventTypes; } public function getTmplConfByEventType($type){ $params['event_type'] = $type; //初始化服务 if(!$this->initService($params)){ return false; } return $this->getTmplConf(); } private function getTmplConf(){ return self::$__eventObj->getTmplConf(); } /** * 发送短信的触发调用方法 * * @param void * @return void */ function sendSms($params, &$error_msg){ //初始化服务 if(!$this->initService($params)){ return false; } //检查相应参数 if(!$this->checkParams($params, $error_msg)){ return false; } //组织发送数据 if(!$this->formatContent($params, $sendParams, $error_msg)){ return false; } //执行短信发送 return $this->doSendSms($sendParams, $error_msg); } /** * 初始化短信发送服务 * * @param array $params * @return boolean true/false */ private function initService($params){ //必要参数触发的事件类型不能为空 if(!isset($params['event_type']) || empty($params['event_type']) || !isset(self::$__eventTypes[$params['event_type']])){ return false; }else{ self::$__eventType = $params['event_type']; } $class_name = sprintf('taoexlib_sms_event_%s', self::$__eventType); try{ if (class_exists($class_name)){ self::$__eventObj = kernel::single($class_name); return true; }else{ return false; } } catch (Exception $e) { return false; } } /** * 检查短信发送的参数 * * @param array $params * @return boolean true/false */ private function checkParams(&$params, &$error_msg){ return self::$__eventObj->checkParams($params, $error_msg); } /** * 格式化组织发送的短信内容及参数 * * @param array $params * @param array $sendParams * @return boolean true/false */ private function formatContent($params, &$sendParams, &$error_msg){ return self::$__eventObj->formatContent($params, $sendParams, $error_msg); } /** * 最终发送短信动作 * * @param array $sendParams * @param string $error_msg * @return boolean true/false */ private function doSendSms($sendParams, &$error_msg){ //临时变量定义 $phone = $sendParams["phones"]; $content = $sendParams['content']; //检查短信发送开关是否开启 $switch=app::get("taoexlib")->getConf('taoexlib.message.switch'); if($switch == 'on'){ //检查发送短信的手机号是否在黑名单中 if($this->checkBlackTel($phone)){ $smsresult=taoexlib_utils::send_notice($param, $sendParams); if($smsresult){ return true; }else{ return false; } }else{ $error_msg = '该手机号处于免打扰列表中'; $this->writeSmslog($phone,$content,$error_msg,0); return false; } }else{ return true; } } /* * 检测是否在免打扰手机号列表中 * 将手机号放进去验证,检查该手机号是否处于免打扰列表中 */ private function checkBlackTel($tel){ $blacklist=app::get('taoexlib')->getConf("taoexlib.message.blacklist"); $blarr=explode("##",$blacklist); if(!in_array($tel,$blarr)){ return true; }else{ return false; } } /* * wujian@shopex.cn * 短信日志 * 2012年2月21日 * @param $phonearr 电话号码 * @param $delivery_bn 发货单号 * @param $logo 快递单号 * @param $content 发送内容 * @param $msg 短信状态信息 * @param $status 短信状态 */ public function writeSmsLog($phone,$content,$msg,$status){ $messlog = app::get('taoexlib')->model("log"); $messlogdata = array( 'mobile'=>$phone, 'batchno'=>'', 'content'=>$content, 'sendtime'=>time(), 'msg'=>$msg, 'status' =>$status, ); $messlog->insert($messlogdata); } }