Code Duplication    Length = 18-18 lines in 4 locations

code/model/DNEnvironment.php 4 locations

@@ 305-322 (lines=18) @@
302
	 * @param Member|null $member
303
	 * @return boolean
304
	 */
305
	public function canDeploy($member = null) {
306
		if (!$member) {
307
			$member = Member::currentUser();
308
		}
309
		if (!$member) {
310
			return false;
311
		}
312
		// Must be logged in to check permissions
313
314
		if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
315
			if ($this->Project()->allowed(DNRoot::ALLOW_PROD_DEPLOYMENT, $member)) {
316
				return true;
317
			}
318
		} else {
319
			if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_DEPLOYMENT, $member)) {
320
				return true;
321
			}
322
		}
323
324
		return $this->Deployers()->byID($member->ID)
325
		|| $member->inGroups($this->DeployerGroups());
@@ 344-361 (lines=18) @@
341
	 * @param Member|null $member The {@link Member} object to test against. If null, uses Member::currentMember();
342
	 * @return boolean true if $member can restore, and false if they can't.
343
	 */
344
	public function canRestore($member = null) {
345
		if (!$member) {
346
			$member = Member::currentUser();
347
		}
348
		if (!$member) {
349
			return false;
350
		}
351
		// Must be logged in to check permissions
352
353
		if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
354
			if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) {
355
				return true;
356
			}
357
		} else {
358
			if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) {
359
				return true;
360
			}
361
		}
362
363
		return $this->CanRestoreMembers()->byID($member->ID)
364
		|| $member->inGroups($this->CanRestoreGroups());
@@ 448-465 (lines=18) @@
445
	 * @param Member|null $member The {@link Member} object to test against. If null, uses Member::currentMember();
446
	 * @return boolean true if $member can download archives from this environment, false if they can't.
447
	 */
448
	public function canDownloadArchive($member = null) {
449
		if (!$member) {
450
			$member = Member::currentUser();
451
		}
452
		if (!$member) {
453
			return false;
454
		}
455
		// Must be logged in to check permissions
456
457
		if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
458
			if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) {
459
				return true;
460
			}
461
		} else {
462
			if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) {
463
				return true;
464
			}
465
		}
466
467
		return $this->ArchiveDownloaders()->byID($member->ID)
468
		|| $member->inGroups($this->ArchiveDownloaderGroups());
@@ 478-495 (lines=18) @@
475
	 * @param Member|null $member The {@link Member} object to test against. If null, uses Member::currentMember();
476
	 * @return boolean true if $member can delete archives from this environment, false if they can't.
477
	 */
478
	public function canDeleteArchive($member = null) {
479
		if (!$member) {
480
			$member = Member::currentUser();
481
		}
482
		if (!$member) {
483
			return false;
484
		}
485
		// Must be logged in to check permissions
486
487
		if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
488
			if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) {
489
				return true;
490
			}
491
		} else {
492
			if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) {
493
				return true;
494
			}
495
		}
496
497
		return $this->ArchiveDeleters()->byID($member->ID)
498
		|| $member->inGroups($this->ArchiveDeleterGroups());