Merge branch 'master' of git://github.com/friendika/friendika
This commit is contained in:
commit
7ffd0ee41a
18
boot.php
18
boot.php
|
@ -4,9 +4,9 @@ set_time_limit(0);
|
||||||
ini_set('pcre.backtrack_limit', 250000);
|
ini_set('pcre.backtrack_limit', 250000);
|
||||||
|
|
||||||
|
|
||||||
define ( 'FRIENDIKA_VERSION', '2.2.1004' );
|
define ( 'FRIENDIKA_VERSION', '2.2.1005' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1062 );
|
define ( 'DB_UPDATE_VERSION', 1063 );
|
||||||
|
|
||||||
define ( 'EOL', "<br />\r\n" );
|
define ( 'EOL', "<br />\r\n" );
|
||||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||||
|
@ -527,20 +527,8 @@ function check_config(&$a) {
|
||||||
$plugins = get_config('system','addon');
|
$plugins = get_config('system','addon');
|
||||||
$plugins_arr = array();
|
$plugins_arr = array();
|
||||||
|
|
||||||
if($plugins) {
|
if($plugins)
|
||||||
$plugins_arr = explode(',',str_replace(' ', '',$plugins));
|
$plugins_arr = explode(',',str_replace(' ', '',$plugins));
|
||||||
if(get_config('system','strict_privacy')) {
|
|
||||||
unset($a->config['system']['huburl']);
|
|
||||||
for($x = 0; $x < count($plugins_arr); $x ++) {
|
|
||||||
if( $plugins_arr[$x] === 'facebook'
|
|
||||||
|| $plugins_arr[$x] === 'twitter'
|
|
||||||
|| $plugins_arr[$x] === 'statusnet') {
|
|
||||||
unset($plugins_arr[$x]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$a->plugins = $plugins_arr;
|
$a->plugins = $plugins_arr;
|
||||||
|
|
||||||
|
|
|
@ -389,6 +389,7 @@ CREATE TABLE IF NOT EXISTS `user` (
|
||||||
`blockwall` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
`blockwall` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
||||||
`notify-flags` int(11) unsigned NOT NULL DEFAULT '65535',
|
`notify-flags` int(11) unsigned NOT NULL DEFAULT '65535',
|
||||||
`page-flags` int(11) unsigned NOT NULL DEFAULT '0',
|
`page-flags` int(11) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`prvnets` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
`pwdreset` char(255) NOT NULL,
|
`pwdreset` char(255) NOT NULL,
|
||||||
`maxreq` int(11) NOT NULL DEFAULT '10',
|
`maxreq` int(11) NOT NULL DEFAULT '10',
|
||||||
`expire` int(11) unsigned NOT NULL DEFAULT '0',
|
`expire` int(11) unsigned NOT NULL DEFAULT '0',
|
||||||
|
|
BIN
images/calendar.png
Normal file
BIN
images/calendar.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 853 B |
|
@ -1,47 +1,121 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
function format_event_html($ev) {
|
function format_event_html($ev,$pre = '') {
|
||||||
|
|
||||||
require_once('include/bbcode.php');
|
require_once('include/bbcode.php');
|
||||||
|
|
||||||
if(! ((is_array($ev)) && count($ev)))
|
if(! ((is_array($ev)) && count($ev)))
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
|
$bd_format = t('l F d, Y \@ g A') ; // Friday January 18, 2011 @ 8 AM
|
||||||
|
|
||||||
$o = '<div class="vevent">';
|
$o = '<div class="vevent">';
|
||||||
|
|
||||||
$o .= '<p class="description">' . bbcode($ev['desc']) . '</p>';
|
$o .= '<p class="description event-description">' . bbcode($ev['desc']) . '</p>';
|
||||||
|
|
||||||
$o .= '<p>' . t('Starts:') . ' <abbr class="dtstart" title="'
|
$o .= '<p class="event-start">' . t('Starts:') . ' <abbr class="dtstart" title="'
|
||||||
. datetime_convert('UTC','UTC',$ev['start'], $ev['adjust'] ? ATOM_TIME : 'Y-m-d\TH:i:s' )
|
. datetime_convert('UTC','UTC',$ev['start'], (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' ))
|
||||||
. '" >'
|
. '" >'
|
||||||
. (($ev['adjust']) ? datetime_convert('UTC', date_default_timezone_get(),
|
. (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(),
|
||||||
$ev['start'] /*, format */ )
|
$ev['start'] , $bd_format ))
|
||||||
: datetime_convert('UTC', 'UTC',
|
: day_translate(datetime_convert('UTC', 'UTC',
|
||||||
$ev['start'] /*, format */ ))
|
$ev['start'] , $bd_format)))
|
||||||
. '</abbr></p>';
|
. '</abbr></p>';
|
||||||
|
|
||||||
if(! $ev['nofinish'])
|
if(! $ev['nofinish'])
|
||||||
$o .= '<p>' . t('Finishes:') . ' <abbr class="dtend" title="'
|
$o .= '<p class="event-end" >' . t('Finishes:') . ' <abbr class="dtend" title="'
|
||||||
. datetime_convert('UTC','UTC',$ev['finish'], $ev['adjust'] ? ATOM_TIME : 'Y-m-d\TH:i:s' )
|
. datetime_convert('UTC','UTC',$ev['finish'], (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' ))
|
||||||
. '" >'
|
. '" >'
|
||||||
. (($ev['adjust']) ? datetime_convert('UTC', date_default_timezone_get(),
|
. (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(),
|
||||||
$ev['finish'] /*, format */ )
|
$ev['finish'] , $bd_format ))
|
||||||
: datetime_convert('UTC', 'UTC',
|
: day_translate(datetime_convert('UTC', 'UTC',
|
||||||
$ev['finish'] /*, format */ ))
|
$ev['finish'] , $bd_format )))
|
||||||
. '</abbr></p>';
|
. '</abbr></p>';
|
||||||
|
|
||||||
if(strlen($ev['location']))
|
if(strlen($ev['location']))
|
||||||
$o .= '<p> ' . t('Location:') . '<span class="location">'
|
$o .= '<p class="event-location"> ' . t('Location:') . ' <span class="location">'
|
||||||
. bbcode($ev['location'])
|
. bbcode($ev['location'])
|
||||||
. '</span></p>';
|
. '</span></p>';
|
||||||
|
|
||||||
$o .= '</div>';
|
$o .= '</div>';
|
||||||
|
|
||||||
return $o;
|
return $o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function parse_event($h) {
|
||||||
|
|
||||||
|
require_once('include/Scrape.php');
|
||||||
|
require_once('library/HTMLPurifier.auto.php');
|
||||||
|
require_once('include/html2bbcode');
|
||||||
|
|
||||||
|
$h = '<html><body>' . $h . '</body></html>';
|
||||||
|
|
||||||
|
$ret = array();
|
||||||
|
|
||||||
|
$dom = HTML5_Parser::parse($h);
|
||||||
|
|
||||||
|
if(! $dom)
|
||||||
|
return $ret;
|
||||||
|
|
||||||
|
$items = $dom->getElementsByTagName('*');
|
||||||
|
|
||||||
|
foreach($items as $item) {
|
||||||
|
if(attribute_contains($item->getAttribute('class'), 'vevent')) {
|
||||||
|
$level2 = $item->getElementsByTagName('*');
|
||||||
|
foreach($level2 as $x) {
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'dtstart') && $x->getAttribute('title')) {
|
||||||
|
$ret['start'] = $x->getAttribute('title');
|
||||||
|
if(! strpos($ret['start'],'Z'))
|
||||||
|
$ret['adjust'] = true;
|
||||||
|
}
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'dtend') && $x->getAttribute('title'))
|
||||||
|
$ret['finish'] = $x->getAttribute('title');
|
||||||
|
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'description'))
|
||||||
|
$ret['desc'] = $x->textContent;
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'location'))
|
||||||
|
$ret['location'] = $x->textContent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// sanitise
|
||||||
|
|
||||||
|
if((x($ret,'desc')) && ((strpos($ret['desc'],'<') !== false) || (strpos($ret['desc'],'>') !== false))) {
|
||||||
|
$config = HTMLPurifier_Config::createDefault();
|
||||||
|
$config->set('Cache.DefinitionImpl', null);
|
||||||
|
$purifier = new HTMLPurifier($config);
|
||||||
|
$ret['desc'] = html2bbcode($purifier->purify($ret['desc']));
|
||||||
|
}
|
||||||
|
|
||||||
|
if((x($ret,'location')) && ((strpos($ret['location'],'<') !== false) || (strpos($ret['location'],'>') !== false))) {
|
||||||
|
$config = HTMLPurifier_Config::createDefault();
|
||||||
|
$config->set('Cache.DefinitionImpl', null);
|
||||||
|
$purifier = new HTMLPurifier($config);
|
||||||
|
$ret['location'] = html2bbcode($purifier->purify($ret['location']));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(x($ret,'start'))
|
||||||
|
$ret['start'] = datetime_convert('UTC','UTC',$ret['start']);
|
||||||
|
if(x($ret,'finish'))
|
||||||
|
$ret['finish'] = datetime_convert('UTC','UTC',$ret['finish']);
|
||||||
|
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function sort_by_date($a) {
|
function sort_by_date($a) {
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,6 @@ function notifier_run($argv, $argc){
|
||||||
|
|
||||||
$a->set_baseurl(get_config('system','url'));
|
$a->set_baseurl(get_config('system','url'));
|
||||||
|
|
||||||
$prv = get_config('system','strict_privacy');
|
|
||||||
|
|
||||||
logger('notifier: invoked: ' . print_r($argv,true));
|
logger('notifier: invoked: ' . print_r($argv,true));
|
||||||
|
|
||||||
$cmd = $argv[1];
|
$cmd = $argv[1];
|
||||||
|
@ -332,9 +330,6 @@ function notifier_run($argv, $argc){
|
||||||
break;
|
break;
|
||||||
case 'stat':
|
case 'stat':
|
||||||
|
|
||||||
if($prv)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if($followup && $contact['notify']) {
|
if($followup && $contact['notify']) {
|
||||||
logger('notifier: slapdelivery: ' . $contact['name']);
|
logger('notifier: slapdelivery: ' . $contact['name']);
|
||||||
$deliver_status = slapper($owner,$contact['notify'],$slap);
|
$deliver_status = slapper($owner,$contact['notify'],$slap);
|
||||||
|
@ -465,7 +460,7 @@ function notifier_run($argv, $argc){
|
||||||
|
|
||||||
if($slap && count($url_recipients) && $followup && $notify_hub && (! $expire)) {
|
if($slap && count($url_recipients) && $followup && $notify_hub && (! $expire)) {
|
||||||
foreach($url_recipients as $url) {
|
foreach($url_recipients as $url) {
|
||||||
if($url && (! $prv)) {
|
if($url) {
|
||||||
logger('notifier: urldelivery: ' . $url);
|
logger('notifier: urldelivery: ' . $url);
|
||||||
$deliver_status = slapper($owner,$url,$slap);
|
$deliver_status = slapper($owner,$url,$slap);
|
||||||
// TODO: redeliver/queue these items on failure, though there is no contact record
|
// TODO: redeliver/queue these items on failure, though there is no contact record
|
||||||
|
|
14
mod/apps.php
14
mod/apps.php
|
@ -5,10 +5,20 @@ function apps_content(&$a) {
|
||||||
|
|
||||||
$o .= '<h3>' . t('Applications') . '</h3>';
|
$o .= '<h3>' . t('Applications') . '</h3>';
|
||||||
|
|
||||||
$o .= '<div class="app-title"><a href="notes">' . t('Private Notes') . '</a></div>';
|
$apps = false;
|
||||||
|
|
||||||
if($a->apps)
|
if(local_user()) {
|
||||||
|
$apps = true;
|
||||||
|
$o .= '<div class="app-title"><a href="notes">' . t('Private Notes') . '</a></div>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if($a->apps) {
|
||||||
|
$apps = true;
|
||||||
$o .= $a->apps;
|
$o .= $a->apps;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(! $apps)
|
||||||
|
notice( t('No installed applications.') . EOL);
|
||||||
|
|
||||||
return $o;
|
return $o;
|
||||||
|
|
||||||
|
|
|
@ -626,11 +626,9 @@ function dfrn_request_content(&$a) {
|
||||||
else
|
else
|
||||||
$tpl = get_markup_template('auto_request.tpl');
|
$tpl = get_markup_template('auto_request.tpl');
|
||||||
|
|
||||||
$prv = get_config('system','strict_privacy');
|
|
||||||
|
|
||||||
$o .= replace_macros($tpl,array(
|
$o .= replace_macros($tpl,array(
|
||||||
'$header' => t('Friend/Connection Request'),
|
'$header' => t('Friend/Connection Request'),
|
||||||
'$desc' => t('Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo') . (($prv) ? ', testuser@identi.ca' : ''),
|
'$desc' => t('Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca'),
|
||||||
'$pls_answer' => t('Please answer the following:'),
|
'$pls_answer' => t('Please answer the following:'),
|
||||||
'$does_know' => sprintf( t('Does %s know you?'),$a->profile['name']),
|
'$does_know' => sprintf( t('Does %s know you?'),$a->profile['name']),
|
||||||
'$yes' => t('Yes'),
|
'$yes' => t('Yes'),
|
||||||
|
@ -638,9 +636,9 @@ function dfrn_request_content(&$a) {
|
||||||
'$add_note' => t('Add a personal note:'),
|
'$add_note' => t('Add a personal note:'),
|
||||||
'$page_desc' => t("Please enter your 'Identity Address' from one of the following supported social networks:"),
|
'$page_desc' => t("Please enter your 'Identity Address' from one of the following supported social networks:"),
|
||||||
'$friendika' => t('Friendika'),
|
'$friendika' => t('Friendika'),
|
||||||
'$statusnet' => (($prv) ? t('StatusNet/Federated Social Web') : ''),
|
'$statusnet' => t('StatusNet/Federated Social Web'),
|
||||||
'$private_net' => t("Private \x28secure\x29 network"),
|
'$private_net' => t("Private \x28secure\x29 network"),
|
||||||
'$public_net' => (($prv) ? t("Public \x28insecure\x29 network") : ''),
|
'$public_net' => t("Public \x28insecure\x29 network"),
|
||||||
'$your_address' => t('Your Identity Address:'),
|
'$your_address' => t('Your Identity Address:'),
|
||||||
'$submit' => t('Submit Request'),
|
'$submit' => t('Submit Request'),
|
||||||
'$cancel' => t('Cancel'),
|
'$cancel' => t('Cancel'),
|
||||||
|
|
|
@ -54,6 +54,9 @@ function events_post(&$a) {
|
||||||
$str_contact_deny = perms2str($_POST['contact_deny']);
|
$str_contact_deny = perms2str($_POST['contact_deny']);
|
||||||
|
|
||||||
|
|
||||||
|
// until publishing is ready
|
||||||
|
$str_contact_allow = '<' . local_user() . '>';
|
||||||
|
|
||||||
if($event_id) {
|
if($event_id) {
|
||||||
$r = q("UPDATE `event` SET
|
$r = q("UPDATE `event` SET
|
||||||
`edited` = '%s',
|
`edited` = '%s',
|
||||||
|
@ -169,7 +172,7 @@ function events_content(&$a) {
|
||||||
$prevyear --;
|
$prevyear --;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$o .= '<div id="new-event-link"><a href="' . $a->get_baseurl() . '/events/new' . '" >' . t('Create New Event') . '</a></div>';
|
||||||
$o .= '<a href="' . $a->get_baseurl() . '/events/' . $prevyear . '/' . $prevmonth . '" class="prevcal">' . t('<< Previous') . '</a> | <a href="' . $a->get_baseurl() . '/events/' . $nextyear . '/' . $nextmonth . '" class="nextcal">' . t('Next >>') . '</a>';
|
$o .= '<a href="' . $a->get_baseurl() . '/events/' . $prevyear . '/' . $prevmonth . '" class="prevcal">' . t('<< Previous') . '</a> | <a href="' . $a->get_baseurl() . '/events/' . $nextyear . '/' . $nextmonth . '" class="nextcal">' . t('Next >>') . '</a>';
|
||||||
$o .= cal($y,$m,false, ' eventcal');
|
$o .= cal($y,$m,false, ' eventcal');
|
||||||
|
|
||||||
|
|
|
@ -34,9 +34,6 @@ function follow_post(&$a) {
|
||||||
|
|
||||||
// NOTREACHED
|
// NOTREACHED
|
||||||
}
|
}
|
||||||
elseif(get_config('system','strict_privacy')) {
|
|
||||||
unset($ret['notify']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// do we have enough information?
|
// do we have enough information?
|
||||||
|
|
||||||
|
|
|
@ -510,8 +510,15 @@ foreach($_FILES AS $key => $val) {
|
||||||
$arr['target'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $a->get_baseurl() . '/photos/' . $owner_record['nickname'] . '/image/' . $p[0]['resource-id'] . '" />' . "\n" . '<link rel="preview" type="image/jpeg" href="' . $a->get_baseurl() . "/photo/" . $p[0]['resource-id'] . '-' . $best . '.jpg' . '" />') . '</link></target>';
|
$arr['target'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $a->get_baseurl() . '/photos/' . $owner_record['nickname'] . '/image/' . $p[0]['resource-id'] . '" />' . "\n" . '<link rel="preview" type="image/jpeg" href="' . $a->get_baseurl() . "/photo/" . $p[0]['resource-id'] . '-' . $best . '.jpg' . '" />') . '</link></target>';
|
||||||
|
|
||||||
$item_id = item_store($arr);
|
$item_id = item_store($arr);
|
||||||
if($item_id)
|
if($item_id) {
|
||||||
|
q("UPDATE `item` SET `plink` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1",
|
||||||
|
dbesc($a->get_baseurl() . '/display/' . $owner_record['nickname'] . '/' . $item_id),
|
||||||
|
intval($page_owner_uid),
|
||||||
|
intval($item_id)
|
||||||
|
);
|
||||||
|
|
||||||
proc_run('php',"include/notifier.php","tag","$item_id");
|
proc_run('php',"include/notifier.php","tag","$item_id");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1106,9 +1113,10 @@ function photos_content(&$a) {
|
||||||
$tag_str .= bbcode($t);
|
$tag_str .= bbcode($t);
|
||||||
}
|
}
|
||||||
$tags = array(t('Tags: '), $tag_str);
|
$tags = array(t('Tags: '), $tag_str);
|
||||||
if($cmd === 'edit')
|
if($cmd === 'edit') {
|
||||||
$tags[] = $a->get_baseurl() . '/tagrm/' . $link_item['id'];
|
$tags[] = $a->get_baseurl() . '/tagrm/' . $link_item['id'];
|
||||||
$tags[] = t('[Remove any tag]');
|
$tags[] = t('[Remove any tag]');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -192,11 +192,6 @@ function salmon_post(&$a) {
|
||||||
// NOTREACHED
|
// NOTREACHED
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if we're allowed to talk to insecure networks
|
|
||||||
|
|
||||||
if(get_config('system','strict_privacy'))
|
|
||||||
salmon_return(400);
|
|
||||||
|
|
||||||
require_once('include/items.php');
|
require_once('include/items.php');
|
||||||
|
|
||||||
// Placeholder for hub discovery. We shouldn't find any hubs
|
// Placeholder for hub discovery. We shouldn't find any hubs
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1062 );
|
define( 'UPDATE_VERSION' , 1063 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -513,3 +513,8 @@ function update_1060() {
|
||||||
function update_1061() {
|
function update_1061() {
|
||||||
q("ALTER TABLE `event` ADD `nofinish` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `type` ");
|
q("ALTER TABLE `event` ADD `nofinish` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `type` ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1062() {
|
||||||
|
q("ALTER TABLE `user` ADD `prvnets` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `page-flags` ");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -2227,6 +2227,25 @@ a.mail-list-link {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#new-event-link {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-description:before {
|
||||||
|
content: url('../../../images/calendar.png');
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-start, .event-end {
|
||||||
|
margin-left: 10px;
|
||||||
|
width: 330px;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-start .dtstart, .event-end .dtend {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
.calendar {
|
.calendar {
|
||||||
font-family: Courier, monospace;
|
font-family: Courier, monospace;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue