diff options
| author | mensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2009-02-20 09:33:59 +0000 | 
|---|---|---|
| committer | mensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2009-02-20 09:33:59 +0000 | 
| commit | 0c81abaa3e6319fb729f6924c8d8ffb7393a5072 (patch) | |
| tree | effd427ddc891d198976f2770cfc82bf0f744d8b | |
| parent | 6bd34af2885e1e2e93218371923c0d0fdc1e2c53 (diff) | |
| download | semanticscuttle-0c81abaa3e6319fb729f6924c8d8ffb7393a5072.tar.gz semanticscuttle-0c81abaa3e6319fb729f6924c8d8ffb7393a5072.tar.bz2 | |
Interface fix: menu2 just displays linked tags from admins
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@292 b3834d28-1941-0410-a4f8-b48e95affb8f
| -rw-r--r-- | ajax/getadminlinkedtags.php | 64 | ||||
| -rw-r--r-- | services/bookmark2tagservice.php | 7 | ||||
| -rw-r--r-- | services/tag2tagservice.php | 18 | ||||
| -rw-r--r-- | services/userservice.php | 10 | ||||
| -rw-r--r-- | templates/sidebar.block.menu2.php | 8 | 
5 files changed, 97 insertions, 10 deletions
| diff --git a/ajax/getadminlinkedtags.php b/ajax/getadminlinkedtags.php new file mode 100644 index 0000000..75aae9a --- /dev/null +++ b/ajax/getadminlinkedtags.php @@ -0,0 +1,64 @@ +<?php +/*************************************************************************** + Copyright (C) 2004 - 2006 Scuttle project + http://sourceforge.net/projects/scuttle/ + http://scuttle.org/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA + ***************************************************************************/ + +/* Return a json file with list of linked tags */ + +require_once('../header.inc.php'); + +/* Service creation: only useful services are created */ +$b2tservice =& ServiceFactory::getServiceInstance('Bookmark2TagService'); +$bookmarkservice =& ServiceFactory::getServiceInstance('TagService'); +$tagstatservice =& ServiceFactory::getServiceInstance('TagStatService'); + +/* Managing all possible inputs */ +isset($_GET['tag']) ? define('GET_TAG', $_GET['tag']): define('GET_TAG', ''); +isset($_GET['uId']) ? define('GET_UID', $_GET['uId']): define('GET_UID', ''); + + +function displayTag($tag, $uId) { +	$uId = ($uId==0)?NULL:$uId;  // if user is nobody, NULL allows to look for every public tags +	 +	$tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService'); +	$output =  '{ id:'.rand().', name:\''.$tag.'\''; + +	$linkedTags = $tag2tagservice->getAdminLinkedTags($tag, '>'); +	if(count($linkedTags) > 0) { +		$output.= ', children: ['; +		foreach($linkedTags as $linkedTag) { +			$output.= displayTag($linkedTag, $uId); +		} +		$output = substr($output, 0, -1); // remove final comma avoiding IE6 Dojo bug +		$output.= "]"; +	} + +	$output.= '},'; +	return $output; +} + +?> + +{ label: 'name', identifier: 'id', items: [ +<?php +$json = displayTag(GET_TAG, GET_UID); +$json = substr($json, 0, -1); // remove final comma avoiding IE6 Dojo bug +echo $json; +?> +] } diff --git a/services/bookmark2tagservice.php b/services/bookmark2tagservice.php index 99c97af..918fb5b 100644 --- a/services/bookmark2tagservice.php +++ b/services/bookmark2tagservice.php @@ -330,13 +330,10 @@ class Bookmark2TagService {  	function &getAdminTags($limit = 30, $logged_on_user = NULL, $days = NULL) {  		// look for admin ids  		$userservice = & ServiceFactory :: getServiceInstance('UserService'); -		$admins = array(); -		foreach($GLOBALS['admin_users'] as $adminName) { -			$admins[] = $userservice->getIdFromUser($adminName); -		} +		$adminIds = $userservice->getAdminIds();  		// ask for their tags -		return $this->getPopularTags($admins, $limit, $logged_on_user, $days); +		return $this->getPopularTags($adminIds, $limit, $logged_on_user, $days);  	}  	function &getContactTags($user, $limit = 30, $logged_on_user = NULL, $days = NULL) { diff --git a/services/tag2tagservice.php b/services/tag2tagservice.php index 1547daf..6069880 100644 --- a/services/tag2tagservice.php +++ b/services/tag2tagservice.php @@ -43,6 +43,16 @@ class Tag2TagService {  		return true;  	} +	// Return linked tags just for admin users +	function getAdminLinkedTags($tag, $relationType, $inverseRelation = false, $stopList = array()) { +		// look for admin ids +		$userservice = & ServiceFactory :: getServiceInstance('UserService'); +		$adminIds = $userservice->getAdminIds(); +		 +		//ask for their linked tags +		return $this->getLinkedTags($tag, $relationType, $adminIds, $inverseRelation, $stopList); +	} +	  	// Return the target linked tags. If inverseRelation is true, return the source linked tags.  	function getLinkedTags($tag, $relationType, $uId = null, $inverseRelation = false, $stopList = array()) {  		// Set up the SQL query. @@ -63,7 +73,13 @@ class Tag2TagService {  		if($relationType) {  			$query.= " AND relationType = '". $relationType ."'";  		} -		if($uId != null) { +		if(is_array($uId)) { +			$query.= " AND ( 1=0 "; //tricks always false			 +			foreach($uId as $u) { +				$query.= " OR uId = '".$u."'"; +			} +			$query.= " ) ";  +		} elseif($uId != null) {  			$query.= " AND uId = '".$uId."'";  		}  		//die($query); diff --git a/services/userservice.php b/services/userservice.php index a4ed3ac..d0eb96a 100644 --- a/services/userservice.php +++ b/services/userservice.php @@ -429,6 +429,16 @@ class UserService {  		}
  		$this->db->sql_freeresult($dbresult);
  		return $rows;
 +	} +	 +	// Returns an array with admin uIds +	function getAdminIds() { +		$admins = array(); +		foreach($GLOBALS['admin_users'] as $adminName) { +			if($this->getIdFromUser($adminName) != NULL) +			$admins[] = $this->getIdFromUser($adminName);  +		} +		return $admins;  	}
  	function deleteUser($uId) {
 diff --git a/templates/sidebar.block.menu2.php b/templates/sidebar.block.menu2.php index eee150e..543ac79 100644 --- a/templates/sidebar.block.menu2.php +++ b/templates/sidebar.block.menu2.php @@ -29,15 +29,15 @@ if (sizeOf($menu2Tags) > 0) {  <div id="related"><?php  foreach($menu2Tags as $menu2Tag) { -	echo '<div dojoType="dojo.data.ItemFileReadStore" url="ajax/getlinkedtags.php?tag='.filter($menu2Tag, 'url').'" jsid="linkedTagStore" ></div>'; +	echo '<div dojoType="dojo.data.ItemFileReadStore" url="ajax/getadminlinkedtags.php?tag='.filter($menu2Tag, 'url').'" jsid="linkedTagStore" ></div>';  	echo '<div dojoType="dijit.Tree" store="linkedTagStore" labelAttr="name" >';  	echo '<script type="dojo/method" event="onClick" args="item">';  	$returnUrl = sprintf($cat_url, filter($user, 'url'), filter('', 'url'));  	echo 'window.location = "'.$returnUrl.'"+item.name';  	echo '</script>'; -	echo '<script type="dojo/method" event="getLabelClass" args="item">'; -	echo 'return \'treeTag\';'; -	echo '</script>'; +	//echo '<script type="dojo/method" event="getLabelClass" args="item">'; +	//echo 'return \'treeTag\';'; +	//echo '</script>';  	echo '</div>';  }  ?> | 
