diff --git a/build.xml b/build.xml index 83341e0..9773a63 100644 --- a/build.xml +++ b/build.xml @@ -208,7 +208,7 @@ - @@ -307,17 +307,6 @@ - - - - - - @@ -327,4 +316,4 @@ - \ No newline at end of file + diff --git a/data/templates/bookmarkcommondescriptionedit.tpl.php b/data/templates/bookmarkcommondescriptionedit.tpl.php index af5909a..807c58b 100644 --- a/data/templates/bookmarkcommondescriptionedit.tpl.php +++ b/data/templates/bookmarkcommondescriptionedit.tpl.php @@ -30,7 +30,8 @@ window.onload = function() { if(strlen($description['cdDatetime'])>0) { echo T_('Last modification:').' '.$description['cdDatetime'].', '; $lastUser = $userservice->getUser($description['uId']); - echo ''.$lastUser['username'].''; + echo '' + . SemanticScuttle_Model_UserArray::getName($lastUser) . ''; } ?> diff --git a/data/templates/bookmarks.tpl.php b/data/templates/bookmarks.tpl.php index 34beb39..55d6a0f 100644 --- a/data/templates/bookmarks.tpl.php +++ b/data/templates/bookmarks.tpl.php @@ -312,7 +312,8 @@ if ($currenttag!= '') { $copy .= T_('you'); } else { $copy .= '' - . $row['username'] . ''; + . SemanticScuttle_Model_UserArray::getName($row) + . ''; } // others diff --git a/data/templates/editprofile.tpl.php b/data/templates/editprofile.tpl.php index 518afbe..2a3c3b8 100644 --- a/data/templates/editprofile.tpl.php +++ b/data/templates/editprofile.tpl.php @@ -56,7 +56,7 @@ $this->includeTemplate($GLOBALS['top_include']); / - / + / diff --git a/data/templates/sidebar.block.users.php b/data/templates/sidebar.block.users.php index 4dd47ae..58fdfb7 100644 --- a/data/templates/sidebar.block.users.php +++ b/data/templates/sidebar.block.users.php @@ -18,7 +18,7 @@ if ($lastUsers && count($lastUsers) > 0) { foreach ($lastUsers as $row) { echo ''; echo ''; - echo $row['username']; + echo SemanticScuttle_Model_UserArray::getName($row); echo ''; echo ' ('.T_('bookmarks').')'; echo ''; diff --git a/data/templates/tagcommondescriptionedit.tpl.php b/data/templates/tagcommondescriptionedit.tpl.php index d3a006a..f938f93 100644 --- a/data/templates/tagcommondescriptionedit.tpl.php +++ b/data/templates/tagcommondescriptionedit.tpl.php @@ -20,7 +20,8 @@ window.onload = function() { if(strlen($description['cdDatetime'])>0) { echo T_('Last modification:').' '.$description['cdDatetime'].', '; $lastUser = $userservice->getUser($description['uId']); - echo ''.$lastUser['username'].''; + echo '' + . SemanticScuttle_Model_UserArray::getName($lastUser) . ''; } ?> diff --git a/data/templates/users.tpl.php b/data/templates/users.tpl.php index c209f94..fa92bef 100644 --- a/data/templates/users.tpl.php +++ b/data/templates/users.tpl.php @@ -14,7 +14,14 @@ if ($users && count($users) > 0) { '.$row['username'].' ('.T_('profile').' '.T_('created in').' '.date('M Y',strtotime($row['uDatetime'])).') : '.T_('bookmarks').''; + echo '
  • ' + . SemanticScuttle_Model_UserArray::getName($row) . '' + . ' (' + . T_('profile') . ' ' + . T_('created in') . ' ' + . date('M Y', strtotime($row['uDatetime'])) . ')' + . ' : ' + . T_('bookmarks') . '
  • '; } ?> diff --git a/doc/ChangeLog b/doc/ChangeLog index 60401d4..4c93a9a 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -3,16 +3,24 @@ ChangeLog for SemantiScuttle 0.9X.X - 2010-XX-XX ------------------- +- Fix bug #3187177: Wrong URL / Export XML Bookmarks - Fix bug in getTagsForBookmarks() that fetched all tags -- Fix bug #3073215: Updating bookmark time does not work -- Fix bug #3074816: French translation breaks edit javascript -- Fix bug #3111254: Search in my_watchlist results in error -- Show error message on mysqli connection errors +- Implement request #3054906: Show user's full name instead of nickname - Implement patch #3059829: update FR_CA translation +- Show error message on mysqli connection errors - Update php-gettext library to 1.0.10 - api/posts/add respects the "replace" parameter now +0.97.2 - 2011-02-17 +------------------- +- Fix bug #3178597: Broken link to context in gsearch admin index page +- Fix bug #3074816: French translation breaks edit javascript +- Fix bug #3111254: Search in my_watchlist results in error +- Fix bug #3073215: Updating bookmark time does not work +- Fix bug #3065284: AjaxVote problem with Webkit browsers + + 0.97.1 - 2010-09-30 ------------------- This is a security release! We do highly recommend to update diff --git a/doc/developers/doc-TODO b/doc/developers/doc-TODO new file mode 100644 index 0000000..69f6907 --- /dev/null +++ b/doc/developers/doc-TODO @@ -0,0 +1,4 @@ +- Which fields are searched? + title, description, private note, username, tags + +- What are [isbn] and so for? diff --git a/src/SemanticScuttle/Model/UserArray.php b/src/SemanticScuttle/Model/UserArray.php new file mode 100644 index 0000000..a0d9c9b --- /dev/null +++ b/src/SemanticScuttle/Model/UserArray.php @@ -0,0 +1,41 @@ + + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + +/** + * Mostly static methods that help working with a user row array from database. + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ +class SemanticScuttle_Model_UserArray +{ + /** + * Returns full user name as specified in the profile if it is set, + * otherwise the nickname/loginname is returned. + * + * @param array $row User row array from database + * + * @return string Full name or username + */ + public static function getName($row) + { + if (isset($row['name']) && $row['name']) { + return $row['name']; + } + return $row['username']; + } +} +?> \ No newline at end of file diff --git a/src/SemanticScuttle/Service/Bookmark.php b/src/SemanticScuttle/Service/Bookmark.php index 4e18d3f..a30ad5f 100644 --- a/src/SemanticScuttle/Service/Bookmark.php +++ b/src/SemanticScuttle/Service/Bookmark.php @@ -253,18 +253,18 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService /** * Counts bookmarks for a user. * - * @param integer $uId User ID - * @param string $range Range of bookmarks: - * 'public', 'shared', 'private' - * or 'all' + * @param integer $uId User ID + * @param string $status Bookmark visibility/privacy settings: + * 'public', 'shared', 'private' + * or 'all' * * @return integer Number of bookmarks */ - public function countBookmarks($uId, $range = 'public') + public function countBookmarks($uId, $status = 'public') { $sql = 'SELECT COUNT(*) as "0" FROM '. $this->getTableName(); $sql.= ' WHERE uId = ' . intval($uId); - switch ($range) { + switch ($status) { case 'all': //no constraints break; @@ -439,7 +439,7 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService * @param string $title Bookmark title * @param string $description Long bookmark description * @param string $privateNote Private note for the user. - * @param string $status Bookmark visibility: + * @param string $status Bookmark visibility / privacy settings: * 0 - public * 1 - shared * 2 - private @@ -554,7 +554,7 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService * @param string $title Bookmark title * @param string $description Long bookmark description * @param string $privateNote Private note for the user. - * @param string $status Bookmark visibility: + * @param string $status Bookmark visibility / privacy setting: * 0 - public * 1 - shared * 2 - private @@ -734,7 +734,8 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService if (SQL_LAYER == 'mysql4') { $query_1 .= 'SQL_CALC_FOUND_ROWS '; } - $query_1 .= 'B.*, U.'. $userservice->getFieldName('username'); + $query_1 .= 'B.*, U.'. $userservice->getFieldName('username') + . ', U.name'; $query_2 = ' FROM '. $userservice->getTableName() .' AS U' . ', '. $this->getTableName() .' AS B'; diff --git a/src/SemanticScuttle/header.php b/src/SemanticScuttle/header.php index dc25581..9c5f7da 100644 --- a/src/SemanticScuttle/header.php +++ b/src/SemanticScuttle/header.php @@ -68,6 +68,7 @@ require_once 'SemanticScuttle/Service.php'; require_once 'SemanticScuttle/DbService.php'; require_once 'SemanticScuttle/Service/Factory.php'; require_once 'SemanticScuttle/functions.php'; +require_once 'SemanticScuttle/Model/UserArray.php'; if (count($GLOBALS['serviceoverrides']) > 0 && !defined('UNIT_TEST_MODE') diff --git a/tests/AllTests.php b/tests/AllTests.php index ded6824..4afcc6b 100644 --- a/tests/AllTests.php +++ b/tests/AllTests.php @@ -17,9 +17,6 @@ if (!defined('PHPUnit_MAIN_METHOD')) { } require_once 'prepare.php'; -require_once 'PHPUnit/Framework/TestSuite.php'; - -PHPUnit_Util_Filter::addFileToFilter(__FILE__); /** * SemanticScuttle unit tests. diff --git a/tests/Bookmark2TagTest.php b/tests/Bookmark2TagTest.php index e6aaf1d..1823c60 100644 --- a/tests/Bookmark2TagTest.php +++ b/tests/Bookmark2TagTest.php @@ -120,7 +120,7 @@ class Bookmark2TagTest extends TestBase $this->b2ts->attachTags($bid, array('foo', 'bar', 'fuu')); $tags = $this->b2ts->getTagsForBookmark($bid); - $this->assertType('array', $tags); + $this->assertInternalType('array', $tags); $this->assertContains('foo', $tags); $this->assertContains('bar', $tags); $this->assertContains('fuu', $tags); @@ -141,10 +141,10 @@ class Bookmark2TagTest extends TestBase $alltags = $this->b2ts->getTagsForBookmarks( array($bid1, $bid2) ); - $this->assertType('array', $alltags); + $this->assertInternalType('array', $alltags); $this->assertEquals(2, count($alltags)); - $this->assertType('array', $alltags[$bid1]); - $this->assertType('array', $alltags[$bid2]); + $this->assertInternalType('array', $alltags[$bid1]); + $this->assertInternalType('array', $alltags[$bid2]); $this->assertEquals(0, count($alltags[$bid1])); $this->assertEquals(0, count($alltags[$bid2])); } @@ -179,9 +179,9 @@ class Bookmark2TagTest extends TestBase $alltags = $this->b2ts->getTagsForBookmarks( array($bid1, $bid2, $bid3, $bid4) ); - $this->assertType('array', $alltags); + $this->assertInternalType('array', $alltags); foreach ($alltags as $bid => $btags) { - $this->assertType('array', $btags); + $this->assertInternalType('array', $btags); if ($bid == $bid1) { $this->assertEquals(3, count($btags)); $this->assertContains('foo', $btags); diff --git a/tests/BookmarkTest.php b/tests/BookmarkTest.php index 2a7c318..f54fe9a 100644 --- a/tests/BookmarkTest.php +++ b/tests/BookmarkTest.php @@ -263,7 +263,7 @@ class BookmarkTest extends TestBase $bookmark = $this->bs->getBookmark($bid); $ret = $this->bs->bookmarksExist(array($bookmark['bAddress'])); - $this->assertType('array', $ret); + $this->assertInternalType('array', $ret); $this->assertEquals(1, count($ret)); $this->assertTrue($ret[$bookmark['bAddress']]); } @@ -291,7 +291,7 @@ class BookmarkTest extends TestBase $bookmark2['bAddress'] ) ); - $this->assertType('array', $ret); + $this->assertInternalType('array', $ret); $this->assertEquals(2, count($ret)); $this->assertTrue($ret[$bookmark['bAddress']]); $this->assertTrue($ret[$bookmark2['bAddress']]); @@ -308,7 +308,7 @@ class BookmarkTest extends TestBase public function testBookmarksExistFalseSingle() { $ret = $this->bs->bookmarksExist(array('does-not-exist')); - $this->assertType('array', $ret); + $this->assertInternalType('array', $ret); $this->assertEquals(1, count($ret)); $this->assertFalse($ret['does-not-exist']); } @@ -329,7 +329,7 @@ class BookmarkTest extends TestBase 'does-not-exist-3', ); $ret = $this->bs->bookmarksExist($bms); - $this->assertType('array', $ret); + $this->assertInternalType('array', $ret); $this->assertEquals(3, count($ret)); $this->assertFalse($ret['does-not-exist']); $this->assertFalse($ret['does-not-exist-2']); @@ -366,7 +366,7 @@ class BookmarkTest extends TestBase 'does-not-exist-3' ) ); - $this->assertType('array', $ret); + $this->assertInternalType('array', $ret); $this->assertEquals(5, count($ret)); $this->assertTrue($ret[$bookmark['bAddress']]); $this->assertTrue($ret[$bookmark2['bAddress']]); @@ -475,7 +475,7 @@ class BookmarkTest extends TestBase foreach ($bms['bookmarks'] as $bm) { $this->assertArrayHasKey('tags', $bm); - $this->assertType('array', $bm['tags']); + $this->assertInternalType('array', $bm['tags']); if ($bm['bId'] == $bid) { $this->assertContains('foo', $bm['tags']); $this->assertContains('bar', $bm['tags']); @@ -756,7 +756,7 @@ class BookmarkTest extends TestBase $bm = $this->bs->getBookmark($bid, true); $this->assertArrayHasKey('tags', $bm); - $this->assertType('array', $bm['tags']); + $this->assertInternalType('array', $bm['tags']); $this->assertContains('foo', $bm['tags']); $this->assertContains('bar', $bm['tags']); } @@ -874,7 +874,7 @@ class BookmarkTest extends TestBase $bid = $this->addBookmark($uid, $url); $bm = $this->bs->getBookmarkByAddress($url); - $this->assertType('array', $bm); + $this->assertInternalType('array', $bm); $this->assertEquals($url, $bm['bAddress']); } @@ -900,7 +900,7 @@ class BookmarkTest extends TestBase $bid = $this->addBookmark($uid, $url); $bm = $this->bs->getBookmarkByAddress($incomplete); - $this->assertType('array', $bm); + $this->assertInternalType('array', $bm); $this->assertEquals($url, $bm['bAddress']); } @@ -951,7 +951,7 @@ class BookmarkTest extends TestBase $this->assertEquals('new description', $bm['bDescription']); $this->assertEquals('new private note', $bm['bPrivateNote']); $this->assertEquals(1, $bm['bStatus']); - $this->assertType('array', $bm['tags']); + $this->assertInternalType('array', $bm['tags']); $this->assertEquals(1, count($bm['tags'])); $this->assertContains('new', $bm['tags']); } diff --git a/tests/TestBase.php b/tests/TestBase.php index c0acd58..6006f4e 100644 --- a/tests/TestBase.php +++ b/tests/TestBase.php @@ -11,10 +11,6 @@ * @link http://sourceforge.net/projects/semanticscuttle */ -require_once 'PHPUnit/Framework.php'; - -PHPUnit_Util_Filter::addFileToFilter(__FILE__); - /** * Base unittest class that provides several helper methods. * diff --git a/tests/TestBaseApi.php b/tests/TestBaseApi.php index eb1457f..dacdecd 100644 --- a/tests/TestBaseApi.php +++ b/tests/TestBaseApi.php @@ -11,10 +11,6 @@ * @link http://sourceforge.net/projects/semanticscuttle */ -require_once 'PHPUnit/Framework.php'; - -PHPUnit_Util_Filter::addFileToFilter(__FILE__); - /** * Base unittest class for web API tests. * diff --git a/tests/UserArrayTest.php b/tests/UserArrayTest.php new file mode 100644 index 0000000..cb53f15 --- /dev/null +++ b/tests/UserArrayTest.php @@ -0,0 +1,68 @@ + + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ + +require_once 'prepare.php'; + +/** + * Unit tests for the SemanticScuttle user array model. + * + * @category Bookmarking + * @package SemanticScuttle + * @author Christian Weiske + * @license GPL http://www.gnu.org/licenses/gpl.html + * @link http://sourceforge.net/projects/semanticscuttle + */ +class UserArrayTest extends PHPUnit_Framework_TestCase +{ + + public function testGetNameLongName() + { + $this->assertEquals( + 'John Doe', + SemanticScuttle_Model_UserArray::getName( + array( + 'name' => 'John Doe', + 'username' => 'jdoe' + ) + ) + ); + } + + public function testGetNameUsernameIfNameIsEmpty() + { + $this->assertEquals( + 'jdoe', + SemanticScuttle_Model_UserArray::getName( + array( + 'name' => '', + 'username' => 'jdoe' + ) + ) + ); + } + + public function testGetNameUsernameIfNameIsNotSet() + { + $this->assertEquals( + 'jdoe', + SemanticScuttle_Model_UserArray::getName( + array( + 'username' => 'jdoe' + ) + ) + ); + } + +} + +?> \ No newline at end of file diff --git a/tests/UserTest.php b/tests/UserTest.php index 6da7776..49f3730 100644 --- a/tests/UserTest.php +++ b/tests/UserTest.php @@ -143,7 +143,7 @@ class UserTest extends TestBase $uid = $this->addUser(); $users = $this->us->getObjectUsers(); $this->assertEquals(1, count($users)); - $this->assertType('SemanticScuttle_Model_User', reset($users)); + $this->assertInstanceOf('SemanticScuttle_Model_User', reset($users)); } @@ -160,7 +160,7 @@ class UserTest extends TestBase $uid3 = $this->addUser(); $users = $this->us->getObjectUsers(); $this->assertEquals(3, count($users)); - $this->assertType('SemanticScuttle_Model_User', reset($users)); + $this->assertInstanceOf('SemanticScuttle_Model_User', reset($users)); } diff --git a/www/gsearch/index.php b/www/gsearch/index.php index 585536a..70be05e 100644 --- a/www/gsearch/index.php +++ b/www/gsearch/index.php @@ -31,7 +31,9 @@ if($GLOBALS['enableGoogleCustomSearch']==false) { echo '

    '; echo T_('Admin tips: '); echo T_('To refresh manually Google Custom Search Engine, goes to: '); - echo 'http://www.google.com/coop/cse/cref
    '; + echo 'http://www.google.com/coop/cse/cref' + . '
    '; echo T_('If no result appears, check that all the urls are valid in the admin section.'); echo '

    '; diff --git a/www/jsScuttle.php b/www/jsScuttle.php index f37da78..c166755 100644 --- a/www/jsScuttle.php +++ b/www/jsScuttle.php @@ -155,7 +155,10 @@ function processVotingResult() { var bmnode = document.getElementById('bmv-'+bookmark); bmnode.parentNode.replaceChild( - response.getElementsByTagName('html')[0].firstChild, + xmlhttp.responseXML.importNode( + response.getElementsByTagName('html')[0].firstChild, + true + ), bmnode ); } diff --git a/www/rss.php b/www/rss.php index 6dcfb4c..298d9ba 100644 --- a/www/rss.php +++ b/www/rss.php @@ -116,7 +116,7 @@ foreach ($bookmarks_tmp as $key => $row) { 'title' => $row['bTitle'], 'link' => $_link, 'description' => $row['bDescription'], - 'creator' => $row['username'], + 'creator' => SemanticScuttle_Model_UserArray::getName($row), 'pubdate' => $_pubdate, 'tags' => $row['tags'] );