imgurl/application/models/Query.php

327 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
class Query extends CI_Model {
public function __construct()
{
parent::__construct();
// Your own constructor code
}
//查询域名
public function domain($storage){
$sql = "SELECT domains FROM img_storage WHERE `engine` = '$storage'";
$query = $this->db->query($sql);
if($query){
$row = $query->row();
$domain = $row->domains;
//var_dump($domain);
return $domain;
}
else{
return FALSE;
}
}
//查询是否重复
public function repeat($imgid){
$sql = "SELECT * FROM img_images WHERE `imgid` = '$imgid'";
$query = $this->db->query($sql);
if($query){
$row = $query->row();
//var_dump($domain);
return $row;
}
else{
return false;
}
}
//根据ID查询1张图片
public function onepic($imgid){
$sql = "SELECT * FROM img_images WHERE `imgid` = '$imgid'";
$query = $this->db->query($sql);
if($query){
$row = $query->row();
//var_dump($domain);
return $row;
}
else{
return false;
}
}
public function img($id){
$id = strip_tags($id);
$id = (int)$id;
$sql = "SELECT * FROM img_images WHERE `id` = '$id'";
$query = $this->db->query($sql);
if($query){
$row = $query->row();
//var_dump($domain);
return $row;
}
else{
return false;
}
}
//查询图片信息
public function imginfo($imgid){
$sql = "SELECT * FROM img_imginfo WHERE `imgid` = '$imgid'";
$query = $this->db->query($sql);
if($query){
$row = $query->row();
//var_dump($domain);
return $row;
}
else{
return false;
}
}
//查询用户信息
public function userinfo(){
$sql = "SELECT * FROM `img_options` WHERE `name` = 'userinfo' LIMIT 1";
$query = $this->db->query($sql);
if($query){
$row = $query->row();
return $row;
}
else{
return false;
}
}
//查询tinypng设置
public function tinypng(){
$sql = "SELECT * FROM `img_options` WHERE `name` = 'tinypng' LIMIT 1";
@$query = $this->db->query($sql);
if($query){
$row = $query->row();
return $row;
}
else{
return FALSE;
}
}
//查询站点信息
public function site_setting($type = ''){
$sql = "SELECT * FROM 'img_options' WHERE name = 'site_setting' LIMIT 1";
$query = $this->db->query($sql);
//如果类型为空,则返回完整对象
if($type == '') {
if($query){
$row = $query->row();
return $row;
}
else{
return FALSE;
}
}
else{
if($query){
$row = $query->row();
$row = json_decode($row->values);
return $row;
}
else{
return FALSE;
}
}
}
//新版查询站点信息
public function siteinfo(){
$sql = "SELECT * FROM 'img_options' WHERE name = 'site_setting' LIMIT 1";
$query = $this->db->query($sql);
if($query){
$row = $query->row();
var_dump($row);
return $row;
}
else{
return FALSE;
}
}
//查询各种设置
public function option($name){
$sql = "SELECT * FROM 'img_options' WHERE name = '$name' LIMIT 1";
$query = $this->db->query($sql);
if($query){
$row = $query->row();
return $row;
}
else{
return FALSE;
}
}
//查询上传数量限制,传入参数IP
public function uplimit($ip){
//获取今天的日期
$date = date('Y-m-d',time());
$date = $date.'%';
//查询出今天上传的数量
$sql = "select count(*) num from img_images where `ip` = '$ip' AND `user` = 'visitor' AND `date` LIKE '$date'";
$query = $this->db->query($sql);
//获取用户已经上传的数量
$num = (int)$query->row()->num;
// var_dump($num);
// exit;
//查询系统限制的条数
$sql = "SELECT * FROM 'img_options' WHERE name = 'uplimit' LIMIT 1";
$query = $this->db->query($sql);
$limit = $query->row();
$limit = $limit->values;
$limit = json_decode($limit);
$limit = $limit->limit;
//进行判断
//上传达到限制了返回FALSE
if($num >= $limit){
return FALSE;
}
else{
return TRUE;
}
}
//查询图片完整信息,用于探索发现,$num为要查询的图片数量
public function found($num){
//先写一个强大的SQL语句
$sql = "SELECT a.id,a.imgid,a.path,a.date,b.mime,b.width,b.height,b.views,b.ext,b.client_name FROM img_images AS a INNER JOIN img_imginfo AS b ON a.imgid = b.imgid AND a.user = 'visitor' AND a.level != 'adult' ORDER BY a.id DESC LIMIT $num";
$query = $this->db->query($sql);
$query = $query->result_array();
return $query;
}
//查询存储引擎
public function storage($name){
$sql = "SELECT * FROM `img_storage` WHERE `engine` = '$name' LIMIT 1";
$query = $this->db->query($sql);
if($query){
$row = $query->row();
return $row;
}
else{
return FALSE;
}
}
//统计数量
public function count_num($type){
switch ($type) {
case 'admin':
$sql = "SELECT count(*) AS num FROM `img_images` WHERE `user` = 'admin'";
break;
case 'visitor':
$sql = "SELECT count(*) AS num FROM `img_images` WHERE `user` = 'visitor'";
break;
case 'dubious':
$sql = "SELECT count(*) AS num FROM `img_images` WHERE `level` = 'adult'";
break;
case 'day':
$sql = "SELECT count(*) AS num FROM `img_images` WHERE date LIKE date('now') || '%'";
break;
case 'month':
$sql = "SELECT count(*) AS num FROM `img_images` WHERE date LIKE strftime('%Y-%m','now') || '%'";
break;
case 'gif':
$sql = "SELECT count(*) AS num FROM (SELECT a.id,b.ext FROM img_images a INNER JOIN img_imginfo b ON a.imgid = b.imgid AND a.user = 'visitor' AND b.ext = '.gif')";
break;
case 'large':
$sql = "SELECT count(*) AS num FROM
(
SELECT a.id,a.imgid,a.path,a.thumb_path,a.date,a.compression,a.level,b.mime,b.width,b.height,b.views,b.ext,b.client_name
FROM img_images
AS a INNER JOIN img_imginfo AS b
ON a.imgid = b.imgid
AND a.user = 'visitor'
AND a.level = 'everyone'
AND b.width >= 1920
AND b.height >= 1080
ORDER BY a.id DESC
)";
break;
default:
# code...
break;
}
$query = $this->db->query($sql);
$row = $query->row();
return $row;
}
//查询单张图片信息
public function picinfo($imgid){
$sql = "SELECT a.id,a.ip,a.imgid,a.path,a.date,b.mime,b.width,b.height,b.views,b.ext,b.client_name FROM img_images AS a INNER JOIN img_imginfo AS b ON a.imgid = b.imgid AND b.imgid = '$imgid' LIMIT 1";
$query = $this->db->query($sql);
$query = $query->row();
return $query;
}
//根据img_images id查出图片信息
public function img_id($id){
$id = (int)$id;
//先获取img id
$sql = "SELECT a.*,b.mime,b.width,b.height,b.views,b.ext,b.client_name FROM img_images AS a INNER JOIN img_imginfo AS b ON a.id = $id AND a.imgid = b.imgid";
$imginfo = $this->db->query($sql)->row();
return $imginfo;
}
//各种条件的图片查询
public function found_img($type,$page){
//探索发现每页显示16张图片
$limit = 16;
//通用的SQL语句头部
$sql_header = "SELECT a.id,a.imgid,a.path,a.thumb_path,a.date,a.compression,a.level,b.mime,b.width,b.height,b.views,b.ext,b.client_name
FROM img_images AS a
INNER JOIN img_imginfo AS b
ON a.imgid = b.imgid
AND a.user = 'visitor'
AND (a.level = 'everyone' OR a.level = 'unknown') ";
//根据条件生成不同的SQL语句
switch($type){
case 'all':
//查询游客上传图片总数
$num = $this->count_num('visitor')->num;
//$config['base_url'] = "/found/all/";
$sql = $sql_header."ORDER BY a.id DESC LIMIT $limit OFFSET $page";
break;
case 'gif':
$num = $this->count_num('gif')->num;
//$config['base_url'] = "/found/gif/";
$sql = $sql_header."AND b.ext = '.gif' ORDER BY a.id DESC LIMIT $limit OFFSET $page";
break;
case 'views':
$num = $this->count_num('visitor')->num;
//$config['base_url'] = "/found/views/";
$sql = $sql_header."ORDER BY b.views DESC LIMIT $limit OFFSET $page";
break;
case 'large':
$num = $this->count_num('large')->num;
//$config['base_url'] = "/found/large/";
$sql = $sql_header."AND b.width >= 1920 AND b.height >= 1080 ORDER BY a.id DESC LIMIT $limit OFFSET $page";
break;
default:
//查询游客上传图片总数
$num = $this->count_num('visitor')->num;
//$config['base_url'] = "/found/all/";
$sql = $sql_header."ORDER BY a.id DESC LIMIT $limit OFFSET $page";
break;
}
$datas = $this->db->query($sql)->result_array();
return $datas;
}
}
?>