Files
plugins/PostsCategoryChange/Action.php
chorblack e75f275ef4
Some checks failed
定时更新GitHub源插件 / 自动更新GitHub插件 (push) Has been cancelled
Initial commit
2026-03-07 11:19:25 +08:00

115 lines
4.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
class PostsCategoryChange_Action extends Typecho_Widget implements Widget_Interface_Do
{
private $db;
private $prefix;
public function action()
{
$user = Typecho_Widget::widget('Widget_User');
$user->pass('administrator');
$this->options = Typecho_Widget::widget('Widget_Options');
$this->db = Typecho_Db::get();
$this->prefix = $this->db->getPrefix();
$this->on($this->request->is('do=change-category'))->makeChange();
$this->on($this->request->is('do=change-status'))->changeStatus();
exit;
}
public function makeChange()
{
$cids = $this->request->filter('int')->getArray('cid');
$mid = $this->request->filter('int')->get('mid');
if(empty($cids)) {
echo json_encode(['code'=>-1,'msg'=>'大佬,至少选择一篇文章!']);
return;
} else if(empty($mid)) {
echo json_encode(['code'=>-1,'msg'=>'大佬,请选择一个分类!']);
return;
} else {
$cid = implode(',',$cids);
$select = 'SELECT cid FROM '.$this->prefix.'contents where cid in('.$cid.') and type="post"';
$res = $this->db->fetchAll($this->db->query($select));
if(empty($res)) {
echo json_encode(['code'=>-1,'msg'=>'f**k,别特么瞎jb搞']);
return;
} else {
$post_cid = '';
foreach ($res as $value) {
$post_cid .= $value['cid'].',';
}
$post_cid = trim($post_cid,',');
$select = 'SELECT mid,type FROM '.$this->prefix.'metas where type="category"';
$res = $this->db->fetchAll($this->db->query($select));
$category_mid = '';
foreach ($res as $value) {
$category_mid .= $value['mid'].',';
}
$category_mid = trim($category_mid,',');
$res = $this->db->fetchAll($this->db->query($select));
$update = $this->db->update($this->prefix.'relationships')->rows(array('mid'=>$mid))->where('cid in ('.$post_cid.') AND mid IN ('.$category_mid.')');
$row = @$this->db->query($update);
if($row) {
echo json_encode(['code'=>1,'msg'=>'本次成功更新'.$row.'篇文章!']);
return;
} else {
echo json_encode(['code'=>-1,'msg'=>'更新失败']);
return;
}
}
}
}
public function changeStatus()
{
$cids = $this->request->filter('int')->getArray('cid');
$status = $this->request->filter('int')->get('status');
if(empty($cids)) {
echo json_encode(['code'=>-1,'msg'=>'大佬,至少选择一篇文章!']);
return;
} else if(empty($status)) {
echo json_encode(['code'=>-1,'msg'=>'大佬,请选择一个文章状态!']);
return;
} else {
$status_arr = [
'1'=>'publish',
'2'=>'hidden',
'3'=>'private'
];
if(!array_key_exists($status,$status_arr)) {
echo json_encode(['code'=>-1,'msg'=>'f**k,别特么瞎jb搞']);
return ;
} else {
$status = $status_arr[$status];
}
$cid = implode(',',$cids);
$select = 'SELECT cid,status FROM '.$this->prefix.'contents where cid in('.$cid.') and type="post"';
$res = $this->db->fetchAll($this->db->query($select));
if(empty($res)) {
echo json_encode(['code'=>-1,'msg'=>'f**k,别特么瞎jb搞']);
return;
} else {
$count = 0;
foreach ($res as $value) {
$update = $this->db->update($this->prefix.'contents')->rows(array('status'=>$status))->where('cid in ('.$value['cid'].')');
@$this->db->query($update) && $count ++;
}
if($count>0) {
echo json_encode(['code'=>1,'msg'=>'本次成功更新'.$count.'篇文章!']);
return;
} else {
echo json_encode(['code'=>-1,'msg'=>'更新失败']);
return;
}
}
}
}
}