Code Duplication    Length = 18-18 lines in 4 locations

code/model/DNEnvironment.php 4 locations

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