diff --git a/application/controllers/Found.php b/application/controllers/Found.php index 26d51df..8d01f63 100644 --- a/application/controllers/Found.php +++ b/application/controllers/Found.php @@ -9,18 +9,84 @@ $this->load->model('query','',TRUE); //加载辅助函数 } + //方法映射 + public function _remap($type = 'all',$params = array()) + { + $page = @$params[0]; + //var_dump($params); + //exit; + if(!isset($page)){ + $page = 0; + } + $this->index($type,$page); + } //探索发现页面 - public function index(){ + public function index($type = 'all',$page = 0){ + //加载常用类 + $this->load->library('basic'); + //检测用户是否登录 + $data['is_login'] = $this->basic->is_login(); $siteinfo = $this->query->site_setting(); $siteinfo = $siteinfo->values; $siteinfo = json_decode($siteinfo); - + //每页显示16张图片 + $limit = 16; + //echo $page; $siteinfo->title = '探索发现 - '.$siteinfo->title; - + //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' "; + //根据条件生成不同的SQL语句 + switch($type){ + case 'all': + //查询游客上传图片总数 + $num = $this->query->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->query->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->query->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->query->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->query->count_num('visitor')->num; + $config['base_url'] = "/found/all/"; + $sql = $sql_header."ORDER BY a.id DESC LIMIT $limit OFFSET $page"; + break; + } //查询图片信息,返回对象 - $data['imgs'] = $this->query->found(96); + //$data['imgs'] = $this->query->found(96); + $data['imgs'] = $this->db->query($sql)->result_array(); //查询域名 $data['domain'] = $this->query->domain('localhost'); + + + //进行分页 + //调用分页类 + $this->load->library('pagination'); + //$config['base_url'] = "/found/all/"; + $config['total_rows'] = $num; + $config['per_page'] = $limit; + $config['first_url'] = 0; + $config['first_link'] = '首页'; + $config['last_link'] = '尾页'; + $config['attributes'] = array('class' => 'paging'); //设置分页的class + $config['next_link'] = '下一页'; //下一页文本 + $config['prev_link'] = '上一页'; //上一页文本 + + $this->pagination->initialize($config); + $data['page'] = $this->pagination->create_links(); //加载视图 $this->load->view('user/header',$siteinfo); diff --git a/application/controllers/Upload.php b/application/controllers/Upload.php index 8d161ee..3cd853b 100644 --- a/application/controllers/Upload.php +++ b/application/controllers/Upload.php @@ -114,7 +114,17 @@ //生成缩略图 $this->load->library('image'); - $this->image->thumbnail($full_path,290,175); + if(!$this->image->thumbnail($full_path,290,175)){ + //像素太小就不生产缩略图 + $thumbnail_url = $domain.$relative_path; + } + + //CI获取获取.bmp 图片的像素,认为.bmp不是图像类型,改用其它方法获取像素 + if($data['file_type'] == 'image/x-ms-bmp'){ + $tmpinfo = getimagesize($full_path); + $data['image_width'] = $tmpinfo[0]; + $data['image_height'] = $tmpinfo[1]; + } //查询图片是否上传过 if($imginfo = $this->query->repeat($imgid)){ diff --git a/application/helpers/basic_helper.php b/application/helpers/basic_helper.php index 2820b52..6bd764e 100644 --- a/application/helpers/basic_helper.php +++ b/application/helpers/basic_helper.php @@ -84,7 +84,7 @@ case 'image/jpeg': return '.jpg'; break; - case 'image/bmp': + case 'image/x-ms-bmp': return '.bmp'; break; case 'image/webp': diff --git a/application/libraries/Image.php b/application/libraries/Image.php index 7e2b0cd..27d67e2 100644 --- a/application/libraries/Image.php +++ b/application/libraries/Image.php @@ -54,13 +54,12 @@ $config['height'] = $height; $this->CI->load->library('image_lib', $config); $this->CI->image_lib->resize(); - } - + } } - - - - + //图片像素太小了,不创建缩略图 + else{ + return FALSE; + } } //检测是否支持ImageMagick protected function check(){ diff --git a/application/models/Query.php b/application/models/Query.php index 56d774a..e37916b 100644 --- a/application/models/Query.php +++ b/application/models/Query.php @@ -237,6 +237,23 @@ 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; diff --git a/application/views/user/found.php b/application/views/user/found.php index cc580ee..35e0c1f 100644 --- a/application/views/user/found.php +++ b/application/views/user/found.php @@ -2,15 +2,18 @@ // 很无奈的将逻辑写到这里 // 写一个获取缩略图的函数 $this->load->helper('basic'); + //载入常用类 + //$this->load->library('basic'); ?> -
+
-
- +
@@ -31,6 +34,15 @@ + + + + +
@@ -38,7 +50,16 @@ } ?>
+ + +
+
+ +
+
+ +