optionally allow zrl usage from specific markdown sources
This commit is contained in:
parent
fc69220b94
commit
c037a5083c
@ -72,7 +72,7 @@ function bb_tag_preg_replace($pattern, $replace, $name, $s) {
|
|||||||
// So we'll use that to convert to HTML, then convert the HTML back to bbcode,
|
// So we'll use that to convert to HTML, then convert the HTML back to bbcode,
|
||||||
// and then clean up a few Diaspora specific constructs.
|
// and then clean up a few Diaspora specific constructs.
|
||||||
|
|
||||||
function diaspora2bb($s) {
|
function diaspora2bb($s,$use_zrl = false) {
|
||||||
|
|
||||||
|
|
||||||
$s = html_entity_decode($s,ENT_COMPAT,'UTF-8');
|
$s = html_entity_decode($s,ENT_COMPAT,'UTF-8');
|
||||||
@ -106,7 +106,14 @@ function diaspora2bb($s) {
|
|||||||
$s = str_replace('♲',html_entity_decode('♲',ENT_QUOTES,'UTF-8'),$s);
|
$s = str_replace('♲',html_entity_decode('♲',ENT_QUOTES,'UTF-8'),$s);
|
||||||
|
|
||||||
// Convert everything that looks like a link to a link
|
// Convert everything that looks like a link to a link
|
||||||
$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3]$2$3[/url]',$s);
|
if($use_zrl) {
|
||||||
|
$s = str_replace(array('[img','/img]'),array('[zmg','/zmg]'),$s);
|
||||||
|
$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[zrl=$2$3]$2$3[/zrl]',$s);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3]$2$3[/url]',$s);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3$4]$2$3$4[/url]',$s);
|
//$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3$4]$2$3$4[/url]',$s);
|
||||||
$s = bb_tag_preg_replace("/\[url\=?(.*?)\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/url\]/ism",'[youtube]$2[/youtube]','url',$s);
|
$s = bb_tag_preg_replace("/\[url\=?(.*?)\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/url\]/ism",'[youtube]$2[/youtube]','url',$s);
|
||||||
|
@ -597,21 +597,21 @@ function scale_external_images($s, $include_link = true, $scale_replace = false)
|
|||||||
$s = htmlspecialchars_decode($s, ENT_COMPAT);
|
$s = htmlspecialchars_decode($s, ENT_COMPAT);
|
||||||
|
|
||||||
$matches = null;
|
$matches = null;
|
||||||
$c = preg_match_all('/\[img(.*?)\](.*?)\[\/img\]/ism',$s,$matches,PREG_SET_ORDER);
|
$c = preg_match_all('/\[([zi])mg(.*?)\](.*?)\[\/[zi]mg\]/ism',$s,$matches,PREG_SET_ORDER);
|
||||||
if($c) {
|
if($c) {
|
||||||
require_once('include/photo/photo_driver.php');
|
require_once('include/photo/photo_driver.php');
|
||||||
|
|
||||||
foreach($matches as $mtch) {
|
foreach($matches as $mtch) {
|
||||||
logger('scale_external_image: ' . $mtch[1] . ' ' . $mtch[2]);
|
logger('scale_external_image: ' . $mtch[2] . ' ' . $mtch[3]);
|
||||||
|
|
||||||
if(substr($mtch[1],0,1) == '=') {
|
if(substr($mtch[1],0,1) == '=') {
|
||||||
$owidth = intval(substr($mtch[1],1));
|
$owidth = intval(substr($mtch[2],1));
|
||||||
if(intval($owidth) > 0 && intval($owidth) < 640)
|
if(intval($owidth) > 0 && intval($owidth) < 640)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$hostname = str_replace('www.','',substr($a->get_baseurl(),strpos($a->get_baseurl(),'://')+3));
|
$hostname = str_replace('www.','',substr($a->get_baseurl(),strpos($a->get_baseurl(),'://')+3));
|
||||||
if(stristr($mtch[2],$hostname))
|
if(stristr($mtch[3],$hostname))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// $scale_replace, if passed, is an array of two elements. The
|
// $scale_replace, if passed, is an array of two elements. The
|
||||||
@ -620,9 +620,9 @@ function scale_external_images($s, $include_link = true, $scale_replace = false)
|
|||||||
// This allows Friendica to display the smaller remote image if
|
// This allows Friendica to display the smaller remote image if
|
||||||
// one exists, while still linking to the full-size image
|
// one exists, while still linking to the full-size image
|
||||||
if($scale_replace)
|
if($scale_replace)
|
||||||
$scaled = str_replace($scale_replace[0], $scale_replace[1], $mtch[2]);
|
$scaled = str_replace($scale_replace[0], $scale_replace[1], $mtch[3]);
|
||||||
else
|
else
|
||||||
$scaled = $mtch[2];
|
$scaled = $mtch[3];
|
||||||
$i = z_fetch_url($scaled);
|
$i = z_fetch_url($scaled);
|
||||||
|
|
||||||
|
|
||||||
@ -633,7 +633,7 @@ function scale_external_images($s, $include_link = true, $scale_replace = false)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// guess mimetype from headers or filename
|
// guess mimetype from headers or filename
|
||||||
$type = guess_image_type($mtch[2],$i['header']);
|
$type = guess_image_type($mtch[3],$i['header']);
|
||||||
|
|
||||||
if($i['success']) {
|
if($i['success']) {
|
||||||
$ph = photo_factory($i['body'], $type);
|
$ph = photo_factory($i['body'], $type);
|
||||||
@ -642,12 +642,12 @@ function scale_external_images($s, $include_link = true, $scale_replace = false)
|
|||||||
$orig_height = $ph->getHeight();
|
$orig_height = $ph->getHeight();
|
||||||
|
|
||||||
if($orig_width > 640 || $orig_height > 640) {
|
if($orig_width > 640 || $orig_height > 640) {
|
||||||
|
$tag = (($match[1] == 'z') ? 'zmg' : 'img');
|
||||||
$ph->scaleImage(640);
|
$ph->scaleImage(640);
|
||||||
$new_width = $ph->getWidth();
|
$new_width = $ph->getWidth();
|
||||||
$new_height = $ph->getHeight();
|
$new_height = $ph->getHeight();
|
||||||
logger('scale_external_images: ' . $orig_width . '->' . $new_width . 'w ' . $orig_height . '->' . $new_height . 'h' . ' match: ' . $mtch[0], LOGGER_DEBUG);
|
logger('scale_external_images: ' . $orig_width . '->' . $new_width . 'w ' . $orig_height . '->' . $new_height . 'h' . ' match: ' . $mtch[0], LOGGER_DEBUG);
|
||||||
$s = str_replace($mtch[0],'[img=' . $new_width . 'x' . $new_height. ']' . $scaled . '[/img]'
|
$s = str_replace($mtch[0],'[' . $tag . '=' . $new_width . 'x' . $new_height. ']' . $scaled . '[/' . $tag . ']'
|
||||||
. "\n" . (($include_link)
|
. "\n" . (($include_link)
|
||||||
? '[zrl=' . $mtch[2] . ']' . t('view full size') . '[/zrl]' . "\n"
|
? '[zrl=' . $mtch[2] . ']' . t('view full size') . '[/zrl]' . "\n"
|
||||||
: ''),$s);
|
: ''),$s);
|
||||||
|
@ -424,7 +424,7 @@ function item_post(&$a) {
|
|||||||
|
|
||||||
if(local_user() && local_user() == $profile_uid && get_pconfig(local_user(),'editor','use_markdown')) {
|
if(local_user() && local_user() == $profile_uid && get_pconfig(local_user(),'editor','use_markdown')) {
|
||||||
require_once('include/bb2diaspora.php');
|
require_once('include/bb2diaspora.php');
|
||||||
$body = diaspora2bb($body);
|
$body = diaspora2bb($body,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user