Merge remote branch 'friendika-master/master'
This commit is contained in:
commit
042aa2e169
|
@ -10,13 +10,11 @@
|
||||||
function oembed_install() {
|
function oembed_install() {
|
||||||
register_hook('jot_tool', 'addon/oembed/oembed.php', 'oembed_hook_jot_tool');
|
register_hook('jot_tool', 'addon/oembed/oembed.php', 'oembed_hook_jot_tool');
|
||||||
register_hook('page_header', 'addon/oembed/oembed.php', 'oembed_hook_page_header');
|
register_hook('page_header', 'addon/oembed/oembed.php', 'oembed_hook_page_header');
|
||||||
register_hook('bbcode', 'addon/oembed/oembed.php', 'oembed_hook_bbcode');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function oembed_uninstall() {
|
function oembed_uninstall() {
|
||||||
unregister_hook('jot_tool', 'addon/oembed/oembed.php', 'oembed_hook_jot_tool');
|
unregister_hook('jot_tool', 'addon/oembed/oembed.php', 'oembed_hook_jot_tool');
|
||||||
unregister_hook('page_header', 'addon/oembed/oembed.php', 'oembed_hook_page_header');
|
unregister_hook('page_header', 'addon/oembed/oembed.php', 'oembed_hook_page_header');
|
||||||
unregister_hook('bbcode', 'addon/oembed/oembed.php', 'oembed_hook_bbcode');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function oembed_hook_page_header($a, &$b){
|
function oembed_hook_page_header($a, &$b){
|
||||||
|
@ -53,49 +51,7 @@ function oembed_hook_jot_tool($a, &$b) {
|
||||||
';
|
';
|
||||||
}
|
}
|
||||||
|
|
||||||
function oembed_replacecb($matches){
|
|
||||||
$embedurl=$matches[1];
|
|
||||||
$ourl = "http://oohembed.com/oohembed/?url=".urlencode($embedurl);
|
|
||||||
$txt = fetch_url($ourl);
|
|
||||||
$j = json_decode($txt);
|
|
||||||
$ret="<!-- oembed $embedurl -->";
|
|
||||||
switch ($j->type) {
|
|
||||||
case "video": {
|
|
||||||
if (isset($j->thumbnail_url)) {
|
|
||||||
$tw = (isset($j->thumbnail_width)) ? $j->thumbnail_width:200;
|
|
||||||
$th = (isset($j->thumbnail_height)) ? $j->thumbnail_height:180;
|
|
||||||
$ret = "<a href='#' onclick='this.innerHTML=unescape(\"".urlencode($j->html)."\").replace(/\+/g,\" \"); return false;' >";
|
|
||||||
$ret.= "<img width='$tw' height='$th' src='".$j->thumbnail_url."'>";
|
|
||||||
$ret.= "</a>";
|
|
||||||
} else {
|
|
||||||
$ret=$j->html;
|
|
||||||
}
|
|
||||||
$ret.="<br>";
|
|
||||||
}; break;
|
|
||||||
case "photo": {
|
|
||||||
$ret = "<img width='".$j->width."' height='".$j->height."' src='".$j->url."'>";
|
|
||||||
$ret.="<br>";
|
|
||||||
}; break;
|
|
||||||
case "link": {
|
|
||||||
//$ret = "<a href='".$embedurl."'>".$j->title."</a>";
|
|
||||||
}; break;
|
|
||||||
case "rich": {
|
|
||||||
// not so safe..
|
|
||||||
$ret = "<blockquote>".$j->html."</blockquote>";
|
|
||||||
}; break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$embedlink = (isset($j->title))?$j->title:$embedurl;
|
|
||||||
$ret .= "<a href='$embedurl'>$embedlink</a>";
|
|
||||||
if (isset($j->author_name)) $ret.=" by ".$j->author_name;
|
|
||||||
if (isset($j->provider_name)) $ret.=" on ".$j->provider_name;
|
|
||||||
$ret.="<!-- /oembed $embedurl -->";
|
|
||||||
return $ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
function oembed_hook_bbcode($a, &$text){
|
|
||||||
$text = preg_replace_callback("/\[embed\](.+?)\[\/embed\]/is", oembed_replacecb ,$text);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
2
boot.php
2
boot.php
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
set_time_limit(0);
|
set_time_limit(0);
|
||||||
|
|
||||||
define ( 'BUILD_ID', 1033 );
|
define ( 'BUILD_ID', 1034 );
|
||||||
define ( 'FRIENDIKA_VERSION', '2.10.0902' );
|
define ( 'FRIENDIKA_VERSION', '2.10.0902' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.0' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.0' );
|
||||||
|
|
||||||
|
|
|
@ -471,4 +471,8 @@ CREATE TABLE IF NOT EXISTS `event` (
|
||||||
`deny_gid` MEDIUMTEXT NOT NULL
|
`deny_gid` MEDIUMTEXT NOT NULL
|
||||||
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
|
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS 'cache' (
|
||||||
|
`k` CHAR( 255 ) NOT NULL PRIMARY KEY ,
|
||||||
|
`v` TEXT NOT NULL,
|
||||||
|
`updated` DATETIME NOT NULL
|
||||||
|
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
|
@ -72,4 +72,7 @@ $a->config['system']['rino_encrypt'] = true;
|
||||||
$a->config['system']['addon'] = 'js_upload';
|
$a->config['system']['addon'] = 'js_upload';
|
||||||
|
|
||||||
|
|
||||||
|
// Disable oembed embedding
|
||||||
|
// This disable the conversion of [embed]$url[/embed] tag in html
|
||||||
|
// $a->config['system']['no_oembed'] = true;
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,9 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) {
|
||||||
$selected = " selected=\"selected\" ";
|
$selected = " selected=\"selected\" ";
|
||||||
else
|
else
|
||||||
$selected = '';
|
$selected = '';
|
||||||
|
$trimmed = substr($rr['name'],0,12);
|
||||||
|
|
||||||
$o .= "<option value=\"{$rr['id']}\" $selected >{$rr['name']}</option>\r\n";
|
$o .= "<option value=\"{$rr['id']}\" $selected title=\"{$rr['name']}\" >$trimmed</option>\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -66,7 +67,9 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
|
||||||
else
|
else
|
||||||
$selected = '';
|
$selected = '';
|
||||||
|
|
||||||
$o .= "<option value=\"{$rr['id']}\" $selected title=\"{$rr['url']}\" >{$rr['name']}</option>\r\n";
|
$trimmed = substr($rr['name'],0,22);
|
||||||
|
|
||||||
|
$o .= "<option value=\"{$rr['id']}\" $selected title=\"{$rr['name']}|{$rr['url']}\" >$trimmed</option>\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
require_once("include/oembed.php");
|
||||||
// BBcode 2 HTML was written by WAY2WEB.net
|
// BBcode 2 HTML was written by WAY2WEB.net
|
||||||
// extended to work with Mistpark/Friendika - Mike Macgirvin
|
// extended to work with Mistpark/Friendika - Mike Macgirvin
|
||||||
|
|
||||||
|
@ -93,6 +93,9 @@ function bbcode($Text) {
|
||||||
$Text = preg_replace("/\[youtube\]http:\/\/www.youtube.com\/watch\?v\=(.+?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text);
|
$Text = preg_replace("/\[youtube\]http:\/\/www.youtube.com\/watch\?v\=(.+?)\[\/youtube\]/",'[youtube]$1[/youtube]',$Text);
|
||||||
$Text = preg_replace("/\[youtube\](.+?)\[\/youtube\]/", '<object width="425" height="350" type="application/x-shockwave-flash" data="http://www.youtube.com/v/$1" ><param name="movie" value="http://www.youtube.com/v/$1"></param><!--[if IE]><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350" /><![endif]--></object>', $Text);
|
$Text = preg_replace("/\[youtube\](.+?)\[\/youtube\]/", '<object width="425" height="350" type="application/x-shockwave-flash" data="http://www.youtube.com/v/$1" ><param name="movie" value="http://www.youtube.com/v/$1"></param><!--[if IE]><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" width="425" height="350" /><![endif]--></object>', $Text);
|
||||||
|
|
||||||
|
// oembed tag
|
||||||
|
$Text = oembed_bbcode2html($Text);
|
||||||
|
|
||||||
call_hooks('bbcode',$Text);
|
call_hooks('bbcode',$Text);
|
||||||
|
|
||||||
return $Text;
|
return $Text;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
require_once('bbcode.php');
|
require_once('bbcode.php');
|
||||||
|
require_once('oembed.php');
|
||||||
|
|
||||||
function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) {
|
function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) {
|
||||||
|
|
||||||
|
@ -395,6 +396,8 @@ function get_atom_elements($feed,$item) {
|
||||||
$res['body'] = preg_replace('#<object[^>]+>.+?' . 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s',
|
$res['body'] = preg_replace('#<object[^>]+>.+?' . 'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s',
|
||||||
'[youtube]$1[/youtube]', $res['body']);
|
'[youtube]$1[/youtube]', $res['body']);
|
||||||
|
|
||||||
|
$res['body'] = oembed_html2bbcode($res['body']);
|
||||||
|
|
||||||
$config = HTMLPurifier_Config::createDefault();
|
$config = HTMLPurifier_Config::createDefault();
|
||||||
$config->set('Cache.DefinitionImpl', null);
|
$config->set('Cache.DefinitionImpl', null);
|
||||||
|
|
||||||
|
|
|
@ -159,11 +159,12 @@ function notifier_run($argv, $argc){
|
||||||
|
|
||||||
$r = q("SELECT * FROM `contact` WHERE `id` IN ( $conversant_str ) AND `blocked` = 0 AND `pending` = 0");
|
$r = q("SELECT * FROM `contact` WHERE `id` IN ( $conversant_str ) AND `blocked` = 0 AND `pending` = 0");
|
||||||
|
|
||||||
if( ! count($r)){
|
// if( ! count($r)){
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
$contacts = $r;
|
if(count($r))
|
||||||
|
$contacts = $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
$feed_template = load_view_file('view/atom_feed.tpl');
|
$feed_template = load_view_file('view/atom_feed.tpl');
|
||||||
|
@ -255,90 +256,90 @@ function notifier_run($argv, $argc){
|
||||||
$recip_str = implode(', ', $recipients);
|
$recip_str = implode(', ', $recipients);
|
||||||
|
|
||||||
|
|
||||||
$r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 ",
|
$r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 AND `pending` = 0 ",
|
||||||
dbesc($recip_str)
|
dbesc($recip_str)
|
||||||
);
|
);
|
||||||
if(! count($r)){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// delivery loop
|
// delivery loop
|
||||||
|
|
||||||
require_once('include/salmon.php');
|
require_once('include/salmon.php');
|
||||||
|
|
||||||
foreach($r as $contact) {
|
if(count($r)) {
|
||||||
if($contact['self'])
|
foreach($r as $contact) {
|
||||||
continue;
|
if($contact['self'])
|
||||||
|
continue;
|
||||||
|
|
||||||
$deliver_status = 0;
|
$deliver_status = 0;
|
||||||
|
|
||||||
switch($contact['network']) {
|
switch($contact['network']) {
|
||||||
case 'dfrn':
|
case 'dfrn':
|
||||||
logger('notifier: dfrndelivery: ' . $contact['name']);
|
logger('notifier: dfrndelivery: ' . $contact['name']);
|
||||||
$deliver_status = dfrn_deliver($owner,$contact,$atom);
|
$deliver_status = dfrn_deliver($owner,$contact,$atom);
|
||||||
|
|
||||||
logger('notifier: dfrn_delivery returns ' . $deliver_status);
|
|
||||||
|
|
||||||
if($deliver_status == (-1)) {
|
|
||||||
logger('notifier: delivery failed: queuing message');
|
|
||||||
// queue message for redelivery
|
|
||||||
q("INSERT INTO `queue` ( `cid`, `created`, `last`, `content`)
|
|
||||||
VALUES ( %d, '%s', '%s', '%s') ",
|
|
||||||
intval($contact['id']),
|
|
||||||
dbesc(datetime_convert()),
|
|
||||||
dbesc(datetime_convert()),
|
|
||||||
dbesc($atom)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'stat':
|
|
||||||
if($followup && $contact['notify']) {
|
|
||||||
logger('notifier: slapdelivery: ' . $contact['name']);
|
|
||||||
$deliver_status = slapper($owner,$contact['notify'],$slap);
|
|
||||||
|
|
||||||
|
logger('notifier: dfrn_delivery returns ' . $deliver_status);
|
||||||
|
|
||||||
if($deliver_status == (-1)) {
|
if($deliver_status == (-1)) {
|
||||||
|
logger('notifier: delivery failed: queuing message');
|
||||||
// queue message for redelivery
|
// queue message for redelivery
|
||||||
q("INSERT INTO `queue` ( `cid`, `created`, `last`, `content`)
|
q("INSERT INTO `queue` ( `cid`, `created`, `last`, `content`)
|
||||||
VALUES ( %d, '%s', '%s', '%s') ",
|
VALUES ( %d, '%s', '%s', '%s') ",
|
||||||
intval($contact['id']),
|
intval($contact['id']),
|
||||||
dbesc(datetime_convert()),
|
dbesc(datetime_convert()),
|
||||||
dbesc(datetime_convert()),
|
dbesc(datetime_convert()),
|
||||||
dbesc($slap)
|
dbesc($atom)
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'stat':
|
||||||
|
if($followup && $contact['notify']) {
|
||||||
|
logger('notifier: slapdelivery: ' . $contact['name']);
|
||||||
|
$deliver_status = slapper($owner,$contact['notify'],$slap);
|
||||||
|
|
||||||
|
if($deliver_status == (-1)) {
|
||||||
|
// queue message for redelivery
|
||||||
|
q("INSERT INTO `queue` ( `cid`, `created`, `last`, `content`)
|
||||||
|
VALUES ( %d, '%s', '%s', '%s') ",
|
||||||
|
intval($contact['id']),
|
||||||
|
dbesc(datetime_convert()),
|
||||||
|
dbesc(datetime_convert()),
|
||||||
|
dbesc($slap)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
// only send salmon if public - e.g. if it's ok to notify
|
||||||
|
// a public hub, it's ok to send a salmon
|
||||||
|
|
||||||
}
|
if(count($slaps) && $notify_hub) {
|
||||||
else {
|
logger('notifier: slapdelivery: ' . $contact['name']);
|
||||||
|
foreach($slaps as $slappy) {
|
||||||
// only send salmon if public - e.g. if it's ok to notify
|
if($contact['notify']) {
|
||||||
// a public hub, it's ok to send a salmon
|
$deliver_status = slapper($owner,$contact['notify'],$slappy);
|
||||||
|
if($deliver_status == (-1)) {
|
||||||
if(count($slaps) && $notify_hub) {
|
// queue message for redelivery
|
||||||
logger('notifier: slapdelivery: ' . $contact['name']);
|
q("INSERT INTO `queue` ( `cid`, `created`, `last`, `content`)
|
||||||
foreach($slaps as $slappy) {
|
VALUES ( %d, '%s', '%s', '%s') ",
|
||||||
if($contact['notify']) {
|
intval($contact['id']),
|
||||||
$deliver_status = slapper($owner,$contact['notify'],$slappy);
|
dbesc(datetime_convert()),
|
||||||
if($deliver_status == (-1)) {
|
dbesc(datetime_convert()),
|
||||||
// queue message for redelivery
|
dbesc($slappy)
|
||||||
q("INSERT INTO `queue` ( `cid`, `created`, `last`, `content`)
|
);
|
||||||
VALUES ( %d, '%s', '%s', '%s') ",
|
}
|
||||||
intval($contact['id']),
|
|
||||||
dbesc(datetime_convert()),
|
|
||||||
dbesc(datetime_convert()),
|
|
||||||
dbesc($slappy)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
break;
|
case 'mail':
|
||||||
case 'mail':
|
case 'dspr':
|
||||||
case 'dspr':
|
case 'feed':
|
||||||
case 'feed':
|
default:
|
||||||
default:
|
break;
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,6 +371,55 @@ function notifier_run($argv, $argc){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($notify_hub) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* If you have less than 150 dfrn friends and it's a public message,
|
||||||
|
* we'll just go ahead and push them out securely with dfrn/rino.
|
||||||
|
* If you've got more than that, you'll have to rely on PuSH delivery.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
$max_allowed = ((get_config('system','maxpubdeliver') === false) ? 150 : intval(get_config('system','maxdeliver')));
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Only get the bare essentials and go back for the full record.
|
||||||
|
* If you've got a lot of friends and we grab all the details at once it could exhaust memory.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
$r = q("SELECT `id`, `name` FROM `contact`
|
||||||
|
WHERE `network` = 'dfrn' AND `uid` = %d AND `blocked` = 0 AND `pending` = 0
|
||||||
|
AND `rel` != %d ",
|
||||||
|
intval($owner['uid']),
|
||||||
|
intval(REL_FAN)
|
||||||
|
);
|
||||||
|
|
||||||
|
if((count($r)) && (($max_allowed == 0) || (count($r) < $max_allowed))) {
|
||||||
|
|
||||||
|
foreach($r as $rr) {
|
||||||
|
|
||||||
|
/* Don't deliver to folks who have already been delivered to */
|
||||||
|
|
||||||
|
if(! in_array($rr['id'], $conversants)) {
|
||||||
|
$n = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
|
||||||
|
intval($rr['id'])
|
||||||
|
);
|
||||||
|
|
||||||
|
if(count($n)) {
|
||||||
|
|
||||||
|
logger('notifier: dfrnpubdelivery: ' . $n[0]['name']);
|
||||||
|
$deliver_status = dfrn_deliver($owner,$n[0],$atom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
logger('notifier: dfrnpubdelivery: ignoring ' . $rr['name']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
97
include/oembed.php
Normal file
97
include/oembed.php
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
<?php
|
||||||
|
function oembed_replacecb($matches){
|
||||||
|
$embedurl=$matches[1];
|
||||||
|
|
||||||
|
$r = q("SELECT v FROM `cache` WHERE k='%s'",
|
||||||
|
dbesc($embedurl));
|
||||||
|
if(count($r)){
|
||||||
|
$txt = $r[0]['v'];
|
||||||
|
} else {
|
||||||
|
$ourl = "http://oohembed.com/oohembed/?url=".urlencode($embedurl);
|
||||||
|
$txt = fetch_url($ourl);
|
||||||
|
//save in cache
|
||||||
|
q("INSERT INTO `cache` VALUES ('%s','%s','%s')",
|
||||||
|
dbesc($embedurl),
|
||||||
|
dbesc($txt),
|
||||||
|
dbesc(datetime_convert()));
|
||||||
|
}
|
||||||
|
$j = json_decode($txt);
|
||||||
|
$ret="<span class='oembed'>";
|
||||||
|
switch ($j->type) {
|
||||||
|
case "video": {
|
||||||
|
if (isset($j->thumbnail_url)) {
|
||||||
|
$tw = (isset($j->thumbnail_width)) ? $j->thumbnail_width:200;
|
||||||
|
$th = (isset($j->thumbnail_height)) ? $j->thumbnail_height:180;
|
||||||
|
$ret = "<a href='".$embedurl."' onclick='this.innerHTML=unescape(\"".urlencode($j->html)."\").replace(/\+/g,\" \"); return false;' >";
|
||||||
|
$ret.= "<img width='$tw' height='$th' src='".$j->thumbnail_url."'>";
|
||||||
|
$ret.= "</a>";
|
||||||
|
} else {
|
||||||
|
$ret=$j->html;
|
||||||
|
}
|
||||||
|
$ret.="<br>";
|
||||||
|
}; break;
|
||||||
|
case "photo": {
|
||||||
|
$ret = "<img width='".$j->width."' height='".$j->height."' src='".$j->url."'>";
|
||||||
|
$ret.="<br>";
|
||||||
|
}; break;
|
||||||
|
case "link": {
|
||||||
|
//$ret = "<a href='".$embedurl."'>".$j->title."</a>";
|
||||||
|
}; break;
|
||||||
|
case "rich": {
|
||||||
|
// not so safe..
|
||||||
|
$ret = "<blockquote>".$j->html."</blockquote>";
|
||||||
|
}; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$embedlink = (isset($j->title))?$j->title:$embedurl;
|
||||||
|
$ret .= "<a href='$embedurl' rel='oembed'>$embedlink</a>";
|
||||||
|
if (isset($j->author_name)) $ret.=" by ".$j->author_name;
|
||||||
|
if (isset($j->provider_name)) $ret.=" on ".$j->provider_name;
|
||||||
|
$ret.="</span>";
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
function oembed_bbcode2html($text){
|
||||||
|
$stopoembed = get_config("system","no_oembed");
|
||||||
|
if ($stopoembed == true){
|
||||||
|
return preg_replace("/\[embed\](.+?)\[\/embed\]/is", "<!-- oembed $1 --><i>". t('Embedding disabled') ." : $1</i><!-- /oembed $1 -->" ,$text);
|
||||||
|
}
|
||||||
|
return preg_replace_callback("/\[embed\](.+?)\[\/embed\]/is", 'oembed_replacecb' ,$text);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function oe_build_xpath($attr, $value){
|
||||||
|
// http://westhoffswelt.de/blog/0036_xpath_to_select_html_by_class.html
|
||||||
|
return "contains( normalize-space( @$attr ), ' $value ' ) or substring( normalize-space( @$attr ), 1, string-length( '$value' ) + 1 ) = '$value ' or substring( normalize-space( @$attr ), string-length( @$attr ) - string-length( '$value' ) ) = ' $value' or @$attr = '$value'";
|
||||||
|
}
|
||||||
|
|
||||||
|
function oe_get_inner_html( $node ) {
|
||||||
|
$innerHTML= '';
|
||||||
|
$children = $node->childNodes;
|
||||||
|
foreach ($children as $child) {
|
||||||
|
$innerHTML .= $child->ownerDocument->saveXML( $child );
|
||||||
|
}
|
||||||
|
return $innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find <span class='oembed'>..<a href='url' rel='oembed'>..</a></span>
|
||||||
|
* and replace it with [embed]url[/embed]
|
||||||
|
*/
|
||||||
|
function oembed_html2bbcode($text) {
|
||||||
|
$dom = DOMDocument::loadHTML($text);
|
||||||
|
$xpath = new DOMXPath($dom);
|
||||||
|
$attr = "oembed";
|
||||||
|
|
||||||
|
$xattr = oe_build_xpath("class","oembed");
|
||||||
|
$entries = $xpath->query("//span[$xattr]");
|
||||||
|
|
||||||
|
$xattr = oe_build_xpath("rel","oembed");
|
||||||
|
foreach($entries as $e) {
|
||||||
|
$href = $xpath->evaluate("a[$xattr]/@href", $e)->item(0)->nodeValue;
|
||||||
|
if(!is_null($href)) $e->parentNode->replaceChild(new DOMText("[embed]".$href."[embed]"), $e);
|
||||||
|
}
|
||||||
|
return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) );
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -30,6 +30,10 @@ function poller_run($argv, $argc){
|
||||||
$php_path = ((x($a->config,'php_path') && strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
$php_path = ((x($a->config,'php_path') && strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||||
//proc_close(proc_open("\"$php_path\" \"include/queue.php\" &", array(), $foo));
|
//proc_close(proc_open("\"$php_path\" \"include/queue.php\" &", array(), $foo));
|
||||||
proc_run($php_path,"include/queue.php");
|
proc_run($php_path,"include/queue.php");
|
||||||
|
|
||||||
|
// clear old cache
|
||||||
|
q("DELETE FROM `cache` WHERE `updated`<'%s'",
|
||||||
|
dbesc(datetime_convert('UTC','UTC',"now - 30 days")));
|
||||||
|
|
||||||
|
|
||||||
$hub_update = false;
|
$hub_update = false;
|
||||||
|
|
31
mod/item.php
31
mod/item.php
|
@ -422,12 +422,39 @@ function item_post(&$a) {
|
||||||
|
|
||||||
logger('mod_item: notifier invoked: ' . "\"$php_path\" \"include/notifier.php\" \"$notify_type\" \"$post_id\" &");
|
logger('mod_item: notifier invoked: ' . "\"$php_path\" \"include/notifier.php\" \"$notify_type\" \"$post_id\" &");
|
||||||
|
|
||||||
proc_run($php_path, "include/notifier.php", $notify_type, "$post_id");
|
proc_run($php_path, "include/notifier.php", $notify_type, "$post_id");
|
||||||
|
|
||||||
$datarray['id'] = $post_id;
|
$datarray['id'] = $post_id;
|
||||||
|
|
||||||
call_hooks('post_local_end', $datarray);
|
call_hooks('post_local_end', $datarray);
|
||||||
|
|
||||||
|
if(strlen($emailcc) && $profile_uid == local_user()) {
|
||||||
|
$erecips = explode(',', $emailcc);
|
||||||
|
if(count($erecips)) {
|
||||||
|
foreach($erecips as $recip) {
|
||||||
|
$addr = trim($recip);
|
||||||
|
if(! strlen($addr))
|
||||||
|
continue;
|
||||||
|
$disclaimer = '<hr />' . t('This message was sent to you by ') . $a->user['username']
|
||||||
|
. t(', a member of the Friendika social network.') . '<br />';
|
||||||
|
$disclaimer .= t('You may visit them online at') . ' '
|
||||||
|
. $a->get_baseurl() . '/profile/' . $a->user['nickname'] . '<br />';
|
||||||
|
$disclaimer .= t('Please contact the sender by replying to this post if you do not wish to receive these messages.') . '<br />';
|
||||||
|
|
||||||
|
$subject = '[Friendika]' . ' ' . $a->user['username'] . ' ' . t('posted an update.');
|
||||||
|
$headers = 'From: ' . $a->user['username'] . ' <' . $a->user['email'] . '>' . "\n";
|
||||||
|
$headers .= 'MIME-Version: 1.0' . "\n";
|
||||||
|
$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
|
||||||
|
$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
|
||||||
|
$link = '<a href="' . $a->get_baseurl() . '/profile/' . $a->user['nickname'] . '"><img src="' . $author['thumb'] . '" alt="' . $a->user['username'] . '" /></a><br /><br />';
|
||||||
|
$html = prepare_body($datarray);
|
||||||
|
$message = '<html><body>' . $link . $html . $disclaimer . '</body></html>';
|
||||||
|
@mail($addr, $subject, $message, $headers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
goaway($a->get_baseurl() . "/" . $_POST['return'] );
|
goaway($a->get_baseurl() . "/" . $_POST['return'] );
|
||||||
return; // NOTREACHED
|
return; // NOTREACHED
|
||||||
|
|
|
@ -87,6 +87,8 @@ function network_content(&$a, $update = 0) {
|
||||||
'$baseurl' => $a->get_baseurl(),
|
'$baseurl' => $a->get_baseurl(),
|
||||||
'$defloc' => $a->user['default-location'],
|
'$defloc' => $a->user['default-location'],
|
||||||
'$visitor' => 'block',
|
'$visitor' => 'block',
|
||||||
|
'$emailcc' => t('CC: email addresses'),
|
||||||
|
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
|
||||||
'$lockstate' => $lockstate,
|
'$lockstate' => $lockstate,
|
||||||
'$acl' => populate_acl((($group) ? $group_acl : $a->user), $celeb),
|
'$acl' => populate_acl((($group) ? $group_acl : $a->user), $celeb),
|
||||||
'$bang' => (($group) ? '!' : ''),
|
'$bang' => (($group) ? '!' : ''),
|
||||||
|
|
|
@ -144,6 +144,8 @@ function profile_content(&$a, $update = 0) {
|
||||||
'$return_path' => $a->cmd,
|
'$return_path' => $a->cmd,
|
||||||
'$visitor' => (($is_owner || $commvisitor) ? 'block' : 'none'),
|
'$visitor' => (($is_owner || $commvisitor) ? 'block' : 'none'),
|
||||||
'$lockstate' => $lockstate,
|
'$lockstate' => $lockstate,
|
||||||
|
'$emailcc' => t('CC: email addresses'),
|
||||||
|
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
|
||||||
'$bang' => '',
|
'$bang' => '',
|
||||||
'$acl' => (($is_owner) ? populate_acl($a->user, $celeb) : ''),
|
'$acl' => (($is_owner) ? populate_acl($a->user, $celeb) : ''),
|
||||||
'$profile_uid' => $a->profile['profile_uid'],
|
'$profile_uid' => $a->profile['profile_uid'],
|
||||||
|
|
|
@ -36,7 +36,7 @@ link_desc:"Insert/edit link",
|
||||||
unlink_desc:"Unlink",
|
unlink_desc:"Unlink",
|
||||||
image_desc:"Insert/edit image",
|
image_desc:"Insert/edit image",
|
||||||
cleanup_desc:"Cleanup messy code",
|
cleanup_desc:"Cleanup messy code",
|
||||||
code_desc:"Edit HTML Source",
|
code_desc:"Edit BBcode Source",
|
||||||
sub_desc:"Subscript",
|
sub_desc:"Subscript",
|
||||||
sup_desc:"Superscript",
|
sup_desc:"Superscript",
|
||||||
hr_desc:"Insert horizontal ruler",
|
hr_desc:"Insert horizontal ruler",
|
||||||
|
|
|
@ -10,7 +10,7 @@ about_version:"Version",
|
||||||
about_loaded:"Loaded plugins",
|
about_loaded:"Loaded plugins",
|
||||||
anchor_title:"Insert/edit anchor",
|
anchor_title:"Insert/edit anchor",
|
||||||
anchor_name:"Anchor name",
|
anchor_name:"Anchor name",
|
||||||
code_title:"HTML Source Editor",
|
code_title:"BBcode Source Editor",
|
||||||
code_wordwrap:"Word wrap",
|
code_wordwrap:"Word wrap",
|
||||||
colorpicker_title:"Select a color",
|
colorpicker_title:"Select a color",
|
||||||
colorpicker_picker_tab:"Picker",
|
colorpicker_picker_tab:"Picker",
|
||||||
|
|
|
@ -320,3 +320,11 @@ function update_1031() {
|
||||||
function update_1032() {
|
function update_1032() {
|
||||||
q("ALTER TABLE `profile` ADD `pdesc` CHAR( 255 ) NOT NULL AFTER `name` ");
|
q("ALTER TABLE `profile` ADD `pdesc` CHAR( 255 ) NOT NULL AFTER `name` ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1033() {
|
||||||
|
q("CREATE TABLE IF NOT EXISTS `cache` (
|
||||||
|
`k` CHAR( 255 ) NOT NULL PRIMARY KEY ,
|
||||||
|
`v` TEXT NOT NULL,
|
||||||
|
`updated` DATETIME NOT NULL
|
||||||
|
) ENGINE = MYISAM DEFAULT CHARSET=utf8;");
|
||||||
|
}
|
||||||
|
|
|
@ -40,8 +40,12 @@
|
||||||
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
||||||
<img id="profile-rotator" src="images/rotator.gif" alt="Bitte warten" title="Bitte warten" style="display: none;" />
|
<img id="profile-rotator" src="images/rotator.gif" alt="Bitte warten" title="Bitte warten" style="display: none;" />
|
||||||
</div>
|
</div>
|
||||||
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif" alt="Berechtigungseinstellungen" title="Berechtigungseinstellungen" onClick="openClose('profile-jot-acl-wrapper');" />$bang</div>
|
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif" alt="Berechtigungseinstellungen" title="Berechtigungseinstellungen" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper');" />$bang</div>
|
||||||
<div id="profile-jot-perms-end"></div>
|
<div id="profile-jot-perms-end"></div>
|
||||||
|
<div id="profile-jot-email-wrapper" style="display: none;" >
|
||||||
|
<div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle">
|
||||||
|
<div id="profile-jot-email-end"></div>
|
||||||
|
</div>
|
||||||
<div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
|
<div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -2,17 +2,20 @@
|
||||||
<script language="javascript" type="text/javascript" src="$baseurl/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
|
<script language="javascript" type="text/javascript" src="$baseurl/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
|
||||||
<script language="javascript" type="text/javascript">
|
<script language="javascript" type="text/javascript">
|
||||||
|
|
||||||
|
var editor;
|
||||||
|
|
||||||
tinyMCE.init({
|
tinyMCE.init({
|
||||||
theme : "advanced",
|
theme : "advanced",
|
||||||
mode : "specific_textareas",
|
mode : "specific_textareas",
|
||||||
editor_selector: /(profile-jot-text|prvmail-text)/,
|
editor_selector: /(profile-jot-text|prvmail-text)/,
|
||||||
plugins : "bbcode",
|
plugins : "bbcode,paste",
|
||||||
theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect",
|
theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
|
||||||
theme_advanced_buttons2 : "",
|
theme_advanced_buttons2 : "",
|
||||||
theme_advanced_buttons3 : "",
|
theme_advanced_buttons3 : "",
|
||||||
theme_advanced_toolbar_location : "top",
|
theme_advanced_toolbar_location : "top",
|
||||||
theme_advanced_toolbar_align : "center",
|
theme_advanced_toolbar_align : "center",
|
||||||
theme_advanced_blockformats : "blockquote,code",
|
theme_advanced_blockformats : "blockquote,code",
|
||||||
|
paste_text_sticky : true,
|
||||||
entity_encoding : "raw",
|
entity_encoding : "raw",
|
||||||
add_unload_trigger : false,
|
add_unload_trigger : false,
|
||||||
remove_linebreaks : false,
|
remove_linebreaks : false,
|
||||||
|
@ -43,8 +46,13 @@ tinyMCE.init({
|
||||||
$('#character-counter').addClass('red');
|
$('#character-counter').addClass('red');
|
||||||
}
|
}
|
||||||
$('#character-counter').text(text);
|
$('#character-counter').text(text);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
ed.onInit.add(function(ed) {
|
||||||
|
ed.pasteAsPlainText = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -40,8 +40,12 @@
|
||||||
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
||||||
<img id="profile-rotator" src="images/rotator.gif" alt="Please wait" title="Please wait" style="display: none;" />
|
<img id="profile-rotator" src="images/rotator.gif" alt="Please wait" title="Please wait" style="display: none;" />
|
||||||
</div>
|
</div>
|
||||||
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif" alt="Permission Settings" title="Permission Settings" onClick="openClose('profile-jot-acl-wrapper');" />$bang</div>
|
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif" alt="Permission Settings" title="Permission Settings" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper');" />$bang</div>
|
||||||
<div id="profile-jot-perms-end"></div>
|
<div id="profile-jot-perms-end"></div>
|
||||||
|
<div id="profile-jot-email-wrapper" style="display: none;" >
|
||||||
|
<div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle">
|
||||||
|
<div id="profile-jot-email-end"></div>
|
||||||
|
</div>
|
||||||
<div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
|
<div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,13 @@
|
||||||
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
||||||
<img id="profile-rotator" src="images/rotator.gif" alt="Please wait" title="Please wait" style="display: none;" />
|
<img id="profile-rotator" src="images/rotator.gif" alt="Please wait" title="Please wait" style="display: none;" />
|
||||||
</div>
|
</div>
|
||||||
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif" alt="Permission Settings" title="Permission Settings" onClick="openClose('profile-jot-acl-wrapper');" />$bang</div>
|
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif" alt="Permission Settings" title="Permission Settings" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper');" />$bang</div>
|
||||||
<div id="profile-jot-perms-end"></div>
|
<div id="profile-jot-perms-end"></div>
|
||||||
|
<div id="profile-jot-email-wrapper" style="display: none;" >
|
||||||
|
<div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle">
|
||||||
|
<div id="profile-jot-email-end"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
|
<div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -40,8 +40,13 @@
|
||||||
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
||||||
<img id="profile-rotator" src="images/rotator.gif" alt="Attendi" title="Attendi" style="display: none;" />
|
<img id="profile-rotator" src="images/rotator.gif" alt="Attendi" title="Attendi" style="display: none;" />
|
||||||
</div>
|
</div>
|
||||||
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif" alt="Impostazione permessi" title="Impostazione permessi" onClick="openClose('profile-jot-acl-wrapper');" />$bang</div>
|
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif" alt="Impostazione permessi" title="Impostazione permessi" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper');" />$bang</div>
|
||||||
<div id="profile-jot-perms-end"></div>
|
<div id="profile-jot-perms-end"></div>
|
||||||
|
<div id="profile-jot-email-wrapper" style="display: none;" >
|
||||||
|
<div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle">
|
||||||
|
<div id="profile-jot-email-end"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
|
<div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
BIN
view/theme/purplezero/border.jpg
Normal file
BIN
view/theme/purplezero/border.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 364 B |
BIN
view/theme/purplezero/head.jpg
Normal file
BIN
view/theme/purplezero/head.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
view/theme/purplezero/shiny.png
Normal file
BIN
view/theme/purplezero/shiny.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 320 B |
27
view/theme/purplezero/style.css
Normal file
27
view/theme/purplezero/style.css
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
@import url('../duepuntozero/style.css');
|
||||||
|
|
||||||
|
a, a:visited { color: #7433af; text-decoration: none; }
|
||||||
|
a:hover {text-decoration: underline; }
|
||||||
|
|
||||||
|
|
||||||
|
body { background-image: url(head.jpg); }
|
||||||
|
aside( background-image: url(border.jpg); }
|
||||||
|
section { background-image: url(border.jpg); }
|
||||||
|
#profile-tabs-wrapper { background-image: url(head.jpg); }
|
||||||
|
div.wall-item-content-wrapper.shiny { background-image: url('shiny.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.nav-commlink, .nav-login-link {
|
||||||
|
background-color: #aed3b2;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.fakelink, .fakelink:visited {
|
||||||
|
color: #7433af;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wall-item-name-link {
|
||||||
|
color: #7433af;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue