Code Duplication    Length = 18-18 lines in 4 locations

code/model/DNEnvironment.php 4 locations

@@ 315-332 (lines=18) @@
312
	 * @param Member|null $member
313
	 * @return boolean
314
	 */
315
	public function canDeploy($member = null) {
316
		if (!$member) {
317
			$member = Member::currentUser();
318
		}
319
		if (!$member) {
320
			return false;
321
		}
322
		// Must be logged in to check permissions
323
324
		if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
325
			if ($this->Project()->allowed(DNRoot::ALLOW_PROD_DEPLOYMENT, $member)) {
326
				return true;
327
			}
328
		} else {
329
			if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_DEPLOYMENT, $member)) {
330
				return true;
331
			}
332
		}
333
334
		return $this->Deployers()->byID($member->ID)
335
			|| $member->inGroups($this->DeployerGroups());
@@ 354-371 (lines=18) @@
351
	 * @param Member|null $member The {@link Member} object to test against. If null, uses Member::currentMember();
352
	 * @return boolean true if $member can restore, and false if they can't.
353
	 */
354
	public function canRestore($member = null) {
355
		if (!$member) {
356
			$member = Member::currentUser();
357
		}
358
		if (!$member) {
359
			return false;
360
		}
361
		// Must be logged in to check permissions
362
363
		if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
364
			if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) {
365
				return true;
366
			}
367
		} else {
368
			if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) {
369
				return true;
370
			}
371
		}
372
373
		return $this->CanRestoreMembers()->byID($member->ID)
374
			|| $member->inGroups($this->CanRestoreGroups());
@@ 458-475 (lines=18) @@
455
	 * @param Member|null $member The {@link Member} object to test against. If null, uses Member::currentMember();
456
	 * @return boolean true if $member can download archives from this environment, false if they can't.
457
	 */
458
	public function canDownloadArchive($member = null) {
459
		if (!$member) {
460
			$member = Member::currentUser();
461
		}
462
		if (!$member) {
463
			return false;
464
		}
465
		// Must be logged in to check permissions
466
467
		if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
468
			if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) {
469
				return true;
470
			}
471
		} else {
472
			if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) {
473
				return true;
474
			}
475
		}
476
477
		return $this->ArchiveDownloaders()->byID($member->ID)
478
			|| $member->inGroups($this->ArchiveDownloaderGroups());
@@ 488-505 (lines=18) @@
485
	 * @param Member|null $member The {@link Member} object to test against. If null, uses Member::currentMember();
486
	 * @return boolean true if $member can delete archives from this environment, false if they can't.
487
	 */
488
	public function canDeleteArchive($member = null) {
489
		if (!$member) {
490
			$member = Member::currentUser();
491
		}
492
		if (!$member) {
493
			return false;
494
		}
495
		// Must be logged in to check permissions
496
497
		if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
498
			if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) {
499
				return true;
500
			}
501
		} else {
502
			if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) {
503
				return true;
504
			}
505
		}
506
507
		return $this->ArchiveDeleters()->byID($member->ID)
508
			|| $member->inGroups($this->ArchiveDeleterGroups());