00001 <?php
00002
00009 final class SnapDirectoryGroupPermission extends SnapGroupPermissionObject {
00019 public function __construct($dirId, $gid) {
00020 if($dirId instanceof SnapDirectory)
00021 $dirId = $dirId->getId();
00022
00023 parent::__construct('Directory', $dirId, 'Group', $gid);
00024 }
00025
00035 public static function copy($parentId, $childId) {
00036 if(!SnapDBI::startTransaction())
00037 return false;
00038
00039 $query = 'INSERT INTO DirectoryGroupPermission (gid, directoryId, permission, defaultMask) '
00040 . 'SELECT gid, ' . $childId . ', permission, defaultMask FROM DirectoryGroupPermission '
00041 . 'WHERE directoryId = ' . $parentId;
00042 if(!SnapDBI::query($query)) {
00043 SnapDBI::cancelTransaction();
00044 return false;
00045 }
00046
00047 SnapDBI::commitTransaction();
00048
00049 return true;
00050 }
00051
00061 public static function retrieve($dirId, $gid) {
00062 if($dirId instanceof SnapDirectory)
00063 $dirId = $dirId->getId();
00064
00065 $id = 'D:' . $dirId . ';' . 'G:' . $gid;
00066 $obj = SnapCache::getById('DirectoryGroupPermission', $id);
00067 if(!$obj) {
00068 $obj = new SnapDirectoryGroupPermission($dirId, $gid);
00069 SnapCache::putById('DirectoryGroupPermission', $obj->getId(), $obj);
00070 }
00071
00072 return $obj;
00073 }
00074
00084 public static function getGroupPermissionsForUser($dirId, $uid = '') {
00085 if($dirId instanceof SnapDirectory)
00086 $dirId = $dirId->getId();
00087 return self::getGroupPermissionsForUser_base('Directory', $dirId, $uid);
00088 }
00089 }
00090
00091 ?>