Merge branch '0.8.x' of git@gitorious.org:laconica/mainline into 0.8.x
This commit is contained in:
commit
bbb830e14c
6
README
6
README
@ -622,10 +622,10 @@ key and secret, e.g.:
|
|||||||
|
|
||||||
In Facebook's application editor, specify the following URLs for your app:
|
In Facebook's application editor, specify the following URLs for your app:
|
||||||
|
|
||||||
- Callback URL: http://example.net/mublog/facebook/
|
- Canvas Callback URL: http://example.net/mublog/facebook/
|
||||||
- Post-Remove URL: http://example.net/mublog/facebook/remove
|
- Post-Remove Callback URL: http://example.net/mublog/facebook/remove
|
||||||
- Post-Add Redirect URL: http://apps.facebook.com/yourapp/
|
- Post-Add Redirect URL: http://apps.facebook.com/yourapp/
|
||||||
- Canvas URL: http://apps.facebook.com/yourapp/
|
- Canvas Page URL: http://apps.facebook.com/yourapp/
|
||||||
|
|
||||||
(Replace 'example.net' with your host's URL, 'mublog' with the path
|
(Replace 'example.net' with your host's URL, 'mublog' with the path
|
||||||
to your StatusNet installation, and 'yourapp' with the name of the
|
to your StatusNet installation, and 'yourapp' with the name of the
|
||||||
|
245
install.php
245
install.php
@ -19,6 +19,169 @@
|
|||||||
|
|
||||||
define('INSTALLDIR', dirname(__FILE__));
|
define('INSTALLDIR', dirname(__FILE__));
|
||||||
|
|
||||||
|
$external_libraries=array(
|
||||||
|
array(
|
||||||
|
'name'=>'gettext',
|
||||||
|
'url'=>'http://us.php.net/manual/en/book.gettext.php',
|
||||||
|
'check_function'=>'gettext'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'PEAR',
|
||||||
|
'url'=>'http://pear.php.net/',
|
||||||
|
'deb'=>'php-pear',
|
||||||
|
'include'=>'PEAR.php',
|
||||||
|
'check_class'=>'PEAR'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'DB',
|
||||||
|
'pear'=>'DB',
|
||||||
|
'url'=>'http://pear.php.net/package/DB',
|
||||||
|
'deb'=>'php-db',
|
||||||
|
'include'=>'DB/common.php',
|
||||||
|
'check_class'=>'DB_common'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'DB_DataObject',
|
||||||
|
'pear'=>'DB_DataObject',
|
||||||
|
'url'=>'http://pear.php.net/package/DB_DataObject',
|
||||||
|
'include'=>'DB/DataObject.php',
|
||||||
|
'check_class'=>'DB_DataObject'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Console_Getopt',
|
||||||
|
'pear'=>'Console_Getopt',
|
||||||
|
'url'=>'http://pear.php.net/package/Console_Getopt',
|
||||||
|
'include'=>'Console/Getopt.php',
|
||||||
|
'check_class'=>'Console_Getopt'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Facebook API',
|
||||||
|
'url'=>'http://developers.facebook.com/',
|
||||||
|
'include'=>'facebook/facebook.php',
|
||||||
|
'check_class'=>'Facebook'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'htmLawed',
|
||||||
|
'url'=>'http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed',
|
||||||
|
'include'=>'htmLawed/htmLawed.php',
|
||||||
|
'check_function'=>'htmLawed'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'HTTP_Request',
|
||||||
|
'pear'=>'HTTP_Request',
|
||||||
|
'url'=>'http://pear.php.net/package/HTTP_Request',
|
||||||
|
'deb'=>'php-http-request',
|
||||||
|
'include'=>'HTTP/Request.php',
|
||||||
|
'check_class'=>'HTTP_Request'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Mail',
|
||||||
|
'pear'=>'Mail',
|
||||||
|
'url'=>'http://pear.php.net/package/Mail',
|
||||||
|
'deb'=>'php-mail',
|
||||||
|
'include'=>'Mail.php',
|
||||||
|
'check_class'=>'Mail'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Mail_mimeDecode',
|
||||||
|
'pear'=>'Mail_mimeDecode',
|
||||||
|
'url'=>'http://pear.php.net/package/Mail_mimeDecode',
|
||||||
|
'deb'=>'php-mail-mimedecode',
|
||||||
|
'include'=>'Mail/mimeDecode.php',
|
||||||
|
'check_class'=>'Mail_mimeDecode'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Mime_Type',
|
||||||
|
'pear'=>'Mime_Type',
|
||||||
|
'url'=>'http://pear.php.net/package/Mime_Type',
|
||||||
|
'include'=>'MIME/Type.php',
|
||||||
|
'check_class'=>'Mime_Type'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Net_URL_Mapper',
|
||||||
|
'pear'=>'Net_URL_Mapper',
|
||||||
|
'url'=>'http://pear.php.net/package/Net_URL_Mapper',
|
||||||
|
'include'=>'Net/URL/Mapper.php',
|
||||||
|
'check_class'=>'Net_URL_Mapper'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Net_Socket',
|
||||||
|
'pear'=>'Net_Socket',
|
||||||
|
'url'=>'http://pear.php.net/package/Net_Socket',
|
||||||
|
'deb'=>'php-net-socket',
|
||||||
|
'include'=>'Net/Socket.php',
|
||||||
|
'check_class'=>'Net_Socket'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Net_SMTP',
|
||||||
|
'pear'=>'Net_SMTP',
|
||||||
|
'url'=>'http://pear.php.net/package/Net_SMTP',
|
||||||
|
'deb'=>'php-net-smtp',
|
||||||
|
'include'=>'Net/SMTP.php',
|
||||||
|
'check_class'=>'Net_SMTP'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Net_URL',
|
||||||
|
'pear'=>'Net_URL',
|
||||||
|
'url'=>'http://pear.php.net/package/Net_URL',
|
||||||
|
'deb'=>'php-net-url',
|
||||||
|
'include'=>'Net/URL.php',
|
||||||
|
'check_class'=>'Net_URL'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Net_URL2',
|
||||||
|
'pear'=>'Net_URL2',
|
||||||
|
'url'=>'http://pear.php.net/package/Net_URL2',
|
||||||
|
'include'=>'Net/URL2.php',
|
||||||
|
'check_class'=>'Net_URL2'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Services_oEmbed',
|
||||||
|
'pear'=>'Services_oEmbed',
|
||||||
|
'url'=>'http://pear.php.net/package/Services_oEmbed',
|
||||||
|
'include'=>'Services/oEmbed.php',
|
||||||
|
'check_class'=>'Services_oEmbed'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Stomp',
|
||||||
|
'url'=>'http://stomp.codehaus.org/PHP',
|
||||||
|
'include'=>'Stomp.php',
|
||||||
|
'check_class'=>'Stomp'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'System_Command',
|
||||||
|
'pear'=>'System_Command',
|
||||||
|
'url'=>'http://pear.php.net/package/System_Command',
|
||||||
|
'include'=>'System/Command.php',
|
||||||
|
'check_class'=>'System_Command'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'XMPPHP',
|
||||||
|
'url'=>'http://code.google.com/p/xmpphp',
|
||||||
|
'include'=>'XMPPHP/XMPP.php',
|
||||||
|
'check_class'=>'XMPPHP_XMPP'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'PHP Markdown',
|
||||||
|
'url'=>'http://www.michelf.com/projects/php-markdown/',
|
||||||
|
'include'=>'markdown.php',
|
||||||
|
'check_class'=>'Markdown_Parser'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'OAuth',
|
||||||
|
'url'=>'http://code.google.com/p/oauth-php',
|
||||||
|
'include'=>'OAuth.php',
|
||||||
|
'check_class'=>'OAuthRequest'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'name'=>'Validate',
|
||||||
|
'pear'=>'Validate',
|
||||||
|
'url'=>'http://pear.php.net/package/Validate',
|
||||||
|
'include'=>'Validate.php',
|
||||||
|
'check_class'=>'Validate'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
function main()
|
function main()
|
||||||
{
|
{
|
||||||
if (!checkPrereqs())
|
if (!checkPrereqs())
|
||||||
@ -26,12 +189,30 @@ function main()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( $_GET['checklibs'] ){
|
||||||
|
showLibs();
|
||||||
|
}else{
|
||||||
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
handlePost();
|
handlePost();
|
||||||
} else {
|
} else {
|
||||||
showForm();
|
showForm();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function haveExternalLibrary($external_library)
|
||||||
|
{
|
||||||
|
if(isset($external_library['include']) && ! include_once($external_library['include'])){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(isset($external_library['check_function']) && ! function_exists($external_library['check_function'])){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(isset($external_library['check_class']) && ! class_exists($external_library['check_class'])){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function checkPrereqs()
|
function checkPrereqs()
|
||||||
{
|
{
|
||||||
@ -94,6 +275,69 @@ function checkExtension($name)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showLibs()
|
||||||
|
{
|
||||||
|
global $external_libraries;
|
||||||
|
$present_libraries=array();
|
||||||
|
$absent_libraries=array();
|
||||||
|
foreach($external_libraries as $external_library){
|
||||||
|
if(haveExternalLibrary($external_library)){
|
||||||
|
$present_libraries[]=$external_library;
|
||||||
|
}else{
|
||||||
|
$absent_libraries[]=$external_library;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo<<<E_O_T
|
||||||
|
<div class="instructions">
|
||||||
|
<p>Laconica comes bundled with a number of libraries required for the application to work. However, it is best that you use PEAR or you distribution to manage
|
||||||
|
libraries instead, as they tend to provide security updates faster, and may offer improved performance.</p>
|
||||||
|
<p>On Debian based distributions, such as Ubuntu, use a package manager (such as "aptitude", "apt-get", and "synaptic") to install the package listed.</p>
|
||||||
|
<p>On RPM based distributions, such as Red Hat, Fedora, CentOS, Scientific Linux, Yellow Dog Linux and Oracle Enterprise Linux, use a package manager (such as "yum", "apt-rpm", and "up2date") to install the package listed.</p>
|
||||||
|
<p>On servers without a package manager (such as Windows), or if the library is not packaged for your distribution, you can use PHP's PEAR to install the library. Simply run "pear install <name>".</p>
|
||||||
|
</div>
|
||||||
|
<h2>Absent Libraries</h2>
|
||||||
|
<ul id="absent_libraries">
|
||||||
|
E_O_T;
|
||||||
|
foreach($absent_libraries as $library)
|
||||||
|
{
|
||||||
|
echo '<li>';
|
||||||
|
if($library['url']){
|
||||||
|
echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>';
|
||||||
|
}else{
|
||||||
|
echo htmlentities($library['name']);
|
||||||
|
}
|
||||||
|
echo '<ul>';
|
||||||
|
if($library['deb']){
|
||||||
|
echo '<li class="deb package">deb: <a href="apt:' . urlencode($library['deb']) . '">' . htmlentities($library['deb']) . '</a></li>';
|
||||||
|
}
|
||||||
|
if($library['rpm']){
|
||||||
|
echo '<li class="rpm package">rpm: ' . htmlentities($library['rpm']) . '</li>';
|
||||||
|
}
|
||||||
|
if($library['pear']){
|
||||||
|
echo '<li class="pear package">pear: ' . htmlentities($library['pear']) . '</li>';
|
||||||
|
}
|
||||||
|
echo '</ul>';
|
||||||
|
}
|
||||||
|
echo<<<E_O_T
|
||||||
|
</ul>
|
||||||
|
<h2>Installed Libraries</h2>
|
||||||
|
<ul id="present_libraries">
|
||||||
|
E_O_T;
|
||||||
|
foreach($present_libraries as $library)
|
||||||
|
{
|
||||||
|
echo '<li>';
|
||||||
|
if($library['url']){
|
||||||
|
echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>';
|
||||||
|
}else{
|
||||||
|
echo htmlentities($library['name']);
|
||||||
|
}
|
||||||
|
echo '</li>';
|
||||||
|
}
|
||||||
|
echo<<<E_O_T
|
||||||
|
</ul>
|
||||||
|
E_O_T;
|
||||||
|
}
|
||||||
|
|
||||||
function showForm()
|
function showForm()
|
||||||
{
|
{
|
||||||
echo<<<E_O_T
|
echo<<<E_O_T
|
||||||
@ -105,6 +349,7 @@ function showForm()
|
|||||||
<dd>
|
<dd>
|
||||||
<div class="instructions">
|
<div class="instructions">
|
||||||
<p>Enter your database connection information below to initialize the database.</p>
|
<p>Enter your database connection information below to initialize the database.</p>
|
||||||
|
<p>Laconica bundles a number of libraries for ease of installation. <a href="?checklibs=true">You can see what bundled libraries you are using, versus what libraries are installed on your server.</a>
|
||||||
</div>
|
</div>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
@ -27,11 +27,12 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgb2hex written by R0bb13 <robertorebollo@gmail.com> */
|
|
||||||
function rgb2hex(rgb) {
|
function rgb2hex(rgb) {
|
||||||
|
if (rgb.slice(0,1) == '#') { return rgb; }
|
||||||
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
|
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
|
||||||
return '#' + dec2hex(rgb[1]) + dec2hex(rgb[2]) + dec2hex(rgb[3]);
|
return '#' + dec2hex(rgb[1]) + dec2hex(rgb[2]) + dec2hex(rgb[3]);
|
||||||
}
|
}
|
||||||
|
/* dec2hex written by R0bb13 <robertorebollo@gmail.com> */
|
||||||
function dec2hex(x) {
|
function dec2hex(x) {
|
||||||
hexDigits = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
|
hexDigits = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
|
||||||
return isNaN(x) ? '00' : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
|
return isNaN(x) ? '00' : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
|
||||||
|
@ -96,6 +96,7 @@ class FacebookAction extends Action
|
|||||||
function showStylesheets()
|
function showStylesheets()
|
||||||
{
|
{
|
||||||
$this->cssLink('css/display.css', 'base');
|
$this->cssLink('css/display.css', 'base');
|
||||||
|
$this->cssLink('css/display.css',null,'screen, projection, tv');
|
||||||
$this->cssLink('css/facebookapp.css', 'base');
|
$this->cssLink('css/facebookapp.css', 'base');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,20 +178,38 @@ function format_attachments($attachments)
|
|||||||
$fbattachment = array();
|
$fbattachment = array();
|
||||||
$fbattachment['media'] = array();
|
$fbattachment['media'] = array();
|
||||||
|
|
||||||
// Facebook only supports one attachment per item
|
foreach($attachments as $attachment)
|
||||||
|
{
|
||||||
|
$fbmedia = get_fbmedia_for_attachment($attachment);
|
||||||
|
if($fbmedia){
|
||||||
|
$fbattachment['media'][]=$fbmedia;
|
||||||
|
}else{
|
||||||
|
$fbattachment['name'] = ($attachment->title ?
|
||||||
|
$attachment->title : $attachment->url);
|
||||||
|
$fbattachment['href'] = $attachment->url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(count($fbattachment['media'])>0){
|
||||||
|
unset($fbattachment['name']);
|
||||||
|
unset($fbattachment['href']);
|
||||||
|
}
|
||||||
|
return $fbattachment;
|
||||||
|
}
|
||||||
|
|
||||||
$attachment = $attachments[0];
|
/**
|
||||||
|
* given an File objects, returns an associative array suitable for Facebook media
|
||||||
|
*/
|
||||||
|
function get_fbmedia_for_attachment($attachment)
|
||||||
|
{
|
||||||
$fbmedia = array();
|
$fbmedia = array();
|
||||||
|
|
||||||
if (strncmp($attachment->mimetype, 'image/', strlen('image/')) == 0) {
|
if (strncmp($attachment->mimetype, 'image/', strlen('image/')) == 0) {
|
||||||
$fbmedia['type'] = 'image';
|
$fbmedia['type'] = 'image';
|
||||||
$fbmedia['src'] = $attachment->url;
|
$fbmedia['src'] = $attachment->url;
|
||||||
$fbmedia['href'] = $attachment->url;
|
$fbmedia['href'] = $attachment->url;
|
||||||
$fbattachment['media'][] = $fbmedia;
|
|
||||||
} else if ($attachment->mimetype == 'audio/mpeg') {
|
} else if ($attachment->mimetype == 'audio/mpeg') {
|
||||||
$fbmedia['type'] = 'mp3';
|
$fbmedia['type'] = 'mp3';
|
||||||
$fbmedia['src'] = $attachment->url;
|
$fbmedia['src'] = $attachment->url;
|
||||||
$fbattachment['media'][] = $fbmedia;
|
|
||||||
}else if ($attachment->mimetype == 'application/x-shockwave-flash') {
|
}else if ($attachment->mimetype == 'application/x-shockwave-flash') {
|
||||||
$fbmedia['type'] = 'flash';
|
$fbmedia['type'] = 'flash';
|
||||||
|
|
||||||
@ -200,14 +218,10 @@ function format_attachments($attachments)
|
|||||||
// $fbmedia['imgsrc']='';
|
// $fbmedia['imgsrc']='';
|
||||||
|
|
||||||
$fbmedia['swfsrc'] = $attachment->url;
|
$fbmedia['swfsrc'] = $attachment->url;
|
||||||
$fbattachment['media'][] = $fbmedia;
|
|
||||||
}else{
|
}else{
|
||||||
$fbattachment['name'] = ($attachment->title ?
|
return false;
|
||||||
$attachment->title : $attachment->url);
|
|
||||||
$fbattachment['href'] = $attachment->url;
|
|
||||||
}
|
}
|
||||||
|
return $fbmedia;
|
||||||
return $fbattachment;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove_facebook_app($flink)
|
function remove_facebook_app($flink)
|
||||||
|
@ -413,7 +413,7 @@ function common_replace_urls_callback($text, $callback, $notice_id = null) {
|
|||||||
// Start off with a regex
|
// Start off with a regex
|
||||||
$regex = '#'.
|
$regex = '#'.
|
||||||
'(?:^|[\s\(\)\[\]\{\}\\\'\\\";]+)(?![\@\!\#])'.
|
'(?:^|[\s\(\)\[\]\{\}\\\'\\\";]+)(?![\@\!\#])'.
|
||||||
'(?P<url>'.
|
'('.
|
||||||
'(?:'.
|
'(?:'.
|
||||||
'(?:'. //Known protocols
|
'(?:'. //Known protocols
|
||||||
'(?:'.
|
'(?:'.
|
||||||
@ -454,7 +454,7 @@ function common_replace_urls_callback($text, $callback, $notice_id = null) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function callback_helper($matches, $callback, $notice_id) {
|
function callback_helper($matches, $callback, $notice_id) {
|
||||||
$url=$matches['url'];
|
$url=$matches[1];
|
||||||
$left = strpos($matches[0],$url);
|
$left = strpos($matches[0],$url);
|
||||||
$right = $left+strlen($url);
|
$right = $left+strlen($url);
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ define('STATUSNET', true);
|
|||||||
|
|
||||||
require_once INSTALLDIR . '/lib/common.php';
|
require_once INSTALLDIR . '/lib/common.php';
|
||||||
|
|
||||||
class HashTagDetectionTest extends PHPUnit_Framework_TestCase
|
class HashTagDetectionTests extends PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @dataProvider provider
|
* @dataProvider provider
|
Loading…
Reference in New Issue
Block a user