function get_clicks_rows($params, $start = 0, $limit = 0, $campaign_params, $click_params) { // Смещение часового пояса $timezone_shift = get_current_timezone_shift(); // Применяем фильтры if (!empty($params['filter'][0]) or !is_array($params['filter'][0])) { $tmp = array(); foreach ($params['filter'][0] as $k => $v) { if ($k == 'referer') { if ($v == '{empty}') { $tmp[] = "`" . $k . "` = ''"; } else { $tmp[] = "`" . $k . "` LIKE '%" . mysql_real_escape_string($v) . "%'"; } } elseif ($k == 'ads_name') { list($campaign_name, $ads_name) = explode('-', $v); $tmp[] = "`campaign_name` = '" . mysql_real_escape_string($campaign_name) . "'"; $tmp[] = "`ads_name` = '" . mysql_real_escape_string($ads_name) . "'"; } elseif ($k == 'source_name' and empty($v)) { $tmp[] = "(`source_name` = '' or `source_name` = 'source' or `source_name` = 'SOURCE' or `source_name` = '{empty}')"; } else { if ($v == '{empty}') { $v = ''; } $tmp[] = "`" . $k . "` = '" . mysql_real_escape_string($v) . "'"; } } if (!empty($tmp)) { $where = ' and (' . join(' and ', $tmp) . ')'; } else { $where = ''; } } else { $where = ''; } // Дополнительные поля для режима популярных параметров if ($params['mode'] == 'popular' or 1) { $select = ', out_id, source_name, ads_name, referer, user_os, user_ip, user_platform, user_browser, country, state, city, isp, campaign_param1, campaign_param2, campaign_param3, campaign_param4, campaign_param5 '; for ($i = 1; $i <= 15; $i++) { $select .= ', click_param_value' . $i . ' '; } } else { $select = ''; } if ($timezone_shift == '+00:00') { $time_add_fld = 'date_add'; } else { $time_add_fld = "CONVERT_TZ(t1.`date_add`, '+00:00', '" . _str($timezone_shift) . "')"; } // Выбираем все переходы за период $q = "SELECT SQL_CALC_FOUND_ROWS " . (empty($params['group_by']) ? '' : " " . mysql_real_escape_string($params['group_by']) . " as `name`, ") . (($params['group_by'] == $params['subgroup_by'] or empty($params['subgroup_by'])) ? '' : " " . mysql_real_escape_string($params['subgroup_by']) . ", ") . "\n\t\t\t1 as `cnt`,\n\t\t\tt1.id,\n\t\t\tt1.source_name,\n\t\t\tUNIX_TIMESTAMP(" . $time_add_fld . ") as `time_add`,\n\t\t\tt1.rule_id,\n\t\t\tt1.out_id,\n\t\t\tt1.parent_id,\n\t\t\tt1.campaign_name,\n\t\t\tt1.click_price,\n\t\t\tt1.is_unique,\n\t\t\tt1.conversion_price_main,\n\t\t\tt1.is_sale,\n\t\t\tt1.is_lead,\n\t\t\tt1.is_parent,\n\t\t\tt1.is_connected " . $select . "\n\t\t\tFROM `tbl_clicks` t1\n\t\t\tWHERE " . $time_add_fld . " BETWEEN STR_TO_DATE('" . $params['from'] . " 00:00:00', '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE('" . $params['to'] . " 23:59:59', '%Y-%m-%d %H:%i:%s')" . $where . (empty($params['where']) ? '' : " and " . $params['where']) . "\n\t\t\tORDER BY t1.id ASC\n\t\t\tLIMIT {$start}, {$limit}"; //echo $q; /* if($_SERVER['REMOTE_ADDR'] == '178.121.200.233') { dmp($params); echo $q . '<br /><br />'; } */ $rs = db_query($q); $q = "SELECT FOUND_ROWS() as `cnt`"; $total = ap(mysql_fetch_assoc(db_query($q)), 'cnt'); /* if($_SERVER['REMOTE_ADDR'] == '178.121.200.233') { echo $total . '<br /><br />'; } */ while ($r = mysql_fetch_assoc($rs)) { $rows[$r['id']] = $r; // Определяем наличие пользовательских параметров for ($i = 1; $i <= 5; $i++) { if ($r['campaign_param' . $i] != '') { $campaign_params[$i] = 1; } } for ($i = 1; $i <= 15; $i++) { if ($r['click_param_value' . $i] != '') { $click_params[$i] = 1; } } } return array($total, $rows, $campaign_params, $click_params); }
public static function DoController() { //转交过来的控制器控制权 //除controllers外,都需要检测根下有没有相对应的组件 //=========================================================== //监测控制器文件是否存在 //监测控制器是否存在 $router = C('Router'); $app = C('app'); //回溯地址 $hspath = $app['APP_PATH']; //控制器地址 $router['Appbase'] if ($router['method_modules']) { $basepath = $app['APP_PATH'] . 'Modules/' . $app['modulelist'][$router['method_modules']] . '/'; } else { $basepath = $hspath; } //insert 基础控制器 $basecontrollerpath = $basepath . 'Controller/BaseController.php'; includeIfExist($basecontrollerpath); //加载扩展控制器 $controllerfile = $basepath . 'Controller/' . $router['method_controller'] . '.' . $router['method_action'] . '.php'; //echo $controllerfile; includeIfExist($controllerfile); if (!class_exists($router['method_controller'])) { //加载标准控制器 $controllerfile = $basepath . 'Controller/' . $router['method_controller'] . '.php'; includeIfExist($controllerfile); } //判断控制器是否存在 if (!class_exists($router['method_controller'])) { error404(); halt('控制器 : ' . $router['method_controller'] . '不存在'); //交由扩展进行判断 } //实例化 $controllerClass = $router['method_controller']; $controller = new $controllerClass(); //动作 $method = $router['ActionExt']; //寻找扩展方法 if (!method_exists($controller, $method)) { $method = $router['Action']; if (!method_exists($controller, $method)) { error404(); halt('方法' . $method . '不存在'); } } //执行控制器 $params = $router['param']; //===================================== //扩展,对mothod 进行修改 //call_user_func(array($controller,$method),$params); /* |------------------------------------------- | 添加信息进入配置信息 |------------------------------------------- | */ ap()->demo(); //执行中间件 if (method_exists($controller, '_init')) { $controller->_init(); } //前置hook $controller->{$method}($params); //另一种方式执行 exit; }