Merge branch 'xorg/f/xnet-accounts' into xorg/master
authorStéphane Jacob <sj@m4x.org>
Mon, 21 Mar 2011 12:25:02 +0000 (13:25 +0100)
committerStéphane Jacob <sj@m4x.org>
Mon, 21 Mar 2011 12:25:02 +0000 (13:25 +0100)
1  2 
classes/userfilter/conditions.inc.php

@@@ -894,9 -894,9 +894,9 @@@ class UFC_Group extends UserFilterCondi
  
      public function buildCondition(PlFilter $uf)
      {
-         // Groups have AX visibility.
-         if ($uf->getVisibilityLevel() == ProfileVisibility::VIS_PUBLIC) {
-             return self::COND_TRUE;
+         // Groups are only visible for users with perm 'groups'.
+         if (!S::user()->checkPerms(User::PERM_GROUPS)) {
+             return self::COND_FALSE;
          }
          $sub = $uf->addGroupFilter($this->group);
          $where = 'gpm' . $sub . '.perms IS NOT NULL';
@@@ -924,7 -924,7 +924,7 @@@ class UFC_Binet extends UserFilterCondi
      {
          // Binets are private.
          if ($uf->getVisibilityLevel() != ProfileVisibility::VIS_PRIVATE) {
 -            return self::CONF_TRUE;
 +            return self::COND_TRUE;
          }
          $sub = $uf->addBinetsFilter();
          return XDB::format($sub . '.binet_id IN {?}', $this->val);
@@@ -948,7 -948,7 +948,7 @@@ class UFC_Section extends UserFilterCon
      {
          // Sections are private.
          if ($uf->getVisibilityLevel() != ProfileVisibility::VIS_PRIVATE) {
 -            return self::CONF_TRUE;
 +            return self::COND_TRUE;
          }
          $uf->requireProfiles();
          return XDB::format('p.section IN {?}', $this->section);
@@@ -1341,9 -1341,12 +1341,9 @@@ class UFC_Job_Description extends UserF
          // don't do anything. Otherwise restrict to standard job visibility.
          if ($this->fields == UserFilter::JOB_CV) {
             if ($uf->getVisibilityLevel() != ProfileVisibility::VIS_PRIVATE) {
 -               return self::CONF_TRUE;
 +               return self::COND_TRUE;
             }
 -        } else {
 -            $conds[] = $uf->getVisibilityCondition($jsub . '.pub');
          }
 -
          if ($this->fields & UserFilter::JOB_USERDEFINED) {
              $conds[] = $jsub . '.description ' . XDB::formatWildcards(XDB::WILDCARD_CONTAINS, $this->description);
          }
              $uf->requireProfiles();
              $conds[] = 'p.cv ' . XDB::formatWildcards(XDB::WILDCARD_CONTAINS, $this->description);
          }
 -        return implode(' OR ', $conds);
 +        if (count($conds) == 0) {
 +            return self::COND_TRUE;
 +        }
 +        return $uf->getVisibilityCondition($jsub . '.pub') . ' AND ( ' . implode(' OR ', $conds) . ' )';
      }
  }
  // }}}