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; }
/** * 删除模板 * @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; } }
/** * 得到当前站点的统计信息 */ 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; } } }
/** * 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; }
/** * 获得商品前台链接 * * @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; }
/** * 获取前台分类链接 * * @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; } }
/** * 配置站点的支付成功代码 */ 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; } } }
/** * 分配管理员站点 */ 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 = '管理员站点分组管理'; }
</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'];
/** * 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); }
/** * 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'); } } }
<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']; ?> </div> <div class="cell span-4 orderCell"><?php echo Mysite::instance($rs['site_id'])->get('name'); ?> </div> <div class="cell span-4"><?php echo $rs['cpn_prefix']; ?> </div> <div class="cell span-6"><?php if ($rs['cpn_type'] == 'A') { echo '多张使用一次'; } else { echo '一张重复使用'; } ?> </div> <div class="cell span-6"><?php
/** * 添加存储文件 * */ 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; }
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]; }
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; }
/** * 更新商品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; }
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; } } }
/** * 退货单导出 */ 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; } } }
/** * 批量更新分类的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; }
/** * 用于提交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); }
/** * 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; }
/** * 订单支付成功邮件 * @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; } }
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; } } }
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; }
/** * get site type */ public static function type() { $site = Mysite::instance(self::id())->get(); return $site['type']; }
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; } } }
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); }
/** * 对网站联盟订单的查询处理 * */ 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; } } }