[xoops-cvslog 4634] CVS update: xoops2jp/html/modules/user/class

Back to archive index

Minahito minah****@users*****
2006年 9月 25日 (月) 18:41:44 JST


Index: xoops2jp/html/modules/user/class/users_search.php
diff -u /dev/null xoops2jp/html/modules/user/class/users_search.php:1.1.2.1
--- /dev/null	Mon Sep 25 18:41:44 2006
+++ xoops2jp/html/modules/user/class/users_search.php	Mon Sep 25 18:41:44 2006
@@ -0,0 +1,207 @@
+<?php
+
+if (!defined('XOOPS_ROOT_PATH')) exit();
+
+require_once XOOPS_ROOT_PATH . "/modules/user/class/users.php";
+
+class UserUsers_searchHandler extends UserUsersHandler
+{
+	function &getObjects($criteria = null, $limit = null, $start = null, $id_as_key = false)
+	{
+		$ret = array();
+		
+		$uTable = $this->db->prefix('users') . " as u";
+		$gTable = $this->db->prefix('groups_users_link') . " as g";
+
+		$sql = "SELECT DISTINCT u.* FROM ${uTable}, ${gTable} WHERE u.uid=g.uid";
+
+		if($criteria !== null && is_a($criteria, 'CriteriaElement')) {
+			$where = $this->_makeCriteria4sql($criteria);
+			
+			if (trim($where)) {
+				$sql .= ' AND ' . $where;
+			}
+			
+			$sorts = array();
+			foreach ($criteria->getSorts() as $sort) {
+				$sorts[] = $sort['sort'] . ' ' . $sort['order'];
+			}
+			if ($criteria->getSort() != '') {
+				$sql .= " ORDER BY " . implode(',', $sorts);
+			}
+			
+			if ($limit === null) {
+				$limit = $criteria->getLimit();
+			}
+			
+			if ($start === null) {
+				$start = $criteria->getStart();
+			}
+		}
+		else {
+			if ($limit === null) {
+				$limit = 0;
+			}
+			
+			if ($start === null) {
+				$start = 0;
+			}
+		}
+
+		$result = $this->db->query($sql, $limit, $start);
+
+		if (!$result) {
+			return $ret;
+		}
+
+		while($row = $this->db->fetchArray($result)) {
+			$obj =& new $this->mClass();
+			$obj->assignVars($row);
+			$obj->unsetNew();
+			
+			if ($id_as_key)	{
+				$ret[$obj->get($this->mPrimary)] =& $obj;
+			}
+			else {
+				$ret[]=&$obj;
+			}
+		
+			unset($obj);
+		}
+	
+		if (count($ret)) {
+			foreach (array_keys($ret) as $key) {
+				$ret[$key]->_loadGroups();
+			}
+		}
+		
+		return $ret;
+	}
+
+	/**
+	 * Return the array which consists of an integer as the uid. This member
+	 * function is more speedy than getObjects().
+	 * 
+	 * @return Array
+	 */
+	function &getUids($criteria = null, $limit = null, $start = null, $id_as_key = false)
+	{
+		$ret = array();
+		
+		$uTable = $this->db->prefix('users') . " as u";
+		$gTable = $this->db->prefix('groups_users_link') . " as g";
+
+		$sql = "SELECT DISTINCT u.uid FROM ${uTable}, ${gTable} WHERE u.uid=g.uid";
+
+		if($criteria !== null && is_a($criteria, 'CriteriaElement')) {
+			$where = $this->_makeCriteria4sql($criteria);
+			
+			if (trim($where)) {
+				$sql .= ' AND ' . $where;
+			}
+			
+			$sorts = array();
+			foreach ($criteria->getSorts() as $sort) {
+				$sorts[] = $sort['sort'] . ' ' . $sort['order'];
+			}
+			if ($criteria->getSort() != '') {
+				$sql .= " ORDER BY " . implode(',', $sorts);
+			}
+			
+			if ($limit === null) {
+				$limit = $criteria->getLimit();
+			}
+			
+			if ($start === null) {
+				$start = $criteria->getStart();
+			}
+		}
+		else {
+			if ($limit === null) {
+				$limit = 0;
+			}
+			
+			if ($start === null) {
+				$start = 0;
+			}
+		}
+
+		$result = $this->db->query($sql, $limit, $start);
+
+		if (!$result) {
+			return $ret;
+		}
+
+		while ($row = $this->db->fetchArray($result)) {
+			$ret[] = $row['uid'];
+		}
+		
+		return $ret;
+	}
+	
+	function getCount($criteria = null)
+	{
+		$ret = array();
+
+		$uTable = $this->db->prefix('users') . " as u";
+		$gTable = $this->db->prefix('groups_users_link') . " as g";
+
+		$sql = "SELECT COUNT(DISTINCT u.uid) AS c FROM ${uTable}, ${gTable} WHERE u.uid=g.uid";
+
+		if($criteria !== null && is_a($criteria, 'CriteriaElement')) {
+			$where = $this->_makeCriteria4sql($criteria);
+			
+			if ($where) {
+				$sql .= " AND " . $where;
+			}
+		}
+			
+		return $this->_getCount($sql);
+	}
+	
+	function insert(&$user, $force = false)
+	{
+		if (parent::insert($user, $force)) {
+			$flag = true;
+			
+			$user->_loadGroups();
+
+			$handler =& xoops_getmodulehandler('groups_users_link', 'user');
+			$oldLinkArr =& $handler->getObjects(new Criteria('uid', $user->get('uid')), $force);
+			
+			//
+			// Delete
+			//
+			$oldGroupidArr = array();
+			foreach (array_keys($oldLinkArr) as $key) {
+				$oldGroupidArr[] = $oldLinkArr[$key]->get('groupid');
+				if (!in_array($oldLinkArr[$key]->get('groupid'), $user->Groups)) {
+					$handler->delete($oldLinkArr[$key], $force);
+				}
+			}
+
+			foreach ($user->Groups as $gid) {
+				if (!in_array($gid, $oldGroupidArr)) {
+					$link =& $handler->create();
+				
+					$link->set('groupid', $gid);
+					$link->set('uid', $user->get('uid'));
+				
+					$flag &= $handler->insert($link, $force);
+				
+					unset($link);
+				}
+			}
+			
+			return $flag;
+		}
+		
+		return false;
+	}
+
+	function deleteAll($criteria, $force = false)
+	{
+	}
+}
+
+?>


xoops-cvslog メーリングリストの案内
Back to archive index