Esempio n. 1
0
function getAll($tableName, $tagsTable, $max = 100, $page = 0, $params = array(), $cacheTime = 900)
{
    $status = !empty($params['status']) ? (int) $params['status'] : 1;
    $searchTerm = !empty($params['q']) ? $params['q'] : '';
    $lat = !empty($params['lat']) ? $params['lat'] : '';
    $lon = !empty($params['lon']) ? $params['lon'] : '';
    $radius = !empty($params['radius']) ? $params['radius'] : 30;
    $path = !empty($params['path']) ? $params['path'] : null;
    $distance = '';
    $distanceWhere = '';
    $order = ' ORDER BY a.id DESC';
    if (!empty($lat) && !empty($lon)) {
        $distance = ", (ROUND(\n\tDEGREES(ACOS(SIN(RADIANS(" . GetSQLValueString($lat, 'double') . ")) * SIN(RADIANS(a.lat)) + COS(RADIANS(" . GetSQLValueString($lat, 'double') . ")) * COS(RADIANS(a.lat)) * COS(RADIANS(" . GetSQLValueString($lon, 'double') . " -(a.lng)))))*60*1.1515,2)) as distance";
        $distanceWhere = " AND (ROUND(\n\tDEGREES(ACOS(SIN(RADIANS(" . GetSQLValueString($lat, 'double') . ")) * SIN(RADIANS(a.lat)) + COS(RADIANS(" . GetSQLValueString($lat, 'double') . ")) * COS(RADIANS(a.lat)) * COS(RADIANS(" . GetSQLValueString($lon, 'double') . " -(a.lng)))))*60*1.1515,2)) <= " . GetSQLValueString($radius, 'double');
        $order = ' ORDER BY distance ASC';
    }
    $Models_General = new Models_General();
    //$Models_General->setDebug(1);
    $page = (int) $page;
    $maxRows_rsView = $max;
    $pageNum_rsView = $page;
    $startRow_rsView = $pageNum_rsView * $maxRows_rsView;
    $query_rsView = 'select *, a.id as id ' . $distance . ' FROM ' . $tableName . ' as a LEFT JOIN ' . $tagsTable . ' as b ON a.id = b.id WHERE a.status = ' . $status . ' AND a.deleted = 0' . $distanceWhere;
    if (!empty($searchTerm)) {
        $query_rsView .= ' AND b.tag LIKE ' . $Models_General->qstr('%' . $searchTerm . '%');
    }
    if (!empty($path)) {
        $query_rsView .= ' AND a.path = ' . $Models_General->qstr($path);
    }
    if (!empty($params['uid'])) {
        $query_rsView .= ' AND a.uid = ' . $Models_General->qstr($params['uid']);
    }
    if (!empty($params['i1'])) {
        $query_rsView .= ' AND a.i1 = ' . $Models_General->qstr($params['i1']);
    }
    if (!empty($params['i2'])) {
        $query_rsView .= ' AND a.i2 = ' . $Models_General->qstr($params['i2']);
    }
    if (!empty($params['d1'])) {
        $query_rsView .= ' AND a.d1 = ' . $Models_General->qstr($params['d1']);
    }
    if (!empty($params['d2'])) {
        $query_rsView .= ' AND a.d2 = ' . $Models_General->qstr($params['d2']);
    }
    if (!empty($params['vc1'])) {
        $query_rsView .= ' AND a.vc1 = ' . $Models_General->qstr($params['vc1']);
    }
    if (!empty($params['vc2'])) {
        $query_rsView .= ' AND a.vc2 = ' . $Models_General->qstr($params['vc2']);
    }
    if (!empty($params['t1'])) {
        $query_rsView .= ' AND a.t1 LIKE ' . $Models_General->qstr('%' . $params['t1'] . '%');
    }
    if (!empty($params['t2'])) {
        $query_rsView .= ' AND a.t2 = ' . $Models_General->qstr($params['t2']);
    }
    $query_rsView .= ' GROUP BY a.id';
    $query_rsView .= $order;
    $query_limit_rsView = sprintf("%s LIMIT %d, %d", $query_rsView, $startRow_rsView, $maxRows_rsView);
    $results = $Models_General->fetchAll($query_limit_rsView, array(), $cacheTime);
    $queryTotalRows = 'select COUNT(distinct a.id) AS cnt FROM ' . $tableName . ' as a LEFT JOIN ' . $tagsTable . ' as b ON a.id = b.id WHERE a.status = ' . $status . ' AND a.deleted = 0' . $distanceWhere;
    if (!empty($searchTerm)) {
        $queryTotalRows .= ' AND b.tag LIKE ' . $Models_General->qstr('%' . $searchTerm . '%');
    }
    if (!empty($path)) {
        $queryTotalRows .= ' AND a.path = ' . $Models_General->qstr($path);
    }
    if (!empty($params['uid'])) {
        $queryTotalRows .= ' AND a.uid = ' . $Models_General->qstr($params['uid']);
    }
    if (!empty($params['i1'])) {
        $queryTotalRows .= ' AND a.i1 = ' . $Models_General->qstr($params['i1']);
    }
    if (!empty($params['i2'])) {
        $queryTotalRows .= ' AND a.i2 = ' . $Models_General->qstr($params['i2']);
    }
    if (!empty($params['d1'])) {
        $queryTotalRows .= ' AND a.d1 = ' . $Models_General->qstr($params['d1']);
    }
    if (!empty($params['d2'])) {
        $queryTotalRows .= ' AND a.d2 = ' . $Models_General->qstr($params['d2']);
    }
    if (!empty($params['vc1'])) {
        $queryTotalRows .= ' AND a.vc1 = ' . $Models_General->qstr($params['vc1']);
    }
    if (!empty($params['vc2'])) {
        $queryTotalRows .= ' AND a.vc2 = ' . $Models_General->qstr($params['vc2']);
    }
    if (!empty($params['t1'])) {
        $queryTotalRows .= ' AND a.t1 LIKE ' . $Models_General->qstr('%' . $params['t1'] . '%');
    }
    if (!empty($params['t2'])) {
        $queryTotalRows .= ' AND a.t2 = ' . $Models_General->qstr($params['t2']);
    }
    $rowCountResult = $Models_General->fetchRow($queryTotalRows, array(), $cacheTime);
    $totalRows_rsView = $rowCountResult['cnt'];
    $totalPages_rsView = ceil($totalRows_rsView / $maxRows_rsView) - 1;
    $return = array('results' => $results, 'max' => $max, 'page' => $page, 'totalRows' => $totalRows_rsView, 'totalPages' => $totalPages_rsView, 'start' => $startRow_rsView, 'pageNum_rsView' => $pageNum_rsView, 'params' => $params);
    return $return;
}