[ Index ]
 

Code source de XOOPS 2.0.17.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/htdocs/kernel/ -> group.php (source)

   1  <?php
   2  // $Id: group.php 506 2006-05-26 23:10:37Z skalpa $

   3  //  ------------------------------------------------------------------------ //

   4  //                XOOPS - PHP Content Management System                      //

   5  //                    Copyright (c) 2000 XOOPS.org                           //

   6  //                       <http://www.xoops.org/>                             //

   7  //  ------------------------------------------------------------------------ //

   8  //  This program is free software; you can redistribute it and/or modify     //

   9  //  it under the terms of the GNU General Public License as published by     //

  10  //  the Free Software Foundation; either version 2 of the License, or        //

  11  //  (at your option) any later version.                                      //

  12  //                                                                           //

  13  //  You may not change or alter any portion of this comment or credits       //

  14  //  of supporting developers from this source code or any supporting         //

  15  //  source code which is considered copyrighted (c) material of the          //

  16  //  original comment or credit authors.                                      //

  17  //                                                                           //

  18  //  This program is distributed in the hope that it will be useful,          //

  19  //  but WITHOUT ANY WARRANTY; without even the implied warranty of           //

  20  //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //

  21  //  GNU General Public License for more details.                             //

  22  //                                                                           //

  23  //  You should have received a copy of the GNU General Public License        //

  24  //  along with this program; if not, write to the Free Software              //

  25  //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //

  26  //  ------------------------------------------------------------------------ //

  27  // Author: Kazumi Ono (AKA onokazu)                                          //

  28  // URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //

  29  // Project: The XOOPS Project                                                //

  30  // ------------------------------------------------------------------------- //

  31  
  32  if (!defined('XOOPS_ROOT_PATH')) {
  33      exit();
  34  }
  35  
  36  /**

  37   * a group of users

  38   * 

  39   * @copyright copyright (c) 2000-2003 XOOPS.org

  40   * @author Kazumi Ono <onokazu@xoops.org> 

  41   * @package kernel

  42   */
  43  class XoopsGroup extends XoopsObject
  44  {
  45      /**

  46       * constructor 

  47       */
  48      function XoopsGroup()
  49      {
  50          $this->XoopsObject();
  51          $this->initVar('groupid', XOBJ_DTYPE_INT, null, false);
  52          $this->initVar('name', XOBJ_DTYPE_TXTBOX, null, true, 100);
  53          $this->initVar('description', XOBJ_DTYPE_TXTAREA, null, false);
  54          $this->initVar('group_type', XOBJ_DTYPE_OTHER, null, false);
  55      }
  56  }
  57  
  58  
  59  /**

  60  * XOOPS group handler class.

  61  * This class is responsible for providing data access mechanisms to the data source

  62  * of XOOPS group class objects.

  63  *

  64  * @author Kazumi Ono <onokazu@xoops.org>

  65  * @copyright copyright (c) 2000-2003 XOOPS.org

  66  * @package kernel

  67  * @subpackage member

  68  */
  69  class XoopsGroupHandler extends XoopsObjectHandler
  70  {
  71  
  72      /**

  73       * create a new {@link XoopsGroup} object

  74       * 

  75       * @param bool $isNew mark the new object as "new"?

  76       * @return object XoopsGroup reference to the new object

  77       * 

  78       */
  79      function &create($isNew = true)
  80      {
  81          $group = new XoopsGroup();
  82          if ($isNew) {
  83              $group->setNew();
  84          }
  85          return $group;
  86      }
  87  
  88      /**

  89       * retrieve a specific group

  90       * 

  91       * @param int $id ID of the group to get

  92       * @return object XoopsGroup reference to the group object, FALSE if failed

  93       */
  94      function &get($id)
  95      {
  96          $group = false;
  97          if (intval($id) > 0) {
  98              $sql = 'SELECT * FROM '.$this->db->prefix('groups').' WHERE groupid='.$id;
  99              if (!$result = $this->db->query($sql)) {
 100                  return $group;
 101              }
 102              $numrows = $this->db->getRowsNum($result);
 103              if ($numrows == 1) {
 104                  $group = new XoopsGroup();
 105                  $group->assignVars($this->db->fetchArray($result));
 106              }
 107          }
 108          return $group;
 109      }
 110  
 111      /**

 112       * insert a group into the database

 113       * 

 114       * @param object reference to the group object

 115       * @return mixed ID of the group if inserted, FALSE if failed, TRUE if already present and unchanged.

 116       */
 117      function insert(&$group)
 118      {
 119          if (strtolower(get_class($group)) != 'xoopsgroup') {
 120              return false;
 121          }
 122          if (!$group->isDirty()) {
 123              return true;
 124          }
 125          if (!$group->cleanVars()) {
 126              return false;
 127          }
 128          foreach ($group->cleanVars as $k => $v) {
 129              ${$k} = $v;
 130          }
 131          if ($group->isNew()) {
 132              $groupid = $this->db->genId('group_groupid_seq');
 133              $sql = sprintf("INSERT INTO %s (groupid, name, description, group_type) VALUES (%u, %s, %s, %s)", $this->db->prefix('groups'), $groupid, $this->db->quoteString($name), $this->db->quoteString($description), $this->db->quoteString($group_type));
 134          } else {
 135              $sql = sprintf("UPDATE %s SET name = %s, description = %s, group_type = %s WHERE groupid = %u", $this->db->prefix('groups'), $this->db->quoteString($name), $this->db->quoteString($description), $this->db->quoteString($group_type), $groupid);
 136          }
 137          if (!$result = $this->db->query($sql)) {
 138              return false;
 139          }
 140          if (empty($groupid)) {
 141              $groupid = $this->db->getInsertId();
 142          }
 143          $group->assignVar('groupid', $groupid);
 144          return true;
 145      }
 146  
 147      /**

 148       * remove a group from the database

 149       * 

 150       * @param object $group reference to the group to be removed

 151       * @return bool FALSE if failed

 152       */
 153      function delete(&$group)
 154      {
 155          if (strtolower(get_class($group)) != 'xoopsgroup') {
 156              return false;
 157          }
 158          $sql = sprintf("DELETE FROM %s WHERE groupid = %u", $this->db->prefix('groups'), $group->getVar('groupid'));
 159          if (!$result = $this->db->query($sql)) {
 160              return false;
 161          }
 162          return true;
 163      }
 164  
 165      /**

 166       * retrieve groups from the database

 167       * 

 168       * @param object $criteria {@link CriteriaElement} with conditions for the groups

 169       * @param bool $id_as_key should the groups' IDs be used as keys for the associative array?

 170       * @return mixed Array of groups

 171       */
 172      function getObjects($criteria = null, $id_as_key = false)
 173      {
 174          $ret = array();
 175          $limit = $start = 0;
 176          $sql = 'SELECT * FROM '.$this->db->prefix('groups');
 177          if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
 178              $sql .= ' '.$criteria->renderWhere();
 179              $limit = $criteria->getLimit();
 180              $start = $criteria->getStart();
 181          }
 182          $result = $this->db->query($sql, $limit, $start);
 183          if (!$result) {
 184              return $ret;
 185          }
 186          while ($myrow = $this->db->fetchArray($result)) {
 187              $group = new XoopsGroup();
 188              $group->assignVars($myrow);
 189              if (!$id_as_key) {
 190                  $ret[] =& $group;
 191              } else {
 192                  $ret[$myrow['groupid']] =& $group;
 193              }
 194              unset($group);
 195          }
 196          return $ret;
 197      }
 198  }
 199  
 200  /**

 201   * membership of a user in a group

 202   * 

 203   * @author Kazumi Ono <onokazu@xoops.org>

 204   * @copyright copyright (c) 2000-2003 XOOPS.org

 205   * @package kernel

 206   */
 207  class XoopsMembership extends XoopsObject
 208  {
 209      /**

 210       * constructor 

 211       */
 212      function XoopsMembership()
 213      {
 214          $this->XoopsObject();
 215          $this->initVar('linkid', XOBJ_DTYPE_INT, null, false);
 216          $this->initVar('groupid', XOBJ_DTYPE_INT, null, false);
 217          $this->initVar('uid', XOBJ_DTYPE_INT, null, false);
 218      }
 219  }
 220  
 221  /**

 222  * XOOPS membership handler class. (Singleton)

 223  * 

 224  * This class is responsible for providing data access mechanisms to the data source 

 225  * of XOOPS group membership class objects.

 226  *

 227  * @author Kazumi Ono <onokazu@xoops.org>

 228  * @copyright copyright (c) 2000-2003 XOOPS.org

 229  * @package kernel

 230  */
 231  class XoopsMembershipHandler extends XoopsObjectHandler
 232  {
 233  
 234      /**

 235       * create a new membership

 236       * 

 237       * @param bool $isNew should the new object be set to "new"?

 238       * @return object XoopsMembership

 239       */
 240      function &create($isNew = true)
 241      {
 242          $mship = new XoopsMembership();
 243          if ($isNew) {
 244              $mship->setNew();
 245          }
 246          return $mship;
 247      }
 248  
 249      /**

 250       * retrieve a membership

 251       * 

 252       * @param int $id ID of the membership to get

 253       * @return mixed reference to the object if successful, else FALSE

 254       */
 255      function &get($id)
 256      {
 257          $mship = false;
 258          if (intval($id) > 0) {
 259              $sql = 'SELECT * FROM '.$this->db->prefix('groups_users_link').' WHERE linkid='.$id;
 260              if (!$result = $this->db->query($sql)) {
 261                  return $mship;
 262              }
 263              $numrows = $this->db->getRowsNum($result);
 264              if ($numrows == 1) {
 265                  $mship = new XoopsMembership();
 266                  $mship->assignVars($this->db->fetchArray($result));
 267              }
 268          }
 269          return $mship;
 270      }
 271  
 272      /**

 273       * inserts a membership in the database

 274       * 

 275       * @param object $mship reference to the membership object

 276       * @return bool TRUE if already in DB or successful, FALSE if failed

 277       */
 278      function insert(&$mship)
 279      {
 280          if (strtolower(get_class($mship)) != 'xoopsmembership') {
 281              return false;
 282          }
 283          if (!$mship->isDirty()) {
 284              return true;
 285          }
 286          if (!$mship->cleanVars()) {
 287              return false;
 288          }
 289          foreach ($mship->cleanVars as $k => $v) {
 290              ${$k} = $v;
 291          }
 292          if ($mship->isNew()) {
 293              $linkid = $this->db->genId('groups_users_link_linkid_seq');
 294              $sql = sprintf("INSERT INTO %s (linkid, groupid, uid) VALUES (%u, %u, %u)", $this->db->prefix('groups_users_link'), $linkid, $groupid, $uid);
 295          } else {
 296              $sql = sprintf("UPDATE %s SET groupid = %u, uid = %u WHERE linkid = %u", $this->db->prefix('groups_users_link'), $groupid, $uid, $linkid);
 297          }
 298          if (!$result = $this->db->query($sql)) {
 299              return false;
 300          }
 301          if (empty($linkid)) {
 302              $linkid = $this->db->getInsertId();
 303          }
 304          $mship->assignVar('linkid', $linkid);
 305          return true;
 306      }
 307  
 308      /**

 309       * delete a membership from the database

 310       * 

 311       * @param object $mship reference to the membership object

 312       * @return bool FALSE if failed

 313       */
 314      function delete(&$mship)
 315      {
 316          if (strtolower(get_class($mship)) != 'xoopsmembership') {
 317              return false;
 318          }
 319          $sql = sprintf("DELETE FROM %s WHERE linkid = %u", $this->db->prefix('groups_users_link'), $groupm->getVar('linkid'));
 320          if (!$result = $this->db->query($sql)) {
 321              return false;
 322          }
 323          return true;
 324      }
 325  
 326      /**

 327       * retrieve memberships from the database

 328       * 

 329       * @param object $criteria {@link CriteriaElement} conditions to meet

 330       * @param bool $id_as_key should the ID be used as the array's key?

 331       * @return array array of references

 332       */
 333      function getObjects($criteria = null, $id_as_key = false)
 334      {
 335          $ret = array();
 336          $limit = $start = 0;
 337          $sql = 'SELECT * FROM '.$this->db->prefix('groups_users_link');
 338          if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
 339              $sql .= ' '.$criteria->renderWhere();
 340              $limit = $criteria->getLimit();
 341              $start = $criteria->getStart();
 342          }
 343          $result = $this->db->query($sql, $limit, $start);
 344          if (!$result) {
 345              return $ret;
 346          }
 347          while ($myrow = $this->db->fetchArray($result)) {
 348              $mship = new XoopsMembership();
 349              $mship->assignVars($myrow);
 350              if (!$id_as_key) {
 351                  $ret[] =& $mship;
 352              } else {
 353                  $ret[$myrow['linkid']] =& $mship;
 354              }
 355              unset($mship);
 356          }
 357          return $ret;
 358      }
 359  
 360      /**

 361       * count how many memberships meet the conditions

 362       * 

 363       * @param object $criteria {@link CriteriaElement} conditions to meet

 364       * @return int

 365       */
 366      function getCount($criteria = null)
 367      {
 368          $sql = 'SELECT COUNT(*) FROM '.$this->db->prefix('groups_users_link');
 369          if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
 370              $sql .= ' '.$criteria->renderWhere();
 371          }
 372          $result = $this->db->query($sql);
 373          if (!$result) {
 374              return 0;
 375          }
 376          list($count) = $this->db->fetchRow($result);
 377          return $count;
 378      }
 379  
 380      /**

 381       * delete all memberships meeting the conditions

 382       * 

 383       * @param object $criteria {@link CriteriaElement} with conditions to meet

 384       * @return bool

 385       */
 386      function deleteAll($criteria = null)
 387      {
 388          $sql = 'DELETE FROM '.$this->db->prefix('groups_users_link');
 389          if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) {
 390              $sql .= ' '.$criteria->renderWhere();
 391          }
 392          if (!$result = $this->db->query($sql)) {
 393              return false;
 394          }
 395          return true;
 396      }
 397  
 398      /**

 399       * retrieve groups for a user

 400       * 

 401       * @param int $uid ID of the user

 402       * @param bool $asobject should the groups be returned as {@link XoopsGroup}

 403       * objects? FALSE returns associative array.

 404       * @return array array of groups the user belongs to

 405       */
 406      function getGroupsByUser($uid)
 407      {
 408          $ret = array();
 409          $sql = 'SELECT groupid FROM '.$this->db->prefix('groups_users_link').' WHERE uid='.intval($uid);
 410          $result = $this->db->query($sql);
 411          if (!$result) {
 412              return $ret;
 413          }
 414          while ($myrow = $this->db->fetchArray($result)) {
 415              $ret[] = $myrow['groupid'];
 416          }
 417          return $ret;
 418      }
 419  
 420      /**

 421       * retrieve users belonging to a group

 422       * 

 423       * @param int $groupid ID of the group

 424       * @param bool $asobject return users as {@link XoopsUser} objects?

 425       * FALSE will return arrays

 426       * @param int $limit number of entries to return

 427       * @param int $start offset of first entry to return

 428       * @return array array of users belonging to the group

 429       */
 430      function getUsersByGroup($groupid, $limit=0, $start=0)
 431      {
 432          $ret = array();
 433          $sql = 'SELECT uid FROM '.$this->db->prefix('groups_users_link').' WHERE groupid='.intval($groupid);
 434          $result = $this->db->query($sql, $limit, $start);
 435          if (!$result) {
 436              return $ret;
 437          }
 438          while ($myrow = $this->db->fetchArray($result)) {
 439              $ret[] = $myrow['uid'];
 440          }
 441          return $ret;
 442      }
 443  }
 444  ?>


Généré le : Sun Nov 25 11:44:32 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics