public function canUploadArchive($member = null)
{
$project = $this->Project();
if ($project->HasDiskQuota() && $project->HasExceededDiskQuota()) {
return false;
}
if (!$member) {
$member = Member::currentUser();
}
if (!$member) {
return false;
}
// Must be logged in to check permissions
if ($this->Usage === self::PRODUCTION || $this->Usage === self::UNSPECIFIED) {
if ($this->Project()->allowed(DNRoot::ALLOW_PROD_SNAPSHOT, $member)) {
return true;
}
} else {
if ($this->Project()->allowed(DNRoot::ALLOW_NON_PROD_SNAPSHOT, $member)) {
return true;
}
}
return $this->ArchiveUploaders()->byID($member->ID) || $member->inGroups($this->ArchiveUploaderGroups());
}