diff options
| author | mensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2008-11-28 06:09:45 +0000 | 
|---|---|---|
| committer | mensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2008-11-28 06:09:45 +0000 | 
| commit | e0949aa0adfdfee4f78733277ff43d850ef3582e (patch) | |
| tree | 49685833ea28c0a6522933520ba526ffdb0cb77f | |
| parent | 96dfa82af5d9fd27b87eeef0ba877b022845e240 (diff) | |
| download | semanticscuttle-e0949aa0adfdfee4f78733277ff43d850ef3582e.tar.gz semanticscuttle-e0949aa0adfdfee4f78733277ff43d850ef3582e.tar.bz2  | |
New Feature: possibility to import a structure of hierarchical tags from a file
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@179 b3834d28-1941-0410-a4f8-b48e95affb8f
| -rw-r--r-- | importStructure.php | 80 | ||||
| -rw-r--r-- | services/bookmark2tagservice.php | 4 | ||||
| -rw-r--r-- | services/tag2tagservice.php | 11 | ||||
| -rw-r--r-- | services/tagservice.php | 9 | ||||
| -rw-r--r-- | templates/importStructure.tpl.php | 42 | 
5 files changed, 142 insertions, 4 deletions
diff --git a/importStructure.php b/importStructure.php new file mode 100644 index 0000000..eb3df86 --- /dev/null +++ b/importStructure.php @@ -0,0 +1,80 @@ +<? +/*************************************************************************** + 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 + ***************************************************************************/ + +require_once('header.inc.php'); + +/* Service creation: only useful services are created */ +$userservice =& ServiceFactory::getServiceInstance('UserService'); +$templateservice =& ServiceFactory::getServiceInstance('TemplateService'); +$tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService'); + +/* Managing current logged user */ +$currentUser = $userservice->getCurrentObjectUser(); + + +/* Managing all possible inputs */ +// First input is $_FILES + + +$tplVars = array(); +$tplVars['msg'] = ''; + +if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['size'] > 0) { +	$userinfo = $userservice->getCurrentObjectUser(); + + +	// File handle +	$html = file_get_contents($_FILES['userfile']['tmp_name']); + +	// Create link array +	preg_match_all('/(.*?)\n/', $html, $matches); + +	//print_r($matches); die(); + +	$fatherTag = ''; +	$countNewLinks = 0; +	foreach($matches[1] as $match) { +		if($match == '') { +			// do nothing because void line +		}elseif(substr($match, 0, 2) == '//') { +			// do nothing because commentary +		} elseif(substr($match, 0, 2) == '  ') { +			// add as child of previous tag +			if($fatherTag != '') { +				$tag2tagservice->addLinkedTags($fatherTag, $match, '>', $currentUser->getId()); +				$countNewLinks++; +			} else { +				$tplVars['error'] = T_('Bad indentation'). ' '.$match; +			} +		} else{ +			$fatherTag = $match; +		} +	} +	$tplVars['msg'] = T_('New links between tags: ').$countNewLinks; + +} + +$templatename = 'importStructure.tpl'; +$tplVars['subtitle'] = T_('Import Structure'); +$tplVars['formaction'] = createURL('importStructure'); +$templateservice->loadTemplate($templatename, $tplVars); + +?> diff --git a/services/bookmark2tagservice.php b/services/bookmark2tagservice.php index 347df9c..7085d5f 100644 --- a/services/bookmark2tagservice.php +++ b/services/bookmark2tagservice.php @@ -41,8 +41,8 @@ class Bookmark2TagService {  			}  		} -		//clean tags from strange characters -		$tags = str_replace(array('"', '\'', '/'), "_", $tags); +		$tagservice =& ServiceFactory::getServiceInstance('TagService'); +		$tags = $tagservice->normalize($tags);  		$tags_count = is_array($tags)?count($tags):0; diff --git a/services/tag2tagservice.php b/services/tag2tagservice.php index 8c97606..4cce66d 100644 --- a/services/tag2tagservice.php +++ b/services/tag2tagservice.php @@ -16,11 +16,16 @@ class Tag2TagService {  	}  	function addLinkedTags($tag1, $tag2, $relationType, $uId) { +		$tagservice =& ServiceFactory::getServiceInstance('TagService'); +		$tag1 = $tagservice->normalize($tag1); +		$tag2 = $tagservice->normalize($tag2);		 +		  		if($tag1 == $tag2 || strlen($tag1) == 0 || strlen($tag2) == 0  		|| ($relationType != ">" && $relationType != "=")  		|| ($this->existsLinkedTags($tag1, $tag2, $relationType, $uId))) {  			return false;  		} +		  		$values = array('tag1' => $tag1, 'tag2' => $tag2, 'relationType'=> $relationType, 'uId'=> $uId);  		$query = 'INSERT INTO '. $this->getTableName() .' '. $this->db->sql_build_array('INSERT', $values);  		//die($query); @@ -214,11 +219,17 @@ class Tag2TagService {  	function existsLinkedTags($tag1, $tag2, $relationType, $uId) { +		 +		//$tag1 = mysql_real_escape_string($tag1); +		//$tag2 = mysql_real_escape_string($tag2); +		  		$query = "SELECT tag1, tag2, relationType, uId FROM `". $this->getTableName() ."`";  		$query.= " WHERE tag1 = '" .$tag1 ."'";  		$query.= " AND tag2 = '".$tag2."'";  		$query.= " AND relationType = '". $relationType ."'";  		$query.= " AND uId = '".$uId."'"; +		 +		//echo($query."<br>\n");  		return $this->db->sql_numrows($this->db->sql_query($query)) > 0;  	} diff --git a/services/tagservice.php b/services/tagservice.php index 83349c6..504d13f 100644 --- a/services/tagservice.php +++ b/services/tagservice.php @@ -75,8 +75,13 @@ class TagService {  		$this->db->sql_query($query);  		return true;  	} - - +	 +	/* normalize the input tags which could be a string or an array*/ +	function normalize($tags) { +		//clean tags from strange characters +		$tags = str_replace(array('"', '\'', '/'), "_", $tags); +		return $tags; +	}  	function deleteAll() {  		$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`'; diff --git a/templates/importStructure.tpl.php b/templates/importStructure.tpl.php new file mode 100644 index 0000000..9c54612 --- /dev/null +++ b/templates/importStructure.tpl.php @@ -0,0 +1,42 @@ +<?php +$this->includeTemplate($GLOBALS['top_include']); +?> + +<div id="bookmarks"> +<form id="import" enctype="multipart/form-data" +	action="<?php echo $formaction; ?>" method="post"> +<table> +	<tr valign="top"> +		<th align="left"><?php echo T_('File'); ?></th> +		<td><input type="hidden" name="MAX_FILE_SIZE" value="1024000" /> <input +			type="file" name="userfile" size="50" /></td> +	</tr> +	<tr> +		<td /> +		<td><input type="submit" value="<?php echo T_('Import'); ?>" /></td> +	</tr> +</table> +</form> + +<h3><?php echo T_('Instructions'); ?></h3> +<ol> +	<li> +	<p><?php echo T_('Create your structure into a simple text file and following this model:');?></p> +	<ul> +		<li>firstTagOfLevel1</li> +		<li>    firstTagOfLevel2 <i>(the line starts with two spaces)</i></li> +		<li>    secondTagOfLevel2</li> +		<li>    thirdTagOfLevel2</li> +		<li>secondTagOfLevel1</li> +		<li>    fourthTagOfLevel2 <i>(included into secondTagOfLevel1)</i></li> +	</ul> +	</li> +	<li> +	<p><?php echo T_('Then import the file. The tags and their relations will be added to your profile.'); ?></p> +	</li> +</ol> +</div> + +<?php +$this->includeTemplate($GLOBALS['bottom_include']); +?>
\ No newline at end of file  | 
