Merge branch '0.98'

This commit is contained in:
Christian Weiske 2012-01-20 22:10:30 +01:00
commit 6ff4370a20
48 changed files with 19743 additions and 10532 deletions

View File

@ -556,11 +556,11 @@ $enableWebsiteThumbnails = false;
* User ID from websitethumbnail.de * User ID from websitethumbnail.de
* *
* You need to register on * You need to register on
* http://www.artviper.net/registerAPI.php * http://www.artviper.net/registerapi.php
* in order to use thumbnails on your domain * in order to use thumbnails on your domain
* *
* @var string * @var string
* @link http://www.artviper.net/registerAPI.php * @link http://www.artviper.net/registerapi.php
*/ */
$thumbnailsUserId = null; $thumbnailsUserId = null;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Scuttle\n" "Project-Id-Version: Scuttle\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-11-01 17:15+0100\n" "POT-Creation-Date: 2012-01-20 13:58+0100\n"
"PO-Revision-Date: 2008-04-24 19:07+0100\n" "PO-Revision-Date: 2008-04-24 19:07+0100\n"
"Last-Translator: BenjaminHKB <benjamin.huynh-kim-bang@loria.fr>\n" "Last-Translator: BenjaminHKB <benjamin.huynh-kim-bang@loria.fr>\n"
"Language-Team: fr-FR <toony.sf@chezouam.net>\n" "Language-Team: fr-FR <toony.sf@chezouam.net>\n"
@ -700,9 +700,10 @@ msgid "Instructions"
msgstr "Instructions" msgstr "Instructions"
#: data/templates/default/importDelicious.tpl.php:33 #: data/templates/default/importDelicious.tpl.php:33
#, fuzzy
msgid "" msgid ""
"Log in to the <a href=\"http://del.icio.us/api/posts/all\">export page at " "Log in to the <a href=\"https://api.del.icio.us/v1/posts/all\">export page "
"del.icio.us</a>" "at del.icio.us</a>"
msgstr "" msgstr ""
"Se connecter à la <a href=\"http://del.icio.us/api/posts/all\">page d'export " "Se connecter à la <a href=\"http://del.icio.us/api/posts/all\">page d'export "
"de del.icio.us</a>" "de del.icio.us</a>"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-11-01 17:15+0100\n" "POT-Creation-Date: 2012-01-20 13:58+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -660,8 +660,8 @@ msgstr ""
#: data/templates/default/importDelicious.tpl.php:33 #: data/templates/default/importDelicious.tpl.php:33
msgid "" msgid ""
"Log in to the <a href=\"http://del.icio.us/api/posts/all\">export page at " "Log in to the <a href=\"https://api.del.icio.us/v1/posts/all\">export page "
"del.icio.us</a>" "at del.icio.us</a>"
msgstr "" msgstr ""
#: data/templates/default/importDelicious.tpl.php:34 #: data/templates/default/importDelicious.tpl.php:34

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

259
data/tables-postgresql.sql Normal file
View File

@ -0,0 +1,259 @@
-- Semantic Scuttle - Tables creation SQL script
-- ! Dont forget to change table names according to $tableprefix defined in config.php !
--
-- Table structure for table "sc_bookmarks"
--
CREATE SEQUENCE bIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_bookmarks (
bId integer DEFAULT nextval('bIds'::text) PRIMARY KEY,
uId integer NOT NULL,
bIp varchar(40) DEFAULT NULL,
bStatus smallint NOT NULL,
bDatetime timestamp with time zone DEFAULT now() NOT NULL,
bModified timestamp with time zone DEFAULT now() NOT NULL,
bTitle varchar(255) DEFAULT '' NOT NULL,
bAddress varchar(1500) DEFAULT '' NOT NULL,
bDescription text,
bPrivateNote text,
bHash varchar(32) DEFAULT '' NOT NULL,
bVotes integer NOT NULL,
bVoting integer NOT NULL,
bShort varchar(16) DEFAULT NULL
);
CREATE INDEX sc_bookmarks_usd ON sc_bookmarks (uId, bStatus, bDatetime);
CREATE INDEX sc_bookmarks_hui ON sc_bookmarks (bHash, uId, bId);
CREATE INDEX sc_bookmarks_du ON sc_bookmarks (bDatetime, uId);
--
-- Table structure for table "sc_bookmarks2tags"
--
CREATE SEQUENCE b2tIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_bookmarks2tags (
id integer DEFAULT nextval('b2tIds'::text) PRIMARY KEY,
bId integer NOT NULL,
tag varchar(100) DEFAULT '' NOT NULL
);
CREATE UNIQUE INDEX sc_bookmarks2tags_tag_bId on sc_bookmarks2tags (tag, bId);
CREATE INDEX sc_bookmarks2tags_bId on sc_bookmarks2tags (bId);
--
-- Table structure for table "sc_commondescription"
--
CREATE SEQUENCE cdIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_commondescription (
cdId integer DEFAULT nextval('cdIds'::text) PRIMARY KEY,
uId integer NOT NULL,
tag varchar(100) DEFAULT '' NOT NULL,
bHash varchar(32) DEFAULT '' NOT NULL,
cdTitle varchar(255) DEFAULT '' NOT NULL,
cdDescription text,
cdDatetime timestamp with time zone DEFAULT now() NOT NULL
);
CREATE UNIQUE INDEX sc_commondescription_tag_timestamp on sc_commondescription (tag, cdDatetime);
CREATE UNIQUE INDEX sc_commondescription_bookmark_timestamp on sc_commondescription (bHash, cdDatetime);
--
-- Table structure for table "sc_searchhistory"
--
CREATE SEQUENCE shIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_searchhistory (
shId integer DEFAULT nextval('shIds'::text) PRIMARY KEY,
shTerms varchar(255) NOT NULL DEFAULT '',
shRange varchar(32) NOT NULL DEFAULT '',
shDatetime timestamp with time zone DEFAULT now() NOT NULL,
shNbResults integer NOT NULL,
uId integer NOT NULL
);
--
-- Table structure for table "sc_tags"
--
CREATE SEQUENCE tIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_tags (
tId integer DEFAULT nextval('tIds'::text) PRIMARY KEY,
tag varchar(100) NOT NULL DEFAULT '',
uId integer NOT NULL,
tDescription text
);
CREATE UNIQUE INDEX sc_tags_tag_uId on sc_tags (tag, uId);
--
-- Table structure for table "sc_tags2tags"
--
CREATE SEQUENCE ttIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_tags2tags (
ttId integer DEFAULT nextval('ttIds'::text) PRIMARY KEY,
tag1 varchar(100) NOT NULL DEFAULT '',
tag2 varchar(100) NOT NULL DEFAULT '',
relationType varchar(32) NOT NULL DEFAULT '',
uId integer NOT NULL
);
CREATE UNIQUE INDEX sc_tags2tags_tag1_tag2_uId on sc_tags2tags (tag1, tag2, relationType, uId);
--
-- Table structure for table "sc_tagscache"
--
CREATE SEQUENCE tcIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_tagscache (
tcId integer DEFAULT nextval('tcIds'::text) PRIMARY KEY,
tag1 varchar(100) NOT NULL DEFAULT '',
tag2 varchar(100) NOT NULL DEFAULT '',
relationType varchar(32) NOT NULL DEFAULT '',
uId integer NOT NULL DEFAULT '0'
);
CREATE UNIQUE INDEX sc_tagscache_tag1_tag2_type_uId on sc_tagscache (tag1, tag2, relationType, uId);
--
-- Table structure for table "sc_tagsstats"
--
CREATE SEQUENCE tstIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_tagsstats (
tstId integer DEFAULT nextval('tstIds'::text) PRIMARY KEY,
tag1 varchar(100) NOT NULL DEFAULT '',
relationType varchar(32) NOT NULL DEFAULT '',
uId integer NOT NULL,
nb integer NOT NULL,
depth integer NOT NULL,
nbupdate integer NOT NULL
);
CREATE UNIQUE INDEX sc_tagsstats_tag1_type_uId on sc_tagsstats (tag1, relationType, uId);
--
-- Table structure for table "sc_users"
--
CREATE SEQUENCE uIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_users (
uId integer DEFAULT nextval('uIds'::text) PRIMARY KEY,
username varchar(25) NOT NULL DEFAULT '',
password varchar(40) NOT NULL DEFAULT '',
uDatetime timestamp with time zone DEFAULT now() NOT NULL,
uModified timestamp with time zone DEFAULT now() NOT NULL,
name varchar(50) DEFAULT NULL,
email varchar(50) NOT NULL DEFAULT '',
homepage varchar(255) DEFAULT NULL,
uContent text,
privateKey varchar(33) DEFAULT NULL
);
CREATE UNIQUE INDEX privateKey on sc_users (privateKey);
--
-- Table structure for table "sc_users_sslclientcerts"
--
CREATE SEQUENCE ids
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_users_sslclientcerts (
id integer DEFAULT nextval('ids'::text) PRIMARY KEY,
uId integer NOT NULL,
sslSerial varchar(32) DEFAULT '' NOT NULL,
sslClientIssuerDn varchar(1024) DEFAULT '' NOT NULL,
sslName varchar(64) DEFAULT '' NOT NULL,
sslEmail varchar(64) DEFAULT '' NOT NULL
);
--
-- Table structure for table "sc_version"
--
CREATE TABLE sc_version (
schema_version integer NOT NULL
);
--
-- Table structure for table "sc_votes"
--
CREATE TABLE sc_votes (
bId integer NOT NULL,
uId integer NOT NULL,
vote integer NOT NULL
);
CREATE UNIQUE INDEX bid_2 on sc_votes (bId, uId);
CREATE INDEX bid on sc_votes (bId);
CREATE INDEX uid on sc_votes (uId);
--
-- Table structure for table "sc_watched"
--
CREATE SEQUENCE wIds
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE sc_watched (
wId integer DEFAULT nextval('wIds'::text) PRIMARY KEY,
uId integer NOT NULL,
watched integer NOT NULL
);
CREATE INDEX sc_watched_uId on sc_watched (uId);

View File

@ -45,7 +45,7 @@ if (browser == "Opera") {
+ '<?php + '<?php
$popupLink = 'javascript:' $popupLink = 'javascript:'
. "location.href='" . "location.href='"
. createURL('bookmarks', $GLOBALS['user']) . addProtocolToUrl(createURL('bookmarks', $GLOBALS['user']))
. '?action=add' . '?action=add'
. "&address='+encodeURIComponent(document.location.href)+'" . "&address='+encodeURIComponent(document.location.href)+'"
. "&title='+encodeURIComponent(document.title)+'" . "&title='+encodeURIComponent(document.title)+'"
@ -71,7 +71,7 @@ echo jsEscTitle(htmlspecialchars($link));
+ '<?php + '<?php
$popupLink = 'javascript:' $popupLink = 'javascript:'
. 'open(' . 'open('
. "'" . createURL('bookmarks', $GLOBALS['user']) . "'" . addProtocolToUrl(createURL('bookmarks', $GLOBALS['user']))
. '?action=add' . '?action=add'
. '&popup=1' . '&popup=1'
. "&address='+encodeURIComponent(document.location.href)+'" . "&address='+encodeURIComponent(document.location.href)+'"
@ -97,7 +97,7 @@ echo jsEscTitle(htmlspecialchars($link));
} else { } else {
$('#bookmarklet').append( $('#bookmarklet').append(
'<ul>' '<ul>'
+ '<li><a class="bookmarklet" href="javascript:x=document;a=encodeURIComponent(x.location.href);t=encodeURIComponent(x.title);d=encodeURIComponent('+selection+');location.href=\'<?php echo createURL('bookmarks', $GLOBALS['user']); ?>?action=add&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d;void 0;"><?php echo jsEscTitle(sprintf(T_('Post to %s'), $GLOBALS['sitename'])); ?><\/a><\/li>' + '<li><a class="bookmarklet" href="javascript:x=document;a=encodeURIComponent(x.location.href);t=encodeURIComponent(x.title);d=encodeURIComponent('+selection+');location.href=\'<?php echo addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])); ?>?action=add&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d;void 0;"><?php echo jsEscTitle(sprintf(T_('Post to %s'), $GLOBALS['sitename'])); ?><\/a><\/li>'
+ '<li>' + '<li>'
+ '<a class="bookmarklet" href="' + '<a class="bookmarklet" href="'
+ 'javascript:x=document;' + 'javascript:x=document;'
@ -105,7 +105,7 @@ echo jsEscTitle(htmlspecialchars($link));
+ 't=encodeURIComponent(x.title);' + 't=encodeURIComponent(x.title);'
+ 'd=encodeURIComponent('+selection+');' + 'd=encodeURIComponent('+selection+');'
+ 'open(' + 'open('
+ '\'<?php echo createURL('bookmarks', $GLOBALS['user']); ?>?action=add&amp;popup=1&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d,\'<?php echo htmlspecialchars(jsEscTitleDouble($GLOBALS['sitename'])); ?>\',\'modal=1,status=0,scrollbars=1,toolbar=0,resizable=1,width=790,height=465,left=\'+(screen.width-790)/2+\',top=\'+(screen.height-425)/2' + '\'<?php echo addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])); ?>?action=add&amp;popup=1&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d,\'<?php echo htmlspecialchars(jsEscTitleDouble($GLOBALS['sitename'])); ?>\',\'modal=1,status=0,scrollbars=1,toolbar=0,resizable=1,width=790,height=465,left=\'+(screen.width-790)/2+\',top=\'+(screen.height-425)/2'
+ ');void 0;">' + ');void 0;">'
+ '<?php echo jsEscTitle(sprintf(T_('Post to %s (Pop-up)'), $GLOBALS['sitename'])); ?>' + '<?php echo jsEscTitle(sprintf(T_('Post to %s (Pop-up)'), $GLOBALS['sitename'])); ?>'
+ '</a>' + '</a>'

View File

@ -13,6 +13,6 @@ $thumbnailHash = md5(
$address . $GLOBALS['thumbnailsUserId'] . $GLOBALS['thumbnailsKey'] $address . $GLOBALS['thumbnailsUserId'] . $GLOBALS['thumbnailsKey']
); );
//echo '<a href="'. $address .'"'. $rel .' ><img class="thumbnail" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />'; //echo '<a href="'. $address .'"'. $rel .' ><img class="thumbnail" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />';
echo '<img class="thumbnail" onclick="window.location.href=\''.$address.'\'" src="http://www.artviper.net/screenshots/screener.php?url='.$address.'&w=120&sdx=1280&userID='.$GLOBALS['thumbnailsUserId'].'&hash='.$thumbnailHash.'" />'; echo '<img class="thumbnail" onclick="window.location.href=\''.htmlspecialchars($address).'\'" src="http://www.artviper.net/screenshots/screener.php?url='.htmlspecialchars($address).'&amp;w=120&amp;sdx=1280&amp;userID='.$GLOBALS['thumbnailsUserId'].'&amp;hash='.$thumbnailHash.'" />';
?> ?>

View File

@ -30,7 +30,7 @@ $this->includeTemplate($GLOBALS['top_include']);
<h3><?php echo T_('Instructions'); ?></h3> <h3><?php echo T_('Instructions'); ?></h3>
<ol> <ol>
<li><?php echo T_('Log in to the <a href="http://del.icio.us/api/posts/all">export page at del.icio.us</a>'); ?>.</li> <li><?php echo T_('Log in to the <a href="https://api.del.icio.us/v1/posts/all">export page at del.icio.us</a>'); ?>.</li>
<li><?php echo T_('Save the resulting <abbr title="Extensible Markup Language">XML</abbr> file to your computer'); ?>.</li> <li><?php echo T_('Save the resulting <abbr title="Extensible Markup Language">XML</abbr> file to your computer'); ?>.</li>
<li><?php echo T_('Click <kbd>Browse...</kbd> to find this file on your computer. The maximum size the file can be is 1MB'); ?>.</li> <li><?php echo T_('Click <kbd>Browse...</kbd> to find this file on your computer. The maximum size the file can be is 1MB'); ?>.</li>
<li><?php echo T_('Select the default privacy setting for your imported bookmarks'); ?>.</li> <li><?php echo T_('Select the default privacy setting for your imported bookmarks'); ?>.</li>

View File

@ -1,10 +1,13 @@
<?php <?php
echo '<' . '?xml version="1.0" encoding="utf-8" ?' . ">\n"; echo '<' . '?xml version="1.0" encoding="utf-8" ?' . ">\n";
?> ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel> <channel>
<title><?php echo $feedtitle; ?></title> <title><?php echo $feedtitle; ?></title>
<link><?php echo htmlspecialchars($feedlink); ?></link> <link><?php echo htmlspecialchars($pagelink); ?></link>
<atom:link rel="self" type="application/rss+xml" href="<?php echo htmlspecialchars($feedlink); ?>"/>
<description><?php echo htmlspecialchars($feeddescription); ?></description> <description><?php echo htmlspecialchars($feeddescription); ?></description>
<pubDate><?php echo date('r'); ?></pubDate> <pubDate><?php echo date('r'); ?></pubDate>
<lastBuildDate><?php echo $feedlastupdate ?></lastBuildDate> <lastBuildDate><?php echo $feedlastupdate ?></lastBuildDate>
@ -14,6 +17,7 @@ echo '<' . '?xml version="1.0" encoding="utf-8" ?' . ">\n";
<item> <item>
<title><?php echo htmlspecialchars($bookmark['title']); ?></title> <title><?php echo htmlspecialchars($bookmark['title']); ?></title>
<link><?php echo htmlspecialchars($bookmark['link']); ?></link> <link><?php echo htmlspecialchars($bookmark['link']); ?></link>
<guid><?php echo $bookmark['guid']; ?></guid>
<description><?php echo htmlspecialchars($bookmark['description']); ?></description> <description><?php echo htmlspecialchars($bookmark['description']); ?></description>
<dc:creator><?php echo htmlspecialchars($bookmark['creator']); ?></dc:creator> <dc:creator><?php echo htmlspecialchars($bookmark['creator']); ?></dc:creator>
<pubDate><?php echo $bookmark['pubdate']; ?></pubDate> <pubDate><?php echo $bookmark['pubdate']; ?></pubDate>

View File

@ -5,14 +5,23 @@ ChangeLog for SemantiScuttle
0.98.4 - 2011-XX-XX 0.98.4 - 2011-XX-XX
------------------- -------------------
- Fix bug: URLs were escaped too often in bookmark list - Fix bug #3439729: URLs were escaped too often in bookmark list
- Fix bug: Subtitle was not escaped - Fix bug: Subtitle was not escaped
- Fix bug #3388219: Incorrect URL when cancelling tag2tag-actions - Fix bug #3388219: Incorrect URL when cancelling tag2tag-actions
- Fix bug #3393951: Logo images missing on bookmark page - Fix bug #3393951: Logo images missing on bookmark page
- Fix bug #3399815: PHP error in opensearch API in 0.98.3 - Fix bug #3399815: PHP error in opensearch API in 0.98.3
- Fix bug #3407728: Can't delete users from admin page - Fix bug #3407728: Can't delete users from admin page
- Fix bug #3431742: open_basedir problems with /etc/ config files - Fix bug #3431742: open_basedir problems with /etc/ config files
- Fix bug #3436624: Wrong URL for Delicious API when importing
- Fix bug #3463481: RSS feed show warnings in feedvalidator.org
- Fix bug #3384416: Use URL with protocol in bookmarklet
- Fix bug: Invalid HTML when website thumbnails are activated
- Fix bug #3413459: Thumbnails not in one line
- Fix bug #3468293: Delicious import does not preserve private links
- Fix bug #3396727: Title of http://lesscss.org/ not loaded
- Implement request #3403609: fr_CA translation update - Implement request #3403609: fr_CA translation update
- Implement patch #3476011: PostgreSQL tables can not be initialized
(Frédéric Fauberteau [triaxx])
0.98.3 - 2011-08-09 0.98.3 - 2011-08-09

View File

@ -25,6 +25,8 @@ then this instructions are for you.
on the shell ("semanticscuttle" being the database name) on the shell ("semanticscuttle" being the database name)
If you run PostgreSQL, use ``data/tables.postgresql.sql``.
3. Copy ``data/config.php.dist`` to ``data/config.php`` and modify it as 3. Copy ``data/config.php.dist`` to ``data/config.php`` and modify it as
necessary. See configuration_ for more information. necessary. See configuration_ for more information.
4. Make the cache directory writable by your web server. 4. Make the cache directory writable by your web server.

View File

@ -118,6 +118,31 @@ function createURL($page = '', $ending = '') {
return ROOT . $page; return ROOT . $page;
} }
} }
/**
* Adds the protocol to the URL if it's missing.
* If the current URL is served via HTTPS, https will be used as protocol.
*
* Useful to fix ROOT urls of SemanticScuttle when it's needed, e.g.
* in the bookmarklet or the feed.
*
* @param string $url Url with or without the protocol ("//example.org/foo")
*
* @return string URL with a HTTP protocol
*/
function addProtocolToUrl($url)
{
if (substr($url, 0, 2) != '//') {
return $url;
}
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) {
$protocol = 'https:';
} else {
$protocol = 'http:';
}
return $protocol . $url;
}
/** /**
* Creates a "vote for/against this bookmark" URL. * Creates a "vote for/against this bookmark" URL.
* Also runs htmlspecialchars() on them to prevent XSS. * Also runs htmlspecialchars() on them to prevent XSS.

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<posts user="dpuser" update="2012-01-20T21:09:22Z" tag="" total="1">
<post href="http://www.example.org/" hash="4f8533885bb5740b98b6415140a0c8c6" description="title" tag="unittest" time="2012-01-20T21:09:11Z" extended="0.........10........20........30........40........50........60........70........80........90........100.......110.......120.......130.......140.......150.......160.......170.......180.......190.......200.......210.......220.......230.......240.......250.......260.......270.......280.......290......." meta="5c80704730a1bf1b9eb615d4ba7a59bd" />
</posts>

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><posts tag="" total="1" user="cweiske"><post description="Christians Tagebuch" extended="" hash="d82ca757a4583a24260a1126b5dafb0d" href="http://cweiske.de/tagebuch/" private="yes" shared="no" tag="private" time="2012-01-20T20:18:56Z"/></posts>

View File

@ -50,7 +50,10 @@ function getTitle($url) {
$title = @mb_convert_encoding($title, 'UTF-8', $encoding); $title = @mb_convert_encoding($title, 'UTF-8', $encoding);
} }
$title = trim($title);
if (utf8_strlen($title) > 0) { if (utf8_strlen($title) > 0) {
$title = html_entity_decode($title, ENT_QUOTES, 'UTF-8');
return $title; return $title;
} else { } else {
// No title, so return filename // No title, so return filename

View File

@ -27,7 +27,9 @@ require_once 'www-header.php';
/* Managing all possible inputs */ /* Managing all possible inputs */
// First input is $_FILES // First input is $_FILES
// Other inputs // Other inputs
isset($_POST['status']) ? define('POST_STATUS', $_POST['status']): define('POST_STATUS', $GLOBALS['defaults']['privacy']); isset($_POST['status'])
? define('POST_STATUS', $_POST['status'])
: define('POST_STATUS', $GLOBALS['defaults']['privacy']);
if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['size'] > 0) { if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['size'] > 0) {
@ -54,6 +56,7 @@ if ($userservice->isLoggedOn() && sizeof($_FILES) > 0 && $_FILES['userfile']['si
} }
} }
xml_parser_free($xml_parser); xml_parser_free($xml_parser);
//FIXME: show errors and warnings
header('Location: '. createURL('bookmarks', $userinfo->getUsername())); header('Location: '. createURL('bookmarks', $userinfo->getUsername()));
} else { } else {
$templatename = 'importDelicious.tpl'; $templatename = 'importDelicious.tpl';
@ -70,7 +73,8 @@ function startElement($parser, $name, $attrs) {
$bookmarkservice =SemanticScuttle_Service_Factory::get('Bookmark'); $bookmarkservice =SemanticScuttle_Service_Factory::get('Bookmark');
if ($name == 'POST') { if ($name == 'POST') {
while(list($attrTitle, $attrVal) = each($attrs)) { $newstatus = $status;
while (list($attrTitle, $attrVal) = each($attrs)) {
switch ($attrTitle) { switch ($attrTitle) {
case 'HREF': case 'HREF':
$bAddress = $attrVal; $bAddress = $attrVal;
@ -87,6 +91,11 @@ function startElement($parser, $name, $attrs) {
case 'TAG': case 'TAG':
$tags = strtolower($attrVal); $tags = strtolower($attrVal);
break; break;
case 'PRIVATE':
if ($attrVal == 'yes') {
$newstatus = 2;
}
break;
} }
} }
if ($bookmarkservice->bookmarkExists($bAddress, $userservice->getCurrentUserId())) { if ($bookmarkservice->bookmarkExists($bAddress, $userservice->getCurrentUserId())) {
@ -100,12 +109,20 @@ function startElement($parser, $name, $attrs) {
$bDatetime = gmdate('Y-m-d H:i:s'); $bDatetime = gmdate('Y-m-d H:i:s');
} }
if ($bookmarkservice->addBookmark($bAddress, $bTitle, $bDescription, '', $status, $tags, null, $bDatetime, true, true)) $res = $bookmarkservice->addBookmark(
$tplVars['msg'] = T_('Bookmark imported.'); $bAddress, $bTitle, $bDescription, '', $newstatus, $tags,
else null, $bDatetime, true, true
$tplVars['error'] = T_('There was an error saving your bookmark. Please try again or contact the administrator.'); );
if ($res) {
$tplVars['msg'] = T_('Bookmark imported.');
} else {
$tplVars['error'] = T_('There was an error saving your bookmark. Please try again or contact the administrator.');
}
} }
} }
if (!isset($depth[$parser])) {
$depth[$parser] = 0;
}
$depth[$parser]++; $depth[$parser]++;
} }

View File

@ -124,7 +124,8 @@ if ($cat) {
} }
$tplVars['feedtitle'] = filter($GLOBALS['sitename'] . (isset($pagetitle) ? $pagetitle : '')); $tplVars['feedtitle'] = filter($GLOBALS['sitename'] . (isset($pagetitle) ? $pagetitle : ''));
$tplVars['feedlink'] = ROOT; $tplVars['pagelink'] = addProtocolToUrl(ROOT);
$tplVars['feedlink'] = addProtocolToUrl(ROOT) . 'rss?sort=' . getSortOrder();
$tplVars['feeddescription'] = sprintf(T_('Recent bookmarks posted to %s'), $GLOBALS['sitename']); $tplVars['feeddescription'] = sprintf(T_('Recent bookmarks posted to %s'), $GLOBALS['sitename']);
$bookmarks = $bookmarkservice->getBookmarks( $bookmarks = $bookmarkservice->getBookmarks(
@ -137,6 +138,7 @@ $bookmarks_tmp = filter($bookmarks['bookmarks']);
$bookmarks_tpl = array(); $bookmarks_tpl = array();
$latestdate = null; $latestdate = null;
$guidBaseUrl = addProtocolToUrl(ROOT) . '#';
foreach ($bookmarks_tmp as $key => $row) { foreach ($bookmarks_tmp as $key => $row) {
$_link = $row['bAddress']; $_link = $row['bAddress'];
// Redirection option // Redirection option
@ -154,7 +156,8 @@ foreach ($bookmarks_tmp as $key => $row) {
'description' => $row['bDescription'], 'description' => $row['bDescription'],
'creator' => SemanticScuttle_Model_UserArray::getName($row), 'creator' => SemanticScuttle_Model_UserArray::getName($row),
'pubdate' => $_pubdate, 'pubdate' => $_pubdate,
'tags' => $row['tags'] 'tags' => $row['tags'],
'guid' => $guidBaseUrl . $row['bId'],
); );
} }
unset($bookmarks_tmp); unset($bookmarks_tmp);

View File

@ -223,6 +223,7 @@ li.xfolkentry {
border-bottom: 1px solid #DDD; border-bottom: 1px solid #DDD;
margin-bottom: 0; margin-bottom: 0;
padding: 1em 0.5em; padding: 1em 0.5em;
overflow: auto;
} }
html > body li.xfolkentry { html > body li.xfolkentry {
border-bottom: 1px dotted #AAA; border-bottom: 1px dotted #AAA;