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']
);