| @@ 1148-1171 (lines=24) @@ | ||
| 1145 | * @param Member $member |
|
| 1146 | * @return bool True if the current user can publish this record. |
|
| 1147 | */ |
|
| 1148 | public function canPublish($member = null) { |
|
| 1149 | // Skip if invoked by extendedCan() |
|
| 1150 | if(func_num_args() > 4) { |
|
| 1151 | return null; |
|
| 1152 | } |
|
| 1153 | ||
| 1154 | if(!$member) { |
|
| 1155 | $member = Member::currentUser(); |
|
| 1156 | } |
|
| 1157 | ||
| 1158 | if(Permission::checkMember($member, "ADMIN")) { |
|
| 1159 | return true; |
|
| 1160 | } |
|
| 1161 | ||
| 1162 | // Standard mechanism for accepting permission changes from extensions |
|
| 1163 | $owner = $this->owner; |
|
| 1164 | $extended = $owner->extendedCan('canPublish', $member); |
|
| 1165 | if($extended !== null) { |
|
| 1166 | return $extended; |
|
| 1167 | } |
|
| 1168 | ||
| 1169 | // Default to relying on edit permission |
|
| 1170 | return $owner->canEdit($member); |
|
| 1171 | } |
|
| 1172 | ||
| 1173 | /** |
|
| 1174 | * Check if the current user can delete this record from live |
|
| @@ 1179-1202 (lines=24) @@ | ||
| 1176 | * @param null $member |
|
| 1177 | * @return mixed |
|
| 1178 | */ |
|
| 1179 | public function canUnpublish($member = null) { |
|
| 1180 | // Skip if invoked by extendedCan() |
|
| 1181 | if(func_num_args() > 4) { |
|
| 1182 | return null; |
|
| 1183 | } |
|
| 1184 | ||
| 1185 | if(!$member) { |
|
| 1186 | $member = Member::currentUser(); |
|
| 1187 | } |
|
| 1188 | ||
| 1189 | if(Permission::checkMember($member, "ADMIN")) { |
|
| 1190 | return true; |
|
| 1191 | } |
|
| 1192 | ||
| 1193 | // Standard mechanism for accepting permission changes from extensions |
|
| 1194 | $owner = $this->owner; |
|
| 1195 | $extended = $owner->extendedCan('canUnpublish', $member); |
|
| 1196 | if($extended !== null) { |
|
| 1197 | return $extended; |
|
| 1198 | } |
|
| 1199 | ||
| 1200 | // Default to relying on canPublish |
|
| 1201 | return $owner->canPublish($member); |
|
| 1202 | } |
|
| 1203 | ||
| 1204 | /** |
|
| 1205 | * Check if the current user is allowed to archive this record. |
|
| @@ 1251-1280 (lines=30) @@ | ||
| 1248 | * @param Member $member |
|
| 1249 | * @return bool |
|
| 1250 | */ |
|
| 1251 | public function canRevertToLive($member = null) { |
|
| 1252 | $owner = $this->owner; |
|
| 1253 | ||
| 1254 | // Skip if invoked by extendedCan() |
|
| 1255 | if(func_num_args() > 4) { |
|
| 1256 | return null; |
|
| 1257 | } |
|
| 1258 | ||
| 1259 | // Can't revert if not on live |
|
| 1260 | if(!$owner->isPublished()) { |
|
| 1261 | return false; |
|
| 1262 | } |
|
| 1263 | ||
| 1264 | if(!$member) { |
|
| 1265 | $member = Member::currentUser(); |
|
| 1266 | } |
|
| 1267 | ||
| 1268 | if(Permission::checkMember($member, "ADMIN")) { |
|
| 1269 | return true; |
|
| 1270 | } |
|
| 1271 | ||
| 1272 | // Standard mechanism for accepting permission changes from extensions |
|
| 1273 | $extended = $owner->extendedCan('canRevertToLive', $member); |
|
| 1274 | if($extended !== null) { |
|
| 1275 | return $extended; |
|
| 1276 | } |
|
| 1277 | ||
| 1278 | // Default to canEdit |
|
| 1279 | return $owner->canEdit($member); |
|
| 1280 | } |
|
| 1281 | ||
| 1282 | /** |
|
| 1283 | * Extend permissions to include additional security for objects that are not published to live. |
|