1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
<?php
/**
* Copyright 2016-2018 Ludovic Pouzenc <ludovic@pouzenc.fr>
* Copyright 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
*
* 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 <http://www.gnu.org/licenses/>.
*
**/
namespace CustomTheme\View\Helper;
use Cake\View\Helper;
use Cake\Utility\Hash;
class BakeExtraHelper extends Helper
{
public $helpers = ['Bake'];
public function hello()
{
return "<!-- BakeExtra::hello()\n" . print_r($this->_config, true) . "\n-->\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) {
// Do not output Model & Template specific options here
unset($filterConfig['mode']);
unset($filterConfig['colspan']);
unset($filterConfig['hint']);
//Bake::stringifyList() has bugs with nested array + option quotes in Cake 3.6.7
$s = var_export($filterConfig, true);
$s = str_replace([ 'array (', ')'], ['[', ']'], $s);
return trim($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");
}
public function hasOrderOpts($controllerName) {
if ( ! is_string($controllerName) ) return FALSE;
$orderOpts = $this->getOrderOpts($controllerName);
return (is_array($orderOpts) && count($orderOpts) > 0);
}
public function getOrderOpts($controllerName) {
if ( ! is_string($controllerName) ) return FALSE;
return Hash::get($this->_config, "templateExtra.$controllerName.order");
}
public function hasOrderHooks($controllerName) {
if ( ! is_string($controllerName) ) return FALSE;
$orderHooks = $this->getOrderHooks($controllerName);
return (is_array($orderHooks) && count($orderHooks) > 0);
}
public function getOrderHooks($controllerName) {
if ( ! is_string($controllerName) ) return FALSE;
return Hash::get($this->_config, "templateExtra.$controllerName.orderHook");
}
}
|