From cacec27d25b3495f7ea4527a28fb487f81ea7832 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Tue, 28 Apr 2015 19:31:19 +1000 Subject: [PATCH] Fixes issue preventing CMS AJAX from returning arrays --- modules/backend/facades/Backend.php | 2 +- modules/cms/classes/Controller.php | 9 ++++----- modules/cms/classes/MediaViewHelper.php | 23 +++++++++++++++-------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/modules/backend/facades/Backend.php b/modules/backend/facades/Backend.php index 43781c7ac..bc24b37d1 100644 --- a/modules/backend/facades/Backend.php +++ b/modules/backend/facades/Backend.php @@ -8,7 +8,7 @@ class Backend extends Facade * Get the registered name of the component. * * Resolves to: - * - Backend\Classes\BackendHelper + * - Backend\Helpers\Backend * * @return string */ diff --git a/modules/cms/classes/Controller.php b/modules/cms/classes/Controller.php index 9caa21e6b..4c91b1e79 100644 --- a/modules/cms/classes/Controller.php +++ b/modules/cms/classes/Controller.php @@ -210,7 +210,6 @@ class Controller /* * Post-processing */ - $result = $this->postProcessResult($page, $url, $result); /* @@ -234,7 +233,7 @@ class Controller * Renders a page in its entirety, including component initialization. * AJAX will be disabled for this process. * @param string $pageFile Specifies the CMS page file name to run. - * @param array $parameters Routing parameters. + * @param array $parameters Routing parameters. * @param \Cms\Classes\Theme $theme Theme object */ public static function render($pageFile, $parameters = [], $theme = null) @@ -429,8 +428,8 @@ class Controller * Run page functions */ CmsException::mask($this->page, 300); - $response = (($result = $this->pageObj->onStart()) || - ($result = $this->page->runComponents()) || + $response = (($result = $this->pageObj->onStart()) || + ($result = $this->page->runComponents()) || ($result = $this->pageObj->onEnd())) ? $result : null; CmsException::unmask(); @@ -471,7 +470,7 @@ class Controller { $html = MediaViewHelper::instance()->processHtml($html); - $holder = (object)['html'=>$html]; + $holder = (object) ['html' => $html]; Event::fire('cms.page.postprocess', [$this, $url, $page, $holder]); diff --git a/modules/cms/classes/MediaViewHelper.php b/modules/cms/classes/MediaViewHelper.php index a728b4316..1e81cd7b8 100644 --- a/modules/cms/classes/MediaViewHelper.php +++ b/modules/cms/classes/MediaViewHelper.php @@ -19,11 +19,14 @@ class MediaViewHelper */ public function processHtml($html) { + if (!is_string($html)) { + return $html; + } + $mediaTags = $this->extractMediaTags($html); foreach ($mediaTags as $tagInfo) { $pattern = preg_quote($tagInfo['declaration']); $generatedMarkup = $this->generateMediaTagaMarkup($tagInfo['type'], $tagInfo['src']); - $html = mb_ereg_replace($pattern, $generatedMarkup, $html); } @@ -42,7 +45,7 @@ class MediaViewHelper if (preg_match_all('/\]+\>[^\<]*\<\/figure\>/i', $html, $matches)) { foreach ($matches[0] as $mediaDeclaration) { - foreach ($tagDefinitions as $type=>$pattern) { + foreach ($tagDefinitions as $type => $pattern) { $nameMatch = []; if (preg_match($pattern, $mediaDeclaration, $nameMatch)) { $result[] = [ @@ -62,20 +65,23 @@ class MediaViewHelper { $partialName = $type == 'audio' ? 'oc-audio-player' : 'oc-video-player'; - if ($this->playerPartialExists($partialName)) - return Controller::getController()->renderPartial($partialName, ['src'=>$src]); + if ($this->playerPartialExists($partialName)) { + return Controller::getController()->renderPartial($partialName, ['src' => $src]); + } return $this->getDefaultPlayerMarkup($type, $src); } protected function playerPartialExists($name) { - if (array_key_exists($name, $this->playerPartialFlags)) + if (array_key_exists($name, $this->playerPartialFlags)) { return $this->playerPartialFlags[$name]; + } $controller = Controller::getController(); - if (!$controller) + if (!$controller) { throw new Phpr_ApplicationException('Media tags can only be processed for front-end requests.'); + } $partial = Partial::loadCached($controller->getTheme(), $name); @@ -85,10 +91,11 @@ class MediaViewHelper protected function getDefaultPlayerMarkup($type, $src) { switch ($type) { - case 'video' : + case 'video': return ''; break; - case 'audio' : + + case 'audio': return ''; break; }