[xoops-cvslog 6545] CVS update: xoops2jp/html/modules/legacy/service

Back to archive index

NobuNobu nobun****@users*****
2007年 4月 30日 (月) 16:33:13 JST


Index: xoops2jp/html/modules/legacy/service/LegacySearchService.class.php
diff -u /dev/null xoops2jp/html/modules/legacy/service/LegacySearchService.class.php:1.1.4.1
--- /dev/null	Mon Apr 30 16:33:13 2007
+++ xoops2jp/html/modules/legacy/service/LegacySearchService.class.php	Mon Apr 30 16:33:13 2007
@@ -0,0 +1,252 @@
+<?php
+
+if (!defined('XOOPS_ROOT_PATH')) exit();
+
+class Legacy_SearchModule extends XCube_Object
+{
+	function getPropertyDefinition()
+	{
+		$ret = array(
+			S_PUBLIC_VAR("int mid"),
+			S_PUBLIC_VAR("string name")
+		);
+		
+		return $ret;
+	}
+}
+
+class Legacy_SearchModuleArray extends XCube_ObjectArray
+{
+	function getClassName()
+	{
+		return "Legacy_SearchModule";
+	}
+}
+
+
+class Legacy_SearchItem extends XCube_Object
+{
+	function getPropertyDefinition()
+	{
+		$ret = array(
+			S_PUBLIC_VAR("string image"),
+			S_PUBLIC_VAR("string link"),
+			S_PUBLIC_VAR("string title"),
+			S_PUBLIC_VAR("int uid"),
+			S_PUBLIC_VAR("int time")
+		);
+		
+		return $ret;
+	}
+}
+
+class Legacy_SearchItemArray extends XCube_ObjectArray
+{
+	function getClassName()
+	{
+		return "Legacy_SearchItem";
+	}
+}
+
+class Legacy_SearchModuleResult extends XCube_Object
+{
+	function getPropertyDefinition()
+	{
+		$ret = array(
+			S_PUBLIC_VAR("int mid"),
+			S_PUBLIC_VAR("string name"),
+			S_PUBLIC_VAR("int has_more"),
+			S_PUBLIC_VAR("Legacy_SearchItemArray results"),
+			S_PUBLIC_VAR("string showall_link")
+		);
+		
+		return $ret;
+	}
+}
+
+class Legacy_SearchModuleResultArray extends XCube_ObjectArray
+{
+	function getClassName()
+	{
+		return "Legacy_SearchModuleResult";
+	}
+}
+
+class Legacy_ArrayOfInt extends XCube_ObjectArray
+{
+	function getClassName()
+	{
+		return "int";
+	}
+}
+
+class Legacy_ArrayOfString extends XCube_ObjectArray
+{
+	function getClassName()
+	{
+		return "string";
+	}
+}
+
+/**
+ * Sample class
+ */
+class Legacy_SearchService extends XCube_Service
+{
+	var $mServiceName = "Legacy_SearchService";
+	var $mNameSpace = "Legacy";
+	var $mClassName = "Legacy_SearchService";
+	
+	function prepare()
+	{
+		$this->addType('Legacy_SearchModule');
+		$this->addType('Legacy_SearchModuleArray');
+		$this->addType('Legacy_SearchItem');
+		$this->addType('Legacy_SearchItemArray');
+		$this->addType('Legacy_SearchModuleResult');
+		$this->addType('Legacy_SearchModuleResultArray');
+		$this->addType('Legacy_ArrayOfInt');
+		$this->addType('Legacy_ArrayOfString');
+	
+		$this->addFunction(S_PUBLIC_FUNC('Legacy_SearchItemArray searchItems(int mid, Legacy_ArrayOfString queries, string andor, int maxhit, int start)'));
+		$this->addFunction(S_PUBLIC_FUNC('Legacy_SearchItemArray searchItemsOfUser(int mid, int uid, int maxhit, int start)'));
+		$this->addFunction(S_PUBLIC_FUNC('Legacy_SearchModuleArray getActiveModules()'));
+	}
+	
+	function getActiveModules()
+	{
+		//
+		// At first, get active module IDs.
+		//
+		$handler =& xoops_gethandler('module');
+		
+		$criteria =& new CriteriaCompo();
+		$criteria->add(new Criteria('isactive', 1));
+		$criteria->add(new Criteria('hassearch', 1));
+		$moduleArr =& $handler->getObjects($criteria);
+
+
+		$handler =& xoops_gethandler('groupperm');
+		$groupArr = Legacy_SearchUtils::getUserGroups();
+
+		$ret = array();
+		foreach ($moduleArr as $module) {
+			if ($handler->checkRight('module_read', $module->get('mid'), $groupArr)) {
+				$ret[] = array(
+					'mid' => $module->get('mid'),
+					'name' => $module->get('name')
+				);
+			}
+		}
+		
+		return $ret;
+	}
+	
+	function searchItems()
+	{
+		//
+		// TODO Need validation
+		//
+		$root =& XCube_Root::getSingleton();
+		$request =& $root->mContext->mRequest;
+		
+		$mid = intval($request->getRequest('mid'));
+		$queries = $request->getRequest('queries');
+		$andor = $request->getRequest('andor');
+		$maxhit = intval($request->getRequest('maxhit'));
+		$start = intval($request->getRequest('start'));
+		
+		$ret = $this->_searchItems($mid, $queries, $andor, $maxhit, $start, 0);
+		
+		return $ret;
+	}
+	
+	function searchItemsOfUser()
+	{
+		//
+		// TODO Need validation
+		//
+		$root =& XCube_Root::getSingleton();
+		$request =& $root->mContext->mRequest;
+		
+		$mid = intval($request->getRequest('mid'));
+		$maxhit = intval($request->getRequest('maxhit'));
+		$start = intval($request->getRequest('start'));
+		$uid = intval($request->getRequest('uid'));
+		
+		$ret = $this->_searchItems($mid, null, 'and', $maxhit, $start, $uid);
+		
+		return $ret;
+	}
+	
+	/**
+	 * @access private
+	 */
+	function _searchItems($mid, $queries, $andor, $max_hit, $start, $uid)
+	{
+		$modleArr = $this->getActiveModules();
+		
+		$flag = false;
+		foreach ($modleArr as $module) {
+			if ($mid == $module['mid']) {
+				$flag = true;
+				break;
+			}
+		}
+		
+		if (!$flag) {
+			return $ret;
+		}
+		
+		$root =& XCube_Root::getSingleton();
+		$timezone = $root->mContext->getXoopsConfig('server_TZ') * 3600;
+
+		$handler =& xoops_gethandler('module');
+		$xoopsModule =& $handler->get($mid);
+		if (!is_object($xoopsModule)) {
+			return $ret;
+		}
+		
+		if (!$xoopsModule->get('isactive') || !$xoopsModule->get('hassearch')) {
+			return $ret;
+		}
+
+		$module =& Legacy_Utils::createModule($xoopsModule);
+		$results = $module->doLegacyGlobalSearch($queries, $andor, $max_hit, $start, $uid);
+				
+		if (is_array($results) && count($results) > 0) {
+			foreach (array_keys($results) as $key) {
+				//
+				// TODO If this service will come to web service, we should
+				// change format from unixtime to string by timeoffset.
+				//
+				if ($results[$key]['time'] != 0) {
+					$results[$key]['time'] = $results[$key]['time'] - $timezone;
+				}
+			}
+		}
+		
+		return $results;
+	}
+}
+
+class Legacy_SearchUtils
+{
+	function getUserGroups()
+	{
+		$root =& XCube_Root::getSingleton();
+		$user =& $root->mController->mRoot->mContext->mXoopsUser;
+		$groups = array();
+		
+		if (!is_object($user)) {
+			$groups = XOOPS_GROUP_ANONYMOUS;
+		}
+		else {
+			$groups = $user->getGroups();
+		}
+		
+		return $groups;
+	}
+}
+
+?>
\ No newline at end of file
Index: xoops2jp/html/modules/legacy/service/index.html
diff -u /dev/null xoops2jp/html/modules/legacy/service/index.html:1.1.4.1
--- /dev/null	Mon Apr 30 16:33:13 2007
+++ xoops2jp/html/modules/legacy/service/index.html	Mon Apr 30 16:33:13 2007
@@ -0,0 +1 @@
+ <script>history.go(-1);</script>
\ No newline at end of file


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