diff options
-rw-r--r-- | data/config.default.php | 4 | ||||
-rw-r--r-- | data/templates/default/tagrename.tpl.php | 1 | ||||
-rw-r--r-- | doc/ChangeLog | 10 | ||||
-rw-r--r-- | doc/UPGRADE.txt | 6 | ||||
-rw-r--r-- | doc/configuration.rst | 23 | ||||
-rw-r--r-- | scripts/fix-unfiled-tags.php | 35 | ||||
-rw-r--r-- | src/SemanticScuttle/Service/Bookmark2Tag.php | 11 | ||||
-rw-r--r-- | src/SemanticScuttle/Service/Tag.php | 1 | ||||
-rw-r--r-- | tests/Bookmark2TagTest.php | 20 | ||||
-rw-r--r-- | www/tagrename.php | 2 |
10 files changed, 106 insertions, 7 deletions
diff --git a/data/config.default.php b/data/config.default.php index c850521..9c2f7f3 100644 --- a/data/config.default.php +++ b/data/config.default.php @@ -81,13 +81,15 @@ $theme = 'default'; /** * SemanticScuttle root directory. - * * Set to NULL to autodetect the root url of the website. * * If your installation is in a subdirectory like * "http://www.example.com/semanticscuttle/" then * replace NULL by your address (between "" and with trailing '/') * + * The autodetection works for both HTTP and HTTPS urls. + * If you offer HTTP *only*, then set your root url here. + * * @var string */ $root = null; diff --git a/data/templates/default/tagrename.tpl.php b/data/templates/default/tagrename.tpl.php index 894b964..e3d0467 100644 --- a/data/templates/default/tagrename.tpl.php +++ b/data/templates/default/tagrename.tpl.php @@ -28,7 +28,6 @@ window.onload = function() { </tr> </table> -</p> <?php if (isset($referrer)): ?> <div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div> diff --git a/doc/ChangeLog b/doc/ChangeLog index 8fc6743..b7bf843 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -3,6 +3,16 @@ ChangeLog for SemantiScuttle .. contents:: +0.98.2 - 2011-08-XX +------------------- +- Fix bug #3385724: Rename tag ends with XML Parsing Error +- Fix bug #3386178: "system:unfiled" secret tag does not work +- Fix bug #3384416: Update documentation to explain HTTP/HTTPS root problem + +Run ``scripts/fix-unfiled-tags.php`` to fix old bookmarks that miss the +``system:unfiled`` tags. + + 0.98.1 - 2011-08-01 ------------------- - Fix bug #3375635: XML parsing problem in top.inc.php diff --git a/doc/UPGRADE.txt b/doc/UPGRADE.txt index b144af2..e405431 100644 --- a/doc/UPGRADE.txt +++ b/doc/UPGRADE.txt @@ -4,6 +4,12 @@ Upgrading SemanticScuttle from a previous version .. contents:: +From version 0.94-0.98.1 to 0.98.2 +================================== +Run ``scripts/fix-unfiled-tags.php`` to fix old bookmarks that miss the +``system:unfiled`` tags. + + From version 0.97 to 0.98 ========================= Database updates diff --git a/doc/configuration.rst b/doc/configuration.rst index f457ebb..c8a8bd9 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -2,6 +2,8 @@ Configuration files =================== +.. contents:: + SemanticScuttle uses at least two configuration files: 1. Default configuration file ``config.default.php`` @@ -56,3 +58,24 @@ per-host configuration files: - ``data/config.$hostname.php`` - ``/etc/semanticscuttle/config.$hostname.php`` + + +Configuration options +===================== +``$root`` URL +------------- +Normally, this configuration setting is detected automatically and will +work for both HTTP and HTTPS installations. + +If your installation is available on **HTTP only**, then you need to configure +it. + +The value is the full URL to your installation, including a trailing +slash:: + + $root = "http://homepage.example.org/semanticscuttle/"; + +or:: + + $root = "http://bookmarks.example.org/"; + diff --git a/scripts/fix-unfiled-tags.php b/scripts/fix-unfiled-tags.php new file mode 100644 index 0000000..8a5238e --- /dev/null +++ b/scripts/fix-unfiled-tags.php @@ -0,0 +1,35 @@ +<?php +/** + * SemanticScuttle from approximately 0.94 up to 0.98.2, system:unfiled + * tags were not created when adding new bookmarks with the web interface. + * + * This script adds system:unfiled tags for all bookmarks that have no + * tags. + */ +require_once dirname(__FILE__) . '/../src/SemanticScuttle/header-standalone.php'; + +//needed to load the database object +$bt = SemanticScuttle_Service_Factory::get('Bookmark2Tag'); +$db = SemanticScuttle_Service_Factory::getDb(); + +$query = <<<SQL +SELECT b.bId +FROM sc_bookmarks AS b + LEFT JOIN sc_bookmarks2tags AS bt ON b.bId = bt.bId +WHERE bt.bId IS NULL +SQL; + +if (!($dbresult = $db->sql_query($query))) { + die('Strange SQL error'); +} +while ($row = $db->sql_fetchrow($dbresult)) { + $db->sql_query( + 'INSERT INTO ' . $bt->getTableName() . ' ' + . $db->sql_build_array( + 'INSERT', + array('bId' => $row['bId'], 'tag' => 'system:unfiled') + ) + ); +} +$db->sql_freeresult($dbresult); +?>
\ No newline at end of file diff --git a/src/SemanticScuttle/Service/Bookmark2Tag.php b/src/SemanticScuttle/Service/Bookmark2Tag.php index 914abc6..3e5c533 100644 --- a/src/SemanticScuttle/Service/Bookmark2Tag.php +++ b/src/SemanticScuttle/Service/Bookmark2Tag.php @@ -271,10 +271,11 @@ class SemanticScuttle_Service_Bookmark2Tag extends SemanticScuttle_DbService * Retrieves all tags for a given bookmark except system tags. * * @param integer $bookmarkid ID of the bookmark + * @param boolean $systemTags Return "system:*" tags or not * * @return array Array of tags */ - public function getTagsForBookmark($bookmarkid) + public function getTagsForBookmark($bookmarkid, $systemTags = false) { if (!is_numeric($bookmarkid)) { message_die( @@ -285,9 +286,11 @@ class SemanticScuttle_Service_Bookmark2Tag extends SemanticScuttle_DbService } $query = 'SELECT tag FROM ' . $this->getTableName() - . ' WHERE bId = ' . intval($bookmarkid) - . ' AND LEFT(tag, 7) <> "system:"' - . ' ORDER BY id ASC'; + . ' WHERE bId = ' . intval($bookmarkid); + if (!$systemTags) { + $query .= ' AND LEFT(tag, 7) <> "system:"'; + } + $query .= ' ORDER BY id ASC'; if (!($dbresult = $this->db->sql_query($query))) { message_die( diff --git a/src/SemanticScuttle/Service/Tag.php b/src/SemanticScuttle/Service/Tag.php index 8325285..2476608 100644 --- a/src/SemanticScuttle/Service/Tag.php +++ b/src/SemanticScuttle/Service/Tag.php @@ -143,6 +143,7 @@ class SemanticScuttle_Service_Tag extends SemanticScuttle_DbService if(!is_array($tags)) { $tags = utf8_strtolower(trim($tags)); } else { + $tags = array_filter($tags);//remove empty values for($i=0; $i<count($tags); $i++) { $tags[$i] = utf8_strtolower(trim($tags[$i])); } diff --git a/tests/Bookmark2TagTest.php b/tests/Bookmark2TagTest.php index 4d95d69..f466a7d 100644 --- a/tests/Bookmark2TagTest.php +++ b/tests/Bookmark2TagTest.php @@ -71,6 +71,26 @@ class Bookmark2TagTest extends TestBase + public function testAttachTagsWithoutTagsAddsSystemUnfiled() + { + $bid = $this->addBookmark(null, null, 0, array()); + $this->assertEquals( + array('system:unfiled'), + $this->b2ts->getTagsForBookmark($bid, true) + ); + } + + public function testAttachTagsWithArrayWithEmptyStringAddsSystemUnfiled() + { + $bid = $this->addBookmark(null, null, 0, array('')); + $this->assertEquals( + array('system:unfiled'), + $this->b2ts->getTagsForBookmark($bid, true) + ); + } + + + /** * Test getTagsForBookmark() when the bookmark has no tags * diff --git a/www/tagrename.php b/www/tagrename.php index b07d49d..18e26ab 100644 --- a/www/tagrename.php +++ b/www/tagrename.php @@ -67,7 +67,7 @@ if (POST_CONFIRM) { $template = 'error.500.tpl'; } } elseif (POST_CANCEL) { - header('Location: '. createURL('bookmarks', $currentUser->getUsername() .'/'. $tags)); + header('Location: '. createURL('bookmarks', $currentUser->getUsername() .'/'. $tag)); } else { $tplVars['subtitle'] = T_('Rename Tag') .': '. $tag; $tplVars['formaction'] = $_SERVER['SCRIPT_NAME'] .'/'. $tag; |