Files
BESCMS/dayrui/App/Cms/Models/Verify.php
T

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);
}
}