fix TextFormatter seminarymedia tagging

This commit is contained in:
coderkun 2014-04-20 00:39:25 +02:00
commit bb2f531544

View file

@ -61,17 +61,17 @@
$string = nl2br(htmlspecialchars($string)); $string = nl2br(htmlspecialchars($string));
// Handle Seminarymedia // Handle Seminarymedia
preg_match_all('/\[seminarymedia:(\d+)\]/iu', $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE); $seminarymedia = array();
foreach($matches as &$match) preg_match_all('/\[seminarymedia:(\d+)\]/iu', $string, $matches); //, PREG_SET_ORDER | PREG_OFFSET_CAPTURE);
$seminarymediaIds = array_unique($matches[1]);
foreach($seminarymediaIds as &$seminarymediaId)
{ {
// Get Seminary media $replacement = null;
$seminarymediaId = intval($match[1][0]);
$htmlImage = null;
if(!is_null(\hhu\z\controllers\SeminaryRoleController::$seminary) && $this->loadMediaModel()) if(!is_null(\hhu\z\controllers\SeminaryRoleController::$seminary) && $this->loadMediaModel())
{ {
try { try {
$medium = self::$Media->getSeminaryMediaById($seminarymediaId); $medium = self::$Media->getSeminaryMediaById($seminarymediaId);
$htmlImage = sprintf( $replacement = sprintf(
'<img src="%s" alt="%s" />', '<img src="%s" alt="%s" />',
$this->linker->link(array('media','seminary', \hhu\z\controllers\SeminaryRoleController::$seminary['url'],$medium['url'])), $this->linker->link(array('media','seminary', \hhu\z\controllers\SeminaryRoleController::$seminary['url'],$medium['url'])),
$medium['description'] $medium['description']
@ -81,10 +81,10 @@
} }
} }
// Replace placholder $seminarymedia[$seminarymediaId] = $replacement;
$startPos = mb_strlen(substr($string, 0, $match[0][1]), 'UTF-8'); }
$endPos = $startPos + mb_strlen($match[0][0]); foreach($seminarymedia as $seminarymediaId => $replacement) {
$string = mb_substr($string, 0, $startPos, 'UTF-8'). $htmlImage . mb_substr($string, $endPos, null, 'UTF-8'); $string = str_replace("[seminarymedia:$seminarymediaId]", $replacement, $string);
} }