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);
}
Ejemplo n.º 2
0
 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;
 }