get_data.php,canon/get_data.php at master · jasonslyvia/canon · GitHub

news/2025/2/21 7:23:46/

/*

* 用于网站各种模块的图片数据获取(Grid/Tile)

*

* - 首页(热门、最新)

* - 个人(保存、喜欢、评论、关注、粉丝)

* - 搜索(热门、最新、我的图片、用户)

* - 主题

* - 动态

*/

define('PAGE_SIZE', 10);

define('WP_USE_THEMES', false);

require_once('settings.php');

require_once(CANON_ABSPATH.'wp-load.php');

$page_size = PAGE_SIZE;

/***************************************************

* 首页

**************************************************/

//首页热门

//获取热门图片排序

//计算方法:保存数+喜欢数的和按倒序排列

//可选参数 评论数、浏览量

function get_index_popular_image($page = 1){

global $wpdb;

global $query;

$limit = --$page * PAGE_SIZE;

$page_size = PAGE_SIZE;

$hot_result = $wpdb->get_results("

select p.ID

from wp_posts p

left join (

select pic_id, count(pic_id) as sc

from pic_save

group by pic_id

) s on s.pic_id = p.ID

left join (

select pic_id, count(pic_id) as lc

from pic_like

group by pic_id

) l on l.pic_id = p.ID

where p.post_type = 'post' and p.post_status = 'publish'

group by p.ID

order by (coalesce(s.sc,0) + coalesce(l.lc, 0)) desc

limit {$limit},{$page_size}

", ARRAY_N);

if (count($hot_result) === 0) {

return_no_result();

}

$hot_ids = array_values(call_user_func_array('array_merge', $hot_result));

$query = new WP_Query(array("post__in" => $hot_ids,

"orderby" => "none"));

$query->ad = should_display_ad($page, "index");

require('get_pic_grid.php');

}

//首页最新

function get_index_recent_image($page = 1){

global $wpdb;

global $query;

$page_size = PAGE_SIZE;

$query = new WP_Query(array("posts_per_page" => $page_size,

"offset" => --$page * $page_size));

if (!$query->have_posts()) {

return_no_result();

}

$query->ad = should_display_ad($page, "index");

require('get_pic_grid.php');

}

/***************************************************

* 个人

**************************************************/

//个人保存

function get_user_saved_image($user_id, $page = 1, $display = true){

global $wpdb;

global $query;

$page_size = PAGE_SIZE;

$limit = --$page * $page_size;

$saved_record = $wpdb->get_col("

SELECT pic_id as p FROM pic_save

WHERE user_id = {$user_id}

LIMIT {$limit},{$page_size}

");

if (count($saved_record) == 0) {

$query = null;

$post_count = 0;

if ($display) {

return_no_result();

}

}

else{

$args = array("post__in" => $saved_record,

"posts_per_page" => PAGE_SIZE);

$query = new WP_Query($args);

$post_count = $query->found_posts;

}

if ($display) {

$query->ad = should_display_ad($page, "user");

require('get_pic_grid.php');

}

else{

return array($query, $post_count);

}

}

//个人粉丝

function get_user_followed_image($user_id, $page = 1, $display = true){

global $query;

global $wpdb;

$follow_record = $wpdb->get_results("

SELECT ur.follower_id, wu.display_name

FROM user_relation ur

LEFT JOIN wp_users wu ON wu.ID = follower_id

WHERE followee_id = {$user_id}

", ARRAY_A);

if (count($follow_record) > 0) {

$post_count = count($follow_record);

$query = new WP_Query(array("author__in" => array_map(function($el){

return $el['follower_id'];

}, $follow_record),

"posts_per_page" => PAGE_SIZE,

"offset" => --$page * PAGE_SIZE));

}

else{

$query = null;

$post_count = 0;

if ($display) {

return_no_result();

}

}

if ($display) {

$query->ad = should_display_ad($page, "user");

require('get_pic_grid.php');

}

else{

return array($query, $post_count, $follow_record);

}

}

//个人关注

function get_user_following_image($user_id, $page = 1, $display = true){

global $query;

global $wpdb;

$follow_record = $wpdb->get_results("

SELECT ur.followee_id, wu.display_name

FROM user_relation ur

LEFT JOIN wp_users wu ON wu.ID = ur.followee_id

WHERE follower_id = {$user_id}

", ARRAY_A);

if (count($follow_record) > 0) {

$post_count = count($follow_record);

$query = new WP_Query(array("author__in" => array_map(function($el){

return $el['followee_id'];

}, $follow_record),

"posts_per_page" => PAGE_SIZE,

"offset" => --$page * PAGE_SIZE));

}

else{

$query = null;

$post_count = 0;

if ($display) {

return_no_result();

}

}

if ($display) {

$query->ad = should_display_ad($page, "user");

require('get_pic_grid.php');

}

else{

return array($query, $post_count, $follow_record);

}

}

//个人喜欢

function get_user_liked_image($user_id, $page = 1, $display = true){

global $query;

global $wpdb;

$page_size = PAGE_SIZE;

$limit = --$page * $page_size;

$like_record = $wpdb->get_col("

SELECT pic_id FROM pic_like

WHERE user_id = {$user_id}

LIMIT {$limit},{$page_size}

");

if (count($like_record) > 0) {

$args = array("post__in" => $like_record,

"posts_per_page" => PAGE_SIZE);

$query = new WP_Query($args);

$post_count = $query->found_posts;

}

else{

$query = null;

$post_count = 0;

if ($display) {

return_no_result();

}

}

if ($display) {

$query->ad = should_display_ad($page, "user");

require('get_pic_grid.php');

}

else{

return array($query, $post_count);

}

}

//个人评论

function get_user_comment_image($user_id, $page = 1, $display = true){

global $query;

global $wpdb;

//获取用户的所有评论

$comments = get_comments(array("user_id" => $user_id));

if (count($comments) > 0) {

$comment_post_array = array();

//获取每一条评论对应的图片id

foreach ($comments as $comment) {

array_push($comment_post_array, $comment->comment_post_ID);

}

$args = array("post__in" => $comment_post_array,

"posts_per_page" => PAGE_SIZE,

"offset" => --$page * PAGE_SIZE);

$query = new WP_Query($args);

$post_count = count($comments);

//若没有更多图片

if (!$query->have_posts() && $display) {

return_no_result();

}

}

else{

$query = null;

$post_count = 0;

}

if ($display) {

$query->ad = should_display_ad($page, "user");

require('get_pic_grid.php');

}

else{

return array($query, $post_count);

}

}

/***************************************************

* 搜索

**************************************************/

//搜索热门图片

function get_search_popular_image($term, $page = 1, $display = true){

global $wpdb;

global $query;

$page_size = PAGE_SIZE;

$limit = --$page * $page_size;

$result = $wpdb->get_results(

$wpdb->prepare("

select p.ID

from wp_posts p

left join (

select pic_id, count(pic_id) as sc

from pic_save

group by pic_id

) s on s.pic_id = p.ID

left join (

select pic_id, count(pic_id) as lc

from pic_like

group by pic_id

) l on l.pic_id = p.ID

left join wp_postmeta pm on pm.post_id = p.ID

where (p.post_type = 'post' and p.post_status = 'publish')

and

(p.post_title LIKE '%%%s%%' OR

(pm.meta_key = 'referrer' AND pm.meta_value LIKE '%%%s%%'))

group by p.ID

order by (coalesce(s.sc,0) + coalesce(l.lc, 0)) desc

limit {$limit},{$page_size}

", $term, $term), ARRAY_N

);

if (count($result)) {

$query = new WP_Query(array("post__in" => array_values(call_user_func_array('array_merge', $result)),

"posts_per_page" => PAGE_SIZE,

"orderby" => "none"));

}

else if($display){

return_no_result();

}

if ($display) {

$query->ad = should_display_ad($page, "search");

require('get_pic_grid.php');

}

else{

return array($query);

}

}

//搜索最新图片

function get_search_recent_image($term, $page = 1, $display = true){

global $wpdb;

global $query;

$page_size = PAGE_SIZE;

$limit = --$page * $page_size;

$result = $wpdb->get_results(

$wpdb->prepare("

SELECT p.ID as pid FROM wp_posts p

LEFT JOIN wp_postmeta pm ON pm.post_id = p.ID

WHERE (p.post_title LIKE '%%%s%%' OR

(pm.meta_key = 'referrer' AND pm.meta_value LIKE '%%%s%%'))

AND

(p.post_type = 'post' AND p.post_status = 'publish')

GROUP BY pid

ORDER BY p.post_date DESC

LIMIT {$limit},{$page_size}

", $term, $term), ARRAY_N

);

if (count($result)) {

$query = new WP_Query(array("post__in" => array_values(call_user_func_array('array_merge', $result)),

"posts_per_page" => PAGE_SIZE));

}

else if ($display) {

return_no_result();

}

if ($display) {

$query->ad = should_display_ad($page, "search");

require('get_pic_grid.php');

}

else{

return array($query);

}

}

//搜索我的图片

function get_search_my_image($term, $page = 1, $display = true){

global $wpdb;

global $query;

$page_size = PAGE_SIZE;

$limit = --$page * $page_size;

$result = $wpdb->get_results(

$wpdb->prepare("

SELECT p.ID as pid FROM pic_save pc

LEFT JOIN wp_posts p ON pc.pic_id = p.ID

LEFT JOIN wp_postmeta pm ON pm.post_id = p.ID

WHERE (p.post_title LIKE '%%%s%%' OR

(pm.meta_key = 'referrer' AND pm.meta_value LIKE '%%%s%%'))

AND

(p.post_type = 'post' AND p.post_status = 'publish')

AND

pc.user_id = %d

GROUP BY pid

ORDER BY p.post_date DESC

LIMIT {$limit},{$page_size}

", $term, $term, get_current_user_id()), ARRAY_N

);

if (count($result)) {

$query = new WP_Query(array("post__in" => array_values(call_user_func_array('array_merge', $result)),

"posts_per_page" => PAGE_SIZE));

}

else if ($display) {

return_no_result();

}

if ($display) {

$query->ad = should_display_ad($page, "search");

require('get_pic_grid.php');

}

else{

return array($query);

}

}

//搜索用户

function get_search_user($term, $page = 1, $display = true){

global $wpdb;

$page_size = PAGE_SIZE;

$limit = --$page * $page_size;

$user_result = $wpdb->get_results(

$wpdb->prepare("

SELECT display_name, ID

FROM wp_users

WHERE display_name LIKE '%%%s%%'

LIMIT {$limit},{$page_size}

", $term), ARRAY_A

);

if ($display) {

if (count($user_result)) {

foreach ($user_result as $user) {

$uid = $user["ID"];

$avatar = canon_get_avatar($uid, "avatar");

echo<<

{$user["display_name"]}

%7B%24avatar%7D

html;

}

}

else{

return_no_result();

}

}

else{

return $user_result;

}

}

/***************************************************

* 主题

**************************************************/

function get_category_image($category, $page = 1, $display = true){

global $wpdb;

$query = new WP_Query(array("category__in" => array($category),

"posts_per_page" => PAGE_SIZE,

"offset" => --$page * PAGE_SIZE));

if (!$query->have_posts() && $display) {

return_no_result();

}

if ($display) {

$query->ad = should_display_ad($page, "search");

require_once('get_pic_grid.php');

}

else{

return $query;

}

}

/***************************************************

* 动态

**************************************************/

function get_activity($user_id, $page = 1, $display = true, $ajax = false){

global $wpdb;

date_default_timezone_set('UTC');

//首先选出该用户的所有图片id

global $wpdb;

$c_user_pics = $wpdb->get_results("

SELECT ID FROM wp_posts

WHERE post_author = {$user_id}

AND post_status = 'publish'

AND post_type = 'post'

", ARRAY_N);

if (count($c_user_pics) > 0) {

//然后选出保存和喜欢了这些图片的所有用户id、昵称及操作时间

$c_user_pics_id = implode(',', call_user_func_array('array_merge', $c_user_pics));

}

else{

$c_user_pics_id = '';

}

$limit = --$page * PAGE_SIZE;

$page_size = PAGE_SIZE;

$activity_result = $wpdb->get_results("

select

op.user_id as uid,

u.display_name as name,

p.post_title as title,

p.post_content as content,

pm.meta_value as avatar,

pic_id as pid, time, event

from (

select user_id, pic_id, time, '保存' as event

from pic_save

where pic_id in ({$c_user_pics_id}) and user_id != {$user_id}

union all

select user_id, pic_id, time, '喜欢' as event

from pic_like

where pic_id in ({$c_user_pics_id}) and user_id != {$user_id}

union all

select follower_id as user_id, 0 as pic_id, time, '关注' as event

from user_relation

where followee_id = {$user_id}

) as op

left join wp_users u on u.ID = op.user_id

left join wp_posts p on (p.ID = pic_id and p.post_status = 'publish')

left join wp_usermeta pm on (pm.user_id = op.user_id and pm.meta_key = 'avatar_small')

order by time desc

limit {$limit},{$page_size}

");

if ($display) {

//若存在动态内容

if (count($activity_result) != 0) {

foreach ($activity_result as $activity) {

$uid = $activity->uid;

$pid = $activity->pid;

//常量heredoc

$activity->avatar = canon_get_avatar($uid, 'avatar_small');

if ($activity->event != "关注") {

$image = canon_get_image($pid, true);

$message =<<

{$activity->event}了你的图片

%7B%24image%7D

message;

}

else{

$message = '关注了你';

}

$time = human_time_diff(strtotime($activity->time),

current_time('timestamp'));

echo<<

%7B%24activity->avatar%7D

width="30" height="30" />

{$time}前

{$activity->name}

{$message}

html;

}

}

else if ($ajax) {

return_no_result();

}

else{

echo '

当有人关注您,或保存、喜欢您的图片时,您都可以在这里看到。
';

}

}

else{

return $activity_result;

}

}

/***************************************************

* 颜色

**************************************************/

function get_color_image($color, $page = 1, $display = true){

global $wpdb;

$args = array(

'meta_query' => array(

array(

'key' => 'color',

'value' => $color,

'compare' => 'LIKE',

)

),

"posts_per_page" => PAGE_SIZE,

"offset" => --$page * PAGE_SIZE

);

$query = new WP_Query($args);

if (!$query->have_posts() && $display) {

return_no_result();

}

if ($display) {

require_once('get_pic_grid.php');

}

else{

return $query;

}

}

//当没有内容时返回的信息

function return_no_result(){

echo '

exit();

}

/*

* 根据内容的类型和数量判断是否显示广告

*

* @param {int} page 当前显示的页数

* @param {string} type 内容的类型

* @return {bool}

*/

function should_display_ad($page = 1, $type = "index"){

if ($page == 0 && $type == "index") {

return false;

}

$ads_arr = array("index", "search", "category");

if ($page % 2 == 0 && in_array($type, $ads_arr)) {

return true;

}

else{

return false;

}

}


http://www.ppmy.cn/news/333308.html

相关文章

linux佳能打印机服务,技术|为 Linux 选择打印机

Linux 为打印机提供了广泛的支持。学习如何利用它。 我们在传闻已久的无纸化社会方面取得了重大进展,但我们仍需要不时打印文件。如果你是 Linux 用户,并有一台没有 Linux 安装盘的打印机,或者你正准备在市场上购买新设备,那么你很幸运。因为大多数 Linux 发行版(以及 MacO…

ad网络标号怎么批量设置_佳能网络扫描怎么设置?图文步骤详解,29年打印经验总结...

第一步&#xff1a;在电脑硬盘的根目录中建立共享文件夹&#xff0c;名字随便取&#xff0c;(建议不要建在桌面上)&#xff0c;以win7为例&#xff1b;(适用于canon ir 2530i) 第二步&#xff1a;设备复印机&#xff0c;用任意浏览器地址栏中输入复印机的IP地址&#xff1b; 点…

hdu 2204 容斥原理

点击打开链接 以下为参考大牛http://blog.csdn.net/acm_cxlove/article/details/7873776 题目&#xff1a;求出1-N里面能表示 成M^K的数有多少个 求A^B在<n的最大的A,所以1~A也都满足 //如果A^B在<n&#xff0c;那么i^B<n &#xff08;A>i>1) //因为2^60…

快捷便利,大道至简:佳能WG7850和iR2206AD评测

高效快捷&#xff0c;稳定易用&#xff0c;一直以来都是企业用户对于办公打印的诉求。而集丰富功能与便捷操作于一体的数码复合机产品&#xff0c;也正是为此而生。 为了更好地满足企业对于高效办公的需求&#xff0c;佳能也推出了喷墨多功能数码复合机WG7850&#xff0c;黑白多…

【DP】 FZU 2204 7 成环

点击打开链接 dp[][][][] 存方法数 第一维 存第一个放黑球还是白球 第二维 存第i个球 第三维 存第i个球是黑还是白 第四维 存第i个球前连续几个球是相同颜色 要减去 第n-i 个球的时候开头有i个相同颜色的求 #include <stdio.h> #include <string.h> #includ…

如何弄ad装配图_AD打印装配图的细节

前言 生产的同事初步焊接好了打样后的PCB,用工业显微镜检测发现了10处问题。 和他讨论时,他要求将背面的装配图打印出来(开始他用的装配图是其他同事打印的,只打印了正面)。 我试着用佳能mf4800网络打印机打印时,发现零件丝印根本看不清,但是版本信息的大字体和元件轮廓都…

佳能打印机浏览不到计算机,电脑为什么不识别佳能打印?

2010-10-13 怎么安装打印机?新买的台式电脑,已经安 共享打印机 第一步:将打印机连接至主机,打开打印机电源,通过主机的“控制面板”进入到“打印机和传真”文件夹,在空白处单击鼠标右键,选择“添加打印机”命令,打开添加打印机向导窗口。选择“连接到此计算机的本地打印…

主流解压缩软件有哪些?这四款可以满足你的所有需求

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 第一款&#xff1a;bandizip&#xff08;推荐&#xff09; 第二款&#xff1a;7-zip 第三款&#xff1a;Nanazip 第四款&#xff1a…