Merge branch 'master' into privatekey2

This commit is contained in:
Mark Pemberton 2011-05-21 21:38:25 -04:00
commit b105867e75
13 changed files with 139 additions and 66 deletions

4
.gitignore vendored
View file

@ -3,4 +3,6 @@ dist/
build.properties
package.xml
semanticscuttle-dump.sql
data/config.unittest.php
data/config.php
data/config.testing.php
data/config.testing-tmp.php

1
data/.gitignore vendored
View file

@ -1 +0,0 @@
config.php

View file

@ -14,6 +14,7 @@ ChangeLog for SemantiScuttle
- Update php-gettext library to 1.0.10
- api/posts/add respects the "replace" parameter now
- Fix privacy issue when fetching tags of several users
- Fix Google custom search XML
- Only URLs with an allowed protocol may be added to the database
- Support HTTPS connections when $root is not configured
- SQL schema version table to ease future database upgrades

View file

@ -94,7 +94,14 @@ you use.
Apache configuration
--------------------
To make use of SSL client certificates, you need to deliver SemanticScuttle
via HTTPS.
via HTTPS.
Note that you can equip several virtual hosts with SSL certificates
and keep them on the same, standard SSL port by using SNI -
`Server Name Indication`__.
.. _SNI: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
__ SNI_
A basic virtual host configuration with SSL looks like this:

View file

@ -130,7 +130,7 @@ class SemanticScuttle_Service_AuthUser extends SemanticScuttle_Service_User
//FIXME: caching?
$name = $this->auth->getUsername();
if (!$name) {
return false;
return parent::getCurrentUserId();
}
return $this->getIdFromUser($name);
}

View file

@ -455,8 +455,8 @@ class SemanticScuttle_Service_User extends SemanticScuttle_DbService
if ($ssls->hasValidCert()) {
$id = $ssls->getUserIdFromCert();
if ($id !== false) {
$this->setCurrentUserId($id);
return (int)$_SESSION[$this->getSessionKey()];
$this->setCurrentUserId($id, true);
return $this->currentuserId;
}
}
return false;

View file

@ -14,7 +14,6 @@
* @link http://sourceforge.net/projects/semanticscuttle
*/
$_SERVER['HTTP_HOST'] = 'http://localhost/';
define('UNIT_TEST_MODE', true);
require_once dirname(__FILE__) . '/header.php';
?>

View file

@ -46,14 +46,21 @@ if (isset($_GET['unittestMode']) && $_GET['unittestMode'] == 1
die("Unittestmode is not allowed\n");
}
$unittestConfigFile = $datadir . '/config.unittest.php';
if (file_exists($unittestConfigFile)) {
require_once $unittestConfigFile;
}
define('HTTP_UNIT_TEST_MODE', true);
define('UNIT_TEST_MODE', true);
}
if (defined('UNIT_TEST_MODE')) {
//load configuration for unit tests
$testingConfigFile = $datadir . '/config.testing.php';
if (file_exists($testingConfigFile)) {
require_once $testingConfigFile;
}
//test-specific configuration file
$unittestConfigFile = $datadir . '/config.testing-tmp.php';
if (file_exists($unittestConfigFile)) {
require_once $unittestConfigFile;
}
//make local config vars global - needed for unit tests
//run with phpunit
foreach (get_defined_vars() as $var => $value) {
@ -107,7 +114,7 @@ T_bind_textdomain_codeset($domain, 'UTF-8');
T_textdomain($domain);
// 4 // Session
if (!defined('UNIT_TEST_MODE') || defined('HTTP_UNIT_TEST_MODE')) {
if (isset($_SERVER['REMOTE_ADDR'])) {
session_start();
if ($GLOBALS['enableVoting']) {
if (isset($_SESSION['lastUrl'])) {

View file

@ -50,8 +50,9 @@ class TestBaseApi extends TestBase
$this->url = $GLOBALS['unittestUrl'] . $this->urlPart;
//clean up before test
if (file_exists($GLOBALS['datadir'] . '/config.unittest.php')) {
unlink($GLOBALS['datadir'] . '/config.unittest.php');
$configFile = $GLOBALS['datadir'] . '/config.testing-tmp.php';
if (file_exists($configFile)) {
unlink($configFile);
}
$this->us = SemanticScuttle_Service_Factory::get('User');
@ -71,19 +72,36 @@ class TestBaseApi extends TestBase
* @param string $urlSuffix Suffix for the URL
*
* @return HTTP_Request2 HTTP request object
*
* @uses $url
*/
protected function getRequest($urlSuffix = null)
{
$req = new HTTP_Request2(
$this->url . $urlSuffix,
HTTP_Request2::METHOD_GET
);
$url = $this->getTestUrl($urlSuffix);
$req = new HTTP_Request2($url, HTTP_Request2::METHOD_GET);
return $req;
}
/**
* Creates an URL from $this->url plus $urlSuffix and an appended
* unittestMode=1 parameter.
*
* @param string $urlSuffix Suffix for the URL
*
* @return string URL
*
* @uses $url
*/
protected function getTestUrl($urlSuffix = null)
{
$url = $this->url . $urlSuffix;
if (strpos($urlSuffix, '?') !== false) {
$url .= '&unittestMode=1';
} else {
$url .= '?unittestMode=1';
}
return $url;
}
/**
* Completes an URL that's missing the protocol.
@ -165,7 +183,7 @@ class TestBaseApi extends TestBase
$uid = $this->addUser($username, $password);
$req = new HTTP_Request2(
$GLOBALS['unittestUrl'] . '/login.php',
$GLOBALS['unittestUrl'] . '/login.php?unittestMode=1',
HTTP_Request2::METHOD_POST
);
$cookies = $req->setCookieJar()->getCookieJar();
@ -230,7 +248,7 @@ class TestBaseApi extends TestBase
$this->assertInternalType(
'integer',
file_put_contents($GLOBALS['datadir'] . '/config.unittest.php', $str),
file_put_contents($GLOBALS['datadir'] . '/config.testing-tmp.php', $str),
'Writing config.unittest.php failed'
);
}

View file

@ -22,7 +22,7 @@ $_SERVER['HTTP_HOST'] = 'http://localhost/';
define('UNIT_TEST_MODE', true);
if ('@data_dir@' == '@' . 'data_dir@') {
//non pear-install
//non pear-installation (i.e. git checkout)
require_once dirname(__FILE__) . '/../src/SemanticScuttle/header.php';
} else {
//pear installation; files are in include path
@ -35,7 +35,7 @@ if ($GLOBALS['debugMode'] == true
&& $GLOBALS['dbtype'] == 'mysql4'
) {
echo "\n"
. '!!! The combination of debugMode and dbtype==mysql4'
. '!! The combination of debugMode and dbtype==mysql4'
. ' will wreck some tests' . "\n\n";
}
?>

View file

@ -41,7 +41,7 @@ class www_SearchTest extends TestBaseApi
'No bookmark found', false
);
$res = $this->getRequest('/all/baz bat')->send();
$res = $this->getRequest('/all/baz%20bat')->send();
$this->assertSelectCount(
'.xfolkentry', false, $res->getBody(),
'Bookmarks found', false

View file

@ -1,27 +1,43 @@
<?php
/**
* Google custom search context information for SemanticScuttle.
* Tells Google meta data about the search.
*
* SemanticScuttle - your social bookmark manager.
*
* PHP version 5.
*
* @category Bookmarking
* @package SemanticScuttle
* @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
* @author Christian Weiske <cweiske@cweiske.de>
* @author Eric Dane <ericdane@users.sourceforge.net>
* @license GPL http://www.gnu.org/licenses/gpl.html
* @link http://sourceforge.net/projects/semanticscuttle
* @link http://www.google.com/cse/docs/cref.html
*/
require_once '../www-header.php';
if($GLOBALS['enableGoogleCustomSearch'] == false) {
echo "Google Custom Search disabled. You can enable it into the config.php file.";
die;
if ($GLOBALS['enableGoogleCustomSearch'] == false) {
header('HTTP/1.0 403 Forbidden');
header('Content-Type: text/plain; charset=utf-8');
echo "Google Custom Search disabled."
. " You can enable it into the config.php file.\n";
die();
}
?>
<!--?xml version="1.0" encoding="UTF-8" ?-->
<?xml version="1.0" encoding="UTF-8" ?>
<GoogleCustomizations>
<CustomSearchEngine>
<Title><?php echo $GLOBALS['sitename'] ?></Title>
<Description><?php echo filter($GLOBALS['welcomeMessage']) ?></Description>
<Context>
<BackgroundLabels>
<Label name="include" mode="FILTER" />
</BackgroundLabels>
</Context>
<LookAndFeel nonprofit="false">
</LookAndFeel>
</CustomSearchEngine>
<Include type="Annotations" href="<?php echo ROOT;?>api/export_gcs.php?xml=1" />
<CustomSearchEngine>
<Title><?php echo htmlspecialchars($GLOBALS['sitename']) ?></Title>
<Description><?php echo filter($GLOBALS['welcomeMessage']) ?></Description>
<Context>
<BackgroundLabels>
<Label name="include" mode="FILTER" />
</BackgroundLabels>
</Context>
<LookAndFeel nonprofit="false">
</LookAndFeel>
</CustomSearchEngine>
<Include type="Annotations" href="<?php echo ROOT;?>api/export_gcs.php?xml=1" />
</GoogleCustomizations>

View file

@ -1,17 +1,41 @@
<?php require_once '../www-header.php';
<?php
/**
* Google custom search for SemanticScuttle.
* This is a "linked CSE", a linked custom search engine.
* See the linked docs for more info.
*
* SemanticScuttle - your social bookmark manager.
*
* PHP version 5.
*
* @category Bookmarking
* @package SemanticScuttle
* @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
* @author Christian Weiske <cweiske@cweiske.de>
* @author Eric Dane <ericdane@users.sourceforge.net>
* @license GPL http://www.gnu.org/licenses/gpl.html
* @link http://sourceforge.net/projects/semanticscuttle
* @link http://www.google.com/cse/docs/cref.html
*/
require_once '../www-header.php';
if($GLOBALS['enableGoogleCustomSearch']==false) {
echo "Google Custom Search disabled. You can enable it into the config.php file.";
die;
if ($GLOBALS['enableGoogleCustomSearch'] == false) {
header('HTTP/1.0 403 Forbidden');
header('Content-Type: text/plain; charset=utf-8');
echo "Google Custom Search disabled."
. " You can enable it into the config.php file.\n";
die();
}
?>
<html>
<title><?php echo $GLOBALS['sitename'] ?></title>
<body>
<center>
<br />
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title><?php echo htmlspecialchars($GLOBALS['sitename']); ?></title>
</head>
<body>
<div style="text-align: center; padding-top: 2em">
<!-- Google CSE Search Box Begins -->
<form id="cref" action="http://www.google.com/cse">
@ -27,21 +51,21 @@ if($GLOBALS['enableGoogleCustomSearch']==false) {
<small><a href="<?php echo ROOT?>"><?php echo T_('Come back to ').$GLOBALS['sitename'] ?>...</a></small>
<?php if($userservice->isLoggedOn() && $currentUser->isAdmin()){
echo '<p><small>';
echo T_('Admin tips: ');
echo T_('To refresh manually Google Custom Search Engine, goes to: ');
echo '<a href="http://www.google.com/coop/cse/cref?cref='
<?php if ($userservice->isLoggedOn() && $currentUser->isAdmin()) {
echo '<p><small>';
echo T_('Admin tips: ');
echo T_('To refresh manually Google Custom Search Engine, goes to: ');
echo '<a href="http://www.google.com/coop/cse/cref?cref='
. ROOT . 'gsearch/context.php">http://www.google.com/coop/cse/cref</a>'
. '<br/>';
echo T_('If no result appears, check that all the urls are valid in the admin section.');
echo '</small></p>';
}
echo T_('If no result appears, check that all the urls are valid in the admin section.');
echo '</small></p>';
}
?>
</center>
</body>
</div>
</body>
</html>