Code Duplication    Length = 24-30 lines in 3 locations

model/versioning/Versioned.php 3 locations

@@ 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.