00001 <?php
00002
00009 final class SnapDirectoryUserPermission extends SnapPermissionObject {
00019 public function __construct($dirId, $uid = '') {
00020 if($dirId instanceof SnapDirectory)
00021 $dirId = $dirId->getId();
00022 if($uid == '')
00023 $uid = Snap2::getCurrentUser();
00024
00025 parent::__construct('Directory', $dirId, 'User', $uid);
00026 }
00027
00037 public static function copy($parentId, $childId) {
00038 if(!SnapDBI::startTransaction())
00039 return false;
00040
00041 $query = 'INSERT INTO DirectoryUserPermission (uid, directoryId, permission, defaultMask) '
00042 . 'SELECT uid, ' . $childId . ', permission, defaultMask FROM DirectoryUserPermission '
00043 . 'WHERE directoryId = ' . $parentId;
00044 if(!SnapDBI::query($query)) {
00045 SnapDBI::cancelTransaction();
00046 return false;
00047 }
00048
00049 SnapDBI::commitTransaction();
00050
00051 return true;
00052 }
00053
00063 public static function retrieve($dirId, $uid = '') {
00064 if($uid == '')
00065 $uid = Snap2::getCurrentUser();
00066 if($dirId instanceof SnapDirectory)
00067 $dirId = $dirId->getId();
00068
00069 $id = 'D:' . $dirId . ';' . 'U:' . $uid;
00070 $obj = SnapCache::getById('DirectoryUserPermission', $id);
00071 if(!$obj) {
00072 $obj = new SnapDirectoryUserPermission($dirId, $uid);
00073 SnapCache::putById('DirectoryUserPermission', $obj->getId(), $obj);
00074 }
00075
00076 return $obj;
00077 }
00078 }
00079
00080 ?>