Example #1
0
 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;
     }
 }