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; }