<?php
class perm_binPerm
{
var $power = "";
function __construct($power)
{
$this->power = intval($power);
$this->powerarr = $this->getPowerArr();
}
function getPowerArr()
{
return array(
'flag' => 1, 'read1' => 2, 'read2' => 4, 'delete1' => 8, 'delete2' => 16, 'edit1' => 32, 'edit2' => 64, 'download1' => 128, 'download2' => 256, 'copy1' => 512, 'copy2' => 1024, 'upload' => 2048, 'folder' => 8192, 'share' => 262144, 'approve' => 524288
);
}
function getPowerTitle()
{
return array(
'flag' => lang('flag_purview_setting'),
'read1' => lang('read_my_file'),
'read2' => lang('read_my_file1'),
'delete1' => lang('delete_my_file'),
'delete2' => lang('delete_all_file'),
'edit1' => lang('edit_my_file'),
'edit2' => lang('edit_all_file'),
'download1' => lang('upload_my_file'),
'download2' => lang('upload_all_file'),
'copy1' => lang('copy_my_file'),
'copy2' => lang('copy_all_file'),
'upload' => lang('uploading'),
'folder' => lang('newfolder'),
'share' => lang('share'),
'approve' => lang('approve'),
);
}
function getPowerIcos(){
return array(
'flag' => '',
'read1' => 'dzz dzz-visibility',
'read2' => 'dzz dzz-all-check',
'delete1' => 'dzz dzz-delete',
'delete2' => 'dzz dzz-all-delete',
'edit1' => 'dzz dzz-netdisk-edit',
'edit2' => 'dzz dzz-all-edit',
'download1' => 'dzz dzz-download',
'download2' => 'dzz dzz-all-download',
'copy1' => 'dzz dzz-copy',
'copy2' => 'dzz dzz-all-copy',
'upload' => 'dzz dzz-upload',
'folder' => 'dzz dzz-folder',
'share' => 'dzz dzz-share',
'approve' => 'dzz dzz-check-box',
);
}
function getMyPower()
return self::getSumByAction(array('read1', 'read2', 'delete1', 'edit1', 'download1', 'download2', 'copy1', 'copy2', 'upload', 'newtype', 'folder', 'link', 'dzzdoc', 'video', 'shortcut', 'share'));
}
function groupPowerPack()
{
$data = array('read' => array('title' => lang('read_only'), 'flag' => 'read', 'permitem' => array('read1', 'read2'), 'tip' => lang('read_only_state')),
'only-download' => array('title' => lang('upload_only'), 'flag' => 'only-download', 'permitem' => array('read1', 'read2', 'download1', 'download2', 'copy1', 'copy2'), 'tip' => lang('upload_only_state')),
'read-write1' => array('title' => lang('read_write') . '1', 'flag' => 'read-write1', 'permitem' => array('read1', 'read2', 'delete1', 'edit1', 'download1', 'copy1', 'upload','folder'), 'tip' => lang('read_write_state')),
'read-write2' => array('title' => lang('read_write') . '2', 'flag' => 'read-write2', 'permitem' => array('read1', 'read2', 'delete1', 'edit1', 'edit2', 'download1', 'download2', 'copy1', 'copy2', 'upload', 'folder'), 'tip' => lang('read_write_state1')),
'read-write3' => array('title' => lang('read_write') . '3', 'flag' => 'read-write3', 'permitem' => array('read1', 'read2', 'edit1', 'edit2', 'download1', 'download2', 'copy1', 'copy2', 'upload', 'folder'), 'tip' => lang('read_write_state2')),
'only-write1' => array('title' => lang('write_only'), 'flag' => 'only-write1', 'permitem' => array('read1', 'upload', 'folder'), 'tip' => lang('write_only_state')),
'all' => array('title' => lang('full_control'), 'flag' => 'all', 'permitem' => 'all', 'tip' => lang('full_control_state'))
);
foreach ($data as $key => $value) {
$data[$key]['power'] = self::getSumByAction($value['permitem']);
}
return $data;
}
function addPower($action)
{
if (isset($this->powerarr[$action])) return $this->power = $this->power | intval($this->powerarr[$action]);
}
function mergePower($perm)
{ return $this->power = intval($this->power & intval($perm));
}
function delPower($action)
{
if (isset($this->powerarr[$action])) return $this->power = $this->power & ~intval($this->powerarr[$action]);
}
function isPower($action)
{
if (!$this->powerarr[$action]) return 0;
return $this->power & intval($this->powerarr[$action]);
}
function returnPower()
{
return $this->power;
}
function havePower($action, $perm)
{
$perm = intval($perm);
$powerarr = self::getPowerArr();
if (!$powerarr[$action]) return 0;
if (!$perm) return 0;
return $perm & intval($powerarr[$action]);
}
function getSumByAction($action = array())
{ $i = 0;
$powerarr = self::getPowerArr();
if ($action == 'all') {
foreach ($powerarr as $key => $val) {
$i += $val;
}
} else {
$i = 1;
foreach ($action as $val) {
$i += intval($powerarr[$val]);
}
}
if (getglobal('setting/allowshare')) {
$power = new perm_binPerm($i);
$i = $power->delPower('share');
}
return $i;
}
function getGroupPower($type)
{ $data = self::groupPowerPack();
return $data[$type]['power'];
}
function getGroupTitleByPower($power)
{
$data = self::groupPowerPack();
foreach ($data as $key => $value) {
if ($value['power'] == $power) return $value;
}
return $data['read'];
}
}