summaryrefslogtreecommitdiff
path: root/fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig
diff options
context:
space:
mode:
Diffstat (limited to 'fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig')
-rw-r--r--fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig37
1 files changed, 37 insertions, 0 deletions
diff --git a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig
index fb3a417..788e48f 100644
--- a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig
+++ b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Model/table.twig
@@ -39,6 +39,9 @@
namespace {{ namespace }}\Model\Table;
{% set uses = ['use Cake\\ORM\\Query;', 'use Cake\\ORM\\RulesChecker;', 'use Cake\\ORM\\Table;', 'use Cake\\Validation\\Validator;'] %}
+{%- if BakeExtra.hasOrderOpts(name) or BakeExtra.hasOrderHooks(name) %}
+{% set uses = uses|merge(['use ArrayObject;', 'use Cake\\Event\\Event;']) %}
+{% endif %}
{{ uses|join('\n')|raw }}
{{ DocBlock.classDescription(name, 'Model', annotations)|raw }}
@@ -174,4 +177,38 @@ class {{ name }}Table extends Table
return $searchManager;
}
{% endif %}
+
+{%- if BakeExtra.hasOrderOpts(name) or BakeExtra.hasOrderHooks(name) %}
+
+ /**
+ * @return \Cake\ORM\Query
+ */
+ public function beforeFind(Event $event, Query $query, ArrayObject $options, $primary)
+ {
+{%- if BakeExtra.hasOrderOpts(name) %}
+
+ $order = $query->clause('order');
+ if ($order === null || !count($order)) {
+ $query->order([
+ {{- Bake.stringifyList(BakeExtra.getOrderOpts(name), {'indent': 4})|raw -}}
+ ]);
+ }
+{% endif %}
+{%- if BakeExtra.hasOrderHooks(name) %}
+
+ $orderHooks = [
+ {{- Bake.stringifyList(BakeExtra.getOrderHooks(name), {'indent': 3})|raw -}}
+ ];
+ $order = $query->clause('order');
+ if ($order !== null && count($order)) {
+ $order->iterateParts(function ($rhs, &$lhs) use ($orderHooks) {
+ if ( array_key_exists($lhs, $orderHooks) ) {
+ $lhs = $orderHooks[$lhs];
+ }
+ return $rhs;
+ });
+ }
+{% endif %}
+ }
+{% endif %}
}