Пример #1
1
 /**
  * send
  * 必有方法,发送时调用.
  *
  * config参数为getOptions取得的所有项的配置结果
  *
  * @param mixed $target ['email']
  * @param mixed $title
  * @param mixed $config
  */
 public function send($target, $title, $content, $config)
 {
     logger::debug(__CLASS__ . var_export(func_get_args(), 1));
     $new_msg = array('member_id' => $target['member_id'], 'target' => $target['email'], 'subject' => $title, 'content' => $content, 'createtime' => time(), 'msg_type' => 'email', 'status' => 'sent');
     app::get('b2c')->model('member_msg')->save($new_msg);
     if (!($email_to = $target['email'])) {
         return false;
     }
     if ($config['sendway'] == 'mail') {
         $this->email = vmc::singleton('desktop_email_email');
     }
     $this->email->Sender = $this->Sender = $config['usermail'];
     $this->email->Subject = $this->Subject = $this->email->inlineCode($title);
     $From = $this->email->inlineCode(app::get('site')->getConf('site_name')) . '<' . $config['usermail'] . '>';
     $header = array('Return-path' => '<' . $config['usermail'] . '>', 'Date' => date('r'), 'From' => $From, 'MIME-Version' => '1.0', 'Subject' => $this->Subject, 'To' => $email_to, 'Content-Type' => 'text/html; charset=UTF-8; format=flowed', 'Content-Transfer-Encoding' => 'base64');
     $body = chunk_split(base64_encode($content));
     $header = $this->email->buildHeader($header);
     $config['sendway'] = $config['sendway'] ? $config['sendway'] : 'smtp';
     switch ($config['sendway']) {
         case 'sendmail':
             $result = $this->email->SendmailSend($email_to, $header, $body);
             break;
         case 'mail':
             $result = $this->email->MailSend($email_to, $header, $body);
             break;
         case 'smtp':
             $result = $this->email->SmtpSend($email_to, $header, $body, $config);
             break;
         default:
             $result = false;
             break;
     }
     return $result;
 }
Пример #2
0
 /**
  * Sending Push Notification
  */
 public function send_notification($registatoin_ids, $message)
 {
     // include config
     include_once 'config.php';
     include_once 'logger.php';
     $logger = new logger();
     // Set POST variables
     $url = 'https://android.googleapis.com/gcm/send';
     $fields = array('registration_ids' => $registatoin_ids, 'data' => $message);
     $headers = array('Authorization: key=' . GOOGLE_API_KEY, 'Content-Type: application/json');
     // Open connection
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
     // Set the url, number of POST vars, POST data
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POST, true);
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     // Disabling SSL Certificate support temporarly
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
     // Execute post
     $result = curl_exec($ch);
     $logger->write("Result+" . $result);
     if ($result === FALSE) {
         die('Curl failed: ' . curl_error($ch));
     }
     // Close connection
     curl_close($ch);
     //echo $result;
 }
function cip_db_query($query, $report = 'no', $link = 'db_link')
{
    //     $report manage a way of error reporting and can be:
    //     no, direct, return, add_session, add
    global ${$link}, $logger, $message;
    $result = mysql_query($query, ${$link});
    if (defined('STORE_DB_TRANSACTIONS') && STORE_DB_TRANSACTIONS == 'true') {
        if (!is_object($logger)) {
            $logger = new logger();
        }
        $logger->write($query, 'QUERY');
        if ($result === false) {
            $logger->write(mysql_error(), 'ERROR');
        }
    }
    if ($result === false) {
        $error = 'SQL error :<b>' . mysql_errno() . ' - ' . mysql_error() . '<br>' . $query;
        if ($report == 'direct') {
            echo $error;
        } elseif ($report == 'return') {
            $result = $error;
        } elseif ($report == 'add') {
            $message->add($error, 'error');
        } elseif ($report == 'add_session') {
            $message->add_session($error, 'error');
        }
        return false;
    } else {
        //         Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE
        //         mysql_query() возвращает указатель на результат запроса
        return $result;
    }
}
Пример #4
0
function tep_redirect($url)
{
    global $logger;
    header('Location: ' . $url);
    if (STORE_PAGE_PARSE_TIME == 'true') {
        if (!is_object($logger)) {
            $logger = new logger();
        }
        $logger->timer_stop();
    }
    exit;
}
Пример #5
0
function tep_db_query($query, $link = 'db_link')
{
    global ${$link}, $logger;
    if (defined('STORE_DB_TRANSACTIONS') && STORE_DB_TRANSACTIONS == 'true') {
        if (!is_object($logger)) {
            $logger = new logger();
        }
        $logger->write($query, 'QUERY');
    }
    $result = mysqli_query(${$link}, $query) or tep_db_error($query, mysqli_errno(${$link}), mysqli_error(${$link}));
    return $result;
}
Пример #6
0
function tep_redirect($url)
{
    global $logger;
    if (strstr($url, "\n") != false || strstr($url, "\r") != false) {
        tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false));
    }
    header('Location: ' . $url);
    if (STORE_PAGE_PARSE_TIME == 'true') {
        if (!is_object($logger)) {
            $logger = new logger();
        }
        $logger->timer_stop();
    }
    exit;
}
 /**
  * Log exception message
  *
  * @param       Exception       $error      Exception to log
  */
 protected function log_exception(Exception $error)
 {
     if (!isset($this->_logger)) {
         $this->_logger = new logger();
     }
     $this->_logger->write($error->getMessage(), 'ERROR');
 }
Пример #8
0
 public function post_update($dbver)
 {
     if ($dbver['dbver'] <= 0.4) {
         app::get('ectools')->setConf('ectools_payment_plugin_doubletenpay', 'a:3:{s:7:"setting";a:7:{s:8:"pay_name";s:18:"财付通双接口";s:7:"pay_fee";s:0:"";s:6:"mer_id";s:0:"";s:10:"PrivateKey";s:0:"";s:11:"support_cur";s:1:"1";s:8:"authtype";s:0:"";s:8:"pay_desc";s:6:"&nbsp;";}s:6:"status";s:5:"false";s:8:"pay_type";s:4:"true";}');
         logger::info('UPDATEING 财付通双接口支付方式更新成功');
     }
 }
Пример #9
0
 public function is_return_vaild($form, $key, $secu_id)
 {
     $_key = $key;
     $sign_type = $secu_id;
     $get = $this->para_filter($form);
     //对所有GET反馈回来的数据去空
     $sort_get = $this->arg_sort($get);
     //对所有GET反馈回来的数据排序
     $mysign = $this->build_mysign($sort_get, $_key, $sign_type);
     //生成签名结果
     $mysign = strtoupper($mysign);
     if ($mysign == $form['sign']) {
         return true;
     }
     #记录返回失败的情况
     logger::error(app::get('ectools')->_('支付单号:') . $form['out_trade_no'] . app::get('ectools')->_('签名验证不通过,请确认!') . "\n");
     logger::error(app::get('ectools')->_('本地产生的加密串:') . $mysign);
     logger::error(app::get('ectools')->_('手机财付通传递打过来的签名串:') . $form['sign']);
     $str_xml .= "<tenpayform>";
     foreach ($form as $key => $value) {
         $str_xml .= "<{$key}>" . $value . "</{$key}>";
     }
     $str_xml .= "</tenpayform>";
     return false;
 }
Пример #10
0
 /**
  * 发货之后通知到微信
  */
 public function generate($data)
 {
     $order_id = $data['order_id'];
     $ordersData = app::get('b2c')->model('orders')->getRow('ship_status', array('order_id' => $order_id));
     if ($ordersData['ship_status'] != '1') {
         $msg = app::get('weixin')->_('未发货不需要同步到微信');
         logger::info($msg);
         return true;
     }
     $payments = app::get('ectools')->model('payments')->get_payments_by_order_id($order_id);
     if (empty($payments)) {
         $msg = app::get('weixin')->_('未找到支付信息');
         logger::info($msg);
         return true;
     }
     if ($payments[0]['pay_app_id'] != 'wxpay') {
         //$msg = app::get('weixin')->_('不是微信支付不需要通知到微信');
         return true;
     }
     $postData['openid'] = $payments[0]['thirdparty_account'];
     $postData['transid'] = $payments[0]['trade_no'];
     $postData['out_trade_no'] = $payments[0]['payment_id'];
     $postData['deliver_timestamp'] = strval(time());
     $postData['deliver_status'] = '1';
     $postData['deliver_msg'] = 'ok';
     kernel::single('weixin_wechat')->delivernotify($postData);
     return true;
 }
Пример #11
0
 /**
  * Static method get 
  * 
  * @param  array $group
  * @return \helpers\database
  */
 public static function get($group = false)
 {
     // Determining if exists or it's not empty, then use default group defined in config
     $group = !$group ? array('type' => DB_TYPE, 'host' => DB_HOST, 'name' => DB_NAME, 'user' => DB_USER, 'pass' => DB_PASS) : $group;
     // Group information
     $type = $group['type'];
     $host = $group['host'];
     $name = $group['name'];
     $user = $group['user'];
     $pass = $group['pass'];
     // ID for database based on the group information
     $id = "{$type}.{$host}.{$name}.{$user}.{$pass}";
     // Checking if the same
     if (isset(self::$instances[$id])) {
         return self::$instances[$id];
     }
     try {
         // I've run into problem where
         // SET NAMES "UTF8" not working on some hostings.
         // Specifiying charset in DSN fixes the charset problem perfectly!
         $instance = new Database("{$type}:host={$host};dbname={$name};charset=utf8", $user, $pass);
         $instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
         // Setting Database into $instances to avoid duplication
         self::$instances[$id] = $instance;
         return $instance;
     } catch (PDOException $e) {
         //in the event of an error record the error to errorlog.html
         Logger::newMessage($e);
         logger::customErrorMsg();
     }
 }
Пример #12
0
 public function post_uninstall()
 {
     $init = kernel::single('cps_init');
     logger::info('Uninstall cps');
     $inst = kernel::single('cps_theme_inst');
     $inst->uninstTheme();
 }
Пример #13
0
 /**
  * 订单完成\归档.
  *
  * @param $sdf array 订单ID\操作者ID\操作者名称
  *
  * @return bool - 成功与否
  */
 public function generate($sdf, &$msg = '')
 {
     $mdl_order = app::get('b2c')->model('orders');
     $order_sdf = $mdl_order->dump($sdf['order_id']);
     //订单作废前验证
     foreach (vmc::servicelist('b2c.order.end.finish') as $service) {
         if (!$service->exec($order_sdf, $msg)) {
             return false;
         }
     }
     $order_sdf['status'] = 'finish';
     // 更新退款日志结果
     if ($mdl_order->save($order_sdf)) {
         //订单日志记录
         vmc::singleton('b2c_order_log')->set_operator(array('ident' => $sdf['op_id'] ? $sdf['op_id'] : $order_sdf['member_id'], 'model' => $sdf['op_id'] ? 'shopadmin' : 'members', 'name' => $sdf['op_name'] ? $sdf['op_name'] : '会员'))->set_order_id($order_sdf['order_id'])->success('finish', '订单已完成归档!', $order_sdf);
     } else {
         $msg = '完成\\归档失败!';
         return false;
     }
     //订单作废时同步扩展服务
     foreach (vmc::servicelist('b2c.order.end.finish') as $service) {
         if (!$service->exec($order_sdf, $msg)) {
             //记录日志,不中断
             logger::error($sdf['order_id'] . '完成归档时出错!' . $msg);
         }
     }
     return true;
 }
Пример #14
0
function eqphp_autoload($class)
{
    if (isset($_SERVER['REQUEST_URI'])) {
        $root = current(explode('/', trim($_SERVER['REQUEST_URI'], '/')));
    }
    //optimize: $config save memcache or redis
    $group = config('group.list');
    $path = isset($root) && is_array($group) && in_array($root, $group) ? $root . '/' : '';
    $module = array('a' => $path . 'action', 'm' => $path . 'model', 'p' => $path . 'plugin', 's' => 'server');
    $prefix = substr($class, 0, strpos($class, '_'));
    $dir_name = in_array($prefix, array('a', 'm', 's', 'p')) ? $module[$prefix] : 'class';
    $execute_file = $dir_name . '/' . $class . '.php';
    if (file_exists($execute_file)) {
        return include PATH_ROOT . $execute_file;
    }
    //通用加载
    if (config('state.common_load') && in_array($prefix, array('a', 'm'), true)) {
        $common_option = array('a' => 'action/', 'm' => 'model/');
        $execute_file = PATH_ROOT . $common_option[$prefix] . $class . '.php';
        if (file_exists($execute_file)) {
            return include $execute_file;
        }
    }
    //贪婪加载
    if (config('state.greedy_load')) {
        $execute_file = file::search(PATH_ROOT . $dir_name, $class, $file_list, true);
        if ($execute_file) {
            return include $execute_file;
        }
    }
    if ($prefix === 'a') {
        logger::notice('class [' . $class . '] not found');
        http::send(404);
    }
}
Пример #15
0
 public function __call($method, $params)
 {
     //api 版本历史
     $apiv_history = array('2.0', '1.0');
     $api_info = base_rpc_service::$api_info;
     $api_obj = NULL;
     $flag = false;
     foreach ($apiv_history as $v) {
         if ($this->apiv == $v) {
             $flag = true;
         }
         if ($flag) {
             $service = 'apiv_' . $v . '_' . $api_info['api_name'];
             $api_obj = kernel::service($service);
             if (method_exists($api_obj, $method)) {
                 break;
             } else {
                 logger::error('apiv service:' . $service . ', method:' . $method . '  not found!');
             }
         }
     }
     if (!$api_obj || !method_exists($api_obj, $method)) {
         trigger_error('server reject!', E_USER_ERROR);
     }
     //return call_user_func_array(array( &$api_obj, $method ), $params);
     return $api_obj->{$method}($params[0], $params[1]);
 }
Пример #16
0
        public 	function __construct($esteBloque, $lenguaje = "") {
		
		// El objeto de la clase Configurador debe ser único en toda la aplicación
		$this->miConfigurador = \Configurador::singleton ();
		
		$ruta = $this->miConfigurador->getVariableConfiguracion ( "raizDocumento" );
		$rutaURL = $this->miConfigurador->getVariableConfiguracion ( "host" ) . $this->miConfigurador->getVariableConfiguracion ( "site" );
		
		if (! isset ( $esteBloque ["grupo"] ) || $esteBloque ["grupo"] == "") {
			$ruta .= "/blocks/" . $esteBloque ["nombre"] . "/";
			$rutaURL .= "/blocks/" . $esteBloque ["nombre"] . "/";
		} else {
			$ruta .= "/blocks/" . $esteBloque ["grupo"] . "/" . $esteBloque ["nombre"] . "/";
			$rutaURL .= "/blocks/" . $esteBloque ["grupo"] . "/" . $esteBloque ["nombre"] . "/";
		}
		
		$this->miConfigurador->setVariableConfiguracion ( "rutaBloque", $ruta );
		$this->miConfigurador->setVariableConfiguracion ( "rutaUrlBloque", $rutaURL );
		
		$this->miFuncion = new Funcion ();
		$this->miSql = new Sql ();
		$this->miFrontera = new Frontera ();
		$this->miLenguaje = new Lenguaje ();
                //Objeto de la clase Loger
                $this->miLogger = \logger::singleton();
	}
 public function sitemapAction()
 {
     $this->removeViewRenderer();
     $sitemapFile = $this->_getParam("sitemap");
     if (strpos($sitemapFile, '/') !== FALSE) {
         // / not allowed since site map file name is generated from domain name
         throw new Exception(get_class($this) . ": Attempted access to invalid sitemap [ {$sitemapFile} ]");
     }
     header("Content-type: application/xml");
     $requestedSitemap = PIMCORE_WEBSITE_PATH . "/var/search/sitemap/" . $sitemapFile;
     $indexSitemap = PIMCORE_WEBSITE_PATH . "/var/search/sitemap/sitemap.xml";
     if ($this->_getParam("sitemap") and is_file($requestedSitemap)) {
         $content = file_get_contents($requestedSitemap);
         //TODO: strlen($content) takes a few seconds!
         //header("Content-Length: ".strlen($content));
         echo $content;
         exit;
     } else {
         if (is_file($indexSitemap)) {
             $content = file_get_contents($indexSitemap);
             //TODO: strlen($content) takes a few seconds!
             //header("Content-Length: ".strlen($content));
             echo $content;
             exit;
         } else {
             logger::debug(get_class($this) . ": sitemap request - but no sitemap available to deliver");
             exit;
         }
     }
 }
Пример #18
0
 public function send($target, $title, $content, $config)
 {
     $tmpl_data = $config['tmpl_data'];
     $action_name = $config['action_name'];
     $action_name_alias = $config['action_name_alias'];
     $new_msg = array('member_id' => $target['member_id'], 'target' => $target['mobile'], 'subject' => $title, 'content' => $content . $this->platform_config['sms_sign'], 'createtime' => time(), 'msg_type' => 'sms', 'status' => 'sent');
     app::get('b2c')->model('member_msg')->save($new_msg);
     if (!$target['mobile']) {
         return false;
     }
     if (empty($this->platform_config['url']) || empty($this->platform_config['params_tmpl'])) {
         return false;
     }
     $args = array('target' => $target['mobile'], 'content' => $content . $this->platform_config['sms_sign'], 'tmpl_data' => json_encode($tmpl_data), 'time' => date('Y-m-d H:i:s'), 'action' => $action_name, 'action_alias' => $action_name_alias);
     //需要获得access_token
     if (!empty($this->platform_config['access_token_action'])) {
         if (!($args['access_token'] = $this->get_access_token($this->platform_config['access_token_action']))) {
             logger::error($this->platform_config['name'] . 'access_token获得失败,无法调用短信发送API');
             return false;
         }
     }
     $params = $this->gen_params($this->platform_config['params_tmpl'], $args);
     $result = $this->net->post($this->platform_config['url'], $params);
     logger::debug(__CLASS__ . $this->platform_config['url']);
     logger::debug(var_export($params, 1));
     logger::debug(var_export($result, 1));
     return true;
 }
Пример #19
0
 public static function get_slave_redis($source_name)
 {
     if (!isset(self::$redis_nodes['slave'][$source_name])) {
         $dsns = config::get_logic('redis.' . $source_name . '.slaves', []);
         if ($dsns === []) {
             $dsns = array(config::get_logic('redis.' . $source_name . '.master'));
         }
         $all_attempts_failed = true;
         foreach ($dsns as $dsn) {
             $url_parts = parse_url($dsn);
             extract($url_parts, EXTR_SKIP);
             $redis_node = new redis_slave_node();
             if ($redis_node->connect($host, $port, 2)) {
                 self::$redis_nodes['slave'][$source_name] = $redis_node;
                 $all_attempts_failed = false;
                 break;
             } else {
                 logger::log_error("cannot connect to dsn: '{$dsn}', maybe failed?");
             }
         }
         if ($all_attempts_failed) {
             throw new server_except("cannot connect to all dsns of redis source: {$source_name}");
         }
     }
     return self::$redis_nodes['slave'][$source_name];
 }
Пример #20
0
 public function call($method, $params, $appId)
 {
     $prismHost = config::get('prism.prismHostUrl');
     $prismSocketFile = config::get('prism.prismSocketFile');
     //获取应用对应的key和secret
     $keySecret = apiUtil::getPrismKey($appId);
     $key = $keySecret['key'];
     $secret = $keySecret['secret'];
     //获取path
     $path = apiUtil::genApiPath($method);
     //params加入系统数据
     $systemParams = $this->__genSystemParams($method);
     $params = array_merge($params, $systemParams);
     $params['method'] = $method;
     //实例化请求工具
     $client = new base_prism_client($prismHost, $key, $secret, $prismSocketFile);
     //$path = "/api/bbc?method=bbc.test";
     $result = $client->post($path, $params);
     //日志记录
     //之前request和response分开记录的,发现不容易找,只好放一起了
     logger::info('call API : ' . $method . "\n" . 'wiht host : ' . $prismHost . "\n" . 'wiht key : ' . $key . "\n" . 'wiht secret : ' . $secret . "\n" . 'with params :' . var_export($params, 1) . "\n" . 'api result : ' . $result . "\n");
     //这里是返回数据
     $result = json_decode($result, 1);
     if ($result['error'] == null) {
         return $result['result'];
     } else {
         //根据返回的数据是否错误,如果有错误,尽量以原有异常抛出
         $exception = $result['error']['exception'] ? $result['error']['exception'] : 'Exception';
         logger::error(var_export($result, 1));
         $e = new $exception($result['error']['message']);
         throw $e;
     }
 }
Пример #21
0
 /**
  * 订单创建完成时
  * @params array - 订单完整数据,含ITEMS
  * @return boolean - 执行成功与否
  */
 public function exec($sdf, &$msg = '')
 {
     logger::debug($sdf['order_id'] . 'createfinish exec');
     if ($sdf['is_cod'] == 'Y') {
         $freeze_data = array();
         foreach ($sdf['items'] as $key => $item) {
             //购买数量计数
             vmc::singleton('b2c_openapi_goods', false)->counter(array('goods_id' => $item['goods_id'], 'buy_count' => $item['nums'], 'buy_count_sign' => md5($item['goods_id'] . 'buy_count' . $item['nums'] * 1024)));
             //组织库存冻结数据
             $freeze_data[] = array('sku' => $item['bn'], 'quantity' => $item['nums']);
         }
         //库存冻结
         if (!vmc::singleton('b2c_goods_stock')->freeze($freeze_data, $msg)) {
             logger::error('库存冻结异常!ORDER_ID:' . $sdf['order_id'] . ',' . $msg);
         }
     }
     /* 订单金额为0 **/
     $order_sdf = $sdf;
     if ($order_sdf['order_total'] == '0') {
         // 生成支付账单
         $obj_bill = vmc::singleton('ectools_bill');
         $bill_sdf = array('bill_type' => 'payment', 'pay_object' => 'order', 'pay_mode' => in_array($order_sdf['pay_app'], array('-1', 'cod', 'offline')) ? 'offline' : 'online', 'order_id' => $order_sdf['order_id'], 'pay_app_id' => $order_sdf['pay_app'], 'pay_fee' => $order_sdf['cost_payment'], 'member_id' => $order_sdf['member_id'], 'status' => 'succ', 'money' => $order_sdf['order_total'], 'memo' => '订单0元时自动生成');
         if (!$obj_bill->generate($bill_sdf, $msg)) {
             //TODO 自动支付失败,
             logger::error('订单0元时自动支付失败!' . $msg);
             return;
         }
     }
     return true;
 }
Пример #22
0
 public static function getupdatesql($table_name, &$data, $whereClause)
 {
     $db = vmc::database();
     if (!$table_name) {
         trigger_error('getupdatesql UNKNOW TABLE_NAME', E_USER_WARNING);
         return false;
     }
     foreach ($data as $key => $value) {
         $data[strtolower($key)] = $value;
     }
     $table_fields = $db->fetch_colum('DESCRIBE ' . $table_name, 0);
     $table_fields_type = $db->fetch_colum('DESCRIBE ' . $table_name, 1);
     $table_fields = array_combine($table_fields, $table_fields_type);
     $ready_update_str_arr = array();
     foreach ($table_fields as $key => $type) {
         if (isset($data[$key])) {
             $ready_update_str_arr[] = '`' . $key . '`=' . self::quotevalue($db, $data[$key], $type);
         }
     }
     if (count($ready_update_str_arr) > 0) {
         $update_str = implode(',', $ready_update_str_arr);
         $sql = 'UPDATE ' . $table_name . ' SET ' . $update_str;
         if (strlen($whereClause) > 0) {
             $sql .= ' WHERE ' . $whereClause;
         } else {
             logger::warning('全表更新被拦截' . $sql);
             return '';
         }
         return $sql;
     } else {
         return '';
     }
 }
Пример #23
0
 /**
  * Given a paymillTransaction response, as an array, prform desired operations
  *
  * @param array             $autWS
  * @param PagosonlineMethod $paymentMethod Payment method
  *
  * @return PagosonlineManager Self object
  *
  * @throws PaymentException
  */
 private function processTransaction($autWS, PagosonlineMethod $paymentMethod)
 {
     /**
      * Payment paid done
      *
      * Paid process has ended ( No matters result )
      */
     $this->paymentEventDispatcher->notifyPaymentOrderDone($this->paymentBridge, $paymentMethod);
     $this->logger->addInfo($paymentMethod->getPaymentName() . 'processTransaction', get_object_vars($autWS));
     /**
      * if pagosonline return code 15 o 9994 the order status is pending
      */
     if (in_array($autWS->codigoRespuesta, array('15', '9994'))) {
         //payment is still pending nothing to do
     } elseif ($autWS->codigoRespuesta == 1) {
         $this->paymentEventDispatcher->notifyPaymentOrderSuccess($this->paymentBridge, $paymentMethod);
     } else {
         $this->paymentEventDispatcher->notifyPaymentOrderFail($this->paymentBridge, $paymentMethod);
         throw new PaymentException();
     }
     /**
      * Log the response of gateway
      */
     return $this;
 }
Пример #24
0
 public function command_sync_user()
 {
     //kernel::console_output = false;
     $http = kernel::single('base_httpclient');
     $response = $http->get(app::get('suitclient')->getConf('syncuser'));
     if ($response) {
         $server_users = json_decode($response);
         $model = app::get('pam')->model('account');
         $result = $model->getList('login_name', array('account_type' => 'shopadmin'));
         $client_user = array();
         foreach ($result as $value) {
             $client_user[] = $value['login_name'];
         }
         $model2 = app::get('desktop')->model('users');
         foreach ($server_users as $server_user) {
             if (!in_array($server_user, $client_user)) {
                 $user = array('name' => $server_user, 'status' => 1, 'super' => 0, 'disabled' => false, 'pam_account' => array('login_name' => $server_user, 'login_password' => md5(time() . rand()), 'account_type' => 'shopadmin'), 'roles' => array(array('role_id' => 1)));
                 $model2->save($user);
             }
         }
         logger::info('同步成功');
         logger::info('ok.');
         //不加 "ok."则会弹提示信息并不能自动关闭@lujy
     } else {
         logger::info('同步失败或套件里没有用户');
         logger::info('ok.');
     }
     exit;
 }
Пример #25
0
 /**
  *
  * Return logger instance or create new instance
  *
  * @return object (PDO)
  *
  * @access public
  *
  */
 public static function getInstance()
 {
     if (!self::$instance) {
         self::$instance = new logger();
     }
     return self::$instance;
 }
Пример #26
0
 private function cronInit()
 {
     foreach (extension::getInstance()->getAllParams() as $ext_type => $ext_data) {
         foreach ($ext_data as $ext_item) {
             if ($ext_item['enabled'] == 1) {
                 $ext_file = root . '/extensions/' . $ext_type . '/' . $ext_item['dir'] . '/cron.php';
                 if (file_exists($ext_file)) {
                     @(require_once $ext_file);
                     $cname = 'cron_' . $ext_item['dir'];
                     if (class_exists($cname)) {
                         $link = new $cname();
                         if (method_exists($link, 'getInstance') && method_exists($link, 'make')) {
                             $link::getInstance()->make();
                         } else {
                             logger::getInstance()->log(logger::LEVEL_WARN, 'Method getInstance() or make() not founded in cron ' . $ext_file);
                         }
                     } else {
                         logger::getInstance()->log(logger::LEVEL_WARN, 'Class ' . $cname . ' not founded in cron ' . $ext_file);
                     }
                 }
             }
         }
     }
     return null;
 }
Пример #27
0
 function exception(Exception $e)
 {
     logger::emerg("Unhandled exception: (%s) %s in %s:%d", get_class($e), $e->getMessage(), str_replace(BASE_PATH, '', $e->getFile()), $e->getLine());
     Console::debugEx(0, get_class($e), "Unhandled exception: (%s) %s in %s:%d", get_class($e), $e->getMessage(), str_replace(BASE_PATH, '', $e->getFile()), $e->getLine());
     $f = file($e->getFile());
     foreach ($f as $i => $line) {
         $mark = $i + 1 == $e->getLine() ? '=> ' : '   ';
         $f[$i] = sprintf('  %05d. %s', $i + 1, $mark) . $f[$i];
         $f[$i] = str_replace("\n", "", $f[$i]);
     }
     $first = $e->getLine() - 4;
     if ($first < 0) {
         $first = 0;
     }
     $last = $e->getLine() + 3;
     if ($last >= count($f)) {
         $last = count($f) - 1;
     }
     $source = join("\n", array_slice($f, $first, $last - $first));
     Console::debugEx(0, get_class($e), Console::backtrace(0, $e->getTrace(), true));
     Console::debugEx(LOG_LOG, "Exception", "Source dump of %s:\n%s", str_replace(BASE_PATH, '', $e->getFile()), $source);
     $rv = 1;
     logger::emerg("Exiting with return code %d after exception.", $rv);
     Console::debugEx(LOG_BASIC, __CLASS__, "Exiting with return code %d after exception.", $rv);
 }
Пример #28
0
 /**
  * 获得jsapi_ticket  应该全局存储与更新
  * @return string
  */
 private function getJsApiTicket($bind_id)
 {
     if (base_kvstore::instance('weixin')->fetch('basic_jsapi_ticket_' . $bind_id, $jsapi_ticket) !== false) {
         logger::info('kv获取jsapi_ticket' . $jsapi_ticket);
         return $jsapi_ticket;
     } else {
         $accessToken = kernel::single('weixin_wechat')->get_basic_accesstoken($bind_id);
         // 如果是企业号用以下 URL 获取 ticket
         // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
         $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token={$accessToken}";
         $httpclient = kernel::single('base_httpclient');
         $response = $httpclient->set_timeout(6)->get($url);
         $result = json_decode($response, true);
         $jsapi_ticket = $result['ticket'];
         if ($jsapi_ticket) {
             if (!base_kvstore::instance('weixin')->store('basic_jsapi_ticket_' . $bind_id, $jsapi_ticket, $result['expires_in'])) {
                 // 微信jsapi_ticket的有效期,单位为秒
                 logger::info("KVSTORE写入公众账号绑定id为: {$bind_id} 的jsapi_ticket错误");
             }
             logger::info('远程获取jsapi_ticket' . $jsapi_ticket);
             return $jsapi_ticket;
         } else {
             //todo : 错误提示
         }
     }
 }
Пример #29
0
 public function __construct($smarty, $basetpl = "", $pagetitle = "", $pagename = "")
 {
     $this->logger = logger::getRootlogger();
     if (defined('SESSION')) {
         $this->session = SESSION;
     } else {
         $this->logger->debug("Session is not defined");
     }
     if (defined('MODULE')) {
         $this->module = MODULE;
     } else {
         $this->logger->debug("Module is not defined");
     }
     if (defined('ACTION')) {
         $this->action = ACTION;
     } else {
         $this->logger->debug("Action is not defined");
     }
     $this->smarty = $smarty;
     $this->viewdata["pagetitle"] = $pagetitle;
     $this->viewdata["pagename"] = $pagename;
     if (strlen($basetpl) == 0) {
         $this->viewdata["basetpl"] = "index.tpl";
     } else {
         $this->viewdata["basetpl"] = $basetpl;
     }
 }
Пример #30
0
 function dispatch($query)
 {
     // 目录遍历漏洞过滤
     $this->check_get($_GET);
     $_GET['ctl'] = $_GET['ctl'] ? $_GET['ctl'] : 'default';
     $_GET['act'] = $_GET['act'] ? $_GET['act'] : 'index';
     $_GET['app'] = $_GET['app'] ? $_GET['app'] : 'desktop';
     logger::debug(sprintf('Desktop access: "app:%s ctl:%s, act:%s"', $_GET['app'], $_GET['ctl'], $_GET['act']));
     $query_args = $_GET['p'];
     $controller = app::get($_GET['app'])->controller($_GET['ctl']);
     $server = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
     if (app::get('desktop')->getConf('use_ssl') && $_SERVER['SERVER_PORT'] == '80') {
         header("Location:https://" . $server . ':443' . $_SERVER['REQUEST_URI']);
         exit;
     } elseif (!app::get('desktop')->getConf('use_ssl') && $_SERVER['SERVER_PORT'] == '443') {
         header("Location:http://" . $server . $_SERVER['REQUEST_URI']);
         exit;
     }
     $arrMethods = get_class_methods($controller);
     if (in_array($_GET['act'], $arrMethods)) {
         call_user_func_array(array(&$controller, $_GET['act']), (array) $query_args);
     } else {
         call_user_func_array(array(&$controller, 'index'), (array) $query_args);
     }
 }