Merge branch 'dev' of https://github.com/redmatrix/hubzilla into dev_merge
This commit is contained in:
commit
59a9f6bf02
@ -12,6 +12,12 @@ class Display extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
function get($update = 0, $load = false) {
|
function get($update = 0, $load = false) {
|
||||||
|
|
||||||
|
if(argc() > 1) {
|
||||||
|
$module_format = substr(argv(1),strrpos(argv(1),'.') + 1);
|
||||||
|
if(! in_array($module_format,['atom','zot','json']))
|
||||||
|
$module_format = 'html';
|
||||||
|
}
|
||||||
|
|
||||||
$checkjs = new \Zotlabs\Web\CheckJS(1);
|
$checkjs = new \Zotlabs\Web\CheckJS(1);
|
||||||
|
|
||||||
if($load)
|
if($load)
|
||||||
@ -22,8 +28,12 @@ class Display extends \Zotlabs\Web\Controller {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(argc() > 1 && argv(1) !== 'load')
|
if(argc() > 1 && argv(1) !== 'load') {
|
||||||
$item_hash = argv(1);
|
$item_hash = argv(1);
|
||||||
|
if($module_format !== 'html') {
|
||||||
|
$item_hash = substr($item_hash,0,strrpos($item_hash,'.'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($_REQUEST['mid'])
|
if($_REQUEST['mid'])
|
||||||
$item_hash = $_REQUEST['mid'];
|
$item_hash = $_REQUEST['mid'];
|
||||||
@ -139,10 +149,11 @@ class Display extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
$static = ((local_channel()) ? channel_manual_conv_update(local_channel()) : 1);
|
$static = ((local_channel()) ? channel_manual_conv_update(local_channel()) : 1);
|
||||||
|
|
||||||
//if the target item is not a post (eg a like) we want to address its thread parent
|
// if the target item is not a post (eg a like) we want to address its thread parent
|
||||||
|
|
||||||
$mid = ((($target_item['verb'] == ACTIVITY_LIKE) || ($target_item['verb'] == ACTIVITY_DISLIKE)) ? $target_item['thr_parent'] : $target_item['mid']);
|
$mid = ((($target_item['verb'] == ACTIVITY_LIKE) || ($target_item['verb'] == ACTIVITY_DISLIKE)) ? $target_item['thr_parent'] : $target_item['mid']);
|
||||||
|
|
||||||
//if we got a decoded hash we must encode it again before handing to javascript
|
// if we got a decoded hash we must encode it again before handing to javascript
|
||||||
if($decoded)
|
if($decoded)
|
||||||
$mid = 'b64.' . base64url_encode($mid);
|
$mid = 'b64.' . base64url_encode($mid);
|
||||||
|
|
||||||
@ -195,11 +206,11 @@ class Display extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
$sql_extra = public_permissions_sql($observer_hash);
|
$sql_extra = public_permissions_sql($observer_hash);
|
||||||
|
|
||||||
if(($update && $load) || ($checkjs->disabled())) {
|
if(($update && $load) || ($checkjs->disabled()) || ($module_format !== 'html')) {
|
||||||
|
|
||||||
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']),intval(\App::$pager['start']));
|
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']),intval(\App::$pager['start']));
|
||||||
|
|
||||||
if($load || ($checkjs->disabled())) {
|
if($load || ($checkjs->disabled()) || ($module_format !== 'html')) {
|
||||||
$r = null;
|
$r = null;
|
||||||
|
|
||||||
require_once('include/channel.php');
|
require_once('include/channel.php');
|
||||||
@ -311,6 +322,11 @@ class Display extends \Zotlabs\Web\Controller {
|
|||||||
$items = array();
|
$items = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
switch($module_format) {
|
||||||
|
|
||||||
|
case 'html':
|
||||||
|
|
||||||
if ($checkjs->disabled()) {
|
if ($checkjs->disabled()) {
|
||||||
$o .= conversation($items, 'display', $update, 'traditional');
|
$o .= conversation($items, 'display', $update, 'traditional');
|
||||||
if ($items[0]['title'])
|
if ($items[0]['title'])
|
||||||
@ -320,6 +336,49 @@ class Display extends \Zotlabs\Web\Controller {
|
|||||||
$o .= conversation($items, 'display', $update, 'client');
|
$o .= conversation($items, 'display', $update, 'client');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'atom':
|
||||||
|
|
||||||
|
$atom = replace_macros(get_markup_template('atom_feed.tpl'), array(
|
||||||
|
'$version' => xmlify(\Zotlabs\Lib\System::get_project_version()),
|
||||||
|
'$red' => xmlify(\Zotlabs\Lib\System::get_platform_name()),
|
||||||
|
'$feed_id' => xmlify(\App::$cmd),
|
||||||
|
'$feed_title' => xmlify(t('Article')),
|
||||||
|
'$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now', ATOM_TIME)),
|
||||||
|
'$author' => '',
|
||||||
|
'$owner' => '',
|
||||||
|
'$profile_page' => xmlify(z_root() . '/display/' . $target_item['mid']),
|
||||||
|
));
|
||||||
|
|
||||||
|
$x = [ 'xml' => $atom, 'channel' => $channel, 'observer_hash' => $observer_hash, 'params' => $params ];
|
||||||
|
call_hooks('atom_feed_top',$x);
|
||||||
|
|
||||||
|
$atom = $x['xml'];
|
||||||
|
|
||||||
|
// a much simpler interface
|
||||||
|
call_hooks('atom_feed', $atom);
|
||||||
|
|
||||||
|
|
||||||
|
if($items) {
|
||||||
|
$type = 'html';
|
||||||
|
foreach($items as $item) {
|
||||||
|
if($item['item_private'])
|
||||||
|
continue;
|
||||||
|
$atom .= atom_entry($item, $type, null, '', true, '', false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
call_hooks('atom_feed_end', $atom);
|
||||||
|
|
||||||
|
$atom .= '</feed>' . "\r\n";
|
||||||
|
|
||||||
|
header('Content-type: application/atom+xml');
|
||||||
|
echo $atom;
|
||||||
|
killme();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if($updateable) {
|
if($updateable) {
|
||||||
$x = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 AND uid = %d and parent = %d ",
|
$x = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 AND uid = %d and parent = %d ",
|
||||||
intval(local_channel()),
|
intval(local_channel()),
|
||||||
|
@ -511,48 +511,20 @@ class Item extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
require_once('include/text.php');
|
require_once('include/text.php');
|
||||||
|
|
||||||
// Markdown doesn't work correctly. Do not re-enable unless you're willing to fix it and support it.
|
if($uid && $uid == $profile_uid && feature_enabled($uid,'markdown')) {
|
||||||
|
require_once('include/markdown.php');
|
||||||
|
$body = preg_replace_callback('/\[share(.*?)\]/ism','\share_shield',$body);
|
||||||
|
$body = markdown_to_bb($body,true,['preserve_lf' => true]);
|
||||||
|
$body = preg_replace_callback('/\[share(.*?)\]/ism','\share_unshield',$body);
|
||||||
|
|
||||||
// Sample that will probably give you grief - you must preserve the linebreaks
|
}
|
||||||
// and provide the correct markdown interpretation and you cannot allow unfiltered HTML
|
|
||||||
|
|
||||||
// Markdown
|
|
||||||
// ========
|
|
||||||
//
|
|
||||||
// **bold** abcde
|
|
||||||
// fghijkl
|
|
||||||
// *italic*
|
|
||||||
// <img src="javascript:alert('hacked');" />
|
|
||||||
|
|
||||||
// if($uid && $uid == $profile_uid && feature_enabled($uid,'markdown')) {
|
|
||||||
// require_once('include/markdown.php');
|
|
||||||
// $body = escape_tags(trim($body));
|
|
||||||
// $body = str_replace("\n",'<br />', $body);
|
|
||||||
// $body = preg_replace_callback('/\[share(.*?)\]/ism','\share_shield',$body);
|
|
||||||
// $body = markdown_to_bb($body,true);
|
|
||||||
// $body = preg_replace_callback('/\[share(.*?)\]/ism','\share_unshield',$body);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// BBCODE alert: the following functions assume bbcode input
|
// BBCODE alert: the following functions assume bbcode input
|
||||||
// and will require alternatives for alternative content-types (text/html, text/markdown, text/plain, etc.)
|
// and will require alternatives for alternative content-types (text/html, text/markdown, text/plain, etc.)
|
||||||
// we may need virtual or template classes to implement the possible alternatives
|
// we may need virtual or template classes to implement the possible alternatives
|
||||||
|
|
||||||
// Work around doubled linefeeds in Tinymce 3.5b2
|
|
||||||
// First figure out if it's a status post that would've been
|
|
||||||
// created using tinymce. Otherwise leave it alone.
|
|
||||||
|
|
||||||
$plaintext = true;
|
|
||||||
|
|
||||||
// $plaintext = ((feature_enabled($profile_uid,'richtext')) ? false : true);
|
|
||||||
// if((! $parent) && (! $api_source) && (! $plaintext)) {
|
|
||||||
// $body = fix_mce_lf($body);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// If we're sending a private top-level message with a single @-taggable channel as a recipient, @-tag it, if our pconfig is set.
|
// If we're sending a private top-level message with a single @-taggable channel as a recipient, @-tag it, if our pconfig is set.
|
||||||
|
|
||||||
|
|
||||||
if((! $parent) && (get_pconfig($profile_uid,'system','tagifonlyrecip')) && (substr_count($str_contact_allow,'<') == 1) && ($str_group_allow == '') && ($str_contact_deny == '') && ($str_group_deny == '')) {
|
if((! $parent) && (get_pconfig($profile_uid,'system','tagifonlyrecip')) && (substr_count($str_contact_allow,'<') == 1) && ($str_group_allow == '') && ($str_contact_deny == '') && ($str_group_deny == '')) {
|
||||||
$x = q("select abook_id, abconfig.v from abook left join abconfig on abook_xchan = abconfig.xchan and abook_channel = abconfig.chan and cat= 'their_perms' and abconfig.k = 'tag_deliver' and abconfig.v = 1 and abook_xchan = '%s' and abook_channel = %d limit 1",
|
$x = q("select abook_id, abconfig.v from abook left join abconfig on abook_xchan = abconfig.xchan and abook_channel = abconfig.chan and cat= 'their_perms' and abconfig.k = 'tag_deliver' and abconfig.v = 1 and abook_xchan = '%s' and abook_channel = %d limit 1",
|
||||||
dbesc(str_replace(array('<','>'),array('',''),$str_contact_allow)),
|
dbesc(str_replace(array('<','>'),array('',''),$str_contact_allow)),
|
||||||
|
@ -65,6 +65,10 @@ function categories_widget($baseurl,$selected = '') {
|
|||||||
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
|
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
|
require_once('include/security.php');
|
||||||
|
|
||||||
|
$sql_extra = item_permissions_sql(App::$profile['profile_uid']);
|
||||||
|
|
||||||
$item_normal = item_normal();
|
$item_normal = item_normal();
|
||||||
|
|
||||||
$terms = array();
|
$terms = array();
|
||||||
@ -77,6 +81,7 @@ function categories_widget($baseurl,$selected = '') {
|
|||||||
and item.owner_xchan = '%s'
|
and item.owner_xchan = '%s'
|
||||||
and item.item_wall = 1
|
and item.item_wall = 1
|
||||||
$item_normal
|
$item_normal
|
||||||
|
$sql_extra
|
||||||
order by term.term asc",
|
order by term.term asc",
|
||||||
intval(App::$profile['profile_uid']),
|
intval(App::$profile['profile_uid']),
|
||||||
intval(TERM_CATEGORY),
|
intval(TERM_CATEGORY),
|
||||||
@ -105,6 +110,8 @@ function cardcategories_widget($baseurl,$selected = '') {
|
|||||||
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
|
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
|
$sql_extra = item_permissions_sql(App::$profile['profile_uid']);
|
||||||
|
|
||||||
$item_normal = "and item.item_hidden = 0 and item.item_type = 6 and item.item_deleted = 0
|
$item_normal = "and item.item_hidden = 0 and item.item_type = 6 and item.item_deleted = 0
|
||||||
and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
|
and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
|
||||||
and item.item_blocked = 0 ";
|
and item.item_blocked = 0 ";
|
||||||
@ -118,6 +125,7 @@ function cardcategories_widget($baseurl,$selected = '') {
|
|||||||
and term.otype = %d
|
and term.otype = %d
|
||||||
and item.owner_xchan = '%s'
|
and item.owner_xchan = '%s'
|
||||||
$item_normal
|
$item_normal
|
||||||
|
$sql_extra
|
||||||
order by term.term asc",
|
order by term.term asc",
|
||||||
intval(App::$profile['profile_uid']),
|
intval(App::$profile['profile_uid']),
|
||||||
intval(TERM_CATEGORY),
|
intval(TERM_CATEGORY),
|
||||||
|
@ -363,6 +363,15 @@ function get_features($filtered = true) {
|
|||||||
|
|
||||||
t('Post/Comment Tools'),
|
t('Post/Comment Tools'),
|
||||||
|
|
||||||
|
[
|
||||||
|
'markdown',
|
||||||
|
t('Markdown'),
|
||||||
|
t('Use markdown for editing posts'),
|
||||||
|
false,
|
||||||
|
get_config('feature_lock','markdown'),
|
||||||
|
feature_level('markdown',2),
|
||||||
|
],
|
||||||
|
|
||||||
[
|
[
|
||||||
'commtag',
|
'commtag',
|
||||||
t('Community Tagging'),
|
t('Community Tagging'),
|
||||||
|
@ -49,14 +49,17 @@ function markdown_to_bb($s, $use_zrl = false, $options = []) {
|
|||||||
|
|
||||||
$s = $x['text'];
|
$s = $x['text'];
|
||||||
|
|
||||||
// Escaping the hash tags - doesn't always seem to work
|
// Escaping the hash tags
|
||||||
// $s = preg_replace('/\#([^\s\#])/','\\#$1',$s);
|
|
||||||
// This seems to work
|
|
||||||
$s = preg_replace('/\#([^\s\#])/','#$1',$s);
|
$s = preg_replace('/\#([^\s\#])/','#$1',$s);
|
||||||
|
|
||||||
$s = MarkdownExtra::defaultTransform($s);
|
$s = MarkdownExtra::defaultTransform($s);
|
||||||
|
|
||||||
|
if($options && $options['preserve_lf']) {
|
||||||
|
$s = str_replace(["\r","\n"],["",'<br>'],$s);
|
||||||
|
}
|
||||||
|
else {
|
||||||
$s = str_replace("\r","",$s);
|
$s = str_replace("\r","",$s);
|
||||||
|
}
|
||||||
|
|
||||||
$s = str_replace('#','#',$s);
|
$s = str_replace('#','#',$s);
|
||||||
|
|
||||||
|
@ -716,6 +716,10 @@ function scale_external_images($s, $include_link = true, $scale_replace = false)
|
|||||||
$scaled = str_replace($scale_replace[0], $scale_replace[1], $mtch[3]);
|
$scaled = str_replace($scale_replace[0], $scale_replace[1], $mtch[3]);
|
||||||
else
|
else
|
||||||
$scaled = $mtch[3];
|
$scaled = $mtch[3];
|
||||||
|
|
||||||
|
if(! strpbrk(substr($scaled,0,1),'zhfmt'))
|
||||||
|
continue;
|
||||||
|
|
||||||
$i = z_fetch_url($scaled,true);
|
$i = z_fetch_url($scaled,true);
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,9 @@
|
|||||||
<title>{{$feed_title}}</title>
|
<title>{{$feed_title}}</title>
|
||||||
<generator uri="http://hubzilla.org" version="{{$version}}">{{$red}}</generator>
|
<generator uri="http://hubzilla.org" version="{{$version}}">{{$red}}</generator>
|
||||||
<link rel="license" href="http://creativecommons.org/licenses/by/3.0/" />
|
<link rel="license" href="http://creativecommons.org/licenses/by/3.0/" />
|
||||||
|
{{if $profile_page}}
|
||||||
<link rel="alternate" type="text/html" href="{{$profile_page}}" />
|
<link rel="alternate" type="text/html" href="{{$profile_page}}" />
|
||||||
|
{{/if}}
|
||||||
{{if $author}}
|
{{if $author}}
|
||||||
{{$author}}
|
{{$author}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
Reference in New Issue
Block a user