public function mayDownload($user, GWF_Download $download) { if ($user === false) { # Guest if (!$download->isEnabled()) { return $this->error('err_disabled'); } if ($download->isAdult()) { return $this->error('err_adult'); } if (!$download->isOptionEnabled(GWF_Download::GUEST_DOWNLOAD)) { return $this->error('err_guest'); } if (!$this->cfgAnonDown()) { return $this->error('err_guest'); } return false; } else { $user instanceof GWF_User; # Admin if ($user->isAdmin()) { return false; } if (!$download->isEnabled()) { return $this->error('err_disabled'); } if ($download->isAdult() && !$user->wantsAdult()) { return $this->error('err_adult'); } # Level if ($download->getVar('dl_level') > $user->getVar('user_level')) { return $this->error('err_level', $download->getVar('dl_level')); } # Group $gid = $download->getVar('dl_gid'); if (false === ($group = GWF_Group::getByID($gid))) { } elseif ($gid > 0 && !$user->isInGroupID($download->getVar('dl_gid'))) { return $this->error('err_group', $group->display('group_name')); } return false; } }