Example #1
0
 public function index()
 {
     /* 初始化默认查询条件 */
     $newsletter_query_struct = array('where' => array('user_id' => 0), 'like' => array(), 'orderby' => array(), 'limit' => array('per_page' => 20, 'offset' => 0));
     /* 权限检查 得到所有可管理站点ID列表 */
     $site_id_list = role::check('newsletter');
     /* Newsletter列表模板 */
     $this->template->content = new View("user/newsletter");
     /* 搜索功能 */
     $search_arr = array('email', 'ip');
     $search_value = $this->input->get('search_value');
     $search_type = $this->input->get('search_type');
     $where_view = array();
     if ($search_arr) {
         foreach ($search_arr as $value) {
             if ($search_type == $value && strlen($search_value) > 0) {
                 $newsletter_query_struct['where'][$value] = $search_value;
                 if ($value == 'ip') {
                     $newsletter_query_struct['where'][$value] = tool::myip2long($search_value);
                 }
             }
         }
         $where_view['search_type'] = $search_type;
         $where_view['search_value'] = $search_value;
     }
     //当前切入的站点查询条件
     $site_in = site::current_query_site_ids();
     $where_view['site_id'] = '';
     $newsletter_query_struct['where']['site_id'] = $site_in;
     /* 列表排序 */
     $orderby_arr = array(0 => array('id' => 'DESC'), 1 => array('id' => 'ASC'), 2 => array('site_id' => 'ASC'), 3 => array('site_id' => 'DESC'), 4 => array('email' => 'ASC'), 5 => array('email' => 'DESC'), 6 => array('date_add' => 'ASC'), 7 => array('date_add' => 'DESC'), 8 => array('ip' => 'ASC'), 9 => array('ip' => 'DESC'), 10 => array('active' => 'ASC'), 11 => array('active' => 'DESC'));
     $orderby = controller_tool::orderby($orderby_arr);
     $newsletter_query_struct['orderby'] = $orderby;
     /* 每页显示条数 */
     $per_page = controller_tool::per_page();
     $newsletter_query_struct['limit']['per_page'] = $per_page;
     /* 调用分页 */
     $this->pagination = new Pagination(array('total_items' => Mynewsletter::instance()->query_count($newsletter_query_struct), 'items_per_page' => $per_page));
     $newsletter_query_struct['limit']['offset'] = $this->pagination->sql_offset;
     $newsletters = Mynewsletter::instance()->query_assoc($newsletter_query_struct);
     foreach ($newsletters as $key => $value) {
         $site = Mysite::instance($value['site_id'])->get();
         $newsletters[$key]['site'] = $site;
     }
     /* 调用列表 */
     $this->template->content->newsletter_list = $newsletters;
     /* 搜索信息保存 */
     $this->template->content->where = $where_view;
 }
Example #2
0
 /**
  * 删除模板
  * @param int $id
  */
 public function delete($id = 0)
 {
     $id = $id ? $id : $this->data['id'];
     $theme = ORM::factory('theme', $id);
     if ($theme->loaded) {
         $site = Mysite::instance()->get();
         if (isset($site['theme_id']) && $site['theme_id'] == $id) {
             return false;
         }
         $this->clear_theme($theme->id);
         $theme->delete();
         return true;
     } else {
         return false;
     }
 }
Example #3
0
 /**
  * 得到当前站点的统计信息
  */
 public function statking()
 {
     // 初始化返回数据
     $return_data = array();
     //请求结构体
     $request_data = array();
     try {
         $site_detail = Mysite::instance()->detail();
         $statking_id = $site_detail['statking_id'];
         $statking_main = statking::get_main_detail($statking_id);
         //0.7s
         $statking_str = statistics::get_statkings($statking_id);
         //0.8s
         $this->template = new View('template_blank');
         $this->template->content = new View("site/statistics_statking");
         $this->template->content->statking_str = $statking_str;
         $this->template->content->statking_main = $statking_main;
         $html = $this->template->render();
         $data = array();
         $data['statking_str'] = $statking_str;
         $data['statking_main'] = $statking_main;
         $return_data['count_ip'] = $statking_main['site']['all_count_ip'];
         $return_data['html'] = $html;
         exit(json_encode($return_data));
     } catch (MyRuntimeException $ex) {
         $return_struct['status'] = 0;
         $return_struct['code'] = $ex->getCode();
         $return_struct['msg'] = $ex->getMessage();
         //TODO 异常处理
         //throw $ex;
         if ($this->is_ajax_request()) {
             $this->template = new View('layout/empty_html');
             $this->template->content = $return_struct['msg'];
         } else {
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             /* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             /* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
     }
 }
Example #4
0
 /**
  * get carrier_range data
  *
  * @param Array $where
  * @param Array $orderby
  * @param Int $limit
  * @param Int $offset
  * @param Int $in
  * @return Array
  */
 private function _data($where = NULL, $in = NULL, $orderby = NULL, $limit = 0, $offset = 100)
 {
     $list = array();
     $orm = ORM::factory('carrier_range');
     if (!empty($where)) {
         $orm->where($where);
     }
     if (!empty($in)) {
         $orm->in('site_id', $in);
     }
     if (!empty($orderby)) {
         $orm->orderby($orderby);
     }
     $orm_list = $orm->find_all($limit, $offset);
     $list = array();
     foreach ($orm_list as $key => $rs) {
         $list[$key] = $rs->as_array();
         $list[$key]['site'] = Mysite::instance($rs->site_id)->get();
     }
     return $list;
 }
Example #5
0
 /**
  * 获得商品前台链接
  *
  * @param 	int 	商品id
  * @param 	String 	商品链接
  */
 public static function permalink($product)
 {
     static $routes = array();
     static $categorys = array();
     if (!is_array($product)) {
         $product = ProductService::get_instance()->get($product);
     }
     $routes = Myroute::instance()->get();
     $domain = Mysite::instance()->get('domain');
     $route_type = $routes['type'];
     $product_suffix = $routes['product_suffix'];
     $product_route = $routes['product'];
     if ($route_type == 2 or $route_type == 3) {
         if (!isset($categorys[$product['category_id']])) {
             $categorys[$product['category_id']] = CategoryService::get_instance()->get($product['category_id']);
         }
     }
     $permalink = '';
     $product['uri_name'] = isset($product['uri_name']) ? $product['uri_name'] : $product['id'];
     switch ($route_type) {
         case 0:
             //$permalink = $product_route.'/'.$product['id'].$product_suffix;
             $permalink = $product_route . $product['id'];
             break;
         case 1:
             $permalink = $product_route . '/' . urlencode($product['uri_name']) . $product_suffix;
             break;
         case 2:
             $permalink = urlencode($categorys[$product['category_id']]['uri_name']) . '/' . urlencode($product['uri_name']) . $product_suffix;
             break;
         case 3:
             $permalink = urlencode($categorys[$product['category_id']]['uri_name']) . '/' . urlencode($product['uri_name']) . $product_suffix;
             break;
         case 4:
             $permalink = $product_route . '/' . urlencode($product['uri_name']) . $product_suffix;
             break;
     }
     return Kohana::config('config.front_protocol') . $domain . '/' . $permalink;
 }
Example #6
0
 /**
  * 获取前台分类链接
  *
  * @param 	int id 分类id
  * @return 	string 分类链接
  */
 public static function permalink($id, $absolute = true)
 {
     $category_service = CategoryService::get_instance();
     $category = $category_service->get($id);
     $route = Myroute::instance()->get();
     $route_type = $route['type'];
     $category_route = $route['category'];
     $category_suffix = $route['category_suffix'];
     $domain = Mysite::instance()->get('domain');
     if ($route_type == 0) {
         // 0: none  get category and product with id
         $category_permalink = $category_route . '/' . $category['id'];
     }
     if ($route_type == 1) {
         // 1: get  product with {product}/permalink
         $category_permalink = $category_route . '/' . urlencode($category['uri_name']);
     }
     if ($route_type == 2 || $route_type == 4) {
         // 2: get category and product with {category_permalink}  and {category+permalink}/{product_permalink}
         $category_permalink = urlencode($category['uri_name']);
     }
     if ($route_type == 3) {
         // 3: get category and prdouct with {category_permalink1}/.../{category_permalinkn} and {category_permalink1}/.../{category_permalinkn}/{product_permalink}
         $parents = $category_service->get_parents_by_category_id($id);
         $category_permalink = '';
         foreach ($parents as $category) {
             if ($category == end($parents)) {
                 $category_permalink .= urlencode($category['uri_name']);
             } else {
                 $category_permalink .= urlencode($category['uri_name']) . '/';
             }
         }
     }
     if ($absolute) {
         return 'http://' . $domain . '/' . $category_permalink . $category_suffix;
     } else {
         return $category_permalink . $category_suffix;
     }
 }
Example #7
0
 /**
  * 配置站点的支付成功代码
  */
 public function pay_code()
 {
     // 初始化返回数据
     $return_data = array();
     //请求结构体
     $request_data = array();
     try {
         /* 管理员才能进行代码更新操作 */
         if ($this->manager_is_admin == 1) {
             $site = Mysite::instance($this->site_id)->get();
             $site_detail = Mysite::instance($this->site_id)->detail();
             //无站点ID非法操作
             if (!$site['id']) {
                 throw new MyRuntimeException(Kohana::lang('o_global.access_denied'), 401);
             }
             //更新pay_code信息
             if ($_POST) {
                 $pay_code = $this->input->post('pay_code');
                 if (empty($pay_code)) {
                     throw new MyRuntimeException(Kohana::lang('o_site.site_config_payment_success_cannot_submit'), 402);
                 }
                 //更新站点robots信息
                 $data = array();
                 $data['pay_code'] = $pay_code;
                 if (Mysite_detail::instance()->update_by_site_id($this->site_id, $data)) {
                     remind::set(Kohana::lang('o_global.update_success'), 'site/config/pay_code', 'success');
                 } else {
                     remind::set(Kohana::lang('o_global.update_error'), 'site/config/pay_code');
                 }
             }
             $pay_code = isset($site_detail['pay_code']) ? $site_detail['pay_code'] : '';
             $this->template->content = new View("site/pay_code");
             $this->template->content->pay_code = $pay_code;
         } else {
             throw new MyRuntimeException(Kohana::lang('o_global.access_denied'), 403);
         }
     } catch (MyRuntimeException $ex) {
         $return_struct['status'] = 0;
         $return_struct['code'] = $ex->getCode();
         $return_struct['msg'] = $ex->getMessage();
         //TODO 异常处理
         //throw $ex;
         if ($this->is_ajax_request()) {
             $this->template = new View('layout/empty_html');
             $this->template->content = $return_struct['msg'];
         } else {
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             /* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             /* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
     }
 }
Example #8
0
 /**
  * 分配管理员站点
  */
 public function site($id)
 {
     //zhu add
     $this->_check_manager($id);
     if ($_POST) {
         $manager = Mymanager::instance($id)->get();
         $target_select = $this->input->post('target_select');
         if ($manager['site_num'] < count($target_select)) {
             remind::set(Kohana::lang('o_manage.self_account') . $manager['site_num'] . Kohana::lang('o_manage.num_site'), 'manage/manager/site/' . $id);
         }
         if (!$target_select) {
             remind::set(Kohana::lang('o_manage.select_site'), 'manage/manager/site/' . $id);
         }
         if (Mymanager::instance()->set_sites($id, $_POST)) {
             remind::set(Kohana::lang('o_global.add_success'), 'manage/manager', 'success');
         } else {
             remind::set(Kohana::lang('o_global.add_error'), 'manage/manager/site/' . $id);
         }
     }
     /* 得到当前所有的站点类型 */
     $site_types = Mysite_type::instance()->site_types();
     /* 验证是超级管理员就列出所有站点 */
     if (role::is_root($this->manager_name)) {
         $sites = Mysite::instance()->get_sites();
     } else {
         /* 超级管理员外自己不能调整自己的站点 */
         if ($this->manager_id == $id) {
             remind::set(Kohana::lang('o_manage.self_can_not_set_self_site'), 'manage/manager');
         }
         $sites = Mymanager::instance($this->manager_id)->sites();
     }
     $target_sites = Mymanager::instance($id)->sites();
     $optional_sites = tool::my_array_diff($sites, $target_sites);
     $this->template->content = new View("manage/assign_site");
     $this->template->content->sites = $optional_sites;
     $this->template->content->site_types = $site_types;
     $this->template->content->target_sites = $target_sites;
     $this->template->content->access_url = url::base() . 'manage/site/ajax_search_site';
     $this->template->content->title = '管理员站点分组管理';
 }
Example #9
0
</head>
<body>    
<div class="topnav">
  <div class="sitenav">
    <div class="welcome">您好, <span class="username"><?php 
if (!empty($manager['name'])) {
    echo $manager['name'];
}
?>
</span> 欢迎进入后台管理系统</div>
    <div class="sitelink">  
    	<a href="/manage/manager/change_password" target="mcMainFrame">修改密码</a> | 
    	<a href="/login/logout" target="_parent">安全退出</a>     
        <!-- a target="mcMainFrame" title="点击刷新视图窗口" href="javascript:location.reload()" class="reload">刷新内容</a>
     	<a href="http://<?php 
echo Mysite::instance()->get('domain');
?>
" target="_blank">网站前台</a-->
    </div>
  </div>
  <div class="leftnav">
		<ul>
			<li class="navleft"></li>
        <?php 
foreach ($nodes as $row) {
    ?>
            <eq><li><A id="<?php 
    echo $row['target'];
    ?>
" href="javascript:parent.mcMenuFrame.show_menu('<?php 
    echo $row['target'];
Example #10
0
 /**
  * get task id by id
  *
  * @param int $site_id
  * @return int
  */
 public static function get_task_id()
 {
     $site = Mysite::instance()->get();
     $domain = $site['domain'];
     return self::get_task_id_by_domain($domain);
 }
Example #11
0
 /**
  * SEO信息编辑操作
  */
 public function do_edit()
 {
     //收集请求
     $request_data = $this->input->post();
     //* 权限验证 */
     $site_id = site::id();
     $site_id_list = role::check('seo_manage', 0, 0);
     if (empty($site_id_list)) {
         remind::set('access denied', request::referrer(), 'error');
     }
     //检测输入的域名是否与操作的域名一致
     $site_name = Mysite::instance($site_id)->get('domain');
     if ($request_data['site_domain'] != $site_name) {
         remind::set('输入的域名与操作的站点有误', request::referrer(), 'error');
     }
     // 验证 - 数据有效性
     $seo_manages = Myseo_manage::instance($request_data['id'])->get();
     if (!$seo_manages['id']) {
         remind::set('无效SEO信息,请重试', request::referrer(), 'error');
     }
     // 权限验证
     if ($site_id != $seo_manages['site_id'] || !in_array($seo_manages['site_id'], $site_id_list)) {
         remind::set('access denied', request::referrer(), 'error');
     }
     //执行添加
     if ($_POST) {
         $set_data = array('parent_id' => $request_data['parent_id'], 'site_id' => $seo_manages['site_id'], 'site_domain' => $request_data['site_domain'], 'meta_title' => $request_data['meta_title'], 'meta_keywords' => $request_data['meta_keywords'], 'meta_description' => $request_data['meta_description'], 'update_timestamp' => time());
         if (!empty($request_data['is_contain_child'])) {
             $set_data['is_contain_child'] = $request_data['is_contain_child'];
         } else {
             $set_data['is_contain_child'] = 0;
         }
         if (Myseo_manage::instance($seo_manages['id'])->update($set_data)) {
             Myseo_manage::instance()->update_seo_manage_by_site_id($site_id);
             remind::set('编辑 SEO信息成功', 'product/seo_manage', 'success');
         } else {
             remind::set('编辑 SEO信息 失败', request::referrer(), 'error');
         }
     }
 }
Example #12
0
<a href="<?php 
            echo url::base();
            ?>
promotion/coupon/download?id=<?php 
            echo $rs['id'];
            ?>
">下载</a><?php 
        }
        ?>
                    		</div>
                			<div class="span-6 fB"><?php 
        echo $rs['cpn_name'];
        ?>
&nbsp;</div>
                			<div class="cell span-4 orderCell"><?php 
        echo Mysite::instance($rs['site_id'])->get('name');
        ?>
&nbsp;</div>
                			<div class="cell span-4"><?php 
        echo $rs['cpn_prefix'];
        ?>
&nbsp;</div>  
                			<div class="cell span-6"><?php 
        if ($rs['cpn_type'] == 'A') {
            echo '多张使用一次';
        } else {
            echo '一张重复使用';
        }
        ?>
&nbsp;</div>
                			<div class="cell span-6"><?php 
Example #13
0
 /**
  * 添加存储文件
  *
  */
 public function add_attach($file_meta)
 {
     $site_id = $file_meta['site_id'];
     $site = Mysite::instance($site_id)->get();
     $site_domain = $site['domain'];
     //'www.2.opococ.com';
     $timestamp_current = time();
     $src_ip_address = Input::instance()->ip_address();
     // 需要提效数据
     $attach_meta = array('siteId' => $site_id, 'siteDomain' => $site_domain);
     $attachment_data_original = array('filePostfix' => $file_meta['type'], 'fileMimeType' => $file_meta['mime'], 'fileSize' => $file_meta['size'], 'fileName' => $file_meta['name'], 'srcIp' => $src_ip_address, 'attachMeta' => json_encode($attach_meta), 'createTimestamp' => $timestamp_current, 'modifyTimestamp' => $timestamp_current);
     require_once Kohana::find_file('vendor', 'phprpc/phprpc_client', TRUE);
     $attachmentService = new PHPRPC_Client(Kohana::config('phprpc.remote.Attachment.host'));
     $phprpcApiKey = Kohana::config('phprpc.remote.Attachment.apiKey');
     // 调用后端添加附件信息,并调用存储服务存储文件
     $args_org = array($attachment_data_original);
     $sign_org = md5(json_encode($args_org) . $phprpcApiKey);
     $attachment_original_id = $attachmentService->phprpc_addAttachmentFileData($attachment_data_original, @file_get_contents($file_meta['tmpfile']), $sign_org);
     return $attachment_original_id;
 }
Example #14
0
 protected function get_site_name($site_id)
 {
     if (!isset($this->site_names[$site_id])) {
         $site_name = Mysite::instance($site_id)->get('name');
         if ($site_name === NULL) {
             throw new MyRuntimeException(sprintf('未找到 ID 为 "%s" 的站点', $site_id));
         }
         $this->site_names[$site_id] = $site_name;
     }
     return $this->site_names[$site_id];
 }
Example #15
0
 public static function parse($current_uri)
 {
     $current_uri = trim($current_uri);
     if (empty($current_uri)) {
         return FALSE;
     }
     $site_id = Mysite::instance()->id();
     // 尝试解析 doc
     $doc_uris = Mydoc::get_uris($site_id);
     if (isset($doc_uris[$current_uri])) {
         return '/doc/view/' . $current_uri;
     }
     $route_type = Myroute::instance()->type();
     $category_suffix = Myroute::instance()->get_action('category_suffix');
     $category_key = Myroute::instance()->get_action('category');
     $categorys = CategoryService::get_instance()->get_uri_name();
     // 尝试解析 category
     $arguments = explode('/', $current_uri);
     switch ($route_type) {
         case 0:
             // www.example.com/category/1.html/page/2
             if ($arguments[0] === $category_key and isset($arguments[1])) {
                 if (!empty($category_suffix)) {
                     $arguments[1] = substr($arguments[1], 0, strlen($arguments[1]) - strlen($category_suffix));
                 }
                 if (preg_match('/^\\d+$/', $arguments[1])) {
                     $result = 'category/index/' . $arguments[1];
                     for ($i = 2; isset($arguments[$i]); $i++) {
                         $result .= '/' . $arguments[$i];
                     }
                     return $result;
                 }
             }
             break;
         case 1:
             // www.example.com/category/xxxxx.html/page/2
             if ($arguments[0] === $category_key and isset($arguments[1])) {
                 if (!empty($category_suffix)) {
                     $arguments[1] = substr($arguments[1], 0, strlen($arguments[1]) - strlen($category_suffix));
                 }
                 if (isset($categorys[$arguments[1]])) {
                     $result = 'category/index/' . $arguments[1];
                     for ($i = 2; isset($arguments[$i]); $i++) {
                         $result .= '/' . $arguments[$i];
                     }
                     return $result;
                 }
             }
             break;
         case 2:
             // www.example.com/xxxxx.html/page/2
             if (count($arguments) == 1 or count($arguments) > 2) {
                 if (!empty($category_suffix)) {
                     $arguments[0] = substr($arguments[0], 0, strlen($arguments[0]) - strlen($category_suffix));
                 }
                 if (isset($categorys[$arguments[0]])) {
                     $result = 'category/index/' . $arguments[0];
                     for ($i = 1; isset($arguments[$i]); $i++) {
                         $result .= '/' . $arguments[$i];
                     }
                     return $result;
                 }
             }
             break;
         case 3:
             // www.example.com/xxxxx/ooooo.html/page/2
             for ($i = 0; isset($arguments[$i]); $i++) {
                 if (!isset($categorys[$arguments[$i]])) {
                     break;
                 }
             }
             if ($i == 0) {
                 break;
             }
             if (empty($category_suffix)) {
                 $i--;
             }
             $count = count($arguments) - $i;
             if ($count == 1 or $count > 2) {
                 if (!empty($category_suffix)) {
                     $arguments[$i] = substr($arguments[$i], 0, strlen($arguments[$i]) - strlen($category_suffix));
                 }
                 $result = 'category/index/' . $arguments[$i];
                 for ($i = $i + 1; isset($arguments[$i]); $i++) {
                     $result .= '/' . $arguments[$i];
                 }
                 return $result;
             }
             break;
         case 4:
             // www.example.com/xxxxx.html/page/2
             if (count($arguments) == 1 or count($arguments) > 2) {
                 if (!empty($category_suffix)) {
                     $arguments[0] = substr($arguments[0], 0, strlen($arguments[0]) - strlen($category_suffix));
                 }
                 if (isset($categorys[$arguments[0]])) {
                     $result = 'category/index/' . $arguments[0];
                     for ($i = 1; isset($arguments[$i]); $i++) {
                         $result .= '/' . $arguments[$i];
                     }
                     return $result;
                 }
             }
             break;
     }
     $product_suffix = Myroute::instance()->get_action('product_suffix');
     $product_key = Myroute::instance()->get_action('product');
     // 尝试解析  product
     $arguments = explode('/', $current_uri);
     switch ($route_type) {
         case 0:
             // www.example.com/product/220.html
             if ($arguments[0] === $product_key and isset($arguments[1])) {
                 if (!empty($product_suffix)) {
                     $arguments[1] = substr($arguments[1], 0, strlen($arguments[1]) - strlen($product_suffix));
                 }
                 if (preg_match('/^\\d+$/', $arguments[1])) {
                     return 'product/get/' . $arguments[1];
                 }
             }
             break;
         case 1:
             // www.example.com/product/yyyyy.html
             if ($arguments[0] === $product_key and isset($arguments[1])) {
                 if (!empty($product_suffix)) {
                     $arguments[1] = substr($arguments[1], 0, strlen($arguments[1]) - strlen($product_suffix));
                 }
                 return 'product/get/' . $arguments[1];
             }
             break;
         case 2:
             // www.example.com/xxxxx/yyyyy.html
             if (isset($categorys[$arguments[0]]) and isset($arguments[1])) {
                 if (!empty($product_suffix)) {
                     $arguments[1] = substr($arguments[1], 0, strlen($arguments[1]) - strlen($product_suffix));
                 }
                 return 'product/get/' . $arguments[1];
             }
             break;
         case 3:
             // www.example.com/xxxxx/ooooo/yyyyy.html
             for ($i = 0; isset($arguments[$i]); $i++) {
                 if (!isset($categorys[$arguments[$i]])) {
                     break;
                 }
             }
             if ($i > 0 and isset($arguments[$i])) {
                 if (!empty($product_suffix)) {
                     $arguments[$i] = substr($arguments[$i], 0, strlen($arguments[$i]) - strlen($product_suffix));
                 }
                 return 'product/get/' . $arguments[$i];
             }
             break;
         case 4:
             // www.example.com/product/yyyyy.html
             if ($arguments[0] === $product_key and isset($arguments[1])) {
                 if (!empty($product_suffix)) {
                     $arguments[1] = substr($arguments[1], 0, strlen($arguments[1]) - strlen($product_suffix));
                 }
                 return 'product/get/' . $arguments[1];
             }
             break;
     }
     return FALSE;
 }
Example #16
0
 /**
  * 更新商品SEO信息
  */
 public function index()
 {
     $site = Mysite::instance()->get();
     if ($_POST) {
         // 收集请求数据
         $domain = $this->input->post('domain');
         $category_id = $this->input->post('category_id');
         $is_children = $this->input->post('is_children');
         $meta_title = $this->input->post('meta_title');
         $meta_keywords = $this->input->post('meta_keywords');
         $meta_description = $this->input->post('meta_description');
         if (empty($domain) || $domain != $site['domain']) {
             remind::set(Kohana::lang('o_site.seo_domain_cannot_null'), 'site/seo_manage', 'error');
         }
         //分类ID数组
         $category_ids = array();
         //分类ID和名称的对应关系
         $category_names = array();
         //分类id不为空
         if ($category_id > 0) {
             $category = CategoryService::get_instance()->get($category_id);
             //先处理选择分类的信息
             $result = Seo_manageService::get_instance()->get_by_category_id($category_id);
             $set_data = array('category_id' => $category_id, 'is_children' => $is_children, 'meta_title' => $meta_title, 'meta_keywords' => $meta_keywords, 'meta_description' => $meta_description);
             if (isset($result) && $result['id'] > 0) {
                 $set_data['update_timestamp'] = date('Y-m-d H:i:s', time());
                 Seo_manageService::get_instance()->set($result['id'], $set_data);
             } else {
                 Seo_manageService::get_instance()->add($set_data);
             }
             //包含子分类
             if ($is_children == Seo_manageService::SEO_CATEGORY_IS_CHILDREN) {
                 //得到分类下的子分类
                 $childrens = CategoryService::get_instance()->get_childrens_by_category_id($category_id);
                 foreach ($childrens as $key => $value) {
                     //记录更新过的分类ID
                     $category_ids[] = $value;
                     $category_child = CategoryService::get_instance()->get($value);
                     $category_names[$value] = $category_child['title'];
                     //查看分类信息已经存在的SEO信息
                     $result_child = Seo_manageService::get_instance()->get_by_category_id($value);
                     $set_data = array('category_id' => $value, 'is_children' => Seo_manageService::SEO_CATEGORY_IS_CHILDREN, 'meta_title' => $meta_title, 'meta_keywords' => $meta_keywords, 'meta_description' => $meta_description);
                     if (isset($result_child) && $result_child['id'] > 0) {
                         $set_data['update_timestamp'] = date('Y-m-d H:i:s', time());
                         Seo_manageService::get_instance()->set($result_child['id'], $set_data);
                     } else {
                         Seo_manageService::get_instance()->add($set_data);
                     }
                 }
                 $category_ids[] = $category_id;
                 $category_names[$category_id] = $category['title'];
                 // 初始化默认查询条件[商品表]
                 $reqeust_query_struct = array('where' => array('category_id' => $category_ids));
             } else {
                 $category_names[$category_id] = $category['title'];
                 $reqeust_query_struct = array('where' => array('category_id' => $category_id));
             }
         } else {
             //没有选择分类,默认更新全部分类
             $result = Seo_manageService::get_instance()->get_by_category_id(Seo_manageService::SEO_CATEGORY_IS_NULL);
             $set_data = array('is_children' => Seo_manageService::SEO_CATEGORY_IS_CHILDREN, 'meta_title' => $meta_title, 'meta_keywords' => $meta_keywords, 'meta_description' => $meta_description);
             if (isset($result['id']) && $result['id'] > 0) {
                 $set_data['update_timestamp'] = date('Y-m-d H:i:s', time());
                 Seo_manageService::get_instance()->set($result['id'], $set_data);
             } else {
                 Seo_manageService::get_instance()->add($set_data);
             }
             //得到站点所有分类
             $categories = CategoryService::get_instance()->get_categories();
             foreach ($categories as $cate_key => $cate_value) {
                 if ($cate_value['id'] <= 0) {
                     continue;
                 }
                 $category_ids[] = $cate_value['id'];
                 $category_names[$cate_value['id']] = $cate_value['title'];
                 $result = Seo_manageService::get_instance()->get_by_category_id($cate_value['id']);
                 $set_data = array('category_id' => $cate_value['id'], 'is_children' => Seo_manageService::SEO_CATEGORY_IS_CHILDREN, 'meta_title' => $meta_title, 'meta_keywords' => $meta_keywords, 'meta_description' => $meta_description, 'update_timestamp' => date('Y-m-d H:i:s', time()));
                 if (isset($result['id']) && $result['id'] > 0) {
                     Seo_manageService::get_instance()->set($result['id'], $set_data);
                 } else {
                     $set_data['create_timestamp'] = date('Y-m-d H:i:s', time());
                     Seo_manageService::get_instance()->add($set_data);
                 }
             }
             $reqeust_query_struct = array('where' => array('category_id' => $category_ids));
         }
         //获得总数
         $count = ProductService::get_instance()->count($reqeust_query_struct);
         if ($count < 10000) {
             $products = ProductService::get_instance()->query_assoc($reqeust_query_struct);
             foreach ($products as $key => $value) {
                 $product_name = $value['title'];
                 $category_name = isset($category_names[$value['category_id']]) ? $category_names[$value['category_id']] : '';
                 $site_domain = $site['domain'];
                 $goods_price = isset($value['goods_price']) ? $value['goods_price'] : 0;
                 $title = str_replace('{product_name}', $product_name, $meta_title);
                 $keywords = str_replace('{product_name}', $product_name, $meta_keywords);
                 $description = str_replace('{product_name}', $product_name, $meta_description);
                 $title = str_replace('{category_name}', $category_name, $title);
                 $keywords = str_replace('{category_name}', $category_name, $keywords);
                 $description = str_replace('{category_name}', $category_name, $description);
                 $title = str_replace('{site_domain}', $site_domain, $title);
                 $keywords = str_replace('{site_domain}', $site_domain, $keywords);
                 $description = str_replace('{site_domain}', $site_domain, $description);
                 $title = str_replace('{price}', $goods_price, $title);
                 $keywords = str_replace('{price}', $goods_price, $keywords);
                 $description = str_replace('{price}', $goods_price, $description);
                 $data = array('meta_title' => $title, 'meta_keywords' => $keywords, 'meta_description' => $description);
                 Product_detailService::get_instance()->set_by_product_id($value['id'], $data);
             }
             remind::set(Kohana::lang('o_global.update_success'), 'site/seo_manage', 'success');
         } else {
             remind::set(Kohana::lang('o_site.product_request_check'), 'site/seo_manage');
         }
     }
     //没有选择分类,默认更新全部分类
     $data = Seo_manageService::get_instance()->get_by_category_id(Seo_manageService::SEO_CATEGORY_IS_NULL);
     // 分类列表默认关联第一个
     $categorys_tree = CategoryService::get_instance()->get_tree('<option value={$id} {$selected}>{$spacer}{$title}</option>');
     $this->template->content = new View("site/update_product_seo");
     $this->template->content->data = $data;
     $this->template->content->site = $site;
     $this->template->content->categorys_tree = $categorys_tree;
 }
Example #17
0
 public function index()
 {
     $return_struct = array('status' => 0, 'code' => 501, 'msg' => 'Not Implemented', 'content' => array());
     try {
         $request_data = $this->input->get();
         $site_ids = role::get_site_ids();
         if (empty($site_ids)) {
             throw new MyRuntimeException(Kohana::lang('o_global.access_denied'), 403);
         }
         $site_id = site::id();
         if ($site_id <= 0 && !in_array($site_id, $site_ids)) {
             throw new MyRuntimeException(Kohana::lang('o_global.select_site'), 400);
         }
         //获取站点的统计ID
         $site_detail = Mysite::instance($site_id)->detail();
         $statking_id = $site_detail['statking_id'];
         $site_name = Mysite::instance($site_id)->get('domain');
         //$statking_id = 100097;
         require_once Kohana::find_file('vendor', 'phprpc/phprpc_client', TRUE);
         $client = new PHPRPC_Client($this->phprpc_server);
         $date_today = date('Y-m-d');
         //今日数据
         $phprpc_statking_key = Kohana::config('phprpc.remote.statking.api_key');
         $args = array($statking_id, strtotime($date_today . $this->time_offset));
         $sign = md5(json_encode($args) . $phprpc_statking_key);
         $today = $client->get_data_pv_ip_by_time($statking_id, strtotime($date_today . $this->time_offset), $sign);
         //昨日数据
         $phprpc_statking_key = Kohana::config('phprpc.remote.statking.api_key');
         $args = array($statking_id, strtotime(date('Y-m-d', time() - 86400) . $this->time_offset));
         $sign = md5(json_encode($args) . $phprpc_statking_key);
         $yesterday = $client->get_data_pv_ip_by_time($statking_id, strtotime(date('Y-m-d', time() - 86400) . $this->time_offset), $sign);
         //24小时流量
         $now_hour = intval(date('H'));
         $hours = array();
         $ps1 = $ps2 = $ct = $chart_data = '';
         $pv_max = $ip_min = 0;
         for ($i = $now_hour + 1; $i <= 23; $i++) {
             $hours[]['h'] = $i;
             $hours[]['v'] = $yesterday['hours'][$i];
             $ct == '' ? $ct .= $i : ($ct .= ',' . $i);
             $ps1 == '' ? $ps1 .= $yesterday['hours'][$i]['pv'] : ($ps1 .= ',' . $yesterday['hours'][$i]['pv']);
             $ps2 == '' ? $ps2 .= $yesterday['hours'][$i]['ip_count'] : ($ps2 .= ',' . $yesterday['hours'][$i]['ip_count']);
             $chart_data .= "{$i};{$yesterday['hours'][$i]['pv']};{$yesterday['hours'][$i]['ip_count']}\n";
             if ($yesterday['hours'][$i]['pv'] > $pv_max) {
                 $pv_max = $yesterday['hours'][$i]['pv'];
             }
             $ip_min == 0 ? $ip_min = $yesterday['hours'][$i]['ip_count'] : '';
             if ($yesterday['hours'][$i]['ip_count'] < $ip_min) {
                 $ip_min = $yesterday['hours'][$i]['ip_count'];
             }
         }
         for ($i = 0; $i <= $now_hour; $i++) {
             $hours[]['h'] = $i;
             $hours[]['v'] = $today['hours'][$i];
             $ct == '' ? $ct .= $i : ($ct .= ',' . $i);
             $ps1 == '' ? $ps1 .= $today['hours'][$i]['pv'] : ($ps1 .= ',' . $today['hours'][$i]['pv']);
             $ps2 == '' ? $ps2 .= $today['hours'][$i]['ip_count'] : ($ps2 .= ',' . $today['hours'][$i]['ip_count']);
             $chart_data .= "{$i};{$today['hours'][$i]['pv']};{$today['hours'][$i]['ip_count']}\n";
             if ($today['hours'][$i]['pv'] > $pv_max) {
                 $pv_max = $today['hours'][$i]['pv'];
             }
             $ip_min == 0 ? $ip_min = $today['hours'][$i]['ip_count'] : '';
             if ($today['hours'][$i]['ip_count'] < $ip_min) {
                 $ip_min = $today['hours'][$i]['ip_count'];
             }
         }
         if ($pv_max == $ip_min) {
             $pv_max = $ip_min + 10;
         }
         $src1 = "/sitestat/chart?type=lc&w=800&h=300&ma={$pv_max}&mi={$ip_min}&r=10&t=pv-ip&ct={$ct}&sp=30&g=2&ps1={$ps1}&ps2={$ps2}&clr1=255,0,0&clr2=0,255,0";
         $src2 = "/sitestat/chart?type=bg&w=800&h=300&ma={$pv_max}&mi={$ip_min}&r=10&t=pv-ip&ct={$ct}&sp=30&g=2&ps1={$ps1}&ps2={$ps2}&clr1=255,0,0&clr2=0,255,0";
         $flash1 = "<embed width=\"800\" height=\"400\" flashvars=\"path=/amline/&settings_file=/amline/chart_settings/pv_ip.xml&chart_data={$chart_data}\" wmode=\"transparent\" quality=\"high\" bgcolor=\"#FFFFFF\" name=\"img_src1\" id=\"img_src1\" style=\"\" src=\"/amline/amline.swf\" type=\"application/x-shockwave-flash\">";
         $flash2 = "<embed width=\"800\" height=\"400\" flashvars=\"path=/amline/&settings_file=/amline/chart_settings/pv_ip.xml&chart_data={$chart_data}&preloader_color=#999999\" quality=\"high\" bgcolor=\"#FFFFFF\" name=\"img_src2\" id=\"img_src2\" style=\"display:none\" src=\"/amline/amcolumn.swf\" type=\"application/x-shockwave-flash\">";
         //站点概况
         $phprpc_statking_key = Kohana::config('phprpc.remote.statking.api_key');
         $args = array($statking_id);
         $sign = md5(json_encode($args) . $phprpc_statking_key);
         $overview = $client->get_data_pv_ip_by_one_site($statking_id, $sign);
         //来路域名
         $phprpc_statking_key = Kohana::config('phprpc.remote.statking.api_key');
         $args = array($statking_id, strtotime($date_today . $this->time_offset), strtotime($date_today . $this->time_offset));
         $sign = md5(json_encode($args) . $phprpc_statking_key);
         $domains_all = $client->get_data_domain_by_time_range($statking_id, strtotime($date_today . $this->time_offset), strtotime($date_today . $this->time_offset), 0, 1, 10, $sign);
         $domains = $domains_all['data'];
         //受访页面
         $phprpc_statking_key = Kohana::config('phprpc.remote.statking.api_key');
         $args = array($statking_id, strtotime($date_today . $this->time_offset), strtotime($date_today . $this->time_offset));
         $sign = md5(json_encode($args) . $phprpc_statking_key);
         $pages_all = $client->get_data_page_by_time_range($statking_id, strtotime($date_today . $this->time_offset), strtotime($date_today . $this->time_offset), 0, 1, 10, $sign);
         $pages = $pages_all['data'];
         //地区分布
         $phprpc_statking_key = Kohana::config('phprpc.remote.statking.api_key');
         $args = array($statking_id, strtotime($date_today . $this->time_offset), strtotime($date_today . $this->time_offset));
         $sign = md5(json_encode($args) . $phprpc_statking_key);
         $areas_all = $client->get_data_country_by_time_range($statking_id, strtotime($date_today . $this->time_offset), strtotime($date_today . $this->time_offset), 0, 1, 10, $sign);
         $areas = $areas_all['data'];
         $ps = $pts = '';
         $chart_data = "[title];[value]\n";
         for ($i = 1; $i < count($areas); $i++) {
             $ps .= $ps == '' ? $areas[$i]['pv'] : ',' . $areas[$i]['pv'];
             $pts .= $pts == '' ? $areas[$i]['name'] : ',' . $areas[$i]['name'];
             $chart_data .= "{$areas[$i]['name']};{$areas[$i]['pv']}\n";
         }
         $chart_data = urlencode($chart_data);
         $src3 = "/sitestat/chart?type=pc&w=400&h=200&ps={$ps}&pts={$pts}";
         $flash3 = "<embed width=\"800\" height=\"400\" flashvars=\"path=/amline/&settings_file=/amline/chart_settings/pie.xml&chart_data={$chart_data}\" quality=\"high\" bgcolor=\"#FFFFFF\" name=\"amline\" id=\"amline\" style=\"\" src=\"/amline/ampie.swf\" type=\"application/x-shockwave-flash\">";
         $content = new View($this->package_name . '/' . $this->class_name . '/' . 'index');
         $this->template->content = $content;
         $this->template->content->site_name = $site_name;
         $this->template->content->sitestat_left = new View($this->package_name . '/sitestat_left');
         $this->template->content->sitestat_left->overview = 1;
         $this->template->content->today_pv_ip = $today['day'];
         $this->template->content->yesterday_pv_ip = $yesterday['day'];
         $this->template->content->average = $overview['average'];
         $this->template->content->highest = $overview['highest'];
         $this->template->content->total = $overview['total'];
         $this->template->content->src1 = $src1;
         $this->template->content->src2 = $src2;
         $this->template->content->src3 = $src3;
         $this->template->content->flash1 = $flash1;
         $this->template->content->flash2 = $flash2;
         $this->template->content->flash3 = $flash3;
         $this->template->content->domains = $domains;
         $this->template->content->pages = $pages;
     } catch (MyRuntimeException $ex) {
         $return_struct['status'] = 0;
         $return_struct['code'] = $ex->getCode();
         $return_struct['msg'] = $ex->getMessage();
         //TODO 异常处理
         //throw $ex;
         if ($this->is_ajax_request()) {
             $this->template->content = $return_struct;
         } else {
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
     }
 }
Example #18
0
 /**
  *  退货单导出
  */
 public function return_export()
 {
     // 初始化返回数据
     $return_data = array();
     //请求结构体
     $request_data = array();
     try {
         //权限验证
         role::check('order_doc_return');
         /* 验证是否选择了退货单 */
         if (!isset($_POST['return_ids'])) {
             throw new MyRuntimeException(Kohana::lang('o_order.select_return_export'), 403);
         }
         if ($_POST) {
             $return_ids = $this->input->post('return_ids');
             //array(1,2);
             /* 得到当前的导出配置 */
             $output_field_ids = array(26, 2, 22, 4, 5, 7, 23, 27, 13, 14, 15);
             /* 导出格式错误 */
             if (!is_array($output_field_ids) || count($output_field_ids) < 1) {
                 throw new MyRuntimeException(Kohana::lang('o_order.export_config_error'), 403);
             }
             $xls = doc_export::instance();
             //$xls->debug(true);//开测试模式
             $xls->set_output_field_ids($output_field_ids);
             $ship_status = Kohana::config('order.ship_status');
             $result = array();
             foreach ($return_ids as $return_id) {
                 $return = array();
                 $return_info = Myorder_return_log::instance($return_id)->get();
                 $return['id'] = $return_info['id'];
                 //退货单id
                 $return['return_num'] = $return_info['return_num'];
                 //退货单号
                 $return['order_num'] = Myorder::instance($return_info['order_id'])->get('order_num');
                 //订单号
                 $return['site_domain'] = Mysite::instance()->get('domain');
                 //站点名称
                 $return['carrier'] = DeliveryService::get_instance()->get_delivery_name($return_info['carrier_id']);
                 $return['email'] = $return_info['email'];
                 //用户邮箱
                 $return['manager'] = Mymanager::instance($return_info['manager_id'])->get('username');
                 //操作员
                 $return['currency'] = $return_info['currency'];
                 //币种
                 $return['total_shipping'] = $return_info['total_shipping'];
                 //运费金额
                 $return['return_status'] = $ship_status[$return_info['return_status_id']]['name'];
                 //退货状态
                 $return['content_admin'] = $return_info['content_admin'];
                 //管理员备注
                 $return['content_user'] = $return_info['content_user'];
                 //用户备注
                 $return['date_add'] = $return_info['date_add'];
                 //添加时间
                 $xls->set_order_line($return);
             }
             $xls->output();
             exit;
         }
     } catch (MyRuntimeException $ex) {
         $return_struct['status'] = 0;
         $return_struct['code'] = $ex->getCode();
         $return_struct['msg'] = $ex->getMessage();
         if ($this->is_ajax_request()) {
             $this->template = new View('layout/empty_html');
             $this->template->content = $return_struct['msg'];
         } else {
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             /* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             /* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
     }
 }
Example #19
0
 /**
  * 批量更新分类的name_url
  */
 public function update_category_name_url()
 {
     $site = Mysite::instance($this->site_id)->get();
     if ($_POST) {
         $domain = $this->input->post('domain');
         if (empty($domain) || $domain != $site['domain']) {
             remind::set(Kohana::lang('o_global.input_error'), 'site/update/update_category_name_url');
         }
         $query_struct = array('where' => array('site_id' => $this->site_id), 'like' => array(), 'orderby' => array('id' => 'DESC'), 'limit' => array('per_page' => 20, 'offset' => 0));
         $category_count = Mycategory::instance()->count($query_struct);
         $category_names = array();
         //1000个商品以下直接读取所有的商品
         if ($category_count < 1000) {
             $query_struct['limit']['per_page'] = $category_count;
             $categorys = Mycategory::instance()->lists($query_struct);
             $category_name = array();
             foreach ($categorys as $key => $value) {
                 $category_name = $value['name'];
                 //判断是否为中文的商品
                 if (preg_match('/[\\x7f-\\xff]/', $category_name)) {
                     continue;
                 }
                 $category_name_url = strtolower(product::generate_name_url($category_name));
                 //过滤重复的NAME URL
                 $name_url_exist = Mycategory::instance()->check_name_url($category_name_url, $this->site_id, $value['id']);
                 $perfix = 1;
                 while ($name_url_exist) {
                     $category_name_url = $category_name_url . '-' . $perfix;
                     $name_url_exist = Mycategory::instance()->check_name_url($category_name_url, $this->site_id, $value['id']);
                     $perfix++;
                 }
                 $data = array();
                 $data['name_url'] = $category_name_url;
                 if (!Mycategory::instance($value['id'])->edit($data)) {
                     $category_names[] = $value['name'];
                 }
             }
         } else {
             remind::set(Kohana::lang('o_site.product_request_check'), 'site/update/update_category_name_url');
         }
         if (count($category_names) > 0) {
             $category_name_str = '';
             foreach ($category_names as $key => $value) {
                 $category_name_str = $value . '|';
             }
             remind::set(Kohana::lang('o_site.name_update_error') . $category_name_str, 'site/update/update_category_name_url');
         } else {
             remind::set(Kohana::lang('o_site.name_update_success'), 'site/update/update_category_name_url', 'success');
         }
     }
     $this->template->content = new View("site/update_category_name_url");
     $this->template->content->site = $site;
 }
Example #20
0
 /**
  * 用于提交emailafriend时给自己发送邮件
  * @param $email   自己的邮件地址
  * @param $title_param   标题变量
  * @param $content_param 内容变量
  */
 public static function email_to_me($email, $title_param, $content_param)
 {
     $site_id = Mysite::instance()->id();
     //判断是否生成打折号并取得打折号的折扣信息
     $config = Mycoupon::instance()->is_generate_discount_num('email_to_me');
     if (!empty($config)) {
         $discount_info = Mycoupon::instance()->get_discount_number($config);
     }
     //设置打折信息
     $param_data = array();
     if (!empty($discount_info)) {
         $param_data = array('{discount_num}' => $discount_info['discount_num'], '{expiration_date}' => $discount_info['expiration_date'], '{discount_value}' => $discount_info['discount_value']);
     }
     //判断取得的模板类型
     $mail_type = 'email_to_me';
     if (empty($param_data)) {
         $mail_type = 'email_to_meNoDiscountNumber';
     }
     $content_param = array_merge($content_param, $param_data);
     //发送邮件
     $from_mail = '';
     $to_mail = $email;
     self::send_mail(1, $mail_type, $to_mail, $from_mail, $title_param, $content_param);
 }
Example #21
0
 /**
  * get user_log data
  *
  * @param Array $query_struct
  * @param Array $orderby
  * @param Int $limit
  * @param Int $offset
  * @return Array
  */
 private function _data($query_struct = array(), $orderby = NULL, $limit = 1000, $offset = 0)
 {
     $list = array();
     $where = array();
     $like = array();
     $in = array();
     $user_log = ORM::factory('user_log');
     //WHERE
     if (count($query_struct) > 0) {
         if (isset($query_struct['where'])) {
             foreach ($query_struct['where'] as $key => $value) {
                 $where[$key] = $value;
             }
         }
     }
     //LIKE
     if (count($query_struct) > 0) {
         if (isset($query_struct['like'])) {
             foreach ($query_struct['like'] as $key => $value) {
                 $like[$key] = $value;
             }
         }
     }
     //IN
     if (count($query_struct) > 0) {
         if (isset($query_struct['in'])) {
             foreach ($query_struct['in'] as $key => $value) {
                 $in[$key] = $value;
             }
         }
     }
     //WHERE
     if (count($where) > 0) {
         $user_log->where($where);
     }
     //LIKE
     if (count($like) > 0) {
         $user_log->like($like);
     }
     //IN
     if (count($in) > 0) {
         foreach ($in as $key => $value) {
             $user_log->in($key, $value);
         }
     }
     if (!empty($orderby)) {
         $user_log->orderby($orderby);
     }
     $orm_list = $user_log->find_all($limit, $offset);
     //var_dump($orm_list);exit;
     foreach ($orm_list as $item) {
         $merge_arr['site_name'] = Mysite::instance()->get('name');
         $merge_arr['manager_name'] = Mymanager::instance($item->manager_id)->get('name');
         $list[] = array_merge($item->as_array(), $merge_arr);
     }
     return $list;
 }
Example #22
0
 /**
  * 订单支付成功邮件
  * @param stiring $order_num
  */
 public static function payment_success($order_num = '')
 {
     if (!empty($order_num)) {
         $order = Myorder::instance()->get_by_order_num($order_num);
         if (is_array($order) && $order['id'] > 0) {
             $mail_type = 'order_payment';
             $to_email = $order['email'];
             $from_email = '';
             $param = array('{firstname}' => $order['shipping_firstname'], '{lastname}' => $order['shipping_lastname'], '{order_num}' => $order['order_num'], '{amount}' => $order['total_real'], '{currency}' => $order['currency'], '{shipping_firstname}' => $order['shipping_firstname'], '{shipping_lastname}' => $order['shipping_lastname'], '{shipping_address}' => $order['shipping_address'], '{shipping_city}' => $order['shipping_city'], '{shipping_state}' => $order['shipping_state'], '{shipping_country}' => $order['shipping_country'], '{shipping_zip}' => $order['shipping_zip'], '{shipping_phone}' => $order['shipping_phone'], '{shipping_mobile}' => $order['shipping_mobile']);
             $domain = Mysite::instance()->get('domain');
             $param['{order_view_link}'] = 'http://' . $domain . '/order/order_detail/' . $order_num;
             $title_param = $param;
             $content_param = $param;
             self::send_mail($mail_type, $to_email, $from_email, $title_param, $content_param);
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
Example #23
0
 public function edit()
 {
     $return_struct = array('status' => 0, 'code' => 501, 'msg' => 'Not Implemented', 'content' => array());
     try {
         //* 初始化返回数据 */
         $return_data = array();
         //* 收集请求数据 ==根据业务逻辑定制== */
         $request_data = $this->input->get();
         //* 权限验证 */
         $site_id = site::id();
         if ($site_id == 0) {
             throw new MyRuntimeException(Kohana::lang('o_global.select_site'), 400);
         }
         role::check('inquiry_subject', $site_id, 0);
         //数据验证
         $inquieysubject_service = InquirysubjectService::get_instance();
         if (!isset($request_data['id']) || !is_numeric($request_data['id'])) {
             throw new MyRuntimeException(Kohana::lang('o_global.input_error'), 404);
         }
         $inquieysubject = $inquieysubject_service->get($request_data['id']);
         if ($inquieysubject['site_id'] != $site_id) {
             throw new MyRuntimeException(Kohana::lang('o_global.access_denied'), 403);
         }
         //返回数据
         $return_data['data'] = $inquieysubject;
         //当前站点
         $site_name = Mysite::instance($inquieysubject['site_id'])->get('name');
         //* 补充&修改返回结构体 */
         $return_struct['status'] = 1;
         $return_struct['code'] = 200;
         $return_struct['msg'] = '';
         $return_struct['content'] = $return_data;
         //* 请求类型 */
         if ($this->is_ajax_request()) {
             // ajax 请求
             // json 输出
             $this->template->content = $return_struct;
         } else {
             // html 输出
             //* 模板输出 */
             $content = new View($this->package . '/' . $this->class_name . '/' . __FUNCTION__);
             //* 变量绑定 */
             $this->template->title = Kohana::config('site.name');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
             //:: 当前应用专用数据
             $this->template->content->site_name = $site_name;
         }
         // end of request type determine
     } catch (MyRuntimeException $ex) {
         $return_struct['status'] = 0;
         $return_struct['code'] = $ex->getCode();
         $return_struct['msg'] = $ex->getMessage();
         //TODO 异常处理
         //throw $ex;
         if ($this->is_ajax_request()) {
             $this->template->content = $return_struct;
         } else {
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
     }
 }
Example #24
0
 public function category_features()
 {
     // 初始化默认查询条件
     $request_struct_current = array('where' => array('site_id' => NULL), 'like' => array(), 'orderby' => array('id' => 'DESC'), 'limit' => array('per_page' => 20, 'offset' => 0));
     // 收集请求数据
     $request_data = $this->input->get();
     $category_id = $request_data['id'];
     // 验证 - 数据有效性
     $category = Mycategory::instance($category_id)->get();
     if (!$category['id']) {
         remind::set(Kohana::lang('o_global.access_denied'), request::referrer(), 'error');
     }
     /* b2c类型的站点列表 */
     $site_id_list = role::check('product_virtual_category', 0, 0);
     // 权限验证
     if (empty($site_id_list)) {
         remind::set(Kohana::lang('o_global.access_denied'), request::referrer(), 'error');
     }
     if (!in_array($category['site_id'], $site_id_list)) {
         remind::set(Kohana::lang('o_global.access_denied'), request::referrer(), 'error');
     }
     // 排序处理
     controller_tool::request_orderby($request_struct_current, $request_data);
     // 每页条目数
     controller_tool::request_per_page($request_struct_current, $request_data);
     // 站点查询
     $request_struct_current['where']['site_id'] = $category['site_id'];
     //当前查询
     $request_struct_current['where']['category_id'] = $category['id'];
     $count = Mycategory_feature::instance()->count($request_struct_current);
     // 模板输出 分页
     $this->pagination = new Pagination(array('total_items' => $count, 'items_per_page' => $request_struct_current['limit']['per_page']));
     $request_struct_current['limit']['offset'] = $this->pagination->sql_offset;
     $category_feature_list = Mycategory_feature::instance()->lists($request_struct_current);
     foreach ($category_feature_list as $key => $rs) {
         $category_feature_list[$key]['site'] = Mysite::instance($rs['site_id'])->get();
         if ($rs['type'] == 1) {
             $category_feature_list[$key]['type'] = '规格';
             $category_feature_list[$key]['group_id'] = Myattribute_group::instance($rs['group_id'])->get('name');
             $category_feature_list[$key]['value_id'] = Myattribute::instance($rs['value_id'])->get('name');
         }
         if ($rs['type'] == 2) {
             $category_feature_list[$key]['type'] = '附加属性';
             $category_feature_list[$key]['group_id'] = Myfeature_group::instance($rs['group_id'])->get('name');
             $category_feature_list[$key]['value_id'] = Myfeature::instance($rs['value_id'])->get('name');
         }
     }
     // 模板输出
     $this->template->content = new View("product/virtualcategory_features");
     // 变量绑定
     $this->template->content->category_feature_list = $category_feature_list;
     $this->template->content->count = $count;
     // 当前应用专用数据
     $this->template->content->data = $category;
 }
Example #25
0
 /**
  * get site type
  */
 public static function type()
 {
     $site = Mysite::instance(self::id())->get();
     return $site['type'];
 }
Example #26
0
 public function build()
 {
     $return_struct = array('status' => 0, 'code' => 501, 'msg' => 'Not Implemented', 'content' => array());
     try {
         //$profiler = new Profiler;
         //* 初始化返回数据 */
         $return_data = array();
         //* 收集请求数据 ==根据业务逻辑定制== */
         $request_data = $this->input->post();
         //* 实现功能后屏蔽此异常抛出 */
         //throw new MyRuntimeException('Not Implemented',501);
         //权限验证
         if ($this->site_id == 0) {
             throw new MyRuntimeException(Kohana::lang('o_global.select_site'), 400);
         }
         role::check('default', $this->site_id, 0);
         // 调用底层服务
         $sitemap_service = SitemapService::get_instance();
         //业务逻辑
         $xmlContent = '';
         $xmlContent .= '<?xml version="1.0" encoding="UTF-8"?>';
         $xmlContent .= '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
         //添加首页
         if (!empty($request_data['index']) && is_numeric($request_data['index'])) {
             $priority = number_format($request_data['index'], 1);
         } else {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404);
         }
         $site_domain = Mysite::instance($this->site_id)->get('domain');
         $xmlContent .= sitemap::Render('http://' . $site_domain, 0, 'always', $priority);
         //添加分类页面
         $categories = $sitemap_service->get_category_page_by_site_id($this->site_id);
         if (!empty($request_data['category']) && is_numeric($request_data['category'])) {
             $priority = number_format($request_data['category'], 1);
         } else {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404);
         }
         if (!empty($categories)) {
             foreach ($categories as $category) {
                 if (empty($request_data['exclude_category']) || !empty($request_data['exclude_category']) && !in_array($category['id'], $request_data['exclude_category'])) {
                     $xmlContent .= sitemap::Render(category::permalink($category['id']), 0, 'weekly', $priority);
                 }
             }
         }
         //添加商品页面
         if (!empty($request_data['product']) && is_numeric($request_data['product'])) {
             $priority = number_format($request_data['product'], 1);
         } else {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404);
         }
         if (isset($request_data['on_sale'])) {
             $on_sale = intval($request_data['on_sale']);
         } else {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404);
         }
         $products = $sitemap_service->get_product_page_by_site_id($this->site_id, $on_sale);
         if (!empty($request_data['exclude_product'])) {
             if (preg_match('/^([a-zA-Z0-9_]+,)*[a-zA-Z0-9_]+$/i', $request_data['exclude_product'])) {
                 $request_data['exclude_product'] = explode(',', $request_data['exclude_product']);
             } else {
                 throw new MyRuntimeException(Kohana::lang('o_site.product_id_format_check'), 404);
             }
         }
         if (!empty($products)) {
             foreach ($products as $product) {
                 if (empty($request_data['exclude_product'])) {
                     $xmlContent .= sitemap::Render(product::permalink($product['id']), $product['update_timestamp'], 'weekly', $priority);
                 } elseif (!empty($request_data['exclude_product']) && !in_array($product['sku'], $request_data['exclude_product'])) {
                     $xmlContent .= sitemap::Render(product::permalink($product['id']), $product['update_timestamp'], 'weekly', $priority);
                 }
             }
         }
         //添加促销页
         if (!empty($request_data['promotion']) && is_numeric($request_data['promotion'])) {
             $priority = number_format($request_data['promotion'], 1);
         } else {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404);
         }
         $promotions = $sitemap_service->get_promotion_page_by_site_id($this->site_id);
         if (!empty($promotions)) {
             $route = Myroute::instance()->get();
             $action = $route['promotion'];
             foreach ($promotions as $promotion) {
                 $xmlContent .= sitemap::Render('http://' . $site_domain . '/' . $action . '/' . $promotion['id'], time(), 'weekly', $priority);
             }
         }
         //添加文案页
         if (!empty($request_data['doc']) && is_numeric($request_data['doc'])) {
             $priority = number_format($request_data['doc'], 1);
         } else {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404);
         }
         $docs = $sitemap_service->get_doc_page_by_site_id($this->site_id);
         if (!empty($docs)) {
             foreach ($docs as $doc) {
                 $lastmod = strtotime($doc['updated']);
                 $xmlContent .= sitemap::Render('http://' . $site_domain . '/' . $doc['permalink'], $lastmod, 'weekly', $priority);
             }
         }
         $xmlContent .= '</urlset>';
         $data['sitemap'] = $xmlContent;
         if (!Mysite_detail::instance()->update_by_site_id($this->site_id, $data)) {
             throw new MyRuntimeException(Kohana::lang('o_site.sitemap_error_handle'), 500);
         }
         //* 补充&修改返回结构体 */
         $return_struct['status'] = 1;
         $return_struct['code'] = 200;
         $return_struct['msg'] = '操作成功';
         $return_struct['content'] = $return_data;
         $return_struct['action'] = array('type' => 'location', 'url' => url::base() . 'site/sitemap');
         //* 请求类型 */
         if ($this->is_ajax_request()) {
             // ajax 请求
             // json 输出
             $this->template->content = $return_struct;
         } else {
             // html 输出
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
         // end of request type determine
     } catch (MyRuntimeException $ex) {
         $return_struct['status'] = 0;
         $return_struct['code'] = $ex->getCode();
         $return_struct['msg'] = $ex->getMessage();
         //TODO 异常处理
         //throw $ex;
         if ($this->is_ajax_request()) {
             $this->template->content = $return_struct;
         } else {
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
     }
 }
Example #27
0
 private function get_statking_id_site_name()
 {
     $site_detail = Mysite::instance($this->site_id)->detail();
     $statking_id = $site_detail['statking_id'];
     $site_name = Mysite::instance($this->site_id)->get('domain');
     //$statking_id = 100097;
     return array('statking_id' => $statking_id, 'site_name' => $site_name);
 }
Example #28
0
 /**
  * 对网站联盟订单的查询处理
  *
  */
 public function select()
 {
     $site_id_list = role::check('affiliate');
     $return_struct = array('status' => 0, 'code' => 501, 'msg' => 'Not Implemented', 'content' => array());
     try {
         //* 初始化返回数据 */
         $return_data = array('assoc' => NULL, 'count' => 0);
         //* 收集请求数据 ==根据业务逻辑定制== */
         $request_data = $this->input->get();
         $site_ids = role::get_site_ids();
         if (empty($site_ids)) {
             throw new MyRuntimeException(Kohana::lang('o_global.access_denied'), 403);
         }
         $in_site_id = site::id();
         if (isset($request_data['site_id']) and $request_data['site_id'] === '0') {
             unset($request_data['site_id']);
         }
         if (isset($request_data['site_id']) and !in_array($request_data['site_id'], $site_ids)) {
             throw new MyRuntimeException(Kohana::lang('o_global.access_denied'), 403);
         }
         if ($in_site_id > 0) {
             $query_site_id = $in_site_id;
         } else {
             $query_site_id = $site_ids;
             //throw new MyRuntimeException(Kohana::lang('o_global.select_site'), 400);
         }
         $site_name = Mysite::instance($this->site_id)->get('domain');
         //页数
         $page = isset($request_data['page']) && intval($request_data['page']) >= 1 ? intval($request_data['page']) : 1;
         //联盟id
         $affiliate_id = isset($request_data['affiliate_id']) && intval($request_data['affiliate_id']) >= 1 ? intval($request_data['affiliate_id']) : 0;
         //起始时间
         $time_f = isset($request_data['time_f']) ? $request_data['time_f'] : date('Y-m-d', time() - 86400 * 365 * 5);
         $time_f = $time_f == '' ? date('Y-m-d', time() - 86400 * 365 * 5) : $time_f;
         //结束时间
         $time_t = isset($request_data['time_t']) ? $request_data['time_t'] : date('Y-m-d');
         $time_t = $time_t == '' ? date('Y-m-d') : $time_t;
         //获取联盟的订单
         $where = array('site_id' => $query_site_id, 'order_time >' => date('Y-m-d H:i:s', strtotime($time_f . ' 00:00:00')), 'order_time <' => date('Y-m-d H:i:s', strtotime($time_t . ' 23:59:59')));
         if ($affiliate_id > 0) {
             $where['affiliate_id'] = $affiliate_id;
         }
         $query_struct = array('where' => $where, 'limit' => array('page' => $page, 'per_page' => 20));
         $orders = Affiliate_orderService::get_instance()->index($query_struct);
         $orders_count = Affiliate_orderService::get_instance()->count($query_struct);
         $this->pagination = new Pagination(array('total_items' => $orders_count, 'items_per_page' => 20));
         $affiliates = AffiliateService::get_instance()->index(array('where' => array('mark' => 1)));
         for ($i = 0; $i < count($affiliates); $i++) {
             if ($affiliates[$i]['id'] == $affiliate_id) {
                 $affiliates[$i]['selected'] = 1;
             } else {
                 $affiliates[$i]['selected'] = 0;
             }
         }
         $content = new View($this->package_name . '/' . $this->class_name . '/' . __FUNCTION__);
         $this->template->content = $content;
         $this->template->content->site_name = $site_name;
         $this->template->content->orders = $orders;
         $this->template->content->pagination = $this->pagination;
         $this->template->content->time_f = $time_f;
         $this->template->content->time_t = $time_t;
         $this->template->content->affiliates = $affiliates;
     } catch (MyRuntimeException $ex) {
         $return_struct['status'] = 0;
         $return_struct['code'] = $ex->getCode();
         $return_struct['msg'] = $ex->getMessage();
         //TODO 异常处理
         //throw $ex;
         if ($this->is_ajax_request()) {
             $this->template->content = $return_struct;
         } else {
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
     }
 }