11<?php
22
3- namespace Backpack \CRUD \ app \ Library \ CrudPanel \ Traits ;
3+ namespace Backpack \CRUD ;
44
5- trait HasViewNamespaces
5+ class ViewNamespaces
66{
7- private $ viewNamespaces = [];
7+ private static $ viewNamespaces = [];
88
99 /**
1010 * Return all the view namespaces including the ones stored in the laravel config files.
1111 *
1212 * @param string $domain (eg. fields, filters, buttons)
1313 * @return array
1414 */
15- public function getViewNamespacesFor (string $ domain )
15+ public static function getFor (string $ domain )
1616 {
17- $ viewNamespacesFromConfig = $ this -> getViewNamespacesFromConfigFor ($ domain );
17+ $ viewNamespacesFromConfig = self :: getFromConfigFor ($ domain );
1818
19- return array_unique (array_merge ($ viewNamespacesFromConfig , $ this -> viewNamespaces [ $ domain] ?? [] ));
19+ return array_unique (array_merge ($ viewNamespacesFromConfig , self :: getForDomain ( $ domain) ));
2020 }
2121
2222 /**
23- * Adds multiple namespaces to a given domain.
23+ * Add view namespaces for a given domain.
2424 *
2525 * @param string $domain (eg. fields, filters, buttons)
26- * @param array $viewNamespaces
26+ * @param string| array $viewNamespaces
2727 * @return void
2828 */
29- public function addViewNamespacesFor (string $ domain , array $ viewNamespaces )
29+ public static function addFor (string $ domain , $ viewNamespaces )
3030 {
3131 foreach ((array ) $ viewNamespaces as $ viewNamespace ) {
32- $ this ->addViewNamespaceFor ($ domain , $ viewNamespace );
32+ if (! in_array ($ viewNamespace , self ::getForDomain ($ domain ))) {
33+ self ::$ viewNamespaces [$ domain ][] = $ viewNamespace ;
34+ }
3335 }
3436 }
3537
3638 /**
37- * Add a new view namespace for a given domain.
39+ * Return the namespaces stored for a given domain.
3840 *
39- * @param string $domain (eg. fields, filters, buttons)
40- * @param string $viewNamespace
41- * @return void
41+ * @param string $domain
4242 */
43- public function addViewNamespaceFor (string $ domain, string $ viewNamespace )
43+ private static function getForDomain (string $ domain )
4444 {
45- $ this -> viewNamespaces [$ domain ][] = $ viewNamespace ;
45+ return self :: $ viewNamespaces [$ domain ] ?? [] ;
4646 }
4747
4848 /**
@@ -53,7 +53,7 @@ public function addViewNamespaceFor(string $domain, string $viewNamespace)
5353 * @param mixed $customConfigKey
5454 * @return array
5555 */
56- private function getViewNamespacesFromConfigFor (string $ domain , $ customConfigKey = null )
56+ private static function getFromConfigFor (string $ domain , $ customConfigKey = null )
5757 {
5858 return config ($ customConfigKey ?? 'backpack.crud.view_namespaces. ' .$ domain ) ?? [];
5959 }
@@ -66,10 +66,10 @@ private function getViewNamespacesFromConfigFor(string $domain, $customConfigKey
6666 * @param string $viewNamespacesFromConfigKey
6767 * @return array
6868 */
69- public function getViewNamespacesWithFallbackFor (string $ domain , string $ viewNamespacesFromConfigKey )
69+ public static function getWithFallbackFor (string $ domain , string $ viewNamespacesFromConfigKey )
7070 {
71- $ viewNamespacesFromConfig = $ this -> getViewNamespacesFromConfigFor ($ domain , $ viewNamespacesFromConfigKey );
71+ $ viewNamespacesFromConfig = self :: getFromConfigFor ($ domain , $ viewNamespacesFromConfigKey );
7272
73- return array_unique (array_merge ($ viewNamespacesFromConfig , $ this -> getViewNamespacesFor ($ domain )));
73+ return array_unique (array_merge ($ viewNamespacesFromConfig , self :: getFor ($ domain )));
7474 }
7575}
0 commit comments