22
33namespace TimePHP \Foundation ;
44
5- use function dump ;
65use Closure ;
7- use DateTime ;
8- use Twig \Markup ;
96use Twig \TwigFilter ;
107use Twig \Environment ;
118use Twig \TwigFunction ;
12- use TimePHP \UrlParser \Parser ;
139use Twig \Loader \FilesystemLoader ;
1410use TimePHP \Exception \TwigException ;
15- use TimePHP \Foundation \SessionHandler ;
1611use TimePHP \Foundation \Twig \FilterTwig ;
1712use TimePHP \Foundation \Twig \FunctionTwig ;
1813
@@ -26,22 +21,6 @@ class Twig
2621 */
2722 private $ twig ;
2823
29-
30- /**
31- * session handler
32- *
33- * @var SessionHandler
34- */
35- private $ session ;
36-
37-
38- /**
39- * Url parser
40- *
41- * @var Parser
42- */
43- private $ request ;
44-
4524 /**
4625 * array of custom options
4726 *
@@ -50,52 +29,23 @@ class Twig
5029 public function __construct (array $ options )
5130 {
5231
53- $ this ->session = new SessionHandler ();
54- $ this ->request = new Parser ();
55-
56- $ filter = new FilterTwig ();
57- $ function = new FunctionTwig ();
58-
5932 $ this ->twig = new Environment (new FilesystemLoader (__DIR__ . "/../../../../../App/Bundle/Views " ));
6033
61- $ this ->twig ->addFunction (new TwigFunction ('asset ' , $ function ->asset ));
62- $ this ->twig ->addFunction (new TwigFunction ('component ' , function ($ component ): string {
63- return sprintf ('components/%s ' , ltrim ($ component , '/ ' ));
64- }));
65- $ this ->twig ->addFunction (new TwigFunction ('generate ' , function (string $ nameUrl , array $ params = [], array $ flags = []): string {
66- return sprintf (Router::generate ($ nameUrl , $ params , $ flags ));
67- }));
68- $ this ->twig ->addFunction (new TwigFunction ('provideCsrf ' , function (string $ csrfInputName = "csrf_token " ): string {
69- return !empty ($ _SESSION ) ? new Markup ("<input type= \"hidden \" name= \"$ csrfInputName \" value= \"{$ _SESSION ["csrf_token " ]}\"/> " , "utf-8 " ) : "" ;
70- }, ['is_safe ' => ['html ' ]]));
71- $ this ->twig ->addFunction (new TwigFunction ('dump ' , function ($ object ): string {
72- ob_start ();
73- dump ($ object );
74- return ob_get_clean ();
75- }));
76- $ this ->twig ->addFunction (new TwigFunction ("get " , function (string $ param ) {
77- return $ this ->request ->get ($ param ) !== null ? $ this ->request ->get ($ param ) : null ;
78- }));
79- $ this ->twig ->addFunction (new TwigFunction ("isConnected " , function () {
80- return $ this ->session ->get ("csrf_token " ) !== null ;
81- }));
82- $ this ->twig ->addFunction (new TwigFunction ("isAdmin " , function () {
83- return $ this ->session ->get ("csrf_token " ) !== null && $ this ->session ->get ("user " )->role === "admin " ;
84- }));
85- $ this ->twig ->addFunction (new TwigFunction ("isUser " , function () {
86- return $ this ->session ->get ("csrf_token " ) !== null && $ this ->session ->get ("user " )->role === "user " ;
87- }));
88-
89-
90-
91- $ this ->twig ->addFilter (new TwigFilter ("truncate " , function (string $ text , int $ length ) {
92- return substr ($ text , 0 , $ length );
93- }));
94- $ this ->twig ->addFilter (new TwigFilter ("formatDate " , function (DateTime $ date , string $ format ) {
95- $ date = new DateTime ($ date );
96- return $ date ->format ($ format );
97- }));
34+ $ function = new FunctionTwig ();
35+ $ filter = new FilterTwig ();
9836
37+ $ this ->twig ->addFunction (new TwigFunction ('asset ' , Closure::fromCallable ([$ function , "asset " ])));
38+ $ this ->twig ->addFunction (new TwigFunction ('component ' , Closure::fromCallable ([$ function , "component " ])));
39+ $ this ->twig ->addFunction (new TwigFunction ('generate ' , Closure::fromCallable ([$ function , "generate " ])));
40+ $ this ->twig ->addFunction (new TwigFunction ('provideCsrf ' , Closure::fromCallable ([$ function , "provideCsrf " ]),['is_safe ' => ['html ' ]]));
41+ $ this ->twig ->addFunction (new TwigFunction ('dump ' , Closure::fromCallable ([$ function , "dump " ])));
42+ $ this ->twig ->addFunction (new TwigFunction ("get " , Closure::fromCallable ([$ function , "get " ])));
43+ $ this ->twig ->addFunction (new TwigFunction ("isConnected " , Closure::fromCallable ([$ function , "isConnected " ])));
44+ $ this ->twig ->addFunction (new TwigFunction ("isAdmin " , Closure::fromCallable ([$ function , "isAdmin " ])));
45+ $ this ->twig ->addFunction (new TwigFunction ("isUser " , Closure::fromCallable ([$ function , "isUser " ])));
46+
47+ $ this ->twig ->addFilter (new TwigFilter ("truncate " , Closure::fromCallable ([$ filter , "truncate " ])));
48+ $ this ->twig ->addFilter (new TwigFilter ("formatDate " , Closure::fromCallable ([$ filter , "formatDate " ])));
9949
10050 foreach ($ options ["twig " ] as $ function ) {
10151
0 commit comments