[TASK] Make ViewHelpers compilable in ext:extensionmanager
[Packages/TYPO3.CMS.git] / typo3 / sysext / extensionmanager / Classes / ViewHelpers / InstallationStateCssClassViewHelper.php
1 <?php
2 namespace TYPO3\CMS\Extensionmanager\ViewHelpers;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
18 use TYPO3\CMS\Fluid\Core\Rendering\RenderingContextInterface;
19 use TYPO3\CMS\Fluid\Core\ViewHelper\Facets\CompilableInterface;
20
21 /**
22 * Returns a string meant to be used as css class stating whether an extension is
23 * available or installed
24 *
25 * @author Susanne Moog <susanne.moog@typo3.org>
26 * @internal
27 */
28 class InstallationStateCssClassViewHelper extends AbstractViewHelper implements CompilableInterface {
29
30 /**
31 * Returns string meant to be used as css class
32 * 'installed' => if an extension is installed
33 * 'available' => if an extension is available in the system
34 * '' (empty string) => if neither installed nor available
35 *
36 * @param string $needle
37 * @param array $haystack
38 * @return string the rendered a tag
39 */
40 public function render($needle, array $haystack) {
41 return self::renderStatic(
42 array(
43 'needle' => $needle,
44 'haystack' => $haystack,
45 ),
46 $this->buildRenderChildrenClosure(),
47 $this->renderingContext
48 );
49 }
50
51 /**
52 * @param array $arguments
53 * @param callable $renderChildrenClosure
54 * @param RenderingContextInterface $renderingContext
55 *
56 * @return string
57 */
58 static public function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext) {
59 $needle = $arguments['needle'];
60 $haystack = $arguments['haystack'];
61 if (array_key_exists($needle, $haystack)) {
62 if (isset($haystack[$needle]['installed']) && $haystack[$needle]['installed'] === TRUE) {
63 return 'installed';
64 } else {
65 return 'available';
66 }
67 }
68 return '';
69 }
70
71 }