Ejemplo n.º 1
0
 /**
  * Get permission query for a user. (View)
  * @param GWF_User $user
  * @return string
  */
 public static function getPermissionQueryList($user)
 {
     $enabled = GWF_Download::ENABLED;
     if ($user === false) {
         $guest_view = GWF_Download::GUEST_VISIBLE;
         return "dl_gid=0 AND dl_level=0 AND dl_options&{$guest_view} AND dl_options&{$enabled}";
     }
     if ($user->isAdmin()) {
         return '';
     }
     $uid = $user->getID();
     $level = $user->getLevel();
     $ug = GWF_TABLE_PREFIX . 'usergroup';
     return "( dl_level<={$level} AND dl_options&{$enabled} AND ((dl_gid=0) OR (SELECT 1 FROM {$ug} WHERE ug_userid={$uid} AND ug_groupid=dl_gid)) )";
 }
Ejemplo n.º 2
0
 public function isContactHidden(GWF_User $user)
 {
     return $this->isContactHiddenLevel($user->getLevel());
 }
Ejemplo n.º 3
0
 public function validate_limits(GWF_User $from, GWF_User $to)
 {
     $options = GWF_PMOptions::getPMOptions($to);
     if ($from->isGuest() && !$options->isOptionEnabled(GWF_PMOptions::ALLOW_GUEST_PM)) {
         return $this->error('err_user_no_ppm');
     }
     if ($from->isAdmin() || $from->isStaff()) {
         return false;
     }
     if (!$this->cfgIsPMLimited()) {
         return false;
     }
     if ($from->getLevel() <= $options->getVar('pmo_level')) {
         return $this->error('err_user_pmo_level', array($options->getVar('pmo_level')));
     }
     $user = GWF_Session::getUser();
     $uid = GWF_Session::getUserID();
     $within = $this->cfgLimitTimeout();
     $cut = GWF_Time::getDate(GWF_Date::LEN_SECOND, time() - $within);
     $count = GDO::table('GWF_PM')->countRows("pm_from={$uid} AND pm_date>'{$cut}'");
     $max = $this->calcPMLimit($user);
     if ($count >= $max) {
         return $this->lang('err_limit', array($max, GWF_Time::humanDuration($within)));
     }
     return false;
 }
Ejemplo n.º 4
0
 /**
  * Check if we have permission to view that link. In case we do, return empty string. else return verbose permission text.
  * @param Module_Links $module
  * @param GWF_User $user
  * @return string
  */
 public function getPermissionText(Module_Links $module, $user)
 {
     static $text = NULL;
     if ($text === NULL) {
         $text = array($module->lang('permtext_in_mod'), $module->lang('permtext_score', array('%1%')), $module->lang('permtext_member'), $module->lang('permtext_group', array('%1%')));
     }
     if ($this->isInModeration()) {
         return $text[0];
     }
     $score = $user === false ? 0 : $user->getLevel();
     # Check score
     $need_score = $this->getVar('link_score');
     if ($score < $need_score) {
         return str_replace('%1%', $need_score, $text[1]);
     }
     # Check memberlink
     if ($user === false && $this->isMemberLink()) {
         return $text[2];
     }
     # Check group
     $need_gid = $this->getGroupID();
     if ($need_gid > 0) {
         if ($user === false || !$user->isInGroupID($need_gid)) {
             return str_replace('%1%', GWF_Group::getByID($need_gid)->displayName(), $text[3]);
         }
     }
     return '';
 }
Ejemplo n.º 5
0
 /**
  * Check if user is an author.
  * @param GWF_User $user
  * @return boolean
  */
 public function isAuthor(GWF_User $user)
 {
     # Field is empty so everyone can add.
     if ('' === ($authors = trim($this->cfgAuthors()))) {
         return true;
     }
     # Check author level
     if ($this->cfgAuthorLevel() > $user->getLevel()) {
         return false;
         # Nope
     }
     # Check author groupnames
     foreach (preg_split('/[,;]+/', $authors) as $groupname) {
         if ($user->isInGroupName($groupname)) {
             return true;
         }
     }
     # Nope
     return false;
 }