176 lines
5.8 KiB
PHP
176 lines
5.8 KiB
PHP
<?php namespace Phpcmf\Model\Cms;
|
|
/**
|
|
* 本文件是框架系统文件,二次开发时不可以修改本文件,可以通过继承类方法来重写此文件
|
|
**/
|
|
|
|
// 审核类
|
|
class Verify extends \Phpcmf\Model {
|
|
|
|
// 验证是否具有审核状态
|
|
public function _get_verify_status_edit($vid, $status) {
|
|
|
|
if (dr_in_array(1, $this->admin['roleid'])) {
|
|
return 1; // 超管用户
|
|
} elseif ($status == 0) {
|
|
return 1; // 退稿的可以看到
|
|
} elseif (\Phpcmf\Service::M('auth')->is_post_user()) {
|
|
return 0; // 投稿者不允许编辑审核
|
|
}
|
|
|
|
if (!IS_USE_MEMBER) {
|
|
return 1;
|
|
}
|
|
|
|
$verify = \Phpcmf\Service::C()->get_cache('verify');
|
|
if (!$verify) {
|
|
return 0; // 没有审核流程时
|
|
}
|
|
|
|
$my = [];
|
|
foreach ($verify as $t) {
|
|
if ($t['value']['role']) {
|
|
$rid = [];
|
|
foreach ($t['value']['role'] as $c) {
|
|
if (is_array($c)) {
|
|
$rid = array_merge($rid, $c);
|
|
} elseif (is_numeric($c)) {
|
|
$rid[] = $c;
|
|
}
|
|
}
|
|
if (dr_array_intersect($rid, $this->admin['roleid'])) {
|
|
$my[] = $t['id'];
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!$my) {
|
|
// 此管理员没有管理权限
|
|
return 0;
|
|
}
|
|
|
|
// 有权限了
|
|
if (dr_in_array($vid, $my)) {
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
// 获取当前栏目的时候流程
|
|
public function _get_verify($vid) {
|
|
|
|
$rt = [];
|
|
$cache = \Phpcmf\Service::C()->get_cache('verify');
|
|
if ($cache && $vid && $cache[$vid]) {
|
|
$verify = $cache[$vid];
|
|
if ($verify['value']['role']) {
|
|
$role = \Phpcmf\Service::C()->get_cache('auth');
|
|
foreach ($verify['value']['role'] as $id => $rid) {
|
|
if (!is_array($rid)) {
|
|
if (isset($role[$rid]) && $role[$rid]) {
|
|
$rt[$id] = [
|
|
'rid' => $rid,
|
|
'name' => dr_lang($role[$rid]['name'] ? $role[$rid]['name'] : '管理员'),
|
|
];
|
|
}
|
|
} else {
|
|
$ns = [];
|
|
foreach ($rid as $r) {
|
|
if (isset($role[$r]) && $role[$r]) {
|
|
$ns[] = dr_lang($role[$r]['name'] ? $role[$r]['name'] : '管理员');
|
|
}
|
|
}
|
|
if ($ns) {
|
|
$ns = array_unique($ns);
|
|
$rt[$id] = [
|
|
'rid' => $r,
|
|
'name' => implode('、', $ns),
|
|
];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$rt[9] = [
|
|
'name' => dr_lang('完成'),
|
|
];
|
|
|
|
return $rt;
|
|
}
|
|
|
|
// 审核时候的权限组,返回可用权限组的id
|
|
// array(
|
|
// * to_uid 指定人
|
|
// * to_rid 指定角色组
|
|
// * )
|
|
public function _get_verify_roleid($catid, $status, $member) {
|
|
|
|
$verify = \Phpcmf\Service::C()->get_cache('verify');
|
|
if (!$verify) {
|
|
return ['to_uid' => 0, 'to_rid' => 0, 'verify_id' => 0];
|
|
}
|
|
|
|
if (IS_MEMBER) {
|
|
// 前端找用户设置
|
|
$auth = \Phpcmf\Service::M('member_auth', 'cms')->category_auth(\Phpcmf\Service::C()->module, $catid, 'verify', $member);
|
|
} else {
|
|
// 后台投稿者
|
|
$auth = \Phpcmf\Service::M('auth')->is_post_user_status();
|
|
}
|
|
|
|
if ($auth && isset($verify[$auth]) && $verify[$auth]) {
|
|
$v = $verify[$auth];
|
|
$status = max(1, $status);
|
|
if (isset($v['value']['role'][$status]) && $v['value']['role'][$status]) {
|
|
if (is_array($v['value']['role'][$status])) {
|
|
return ['to_uid' => 0, 'to_rid' => implode(',', $v['value']['role'][$status]), 'verify_id' => $v['id']];
|
|
} else {
|
|
return ['to_uid' => 0, 'to_rid' => $v['value']['role'][$status], 'verify_id' => $v['id']];
|
|
}
|
|
}
|
|
}
|
|
|
|
return ['to_uid' => 0, 'to_rid' => 0, 'verify_id' => 0];
|
|
}
|
|
|
|
// 后台内容审核列表的权限的sql语句
|
|
public function get_admin_verify_status_list() {
|
|
|
|
if (dr_in_array(1, \Phpcmf\Service::C()->admin['roleid'])) {
|
|
return '`status`>=0'; // 超管用户
|
|
} elseif (!IS_USE_MEMBER && !\Phpcmf\Service::M('auth')->is_post_user()) {
|
|
return '`status`>=0'; // 普通管理员
|
|
}
|
|
|
|
$verify = \Phpcmf\Service::C()->get_cache('verify');
|
|
if (!$verify) {
|
|
return '`status`=0'; // 没有审核流程时
|
|
}
|
|
|
|
$where = [];
|
|
foreach ($verify as $t) {
|
|
if ($t['value']['role']) {
|
|
foreach ($t['value']['role'] as $status => $rid) {
|
|
if (is_array($rid)) {
|
|
if (dr_array_intersect($rid, \Phpcmf\Service::C()->admin['roleid'])) {
|
|
$where[] = '(`status`='.$status.' and `vid`='.$t['id'].')';
|
|
}
|
|
} else {
|
|
if (dr_in_array($rid, \Phpcmf\Service::C()->admin['roleid'])) {
|
|
$where[] = '(`status`='.$status.' and `vid`='.$t['id'].')';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// 此管理员没有管理权限
|
|
if (!$where) {
|
|
return 'status=0';
|
|
}
|
|
|
|
return '`status` = 0 OR '.implode(' OR ', $where);
|
|
}
|
|
|
|
} |