* Copyright 2016 Nicolas Goaziou * * This file is part of FAI Gestion forked from CHD Gestion. * * FAI Gestion 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. * * FAI Gestion 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. * * You should have received a copy of the GNU General Public License * along with FAI Gestion. If not, see . * **/ namespace CustomTheme\View\Helper; use Cake\View\Helper; use Cake\Utility\Hash; class BakeExtraHelper extends Helper { public $helpers = ['Bake']; public function hello() { return "\n"; } public function hasFilters($controllerName) { if ( ! is_string($controllerName) ) return FALSE; $filters = $this->getFilters($controllerName); return (is_array($filters) && count($filters) > 0); } public function getFilters($controllerName) { if ( ! is_string($controllerName) ) return FALSE; return Hash::get($this->_config, "templateExtra.$controllerName.filters"); } public function getFiltersExtraModels($controllerName, $modelObj) { $extraModels=[]; $filters = $this->getFilters($controllerName); if ( is_array($filters) && is_object($modelObj) ) { $searchFields = []; foreach ($filters as $k => $filter) { $searchFields += array_keys( $this->getFilters($controllerName) ); } foreach ($modelObj->associations()->getByType('BelongsTo') as $model) { if ( in_array($model->getForeignKey(), $searchFields) ) { $extraModels[] = $model; } } } return $extraModels; } public function stringifySearchManagerConfig($filterConfig) { $field = array_key_exists('field', $filterConfig)?$filterConfig['field']:FALSE; unset($filterConfig['field']); unset($filterConfig['mode']); unset($filterConfig['colspan']); unset($filterConfig['hint']); $s = ''; if ($field) { $s .= "\n 'field' => ["; $s .= $this->Bake->stringifyList($field, ['indent'=>4]); $s .= "],"; } $s .= $this->Bake->stringifyList($filterConfig, ['indent'=>3]); return $s; } public function hasAction($action, $controllerName) { if ( ! is_string($controllerName) ) return FALSE; return in_array($action, $this->getActions($controllerName)); } public function getActions($controllerName) { if ( ! is_string($controllerName) ) return FALSE; $actions = Hash::get($this->_config, "controllerActions.$controllerName"); if ( ! is_array($actions) ) { $actions = Hash::get($this->_config, "controllerActions.default"); } return $actions; } public function filterFields($fields, $schema, $modelObject = null, $takeFields = [], $filterTypes = ['binary'], $rejectFields = ['id']) { $coll = collection($this->Bake->filterFields($fields, $schema, $modelObject, [], $filterTypes)); $coll = $coll->reject(function ($field, $key) use ($rejectFields) { return in_array($field, $rejectFields); }); return $coll->take($takeFields)->toArray(); } public function getTitleOpts($controllerName) { if ( ! is_string($controllerName) ) return FALSE; return Hash::get($this->_config, "templateExtra.$controllerName.title"); } }