addAlias("markup_post_text", "makesafe", 8);
}
# Replace the "read more" indicator before markup modules get to it.
static function makesafe($text, $post = null) {
if (!is_string($text) or !preg_match("//", $text)) return $text;
$controller = Route::current()->controller;
if ($controller instanceof MainController and $controller->feed)
return str_replace("", "", $text);
$url = (isset($post) and !$post->no_results) ? $post->url() : "#" ;
# For the curious: e51b2b9a58824dd068d8777ec6e97e4d is a md5 of "replace me!"
return preg_replace("//", 'e51b2b9a58824dd068d8777ec6e97e4d(((more\\1)))', $text);
}
# To be used in the Twig template as ${ post.body | read_more("Read more...") }
static function read_more($text, $string = null) {
if (!substr_count($text, "e51b2b9a58824dd068d8777ec6e97e4d"))
return $text;
if (Route::current()->action == "view")
return preg_replace('/(
)?e51b2b9a58824dd068d8777ec6e97e4d<\/a>\(\(\(more(\((.+)\))?\)\)\)(<\/p>(\n\n<\/p>(\n\n)?)?)?/', "", $text);
preg_match_all("/e51b2b9a58824dd068d8777ec6e97e4d(\(\(\(more(\((.+)\))?\)\)\))/", preg_replace("/<[^>]+>/", "", $text), $more, PREG_OFFSET_CAPTURE);
$body = truncate($text, $more[1][0][1], "", true, true, true);
$body.= @$more[3][0];
if (!empty($more[2][0]))
$string = $more[2][0];
elseif (!isset($string) or $string instanceof Post) # If it's called from anywhere but Twig the post will be passed as a second argument.
$string = __("Read More »", "theme");
return str_replace("e51b2b9a58824dd068d8777ec6e97e4d", $string, $body);
}
static function title_from_excerpt($text) {
$split = preg_split("/()?e51b2b9a58824dd068d8777ec6e97e4d<\/a>(<\/p>(\n\n<\/p>(\n\n)?)?|
)?/", $text);
return $split[0];
}
public function preview($text) {
return preg_replace("//", "
", $text);
}
}