function filedepot::getPermissionObject in filedepot 7
Function to retreive all user access records for a specific category and user
Parameters
type $cid:
type $userid:
Return value
filedepot_permission_object
4 calls to filedepot::getPermissionObject()
- filedepot::checkPermission in ./
filedepot.class.php - filedepot::renameCategory in ./
filedepot.class.php - Rename a category
- filedepot::renameFile in ./
filedepot.class.php - Rename a file
- filedepot::setSingleFolderOrder in ./
filedepot.class.php - Set the order of a single folder
File
- ./
filedepot.class.php, line 223 - filedepot.class.php Main class for the Filedepot module
Class
- filedepot
- @file filedepot.class.php Main class for the Filedepot module
Code
function getPermissionObject($cid, $userid = 0) {
global $user;
if (intval($cid) < 1) {
return filedepot_permission_object::createNoPermissionsObject($cid);
}
// Using a supplied userid or the current global one
if ($userid == 0) {
if (empty($user->uid) or $user->uid == 0) {
$uid = 0;
}
else {
$uid = $user->uid;
}
}
else {
$uid = $userid;
}
$account = user_load($uid);
if (user_access('administer filedepot', $account) === TRUE) {
return filedepot_permission_object::createFullPermissionObject($cid);
}
else {
// Check to see if a permission object already exists
if (isset(self::$_permission_objects[$uid][$cid])) {
return self::$_permission_objects[$uid][$cid];
}
$po = new filedepot_permission_object($cid);
// Check user access records
$query = db_select('filedepot_access', 'a');
$query
->fields('a', array(
'view',
'upload',
'upload_direct',
'upload_ver',
'approval',
'admin',
));
$query
->condition('a.catid', $cid, '=');
$query
->condition('a.permtype', 'user', '=');
$query
->condition('a.permid', $uid, '=');
$query
->addTag('filedepot_user_access');
$results = $query
->execute();
foreach ($results as $rec) {
$rec_array = (array) $rec;
list($view, $upload, $upload_dir, $upload_ver, $approval, $admin) = array_values($rec_array);
$po
->setTruePermissions($view, $upload, $upload_dir, $upload_ver, $approval, $admin);
}
if ($this->ogenabled) {
// Retrieve all the Organic Groups this user is a member of
$groupids = $this
->get_user_groups($uid);
foreach ($groupids as $gid) {
$query = db_select('filedepot_access', 'a');
$query
->fields('a', array(
'view',
'upload',
'upload_direct',
'upload_ver',
'approval',
'admin',
));
$query
->condition('a.catid', $cid, '=');
$query
->condition('a.permtype', 'group', '=');
$query
->condition('a.permid', $gid, '=');
$query
->addTag('filedepot_group_access');
$query
->addMetaData('groups', $groupids);
$query
->addMetaData('cid', $cid);
$results = $query
->execute();
foreach ($results as $rec) {
$rec_array = (array) $rec;
list($view, $upload, $upload_dir, $upload_ver, $approval, $admin) = array_values($rec_array);
$po
->setTruePermissions($view, $upload, $upload_dir, $upload_ver, $approval, $admin);
}
}
}
// For each role that the user is a member of - check if they have the right
foreach ($account->roles as $rid => $role) {
$query = db_select('filedepot_access', 'a');
$query
->fields('a', array(
'view',
'upload',
'upload_direct',
'upload_ver',
'approval',
'admin',
));
$query
->condition('a.catid', $cid, '=');
$query
->condition('a.permtype', 'role', '=');
$query
->condition('a.permid', $rid, '=');
$query
->addTag('filedepot_role_access');
$results = $query
->execute();
foreach ($results as $rec) {
$rec_array = (array) $rec;
list($view, $upload, $upload_dir, $upload_ver, $approval, $admin) = array_values($rec_array);
$po
->setTruePermissions($view, $upload, $upload_dir, $upload_ver, $approval, $admin);
}
}
self::$_permission_objects[$uid][$cid] = $po;
return $po;
}
}