Index: /publicseorewriter/files/lib/page/PublicSEORewriterWBB.class.php
===================================================================
--- /publicseorewriter/files/lib/page/PublicSEORewriterWBB.class.php (revision 808)
+++ /publicseorewriter/files/lib/page/PublicSEORewriterWBB.class.php (revision 808)
@@ -0,0 +1,210 @@
+<?php
+// wbb imports
+require_once(WBB_DIR.'lib/data/board/Board.class.php');
+
+// does wbb seo util exist ?
+if(file_exists(WBB_DIR.'lib/data/page/seo/WBBSEORewriter.class.php')) {
+	require_once(WBB_DIR.'lib/data/page/seo/WBBSEORewriter.class.php');
+} 
+// otherwise create a new class
+else {
+	class WBBSEORewriter {
+		protected $encodeHTML, $cachedThreads=array(), $cachedBoardTitles=array();
+	}
+}
+
+// does wcf seo util exist ?
+if(file_exists(WCF_DIR.'lib/data/page/seo/SEOUtil.class.php')) {
+	require_once(WCF_DIR.'lib/data/page/seo/SEOUtil.class.php');
+}
+// otherwise create a new class
+ else {
+	class SEOUtil {
+		public static function formatString($string) {
+			return $string;
+		}
+	}
+}
+
+/**
+ * Rewrites links to normal or seo urls
+ *
+ * @author      Torben Brodt
+ * @package     de.easy-coding.wcf.data.page.publicseorewriter
+ * @license	GNU Lesser General Public License <http://opensource.org/licenses/lgpl-3.0.html>
+ */
+class PublicSEORewriter extends WBBSEORewriter {
+
+	/**
+	* Caches threads.
+	*
+	* @param       int           $threadID
+	* @param       array         $row
+	*/
+	public function publicCacheThreads($threadID, $row) {
+		$row['topic'] = SEOUtil::formatString($row['topic']);
+		if ($this->encodeHTML) $row['topic'] = StringUtil::encodeHTML($row['topic']);
+		$this->cachedThreads[$row['threadID']] = array(
+				'topic' => $row['topic'], 
+				'boardID' => $row['boardID']
+			);
+	}
+
+	/**
+	* Caches boards.
+	*
+	* @param       int           $boardID
+	* @param       array         $row
+	*/
+	public function publicCacheBoards($boardID, $row) {
+		$this->cachedBoardTitles[$boardID] = SEOUtil::formatString(WCF::getLanguage()->get($row['title']));
+		if ($this->encodeHTML && !preg_match('/^[a-z0-9_\-]+(?:\.[a-z0-9_\-]+)+$/i', $row['title'])) {
+			$this->cachedBoardTitles[$boardID] = StringUtil::encodeHTML($this->cachedBoardTitles[$boardID]);
+		}
+	}
+
+	/**
+	* clears the cache
+	*/
+	public function clearCache() {
+		$this->cachedThreads = array();
+		$this->cachedBoardTitles = array();
+	}
+
+
+	/**
+	* Parses index urls.
+	*
+	* @param       string          $queryString
+	* @param       string          $string
+	*
+	* @return      string
+	*/
+	public function publicParseIndexURLs($queryString, $string = null) {
+		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_INDEX') && SEO_REWRITE_INDEX) {
+			if($string === null) $string = SEO_REWRITE_INDEX_FORMAT;
+			return $this->parseIndexURLs($queryString);
+		}
+	}
+
+	/**
+	* Parses multiple board urls.
+	*
+	* @param       integer         $boardID
+	* @param       integer         $pageNo
+	* @param       string          $queryString
+	* @param       string          $string
+	*
+	* @return      string
+	*/
+	public function publicParseMultipleBoardURLs($boardID, $pageNo, $queryString, $string = null) {
+		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_BOARD') && SEO_REWRITE_BOARD) {
+			if($string === null) $string = SEO_REWRITE_BOARD_MULTIPLE_FORMAT;
+			return $this->parseMultipleBoardURLs($boardID, $pageNo, $queryString);
+		} else {
+			return sprintf('index.php?page=Board&amp;boardID=%d&amp;pageNo=%d', $boardID, $pageNo);
+		}
+	}
+
+	/**
+	* Parses board urls.
+	*
+	* @param       integer         $boardID
+	* @param       string          $queryString
+	* @param       string          $string
+	*
+	* @return      string
+	*/
+	public function publicParseBoardURLs($boardID, $queryString, $string = null) {
+		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_BOARD') && SEO_REWRITE_BOARD) {
+			if($string === null) $string = SEO_REWRITE_BOARD_FORMAT;
+			return $this->parseBoardURLs($boardID, $queryString);
+		} else {
+			return sprintf('index.php?page=Board&amp;boardID=%d', $boardID);
+		}
+	}
+
+	/**
+	* Parses multiple thread urls.
+	*
+	* @param       integer         $threadID
+	* @param       integer         $pageNo
+	* @param       string          $queryString
+	* @param       string          $string
+	*
+	* @return      string
+	*/
+	public function publicParseMultipleThreadURLs($threadID, $pageNo, $queryString, $string = null) {
+		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD) {
+			if($string === null) $string = SEO_REWRITE_THREAD_MULTIPLE_FORMAT;
+			return $this->parseMultipleThreadURLs($threadID, $pageNo, $queryString);
+		} else {
+			return sprintf('index.php?page=Thread&amp;threadID=%d&amp;pageNo=%d', $threadID, $pageNo);
+		}
+	}
+
+	/**
+	* Parses thread urls.
+	*
+	* @param       integer         $threadID
+	* @param       string          $queryString
+	* @param       string          $string
+	*
+	* @return      string
+	*/
+	public function publicParseThreadURLs($threadID, $queryString, $string = null) {
+		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD) {
+			if($string === null) $string = SEO_REWRITE_THREAD_FORMAT;
+			return $this->parseThreadURLs($threadID, $queryString);
+		} else {
+			return sprintf('index.php?page=Thread&amp;threadID=%d', $threadID);
+		}
+	}
+
+	/**
+	* Parses post urls.
+	*
+	* @param       integer         $postID
+	* @param       string          $queryString
+	* @param       string          $string
+	*
+	* @return      string
+	*/
+	public function publicParsePostURLs($postID, $queryString, $string = null) {
+		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD) {
+			if($string === null) $string = SEO_REWRITE_THREAD_POST_FORMAT;
+			return $this->parsePostURLs($postID, $queryString);
+		} else {
+			return sprintf('index.php?page=Thread&amp;postID=%d', $postID);
+		}
+	}
+	
+	/**
+	 * resolves a thread url to its threadID
+	 * @param	string		$url
+	 *
+	 * @return	integer
+	 */
+	public function thread2threadID($url) {
+		$url = parse_url($url);
+		
+		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD) {
+			$seorewrite = SEO_REWRITE_THREAD_FORMAT;
+			$seorewrite = preg_replace("/\{[^}]+_ID\}/", "([0-9]+)", $seorewrite);
+			$seorewrite = preg_replace("/\{[^}]+\}/", ".+", $seorewrite);
+			$seorewrite = "/".str_replace('/','\/',$seorewrite)."/";
+			
+			if(preg_match($seorewrite, $url['path'].(isset($url['query'])?$url['query']:''), $match)) {
+				return intval($match[1]);
+			}
+		} else {
+			if(isset($url['query'])) {
+				parse_str($url['query'], $output);
+				return intval($output['threadID']);
+			}
+		}
+		
+		return null;
+	}
+}
+?>
Index: /blicseorewriter/files/lib/page/PublicSEORewriter.class.php
===================================================================
--- /publicseorewriter/files/lib/page/PublicSEORewriter.class.php (revision 228)
+++  (revision )
@@ -1,210 +1,0 @@
-<?php
-// wbb imports
-require_once(WBB_DIR.'lib/data/board/Board.class.php');
-
-// does wbb seo util exist ?
-if(file_exists(WBB_DIR.'lib/data/page/seo/WBBSEORewriter.class.php')) {
-	require_once(WBB_DIR.'lib/data/page/seo/WBBSEORewriter.class.php');
-} 
-// otherwise create a new class
-else {
-	class WBBSEORewriter {
-		protected $encodeHTML, $cachedThreads=array(), $cachedBoardTitles=array();
-	}
-}
-
-// does wcf seo util exist ?
-if(file_exists(WCF_DIR.'lib/data/page/seo/SEOUtil.class.php')) {
-	require_once(WCF_DIR.'lib/data/page/seo/SEOUtil.class.php');
-}
-// otherwise create a new class
- else {
-	class SEOUtil {
-		public static function formatString($string) {
-			return $string;
-		}
-	}
-}
-
-/**
- * Rewrites links to normal or seo urls
- *
- * @author      Torben Brodt
- * @package     de.easy-coding.wcf.data.page.publicseorewriter
- * @license	GNU Lesser General Public License <http://opensource.org/licenses/lgpl-3.0.html>
- */
-class PublicSEORewriter extends WBBSEORewriter {
-
-	/**
-	* Caches threads.
-	*
-	* @param       int           $threadID
-	* @param       array         $row
-	*/
-	public function publicCacheThreads($threadID, $row) {
-		$row['topic'] = SEOUtil::formatString($row['topic']);
-		if ($this->encodeHTML) $row['topic'] = StringUtil::encodeHTML($row['topic']);
-		$this->cachedThreads[$row['threadID']] = array(
-				'topic' => $row['topic'], 
-				'boardID' => $row['boardID']
-			);
-	}
-
-	/**
-	* Caches boards.
-	*
-	* @param       int           $boardID
-	* @param       array         $row
-	*/
-	public function publicCacheBoards($boardID, $row) {
-		$this->cachedBoardTitles[$boardID] = SEOUtil::formatString(WCF::getLanguage()->get($row['title']));
-		if ($this->encodeHTML && !preg_match('/^[a-z0-9_\-]+(?:\.[a-z0-9_\-]+)+$/i', $row['title'])) {
-			$this->cachedBoardTitles[$boardID] = StringUtil::encodeHTML($this->cachedBoardTitles[$boardID]);
-		}
-	}
-
-	/**
-	* clears the cache
-	*/
-	public function clearCache() {
-		$this->cachedThreads = array();
-		$this->cachedBoardTitles = array();
-	}
-
-
-	/**
-	* Parses index urls.
-	*
-	* @param       string          $queryString
-	* @param       string          $string
-	*
-	* @return      string
-	*/
-	public function publicParseIndexURLs($queryString, $string = null) {
-		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_INDEX') && SEO_REWRITE_INDEX) {
-			if($string === null) $string = SEO_REWRITE_INDEX_FORMAT;
-			return $this->parseIndexURLs($queryString);
-		}
-	}
-
-	/**
-	* Parses multiple board urls.
-	*
-	* @param       integer         $boardID
-	* @param       integer         $pageNo
-	* @param       string          $queryString
-	* @param       string          $string
-	*
-	* @return      string
-	*/
-	public function publicParseMultipleBoardURLs($boardID, $pageNo, $queryString, $string = null) {
-		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_BOARD') && SEO_REWRITE_BOARD) {
-			if($string === null) $string = SEO_REWRITE_BOARD_MULTIPLE_FORMAT;
-			return $this->parseMultipleBoardURLs($boardID, $pageNo, $queryString);
-		} else {
-			return sprintf('index.php?page=Board&amp;boardID=%d&amp;pageNo=%d', $boardID, $pageNo);
-		}
-	}
-
-	/**
-	* Parses board urls.
-	*
-	* @param       integer         $boardID
-	* @param       string          $queryString
-	* @param       string          $string
-	*
-	* @return      string
-	*/
-	public function publicParseBoardURLs($boardID, $queryString, $string = null) {
-		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_BOARD') && SEO_REWRITE_BOARD) {
-			if($string === null) $string = SEO_REWRITE_BOARD_FORMAT;
-			return $this->parseBoardURLs($boardID, $queryString);
-		} else {
-			return sprintf('index.php?page=Board&amp;boardID=%d', $boardID);
-		}
-	}
-
-	/**
-	* Parses multiple thread urls.
-	*
-	* @param       integer         $threadID
-	* @param       integer         $pageNo
-	* @param       string          $queryString
-	* @param       string          $string
-	*
-	* @return      string
-	*/
-	public function publicParseMultipleThreadURLs($threadID, $pageNo, $queryString, $string = null) {
-		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD) {
-			if($string === null) $string = SEO_REWRITE_THREAD_MULTIPLE_FORMAT;
-			return $this->parseMultipleThreadURLs($threadID, $pageNo, $queryString);
-		} else {
-			return sprintf('index.php?page=Thread&amp;threadID=%d&amp;pageNo=%d', $threadID, $pageNo);
-		}
-	}
-
-	/**
-	* Parses thread urls.
-	*
-	* @param       integer         $threadID
-	* @param       string          $queryString
-	* @param       string          $string
-	*
-	* @return      string
-	*/
-	public function publicParseThreadURLs($threadID, $queryString, $string = null) {
-		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD) {
-			if($string === null) $string = SEO_REWRITE_THREAD_FORMAT;
-			return $this->parseThreadURLs($threadID, $queryString);
-		} else {
-			return sprintf('index.php?page=Thread&amp;threadID=%d', $threadID);
-		}
-	}
-
-	/**
-	* Parses post urls.
-	*
-	* @param       integer         $postID
-	* @param       string          $queryString
-	* @param       string          $string
-	*
-	* @return      string
-	*/
-	public function publicParsePostURLs($postID, $queryString, $string = null) {
-		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD) {
-			if($string === null) $string = SEO_REWRITE_THREAD_POST_FORMAT;
-			return $this->parsePostURLs($postID, $queryString);
-		} else {
-			return sprintf('index.php?page=Thread&amp;postID=%d', $postID);
-		}
-	}
-	
-	/**
-	 * resolves a thread url to its threadID
-	 * @param	string		$url
-	 *
-	 * @return	integer
-	 */
-	public function thread2threadID($url) {
-		$url = parse_url($url);
-		
-		if(defined('SEO_ENABLE') && SEO_ENABLE && defined('SEO_REWRITE_THREAD') && SEO_REWRITE_THREAD) {
-			$seorewrite = SEO_REWRITE_THREAD_FORMAT;
-			$seorewrite = preg_replace("/\{[^}]+_ID\}/", "([0-9]+)", $seorewrite);
-			$seorewrite = preg_replace("/\{[^}]+\}/", ".+", $seorewrite);
-			$seorewrite = "/".str_replace('/','\/',$seorewrite)."/";
-			
-			if(preg_match($seorewrite, $url['path'].(isset($url['query'])?$url['query']:''), $match)) {
-				return intval($match[1]);
-			}
-		} else {
-			if(isset($url['query'])) {
-				parse_str($url['query'], $output);
-				return intval($output['threadID']);
-			}
-		}
-		
-		return null;
-	}
-}
-?>
Index: /publicseorewriter/package.xml
===================================================================
--- /publicseorewriter/package.xml (revision 794)
+++ /publicseorewriter/package.xml (revision 808)
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE package SYSTEM "http://www.woltlab.com/DTDs/package.dtd">
-<package name="de.easy-coding.wcf.data.page.publicseorewriter">
+<package name="de.easy-coding.wbb.publicseorewriter">
 	<packageInformation>
-		<packageName>Public SEO Rewriter</packageName>
-		<packageName languagecode="fr">Rewriter SEO publique</packageName>
-		<packageDescription><![CDATA[Public Interfaces for the SEO Tool]]></packageDescription>
+		<packageName>Public SEO Rewriter (wbb)</packageName>
+		<packageName languagecode="fr">Rewriter SEO publique (wbb)</packageName>
+		<packageDescription><![CDATA[Public Interfaces for the SEO Tool (wbb)]]></packageDescription>
 		<packageDescription languagecode="de"><![CDATA[Ãffentliche Schnittstellen fÃŒr das SEO Tool]]></packageDescription>
 		<packageDescription languagecode="fr"><![CDATA[Interface publique pour lâoutil SEO]]></packageDescription>
-		<version>1.1.9</version>
+		<version>1.0.0</version>
 		<date>DATE</date>
 		<plugin>com.woltlab.wbb</plugin>
-		<isunique>1</isunique>
+		<isunique>0</isunique>
 	</packageInformation>
 
 	<authorInformation>
 		<author>Torben Brodt</author>
-		<authorURL>http://www.easy-coding.de/trac/wcf</authorURL>
+		<authorURL>http://trac.easy-coding.de/trac/wcf</authorURL>
 	</authorInformation>
 
