public function index()
 {
     $by = isset($_GET['by']) ? trim($_GET['by']) : '';
     $p = isset($_GET['p']) ? intval($_GET['p']) : 1;
     $below_ids = getSubRoleId(false);
     $below_ids = empty($below_ids) ? -1 : $below_ids;
     $d_v_leads = D('LeadsView');
     $outdays = M('config')->where('name="leads_outdays"')->getField('value');
     $outdate = empty($outdays) ? time() : time() - 86400 * $outdays;
     $where = array();
     $params = array();
     $order = "create_time desc";
     $where['have_time'] = array('egt', $outdate);
     if ($_GET['desc_order']) {
         $order = trim($_GET['desc_order']) . ' desc';
     } elseif ($_GET['asc_order']) {
         $order = trim($_GET['asc_order']) . ' asc';
     }
     switch ($by) {
         case 'today':
             $where['nextstep_time'] = array(array('lt', strtotime(date('Y-m-d', time())) + 86400), array('gt', 0), 'and');
             break;
         case 'week':
             $where['nextstep_time'] = array(array('lt', strtotime(date('Y-m-d', time())) + (date('N', time()) - 1) * 86400), array('gt', 0), 'and');
             break;
         case 'month':
             $where['nextstep_time'] = array(array('lt', strtotime(date('Y-m-01', strtotime('+1 month')))), array('gt', 0), 'and');
             break;
         case 'd7':
             $where['update_time'] = array('lt', strtotime(date('Y-m-d', time())) - 86400 * 6);
             break;
         case 'd15':
             $where['update_time'] = array('lt', strtotime(date('Y-m-d', time())) - 86400 * 14);
             break;
         case 'd30':
             $where['update_time'] = array('lt', strtotime(date('Y-m-d', time())) - 86400 * 29);
             break;
         case 'add':
             $order = 'create_time desc';
             break;
         case 'update':
             $order = 'update_time desc';
             break;
         case 'sub':
             $where['owner_role_id'] = array('in', implode(',', $below_ids));
             break;
         case 'subcreate':
             $where['creator_role_id'] = array('in', implode(',', $below_ids));
             break;
         case 'public':
             unset($where['have_time']);
             $where['_string'] = "leads.owner_role_id=0 or leads.have_time < {$outdate}";
             break;
         case 'deleted':
             $where['is_deleted'] = 1;
             unset($where['have_time']);
             break;
         case 'transformed':
             $where['is_transformed'] = 1;
             break;
         case 'me':
             $where['owner_role_id'] = session('role_id');
             break;
         default:
             $where['owner_role_id'] = array('in', implode(',', getSubRoleId()));
             break;
     }
     if ($by != 'deleted') {
         $where['is_deleted'] = array('neq', 1);
     }
     if ($by != 'transformed') {
         $where['is_transformed'] = array('neq', 1);
     }
     if (!isset($where['owner_role_id'])) {
         if (!isset($where['_string'])) {
             $where['owner_role_id'] = array('in', implode(',', getSubRoleId(true)));
         } else {
             $where['owner_role_id'] = array('in', '0,' . implode(',', getSubRoleId(true)));
         }
     }
     if ($_REQUEST["field"]) {
         if (trim($_REQUEST['field']) == "all") {
             $field = is_numeric(trim($_REQUEST['search'])) ? 'name|owner_role_id|company|position|saltname|phone|mobile|email|qq|fax|website|source|status|industry|state|zip_code|city|state|description|annual_revenue|no_of_employees|' : 'name|owner_role_id|company|position|saltname|phone|mobile|email|qq|fax|website|source|status|industry|state|zip_code|city|state|description';
         } else {
             $field = trim($_REQUEST['field']);
         }
         $field_date = M('Fields')->where('is_main=1 and (model="" or model="leads") and form_type="datetime"')->select();
         foreach ($field_date as $v) {
             if ($field == $v['field']) {
                 $search = is_numeric($search) ? $search : strtotime($search);
             }
         }
         if ($this->_request('state')) {
             $search = $this->_request('state');
             if ($this->_request('city')) {
                 $search .= chr(10) . $this->_request('city');
             }
             if ($search) {
                 $search .= chr(10) . trim($_REQUEST['search']);
             }
         }
         $search = empty($_REQUEST['search']) ? '' : trim($_REQUEST['search']);
         $condition = empty($_REQUEST['condition']) ? 'is' : trim($_REQUEST['condition']);
         if ('create_time' == $field || 'update_time' == $field) {
             $search = is_numeric($search) ? $search : strtotime($search);
         }
         switch ($condition) {
             case "is":
                 $where[$field] = array('eq', $search);
                 break;
             case "isnot":
                 $where[$field] = array('neq', $search);
                 break;
             case "contains":
                 $where[$field] = array('like', '%' . $search . '%');
                 break;
             case "not_contain":
                 $where[$field] = array('notlike', '%' . $search . '%');
                 break;
             case "start_with":
                 $where[$field] = array('like', $search . '%');
                 break;
             case "end_with":
                 $where[$field] = array('like', '%' . $search);
                 break;
             case "is_empty":
                 $where[$field] = array('eq', '');
                 break;
             case "is_not_empty":
                 $where[$field] = array('neq', '');
                 break;
             case "gt":
                 $where[$field] = array('gt', $search);
                 break;
             case "egt":
                 $where[$field] = array('egt', $search);
                 break;
             case "lt":
                 $where[$field] = array('lt', $search);
                 break;
             case "elt":
                 $where[$field] = array('elt', $search);
                 break;
             case "eq":
                 $where[$field] = array('eq', $search);
                 break;
             case "neq":
                 $where[$field] = array('neq', $search);
                 break;
             case "between":
                 $where[$field] = array('between', array($search - 1, $search + 86400));
                 break;
             case "nbetween":
                 $where[$field] = array('not between', array($search, $search + 86399));
                 break;
             case "tgt":
                 $where[$field] = array('gt', $search + 86400);
                 break;
             default:
                 $where[$field] = array('eq', $search);
         }
         $params = array('field=' . trim($_REQUEST['field']), 'condition=' . $condition, 'search=' . $_REQUEST["search"]);
     }
     if (trim($_GET['act'] == 'sms')) {
         $customer_list = $d_v_leads->where($where)->select();
         $contacts = array();
         foreach ($customer_list as $k => $v) {
             $contacts[] = array('name' => $v['contacts_name'], 'customer_name' => $v['name'], 'telephone' => trim($v['mobile']));
         }
         $this->contacts = $contacts;
         $this->alert = parseAlert();
         $this->display('Setting:sendsms');
     } elseif (trim($_GET['act']) == 'excel') {
         if (vali_permission('leads', 'export')) {
             $order = $order ? $order : 'create_time desc';
             $leadsList = $d_v_leads->where($where)->order($order)->select();
             $this->excelExport($leadsList);
         } else {
             alert('error', L('HAVE NOT PRIVILEGES'), $_SERVER['HTTP_REFERER']);
         }
     } else {
         $list = $d_v_leads->where($where)->page($p . ',15')->order($order)->select();
         $count = $d_v_leads->where($where)->count();
         import("@.ORG.Page");
         $Page = new Page($count, 15);
         if (!empty($_GET['by'])) {
             $params[] = 'by=' . trim($_GET['by']);
         }
         $this->parameter = implode('&', $params);
         if ($_GET['desc_order']) {
             $params[] = "desc_order=" . trim($_GET['desc_order']);
         } elseif ($_GET['asc_order']) {
             $params[] = "asc_order=" . trim($_GET['asc_order']);
         }
         $Page->parameter = implode('&', $params);
         $this->assign('page', $Page->show());
         if ($by == 'deleted') {
             foreach ($list as $k => $v) {
                 $list[$k]["delete_role"] = getUserByRoleId($v['delete_role_id']);
                 $list[$k]["owner"] = getUserByRoleId($v['owner_role_id']);
                 $list[$k]["creator"] = getUserByRoleId($v['creator_role_id']);
             }
         } elseif ($by == 'transformed') {
             foreach ($list as $k => $v) {
                 $list[$k]["owner"] = getUserByRoleId($v['owner_role_id']);
                 $list[$k]["creator"] = getUserByRoleId($v['creator_role_id']);
                 $list[$k]["transform_role"] = getUserByRoleId($v['transform_role_id']);
                 $list[$k]["business_name"] = M('business')->where('business_id = %d', $v['business_id'])->getField('name');
                 $list[$k]["contacts_name"] = M('contacts')->where('contacts_id = %d', $v['contacts_id'])->getField('name');
                 $list[$k]["customer_name"] = M('customer')->where('customer_id = %d', $v['customer_id'])->getField('name');
             }
         } else {
             foreach ($list as $k => $v) {
                 $days = 0;
                 $list[$k]["owner"] = D('RoleView')->where('role.role_id = %d', $v['owner_role_id'])->find();
                 $list[$k]["creator"] = D('RoleView')->where('role.role_id = %d', $v['creator_role_id'])->find();
                 $days = M('leads')->where('leads_id = %d', $v['leads_id'])->getField('have_time');
                 $list[$k]["days"] = $outdays - floor((time() - $days) / 86400);
             }
         }
         //get subordinate's and youself position list
         $d_role_view = D('RoleView');
         $this->role_list = $d_role_view->where('role.role_id in (%s)', implode(',', $below_ids))->select();
         $this->assign('leadslist', $list);
         $this->field_array = getIndexFields('leads');
         $this->field_list = getMainFields('leads');
         $this->alert = parseAlert();
         $this->display();
     }
 }
 public function index()
 {
     $d_contacts = D('ContactsView');
     $p = isset($_GET['p']) ? intval($_GET['p']) : 1;
     $by = isset($_GET['by']) ? trim($_GET['by']) : '';
     $below_ids = getSubRoleId(false);
     $all_ids = getSubRoleId();
     $where = array();
     $params = array();
     $order = "create_time desc";
     if ($_GET['desc_order']) {
         $order = trim($_GET['desc_order']) . ' desc';
     } elseif ($_GET['asc_order']) {
         $order = trim($_GET['asc_order']) . ' asc';
     }
     switch ($by) {
         case 'today':
             $where['create_time'] = array('gt', strtotime(date('Y-m-d', time())));
             break;
         case 'week':
             $where['create_time'] = array('gt', strtotime(date('Y-m-d', time())) - (date('N', time()) - 1) * 86400);
             break;
         case 'month':
             $where['create_time'] = array('gt', strtotime(date('Y-m-01', time())));
             break;
         case 'add':
             $order = 'create_time desc';
             break;
         case 'update':
             $order = 'update_time desc';
             break;
         case 'deleted':
             $where['is_deleted'] = 1;
             break;
         default:
             $where['owner_role_id'] = array('in', $all_ids);
             break;
     }
     if (!isset($where['owner_role_id'])) {
         $where['owner_role_id'] = array('in', $all_ids);
     }
     if (!isset($where['is_deleted'])) {
         $where['is_deleted'] = 0;
     }
     if ($_REQUEST["field"]) {
         $field = trim($_REQUEST['field']) == 'all' ? 'name|telephone|email|address|post|department|description' : $_REQUEST['field'];
         $search = empty($_REQUEST['search']) ? '' : trim($_REQUEST['search']);
         $condition = empty($_REQUEST['condition']) ? 'is' : trim($_REQUEST['condition']);
         if ('create_time' == $field || 'update_time' == $field) {
             $search = is_numeric($search) ? $search : strtotime($search);
         }
         switch ($condition) {
             case "is":
                 $where[$field] = array('eq', $search);
                 break;
             case "isnot":
                 $where[$field] = array('neq', $search);
                 break;
             case "contains":
                 $where[$field] = array('like', '%' . $search . '%');
                 break;
             case "not_contain":
                 $where[$field] = array('notlike', '%' . $search . '%');
                 break;
             case "start_with":
                 $where[$field] = array('like', $search . '%');
                 break;
             case "end_with":
                 $where[$field] = array('like', '%' . $search);
                 break;
             case "is_empty":
                 $where[$field] = array('eq', '');
                 break;
             case "is_not_empty":
                 $where[$field] = array('neq', '');
                 break;
             case "gt":
                 $where[$field] = array('gt', $search);
                 break;
             case "egt":
                 $where[$field] = array('egt', $search);
                 break;
             case "lt":
                 $where[$field] = array('lt', $search);
                 break;
             case "elt":
                 $where[$field] = array('elt', $search);
                 break;
             case "eq":
                 $where[$field] = array('eq', $search);
                 break;
             case "neq":
                 $where[$field] = array('neq', $search);
                 break;
             case "between":
                 $where[$field] = array('between', array($search - 1, $search + 86400));
                 break;
             case "nbetween":
                 $where[$field] = array('not between', array($search, $search + 86399));
                 break;
             case "tgt":
                 $where[$field] = array('gt', $search + 86400);
                 break;
             default:
                 $where[$field] = array('eq', $search);
         }
         $params = array('field=' . $field, 'condition=' . $condition, 'search=' . $_REQUEST["search"]);
     }
     if (trim($_GET['act']) == 'excel') {
         if (vali_permission('contacts', 'export')) {
             $order = $order ? $order : 'create_time desc';
             $contactsList = $d_contacts->where($where)->order($order)->select();
             $this->excelExport($contactsList);
         } else {
             alert('error', L('HAVE NOT PRIVILEGES'), $_SERVER['HTTP_REFERER']);
         }
     } else {
         $contactsList = $d_contacts->where($where)->order($order)->page($p . ',15')->select();
         $count = $d_contacts->where($where)->count();
         import("@.ORG.Page");
         $Page = new Page($count, 15);
         if (!empty($_GET['by'])) {
             $params[] = "by=" . trim($_GET['by']);
         }
         $this->parameter = implode('&', $params);
         if ($_GET['desc_order']) {
             $params[] = "desc_order=" . trim($_GET['desc_order']);
         } elseif ($_GET['asc_order']) {
             $params[] = "asc_order=" . trim($_GET['asc_order']);
         }
         $Page->parameter = implode('&', $params);
         $this->assign('page', $Page->show());
         if ($by == 'deleted') {
             foreach ($contactsList as $k => $v) {
                 $contactsList[$k]["delete_role"] = getUserByRoleId($v['delete_role_id']);
                 $contactsList[$k]["creator"] = getUserByRoleId($v['creator_role_id']);
             }
         } else {
             foreach ($contactsList as $k => $v) {
                 $contactsList[$k]["creator"] = getUserByRoleId($v['creator_role_id']);
             }
         }
         //获取下级和自己的岗位列表,搜索用
         $d_role_view = D('RoleView');
         $this->role_list = $d_role_view->where('role.role_id in (%s)', implode(',', $below_ids))->select();
         $this->assign('contactsList', $contactsList);
         $this->alert = parseAlert();
         $this->display();
     }
 }
 public function index()
 {
     $product = D('ProductView');
     // 实例化User对象
     import('@.ORG.Page');
     // 导入分页类
     $category = M('product_category');
     $where = array();
     $params = array();
     $idArray = array();
     if ($_GET['category_id']) {
         $categoryList = getSubCategory($_GET['category_id'], $category_list, '');
         foreach ($categoryList as $value) {
             $idArray[] = $value['category_id'];
         }
     }
     $idList = empty($idArray) ? $_GET['category_id'] : $_GET['category_id'] . ',' . implode(',', $idArray);
     $p = isset($_GET['p']) ? $_GET['p'] : 1;
     if ($_REQUEST["field"]) {
         if (trim($_REQUEST['field']) == "all") {
             $field = is_numeric(trim($_REQUEST['search'])) ? 'product.name|cost_price|sales_price|link|pre_sale_count|stock_count' : 'product.name|link|development_team';
         } else {
             $field = trim($_REQUEST['field']);
         }
         $search = empty($_REQUEST['search']) ? '' : trim($_REQUEST['search']);
         $condition = empty($_REQUEST['condition']) ? 'is' : trim($_REQUEST['condition']);
         $field_date = M('Fields')->where('(is_main=1 and model="product" and form_type="datetime") or(is_main=1 and model="" and form_type="datetime")')->select();
         foreach ($field_date as $v) {
             if ($field == $v['field']) {
                 $search = is_numeric($search) ? $search : strtotime($search);
             }
         }
         if ($this->_request('state')) {
             $search = $this->_request('state');
             if ($this->_request('city')) {
                 $search .= chr(10) . $this->_request('city');
             }
             if ($search) {
                 $search .= chr(10) . trim($_REQUEST['search']);
             }
         }
         if (!empty($field)) {
             switch ($condition) {
                 case "is":
                     $where[$field] = array('eq', $search);
                     break;
                 case "isnot":
                     $where[$field] = array('neq', $search);
                     break;
                 case "contains":
                     $where[$field] = array('like', '%' . $search . '%');
                     break;
                 case "not_contain":
                     $where[$field] = array('notlike', '%' . $search . '%');
                     break;
                 case "start_with":
                     $where[$field] = array('like', $search . '%');
                     break;
                 case "end_with":
                     $where[$field] = array('like', '%' . $search);
                     break;
                 case "is_empty":
                     $where[$field] = array('eq', '');
                     break;
                 case "is_not_empty":
                     $where[$field] = array('neq', '');
                     break;
                 case "gt":
                     $where[$field] = array('gt', $search);
                     break;
                 case "egt":
                     $where[$field] = array('egt', $search);
                     break;
                 case "lt":
                     $where[$field] = array('lt', $search);
                     break;
                 case "elt":
                     $where[$field] = array('elt', $search);
                     break;
                 case "eq":
                     $where[$field] = array('eq', $search);
                     break;
                 case "neq":
                     $where[$field] = array('neq', $search);
                     break;
                 case "between":
                     $where[$field] = array('between', array($search - 1, $search + 86400));
                     break;
                 case "nbetween":
                     $where[$field] = array('not between', array($search, $search + 86399));
                     break;
                 case "tgt":
                     $where[$field] = array('gt', $search + 86400);
                     break;
                 default:
                     $where[$field] = array('eq', $search);
             }
         }
         $params = array('field=' . trim($_REQUEST['field']), 'condition=' . $condition, 'search=' . $_REQUEST["search"]);
     }
     if ($_GET['category_id']) {
         $where['product.category_id'] = array('in', $idList);
         if (trim($_GET['act']) == 'excel') {
             if (vali_permission('product', 'export')) {
                 $productList = $product->order('product_id desc')->where($where)->select();
                 $this->excelExport($productList);
             } else {
                 alert('error', L('HAVE NOT PRIVILEGES'), $_SERVER['HTTP_REFERER']);
             }
         }
         $count = $product->where($where)->count();
         $list = $product->order('product_id desc')->where($where)->Page($p . ',15')->select();
     } else {
         if (trim($_GET['act']) == 'excel') {
             if (vali_permission('product', 'export')) {
                 $productList = $product->order('product_id desc')->where($where)->select();
                 $this->excelExport($productList);
             } else {
                 alert('error', L('HAVE NOT PRIVILEGES'), $_SERVER['HTTP_REFERER']);
             }
         }
         $count = $product->where($where)->count();
         // 查询满足要求的总记录数
         $list = $product->order('product_id desc')->where($where)->Page($p . ',15')->select();
     }
     $m_product_images = M('productImages');
     foreach ($list as $k => $v) {
         $list[$k]["creator"] = D('RoleView')->where('role.role_id = %d', $v['creator_role_id'])->find();
         $list[$k]['path'] = $m_product_images->where('product_id = %d and is_main = 1', $v['product_id'])->getField('path');
     }
     $Page = new Page($count, 15);
     // 实例化分页类 传入总记录数和每页显示的记录数
     if (!empty($_GET['category_id'])) {
         $params['category_id'] = 'category_id=' . trim($_GET['category_id']);
     }
     $Page->parameter = implode('&', $params);
     $show = $Page->show();
     // 分页显示输出
     //获取下级和自己的岗位列表,搜索用
     $category_list = $category->select();
     $this->categoryList = getSubCategory(0, $category_list, '');
     //类别选项
     $this->field_array = getIndexFields('product');
     $this->field_list = getMainFields('product');
     $this->assign('list', $list);
     // 赋值数据集
     $this->assign('page', $show);
     // 赋值分页输出
     $this->alert = parseAlert();
     $this->display();
     // 输出模板
 }
 /**
  *商机列表页(默认页面)
  *
  **/
 public function index()
 {
     $d_v_business = D('BusinessView');
     $below_ids = getSubRoleId(false);
     $p = isset($_GET['p']) ? intval($_GET['p']) : 1;
     $by = isset($_GET['by']) ? trim($_GET['by']) : '';
     $where = array();
     $params = array();
     $order = "create_time desc";
     if ($_GET['desc_order']) {
         $order = trim($_GET['desc_order']) . ' desc';
     } elseif ($_GET['asc_order']) {
         $order = trim($_GET['asc_order']) . ' asc';
     }
     switch ($by) {
         case 'create':
             $where['creator_role_id'] = session('role_id');
             break;
         case 'sub':
             $where['owner_role_id'] = array('in', implode(',', $below_ids));
             break;
         case 'subcreate':
             $where['creator_role_id'] = array('in', implode(',', $below_ids));
             break;
         case 'today':
             $where['nextstep_time'] = array(array('lt', strtotime(date('Y-m-d', time())) + 86400), array('gt', 0), 'and');
             break;
         case 'week':
             $where['nextstep_time'] = array(array('lt', strtotime(date('Y-m-d', time())) + (8 - date('N', time())) * 86400), array('gt', 0), 'and');
             break;
         case 'month':
             $where['nextstep_time'] = array(array('lt', strtotime(date('Y-m-01', strtotime('+1 month')))), array('gt', 0), 'and');
             break;
         case 'd7':
             $where['update_time'] = array('lt', strtotime(date('Y-m-d', time())) - 86400 * 6);
             break;
         case 'd15':
             $where['update_time'] = array('lt', strtotime(date('Y-m-d', time())) - 86400 * 14);
             break;
         case 'd30':
             $where['update_time'] = array('lt', strtotime(date('Y-m-d', time())) - 86400 * 29);
             break;
         case 'deleted':
             $where['is_deleted'] = 1;
             break;
         case 'add':
             $order = 'create_time desc';
             break;
         case 'update':
             $order = 'update_time desc';
             break;
         case 'me':
             $where['business.owner_role_id'] = session('role_id');
             break;
         default:
             $where['business.owner_role_id'] = array('in', implode(',', getSubRoleId()));
             break;
     }
     // if($by){
     // if($by != 'deleted') {
     // if(!$_REQUEST["field"] || ($_REQUEST["field"] != 'status_id' && $_REQUEST["field"])) $where['business.status_id'] = array(array('neq', 99), array('neq', 100), 'and');
     // }
     // }else{
     // if(!$_REQUEST["field"] || ($_REQUEST["field"] != 'status_id' && $_REQUEST["field"])) $where['business.status_id'] = array(array('neq', 99), array('neq', 100), 'and');
     // }
     if (!isset($where['is_deleted'])) {
         $where['business.is_deleted'] = 0;
     }
     if (!isset($where['business.owner_role_id'])) {
         $where['business.owner_role_id'] = array('in', implode(',', getSubRoleId()));
     }
     if ($_REQUEST["field"]) {
         if (trim($_REQUEST['field']) == "all") {
             $field = is_numeric(trim($_REQUEST['search'])) ? 'name|origin|type|description|estimate_price|gain_rate|gain_cycle|sales_price|product_amount|total_price|estimate_income' : 'name|origin|type|description';
         } else {
             $field = trim($_REQUEST['field']);
         }
         $search = empty($_REQUEST['search']) ? '' : trim($_REQUEST['search']);
         $condition = empty($_REQUEST['condition']) ? 'is' : trim($_REQUEST['condition']);
         $field_date = M('Fields')->where('(is_main=1 and model="" and form_type="datetime") or (is_main=1 and model="business" and form_type="datetime")')->select();
         foreach ($field_date as $v) {
             if ($field == $v['field']) {
                 $search = is_numeric($search) ? $search : strtotime($search);
             }
         }
         if ($this->_request('state')) {
             $search = $this->_request('state');
             if ($this->_request('city')) {
                 $search .= chr(10) . $this->_request('city');
             }
             if ($search) {
                 $search .= chr(10) . trim($_REQUEST['search']);
             }
         }
         switch ($condition) {
             case "is":
                 $where[$field] = array('eq', $search);
                 break;
             case "isnot":
                 $where[$field] = array('neq', $search);
                 break;
             case "contains":
                 $where[$field] = array('like', '%' . $search . '%');
                 break;
             case "not_contain":
                 $where[$field] = array('notlike', '%' . $search . '%');
                 break;
             case "start_with":
                 $where[$field] = array('like', $search . '%');
                 break;
             case "end_with":
                 $where[$field] = array('like', '%' . $search);
                 break;
             case "is_empty":
                 $where[$field] = array('eq', '');
                 break;
             case "is_not_empty":
                 $where[$field] = array('neq', '');
                 break;
             case "gt":
                 $where[$field] = array('gt', $search);
                 break;
             case "egt":
                 $where[$field] = array('egt', $search);
                 break;
             case "lt":
                 $where[$field] = array('lt', $search);
                 break;
             case "elt":
                 $where[$field] = array('elt', $search);
                 break;
             case "eq":
                 $where[$field] = array('eq', $search);
                 break;
             case "neq":
                 $where[$field] = array('neq', $search);
                 break;
             case "between":
                 $where[$field] = array('between', array($search - 1, $search + 86400));
                 break;
             case "nbetween":
                 $where[$field] = array('not between', array($search, $search + 86399));
                 break;
             case "tgt":
                 $where[$field] = array('gt', $search + 86400);
                 break;
             default:
                 $where[$field] = array('eq', $search);
         }
         if ($this->_request('state') || $this->_request('city')) {
             $params = array('field=' . trim($_REQUEST['field']), 'state=' . trim($_REQUEST['field']), 'city=' . trim($_REQUEST['field']), 'condition=' . $condition, 'search=' . $where);
         } else {
             $params = array('field=' . trim($_REQUEST['field']), 'condition=' . $condition, 'search=' . $search);
         }
     }
     $order = empty($order) ? 'business.update_time desc' : $order;
     if (trim($_GET['act']) == 'excel') {
         if (vali_permission('business', 'export')) {
             $businessList = $d_v_business->where($where)->order($order)->select();
             $this->excelExport($businessList);
         } else {
             alert('error', L('HAVE NOT PRIVILEGES'), $_SERVER['HTTP_REFERER']);
         }
     }
     $list = $d_v_business->where($where)->order($order)->page($p . ',15')->select();
     $count = $d_v_business->where($where)->count();
     import("@.ORG.Page");
     $Page = new Page($count, 15);
     if (!empty($_GET['by'])) {
         $params[] = "by=" . trim($_GET['by']);
     }
     $this->parameter = implode('&', $params);
     if ($_GET['desc_order']) {
         $params[] = "desc_order=" . trim($_GET['desc_order']);
     } elseif ($_GET['asc_order']) {
         $params[] = "asc_order=" . trim($_GET['asc_order']);
     }
     $Page->parameter = implode('&', $params);
     $this->assign('page', $Page->show());
     foreach ($list as $key => $value) {
         $list[$key]['owner'] = D('RoleView')->where('role.role_id = %d', $value['owner_role_id'])->find();
         $list[$key]['creator'] = D('RoleView')->where('role.role_id = %d', $value['creator_role_id'])->find();
         $list[$key]['customer_name'] = M('customer')->where('customer_id = %s', $value['customer_id'])->getField('name');
         $list[$key]['status_name'] = M('BusinessStatus')->where('status_id = %d', $value['status_id'])->getField('name');
         if ($by == 'deleted') {
             $list[$key]["delete_role"] = D('RoleView')->where('role.role_id = %d', $value['delete_role_id'])->find();
         }
     }
     $d_role_view = D('RoleView');
     $this->role_list = $d_role_view->where('role.role_id in (%s)', implode(',', $below_ids))->select();
     $this->customer_list = M('customer')->where('owner_role_id in (%s)', implode(',', getSubRoleId()))->select();
     $this->assign('list', $list);
     $this->search_field_array = getMainFields('business');
     $this->field_array = getIndexFields('business');
     $this->alert = parseAlert();
     $this->display();
 }
 public function index()
 {
     $d_v_customer = D('CustomerView');
     $by = isset($_GET['by']) ? trim($_GET['by']) : '';
     $below_ids = getSubRoleId(false);
     $all_ids = getSubRoleId();
     $outdays = M('config')->where('name="customer_outdays"')->getField('value');
     $outdate = empty($outdays) ? time() : time() - 86400 * $outdays;
     $where = array();
     $params = array();
     $order = "create_time desc";
     if ($_GET['desc_order']) {
         $order = trim($_GET['desc_order']) . ' desc';
     } elseif ($_GET['asc_order']) {
         $order = trim($_GET['asc_order']) . ' asc';
     }
     switch ($by) {
         case 'today':
             $where['create_time'] = array('gt', strtotime(date('Y-m-d', time())));
             break;
         case 'week':
             $where['create_time'] = array('gt', strtotime(date('Y-m-d')) - (date('N', time()) - 1) * 86400);
             break;
         case 'month':
             $where['create_time'] = array('gt', strtotime(date('Y-m-01', time())));
             break;
         case 'add':
             $order = 'create_time desc';
             break;
         case 'update':
             $order = 'update_time desc';
             break;
         case 'sub':
             $where['owner_role_id'] = array('in', implode(',', $below_ids));
             break;
         case 'deleted':
             $where['is_deleted'] = 1;
             break;
         case 'me':
             $where['owner_role_id'] = session('role_id');
             break;
         default:
             if ($this->_get('content') == 'resource') {
                 $where['_string'] = "customer.owner_role_id=0 or customer.update_time < {$outdate}";
                 $all_ids[] = "";
                 $where['owner_role_id'] = array('in', $all_ids);
                 $where['is_locked'] = 0;
             } else {
                 $where['owner_role_id'] = array('in', implode(',', $all_ids));
             }
             break;
     }
     if ($by != 'deleted') {
         $where['is_deleted'] = array('neq', 1);
     }
     if (!isset($where['owner_role_id'])) {
         if ($by != 'deleted') {
             $where['owner_role_id'] = array('in', $all_ids);
         }
     }
     if ($by == 'deleted') {
         unset($where['update_time']);
     }
     if ($this->_get('content') != 'resource') {
         if ($by != 'deleted') {
             $where['_string'] = 'update_time > ' . $outdate . ' OR is_locked = 1';
         }
     }
     if ($_REQUEST["field"]) {
         if (trim($_REQUEST['field']) == "all") {
             $field = is_numeric(trim($_REQUEST['search'])) ? 'name|origin|address|email|telephone|website|account_type|industry|annual_revenue|sic_code|ticker_symbol|ownership|rating|description' : 'name|origin|address|email|telephone|website|account_type|industry|annual_revenue|sic_code|ticker_symbol|ownership|rating|description|create_time|update_time';
         } else {
             $field = trim($_REQUEST['field']);
         }
         $search = empty($_REQUEST['search']) ? '' : trim($_REQUEST['search']);
         $condition = empty($_REQUEST['condition']) ? 'is' : trim($_REQUEST['condition']);
         $field_date = M('Fields')->where('is_main=1 and (model="" or model="customer") and form_type="datetime"')->select();
         foreach ($field_date as $v) {
             if ($field == $v['field']) {
                 $search = is_numeric($search) ? $search : strtotime($search);
             }
         }
         if ($this->_request('state')) {
             $search = $this->_request('state');
             if ($this->_request('city')) {
                 $search .= chr(10) . $this->_request('city');
             }
             if ($_REQUEST['search']) {
                 $search .= chr(10) . trim($_REQUEST['search']);
             }
         }
         switch ($condition) {
             case "is":
                 $where[$field] = array('eq', $search);
                 break;
             case "isnot":
                 $where[$field] = array('neq', $search);
                 break;
             case "contains":
                 $where[$field] = array('like', '%' . $search . '%');
                 break;
             case "not_contain":
                 $where[$field] = array('notlike', '%' . $search . '%');
                 break;
             case "start_with":
                 $where[$field] = array('like', $search . '%');
                 break;
             case "not_start_with":
                 $where[$field] = array('notlike', $search . '%');
                 break;
             case "end_with":
                 $where[$field] = array('like', '%' . $search);
                 break;
             case "is_empty":
                 $where[$field] = array('eq', '');
                 break;
             case "is_not_empty":
                 $where[$field] = array('neq', '');
                 break;
             case "gt":
                 $where[$field] = array('gt', $search);
                 break;
             case "egt":
                 $where[$field] = array('egt', $search);
                 break;
             case "lt":
                 $where[$field] = array('lt', $search);
                 break;
             case "elt":
                 $where[$field] = array('elt', $search);
                 break;
             case "eq":
                 $where[$field] = array('eq', $search);
                 break;
             case "neq":
                 $where[$field] = array('neq', $search);
                 break;
             case "between":
                 $where[$field] = array('between', array($search - 1, $search + 86400));
                 break;
             case "nbetween":
                 $where[$field] = array('not between', array($search, $search + 86399));
                 break;
             case "tgt":
                 $where[$field] = array('gt', $search + 86400);
                 break;
             default:
                 $where[$field] = array('eq', $search);
         }
         $params = array('field=' . trim($_REQUEST['field']), 'condition=' . $condition, 'search=' . $search);
     }
     if (trim($_GET['act'] == 'sms')) {
         $customer_ids = $d_v_customer->where($where)->getField('customer_id', true);
         $contacts_ids = M('RContactsCustomer')->where('customer_id in (%s)', implode(',', $customer_ids))->getField('contacts_id', true);
         $contacts_ids = implode(',', $contacts_ids);
         $contacts = D('ContactsView')->where('contacts.contacts_id in (%s)', $contacts_ids)->select();
         $this->contacts = $contacts;
         $this->display('Setting:sendsms');
     } elseif (trim($_GET['act']) == 'excel') {
         if (vali_permission('customer', 'export')) {
             $customerList = $d_v_customer->where($where)->order($order)->select();
             $this->excelExport($customerList);
         } else {
             alert('error', L('HAVE NOT PRIVILEGES'), $_SERVER['HTTP_REFERER']);
         }
     } else {
         $p = isset($_GET['p']) ? intval($_GET['p']) : 1;
         $list = $d_v_customer->where($where)->order($order)->page($p . ',15')->select();
         $count = $d_v_customer->where($where)->count();
         import("@.ORG.Page");
         $Page = new Page($count, 15);
         if (!empty($_GET['by'])) {
             $params[] = "by=" . trim($_GET['by']);
         }
         if (!empty($_GET['content'])) {
             $params[] = "content=" . trim($_GET['content']);
         }
         $this->parameter = implode('&', $params);
         if ($_GET['desc_order']) {
             $params[] = "desc_order=" . trim($_GET['desc_order']);
         } elseif ($_GET['asc_order']) {
             $params[] = "asc_order=" . trim($_GET['asc_order']);
         }
         $Page->parameter = implode('&', $params);
         $this->assign('page', $Page->show());
         if ($by == 'deleted') {
             foreach ($list as $k => $v) {
                 $list[$k]["delete_role"] = D('RoleView')->where('role.role_id = %d', $v['delete_role_id'])->find();
                 $list[$k]["creator"] = D('RoleView')->where('role.role_id = %d', $v['creator_role_id'])->find();
                 $list[$k]["owner"] = D('RoleView')->where('role.role_id = %d', $v['owner_role_id'])->find();
             }
         } else {
             foreach ($list as $k => $v) {
                 $days = 0;
                 $list[$k]["owner"] = D('RoleView')->where('role.role_id = %d', $v['owner_role_id'])->find();
                 $list[$k]["creator"] = D('RoleView')->where('role.role_id = %d', $v['creator_role_id'])->find();
                 $days = M('Customer')->where('customer_id = %d', $v['customer_id'])->getField('update_time');
                 $list[$k]["days"] = $outdays - floor((time() - $days) / 86400);
             }
         }
         $this->customerlist = $list;
         $this->field_array = getIndexFields('customer');
         $this->field_list = getMainFields('customer');
         $this->alert = parseAlert();
         $this->display();
     }
 }
 public function index()
 {
     $d_knowledge = D('KnowledgeView');
     // 实例化User对象
     import('@.ORG.Page');
     // 导入分页类
     $where = array();
     $params = array();
     $order = "create_time desc";
     if ($_GET['desc_order']) {
         $order = trim($_GET['desc_order']) . ' desc';
     } elseif ($_GET['asc_order']) {
         $order = trim($_GET['asc_order']) . ' asc';
     }
     if ($_REQUEST["field"]) {
         $field = trim($_REQUEST['field']) == 'all' ? 'title|content' : $_REQUEST['field'];
         $search = empty($_REQUEST['search']) ? '' : trim($_REQUEST['search']);
         $condition = empty($_REQUEST['condition']) ? 'is' : trim($_REQUEST['condition']);
         if ('create_time' == $field || 'update_time' == $field) {
             $search = is_numeric($search) ? $search : strtotime($search);
         }
         switch ($condition) {
             case "is":
                 $where[$field] = array('eq', $search);
                 break;
             case "isnot":
                 $where[$field] = array('neq', $search);
                 break;
             case "contains":
                 $where[$field] = array('like', '%' . $search . '%');
                 break;
             case "not_contain":
                 $where[$field] = array('notlike', '%' . $search . '%');
                 break;
             case "start_with":
                 $where[$field] = array('like', $search . '%');
                 break;
             case "end_with":
                 $where[$field] = array('like', '%' . $search);
                 break;
             case "is_empty":
                 $where[$field] = array('eq', '');
                 break;
             case "is_not_empty":
                 $where[$field] = array('neq', '');
                 break;
             case "gt":
                 $where[$field] = array('gt', $search);
                 break;
             case "egt":
                 $where[$field] = array('egt', $search);
                 break;
             case "lt":
                 $where[$field] = array('lt', $search);
                 break;
             case "elt":
                 $where[$field] = array('elt', $search);
                 break;
             case "eq":
                 $where[$field] = array('eq', $search);
                 break;
             case "neq":
                 $where[$field] = array('neq', $search);
                 break;
             case "between":
                 $where[$field] = array('between', array($search - 1, $search + 86400));
                 break;
             case "nbetween":
                 $where[$field] = array('not between', array($search, $search + 86399));
                 break;
             case "tgt":
                 $where[$field] = array('gt', $search + 86400);
                 break;
             default:
                 $where[$field] = array('eq', $search);
         }
         $params = array('field=' . $field, 'condition=' . $condition, 'search=' . trim($_REQUEST["search"]));
     }
     $p = isset($_GET['p']) ? $_GET['p'] : 1;
     if ($_REQUEST['category_id']) {
         $idArray = array();
         $categoryList = getSubCategory($_GET['category_id'], M('knowledge_category')->select(), '');
         foreach ($categoryList as $value) {
             $idArray[] = $value['category_id'];
         }
         $idList = empty($idArray) ? $_GET['category_id'] : $_GET['category_id'] . ',' . implode(',', $idArray);
         $where['knowledge.category_id'] = array('in', $idList);
         if (trim($_GET['act']) == 'excel') {
             $knowledgeList = $d_knowledge->order($order)->where($where)->select();
             $this->excelExport($knowledgeList);
         }
         $count = $d_knowledge->where($where)->count();
         $list = $d_knowledge->order($order)->where($where)->Page($p . ',15')->select();
         $params['category_id'] = 'category_id=' . trim($_REQUEST['category_id']);
     } else {
         if (trim($_GET['act']) == 'excel') {
             if (vali_permission('knowledge', 'export')) {
                 $knowledgeList = $d_knowledge->order($order)->where($where)->select();
                 $this->excelExport($knowledgeList);
             } else {
                 alert('error', L('HAVE NOT PRIVILEGES'), $_SERVER['HTTP_REFERER']);
             }
         }
         $count = $d_knowledge->count();
         // 查询满足要求的总记录数
         $list = $d_knowledge->where($where)->order($order)->Page($p . ',15')->select();
     }
     $this->parameter = implode('&', $params);
     if ($_GET['desc_order']) {
         $params[] = "desc_order=" . trim($_GET['desc_order']);
     } elseif ($_GET['asc_order']) {
         $params[] = "asc_order=" . trim($_GET['asc_order']);
     }
     $Page = new Page($count, 15);
     // 实例化分页类 传入总记录数和每页显示的记录数
     $Page->parameter = implode('&', $params);
     $userRole = M('userRole');
     foreach ($list as $k => $v) {
         $list[$k]['owner'] = D('RoleView')->where('role.role_id = %d', $v['role_id'])->find();
     }
     $category = M('knowledge_category');
     $category_list = $category->select();
     $this->categoryList = getSubCategory(0, $category_list, '');
     $this->assign('list', $list);
     // 赋值数据集
     $this->assign('page', $Page->show());
     // 赋值分页输出
     $this->alert = parseAlert();
     $this->display();
     // 输出模板
 }
Esempio n. 7
0
 public function index()
 {
     //更新最后阅读时间
     $m_user = M('user');
     $last_read_time_js = $m_user->where('role_id = %d', session('role_id'))->getField('last_read_time');
     $last_read_time = json_decode($last_read_time_js, true);
     $last_read_time['task'] = time();
     $m_user->where('role_id = %d', session('role_id'))->setField('last_read_time', json_encode($last_read_time));
     $by = isset($_GET['by']) ? trim($_GET['by']) : '';
     $p = isset($_GET['p']) ? intval($_GET['p']) : 1;
     $m_task = M('Task');
     $below_ids = getSubRoleId(false);
     $all_ids = getSubRoleId();
     $where = array();
     $params = array();
     $order = "create_date desc";
     if ($_GET['desc_order']) {
         $order = trim($_GET['desc_order']) . ' desc';
     } elseif ($_GET['asc_order']) {
         $order = trim($_GET['asc_order']) . ' asc';
     }
     switch ($by) {
         case 'create':
             $where['creator_role_id'] = session('role_id');
             break;
         case 's1':
             $where['status'] = L('NOT_START');
             break;
         case 's2':
             $where['status'] = L('DELAY');
             break;
         case 's3':
             $where['status'] = L('ONGOING');
             break;
         case 's4':
             $where['status'] = L('COMPLETE');
             break;
         case 'closed':
             $where['isclose'] = 1;
             break;
         case 'deleted':
             $where['is_deleted'] = 1;
             break;
         case 'today':
             $where['due_date'] = array('between', array(strtotime(date('Y-m-d')) - 1, strtotime(date('Y-m-d')) + 86400));
             break;
         case 'week':
             $week = date('w') == 0 ? 7 : date('w');
             $where['due_date'] = array('between', array(strtotime(date('Y-m-d')) - ($week - 1) * 86400 - 1, strtotime(date('Y-m-d')) + (8 - $week) * 86400));
             break;
         case 'month':
             $next_year = date('Y') + 1;
             $next_month = date('m') + 1;
             $month_time = date('m') == 12 ? strtotime($next_year . '-01-01') : strtotime(date('Y') . '-' . $next_month . '-01');
             $where['due_date'] = array('between', array(strtotime(date('Y-m-01')) - 1, $month_time));
             break;
         case 'add':
             $order = 'create_date desc';
             break;
         case 'update':
             $order = 'update_date desc';
             break;
         case 'me':
             $where['_string'] = 'about_roles like "%,' . session('role_id') . ',%" OR owner_role_id like "%,' . session('role_id') . ',%"';
             break;
         default:
             $where['_string'] = 'creator_role_id in (' . implode(',', $all_ids) . ')  OR about_roles like "%,' . session('role_id') . ',%" OR owner_role_id like "%,' . session('role_id') . ',%"';
             break;
     }
     if (!isset($where['isclose'])) {
         $where['isclose'] = 0;
     }
     if (!isset($where['is_deleted'])) {
         $where['is_deleted'] = 0;
     }
     if (!isset($where['status'])) {
         $where['status'] = array('neq', '完成');
     }
     if (!isset($where['_string']) && !isset($where['creator_role_id'])) {
         $where['_string'] = ' about_roles like "%,' . session('role_id') . ',%" OR owner_role_id like "%,' . session('role_id') . ',%" OR creator_role_id in (' . implode(',', $all_ids) . ') ';
     }
     if ($_REQUEST["field"]) {
         $field = trim($_REQUEST['field']) == 'all' ? 'subject|status|priority|description|due_date' : $_REQUEST['field'];
         $search = empty($_REQUEST['search']) ? '' : trim($_REQUEST['search']);
         $condition = empty($_REQUEST['condition']) ? 'is' : trim($_REQUEST['condition']);
         if ('due_date' == $field || $field == 'update_date' || $field == 'create_date') {
             $search = is_numeric($search) ? $search : strtotime($search);
         }
         switch ($condition) {
             case "is":
                 if ($field == 'owner_role_id') {
                     $where[$field] = array('like', '%,' . $search . ',%');
                 } else {
                     $where[$field] = array('eq', $search);
                 }
                 break;
             case "isnot":
                 $where[$field] = array('neq', $search);
                 break;
             case "contains":
                 $where[$field] = array('like', '%' . $search . '%');
                 break;
             case "not_contain":
                 $where[$field] = array('notlike', '%' . $search . '%');
                 break;
             case "start_with":
                 $where[$field] = array('like', $search . '%');
                 break;
             case "end_with":
                 $where[$field] = array('like', '%' . $search);
                 break;
             case "is_empty":
                 $where[$field] = array('eq', '');
                 break;
             case "is_not_empty":
                 $where[$field] = array('neq', '');
                 break;
             case "gt":
                 $where[$field] = array('gt', $search);
                 break;
             case "egt":
                 $where[$field] = array('egt', $search);
                 break;
             case "lt":
                 $where[$field] = array('lt', $search);
                 break;
             case "elt":
                 $where[$field] = array('elt', $search);
                 break;
             case "eq":
                 $where[$field] = array('eq', $search);
                 break;
             case "neq":
                 $where[$field] = array('neq', $search);
                 break;
             case "between":
                 $where[$field] = array('between', array($search - 1, $search + 86400));
                 break;
             case "nbetween":
                 $where[$field] = array('not between', array($search, $search + 86399));
                 break;
             case "tgt":
                 $where[$field] = array('gt', $search + 86400);
                 break;
             default:
                 $where[$field] = array('eq', $search);
         }
         $params = array('field=' . $field, 'condition=' . $condition, 'search=' . trim($_REQUEST['search']));
     }
     $order = empty($order) ? 'due_date asc' : $order;
     if (trim($_GET['act']) == 'excel') {
         if (vali_permission('task', 'export')) {
             $taskList = $m_task->where($where)->order($order)->select();
             $this->excelExport($taskList);
         } else {
             alert('error', L('HAVE NOT PRIVILEGES'), $_SERVER['HTTP_REFERER']);
         }
     }
     $task_list = $m_task->where($where)->order($order)->page($p . ',15')->select();
     $count = $m_task->where($where)->count();
     import("@.ORG.Page");
     $Page = new Page($count, 15);
     if (!empty($_GET['by'])) {
         $params[] = "by=" . trim($_GET['by']);
     }
     $this->parameter = implode('&', $params);
     if ($_GET['desc_order']) {
         $params[] = "desc_order=" . trim($_GET['desc_order']);
     } elseif ($_GET['asc_order']) {
         $params[] = "asc_order=" . trim($_GET['asc_order']);
     }
     $Page->parameter = implode('&', $params);
     $this->assign('page', $Page->show());
     foreach ($task_list as $key => $value) {
         $task_list[$key]['owner'] = D('RoleView')->where('role.role_id in (%s)', '0' . $task_list[$key]['owner_role_id'] . '0')->select();
         $task_list[$key]['creator'] = getUserByRoleId($value['creator_role_id']);
         $task_list[$key]['deletor'] = getUserByRoleId($value['delete_role_id']);
         //关联模块
         $r_module = array('Business' => 'RBusinessTask', 'Contacts' => 'RContactsTask', 'Customer' => 'RCustomerTask', 'Product' => 'RProductTask', 'Leads' => 'RLeadsTask');
         foreach ($r_module as $k => $v) {
             $r_m = M($v);
             if ($module_id = $r_m->where('task_id = %d', $value['task_id'])->getField($k . '_id')) {
                 $name = M($k)->where($k . '_id = %d', $module_id)->getField('name');
                 $is_deleted = M($k)->where($k . '_id = %d', $module_id)->getField('is_deleted');
                 $name_str = msubstr($name, 0, 20, 'utf-8', false);
                 $name_str .= $is_deleted == 1 ? '<font color="red">(' . L("DELETED") . ')</font>' : '';
                 switch ($k) {
                     case 'Product':
                         $module_name = L('PRODUCT');
                         $name = '<a href="index.php?m=product&a=view&id=' . $module_id . '" title="' . $name . '">' . $name_str . '</a>';
                         break;
                     case 'Leads':
                         $module_name = L('LEADS');
                         $name = '<a href="index.php?m=leads&a=view&id=' . $module_id . '" title="' . $name . '">' . $name_str . '</a>';
                         break;
                     case 'Contacts':
                         $module_name = L('CONTACTS');
                         $name = '<a href="index.php?m=contacts&a=view&id=' . $module_id . '" title="' . $name . '">' . $name_str . '</a>';
                         break;
                     case 'Business':
                         $module_name = L('BUSINESS');
                         $name = '<a href="index.php?m=business&a=view&id=' . $module_id . '" title="' . $name . '">' . $name_str . '</a>';
                         break;
                     case 'Customer':
                         $module_name = L('CUSTOMER');
                         $name = '<a href="index.php?m=customer&a=view&id=' . $module_id . '" title="' . $name . '">' . $name_str . '</a>';
                         break;
                 }
                 $task_list[$key]['module'] = array('module' => $k, 'module_name' => $module_name, 'name' => $name, 'module_id' => $module_id);
                 break;
             }
         }
         $due_time = $task_list[$key]['due_date'];
         if ($due_time) {
             $tomorrow_time = strtotime(date('Y-m-d', time())) + 86400;
             $diff_days = ($due_time - $tomorrow_time) % 86400 > 0 ? intval(($due_time - $tomorrow_time) / 86400) + 1 : intval(($due_time - $tomorrow_time) / 86400);
             $task_list[$key]['diff_days'] = $diff_days;
         }
     }
     $this->task_list = $task_list;
     $this->alert = parseAlert();
     $this->display();
 }
 public function widget_add()
 {
     if ($this->isPost()) {
         if ($_POST['widget']) {
             $user = M('User');
             $title = $_POST['title'] != '' && isset($_POST['title']) ? $_POST['title'] : L('UNNAMED_COMPONENT');
             $dashboard = $user->where('user_id = %d', session('user_id'))->getField('dashboard');
             $widget = unserialize($dashboard);
             if (!is_array($widget)) {
                 $widget = array();
             }
             $max_id = 0;
             foreach ($widget['dashboard'] as $v) {
                 if ($v['id'] > $max_id) {
                     $max_id = $v['id'];
                 }
             }
             $widget['dashboard'][$max_id + 1] = array('widget' => $_POST['widget'], 'level' => $_POST['level'], 'title' => $title, 'id' => $max_id + 1);
             $widget['sort'][] = $max_id + 1;
             $newdashboard['dashboard'] = serialize($widget);
             if ($user->where('user_id = %d', session('user_id'))->save($newdashboard)) {
                 alert('success', L('ADD_COMPONENTS_TO_SUCCESS'), $_SERVER['HTTP_REFERER']);
             }
         } else {
             alert('error', L('ADD_THE_COMPONENT_FAILS_PLEASE_FILL_IN_THE_COMPONENT_NAME'), $_SERVER['HTTP_REFERER']);
         }
     } else {
         /**
          * 所有的小部件
          * Function : 判断模块下的某个操作是否有权限
          * @action  : 默认使用index操作来判断权限
          */
         $widget_module = array(array('module' => 'customer', 'action' => 'index', 'tag' => 'Salesfunnel', 'name' => '销售漏斗'), array('module' => 'customer', 'action' => 'index', 'tag' => 'Customerorigin', 'name' => '客户来源'), array('module' => 'log', 'action' => 'index', 'tag' => 'Notepad', 'name' => '便笺'), array('module' => 'finance', 'action' => 'index', 'tag' => 'Receivemonthly', 'name' => '月度财务'), array('module' => 'finance', 'action' => 'index', 'tag' => 'Receiveyearcomparison', 'name' => '财务年度对比'));
         //如果没有权限,从数组中去除
         foreach ($widget_module as $k => $v) {
             if ($v['module'] == 'log') {
                 continue;
             }
             //默认便笺所有人都有权限
             if (!vali_permission($v['module'], $v['action'])) {
                 unset($widget_module[$k]);
             }
         }
         $this->widget_module = $widget_module;
         $this->alert = parseAlert();
         $this->display();
     }
 }
 public function index()
 {
     //更新最后阅读时间
     $m_user = M('user');
     $last_read_time_js = $m_user->where('role_id = %d', session('role_id'))->getField('last_read_time');
     $last_read_time = json_decode($last_read_time_js, true);
     $last_read_time['event'] = time();
     $m_user->where('role_id = %d', session('role_id'))->setField('last_read_time', json_encode($last_read_time));
     $m_event = M('Event');
     $below_ids = getSubRoleId(false);
     $all_ids = getSubRoleId();
     $by = isset($_GET['by']) ? trim($_GET['by']) : '';
     $where = array();
     $params = array();
     $order = "create_date desc";
     if ($_GET['desc_order']) {
         $order = trim($_GET['desc_order']) . ' desc';
     } elseif ($_GET['asc_order']) {
         $order = trim($_GET['asc_order']) . ' asc';
     }
     switch ($by) {
         case 'today':
             $data1['start_date'] = array('lt', strtotime(date('Y-m-d')) - 1);
             $data1['end_date'] = array('gt', strtotime(date('Y-m-d')) - 1);
             $data['start_date'] = array('between', array(strtotime(date('Y-m-d')) - 1, strtotime(date('Y-m-d')) + 86400));
             $data['_logic'] = 'or';
             $data['_complex'] = $data1;
             $where['_complex'] = $data;
             break;
         case 'week':
             $week = date('w') == 0 ? 7 : date('w');
             $data1['start_date'] = array('lt', strtotime(date('Y-m-d')) - ($week - 1) * 86400 - 1);
             $data1['end_date'] = array('gt', strtotime(date('Y-m-d')) - ($week - 1) * 86400 - 1);
             $data['start_date'] = array('between', array(strtotime(date('Y-m-d')) - ($week - 1) * 86400 - 1, strtotime(date('Y-m-d')) + (8 - $week) * 86400));
             $data['_logic'] = 'or';
             $data['_complex'] = $data1;
             $where['_complex'] = $data;
             break;
         case 'month':
             $data1['start_date'] = array('lt', strtotime(date('Y-m-01')) - 1);
             $data1['end_date'] = array('gt', strtotime(date('Y-m-01')) - 1);
             $next_year = date('Y') + 1;
             $next_month = date('m') + 1;
             $month_time = date('m') == 12 ? strtotime($next_year . '-01-01') : strtotime(date('Y') . '-' . $next_month . '-01');
             $data['start_date'] = array('between', array(strtotime(date('Y-m-01')) - 1, $month_time));
             $data['_logic'] = 'or';
             $data['_complex'] = $data1;
             $where['_complex'] = $data;
             break;
         case 'add':
             $order = 'create_date desc';
             break;
         case 'update':
             $order = 'update_date desc';
             break;
         case 'sub':
             $where['owner_role_id'] = array('in', implode(',', $below_ids));
             break;
         case 'public':
             $where['owner_role_id'] = '';
             break;
         case 'deleted':
             $where['is_deleted'] = 1;
             break;
         case 'transformed':
             $where['is_transformed'] = 1;
             break;
         case 'not_close':
             $where['isclose'] = 0;
             break;
         case 'isclose':
             $where['isclose'] = 1;
             break;
         case 'me':
             $where['owner_role_id'] = session('role_id');
             break;
         default:
             $where['owner_role_id'] = array('in', implode(',', $all_ids));
             break;
     }
     if (!isset($where['owner_role_id'])) {
         $where['owner_role_id'] = array('in', implode(',', $all_ids));
     }
     if ($_GET['by'] != 'deleted') {
         $where['is_deleted'] = 0;
     }
     if ($_GET['by'] != 'isclose') {
         $where['isclose'] = 0;
     }
     if ($_REQUEST["field"]) {
         $field = trim($_REQUEST['field']) == 'all' ? 'subject|description' : $_REQUEST['field'];
         $search = empty($_REQUEST['search']) ? '' : trim($_REQUEST['search']);
         $condition = empty($_REQUEST['condition']) ? 'is' : trim($_REQUEST['condition']);
         if ('create_date' == $field || 'update_date' == $field || 'start_date' == $field || 'end_date' == $field) {
             $search = is_numeric($search) ? $search : strtotime($search);
         }
         switch ($_REQUEST['condition']) {
             case "is":
                 $where[$field] = array('eq', $search);
                 break;
             case "isnot":
                 $where[$field] = array('neq', $search);
                 break;
             case "contains":
                 $where[$field] = array('like', '%' . $search . '%');
                 break;
             case "not_contain":
                 $where[$field] = array('notlike', '%' . $search . '%');
                 break;
             case "start_with":
                 $where[$field] = array('like', $search . '%');
                 break;
             case "end_with":
                 $where[$field] = array('like', '%' . $search);
                 break;
             case "is_empty":
                 $where[$field] = array('eq', '');
                 break;
             case "is_not_empty":
                 $where[$field] = array('neq', '');
                 break;
             case "gt":
                 $where[$field] = array('gt', $search);
                 break;
             case "egt":
                 $where[$field] = array('egt', $search);
                 break;
             case "lt":
                 $where[$field] = array('lt', $search);
                 break;
             case "elt":
                 $where[$field] = array('elt', $search);
                 break;
             case "eq":
                 $where[$field] = array('eq', $search);
                 break;
             case "neq":
                 $where[$field] = array('neq', $search);
                 break;
             case "between":
                 $where[$field] = array('between', array($search - 1, $search + 86400));
                 break;
             case "nbetween":
                 $where[$field] = array('not between', array($search, $search + 86399));
                 break;
             case "tgt":
                 $where[$field] = array('gt', $search + 86400);
                 break;
             default:
                 $where[$field] = array('eq', $search);
         }
         $params = array('field=' . $field, 'condition=' . $condition, 'search=' . trim($_REQUEST["search"]));
     }
     if (trim($_GET['act']) == 'excel') {
         if (vali_permission('event', 'export')) {
             $order = $order ? $order : 'update_date desc';
             $eventList = $m_event->where($where)->order($order)->select();
             $this->excelExport($eventList);
         } else {
             alert('error', L('HAVE NOT PRIVILEGES'), $_SERVER['HTTP_REFERER']);
         }
     }
     $p = isset($_GET['p']) ? intval($_GET['p']) : 1;
     $list = $m_event->where($where)->order($order)->page($p . ',15')->select();
     $count = $m_event->where($where)->count();
     import("@.ORG.Page");
     $Page = new Page($count, 15);
     $params[] = 'by =' . trim($_GET['by']);
     $this->parameter = implode('&', $params);
     if ($_GET['desc_order']) {
         $params[] = "desc_order=" . trim($_GET['desc_order']);
     } elseif ($_GET['asc_order']) {
         $params[] = "asc_order=" . trim($_GET['asc_order']);
     }
     $Page->parameter = implode('&', $params);
     $show = $Page->show();
     $this->assign('page', $show);
     $user = M('User');
     foreach ($list as $key => $value) {
         $list[$key]["owner"] = D('RoleView')->where('role.role_id = %d', $value['owner_role_id'])->find();
     }
     $this->assign('eventlist', $list);
     $this->alert = parseAlert();
     $this->display();
 }