* * All rights reserved * * This script is part of the TYPO3 project. The TYPO3 project is * free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * The GNU General Public License can be found at * http://www.gnu.org/copyleft/gpl.html. * * This script is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper; /** * Check which checkbox items got checked by bitwise shifting * Remember: TYPO3 saves da decimal representation of checkbox values to database * Example: "5" means, that Checkboxes No. 1 and 3 got checked (1 + 4) */ class FindActiveCheckboxesViewHelper extends AbstractViewHelper { /** * Initialize arguments. */ public function initializeArguments() { parent::initializeArguments(); $this->registerArgument('value', 'int', 'decimal value of active checkboxes', true); } /** * @return array */ public function render() { $checkboxValue = (int)$this->arguments['value']; $activeCheckboxes = []; for ($i=0; $i<10; $i++) { if (($checkboxValue >> $i) & 1) { /* * Decide what kind of value you need, bit shift, item number or pow echo 'bit shift ' . $i . '
'; echo 'pow ' . pow(2, $i) . '
'; echo 'item #' . ($i+1) . '
'; */ $activeCheckboxes[] = $i+1; } } return $activeCheckboxes; } }