| 
<?php
 /**
 * Application helper funcions.
 *
 * You can put global custom functions here.
 */
 
 use App\Security\UserSession;
 use Springy\DB\Where;
 use Springy\Kernel;
 use Springy\Model;
 use Springy\URI;
 
 /**
 * Initiates all application dependecies.
 *
 * This method starts all application dependencies, used by some framework libraries and your application.
 * You can change its content, but try no remove our code.
 */
 function bindDefaultDependencies(): void
 {
 /** @var Springy\Core\Application Load the application helper. */
 $app = app();
 
 // Start the security hasher for user passwords. We like BCrypt, but you can use another you prefer.
 $app->bind('security.hasher', function () {
 return new Springy\Security\BCryptHasher();
 });
 
 // Define the user model class. We made a sample model class User. You can change it or use another.
 $app->bind('user.auth.identity', function () {
 // Here you can return a new instance of your user model class.
 return new UserSession();
 });
 
 // Define the authentication driver for test users sign in. Change the methods in your user model class.
 $app->bind('user.auth.driver', function ($c) {
 $hasher = $c['security.hasher'];
 $user = $c['user.auth.identity'];
 
 return new Springy\Security\DBAuthDriver($hasher, $user);
 });
 
 // Define the authentication manager for you application. Change the methods in your user model class.
 $app->instance('user.auth.manager', function ($c) {
 return new Springy\Security\Authentication($c['user.auth.driver']);
 });
 
 // Initiate the flash message manager. This is used by Errors class. Do not remove it.
 $app->instance('session.flashdata', new Springy\Utils\FlashMessagesManager());
 
 // Initiate the input helper. You can remove it ou can use it. :)
 $app->instance('input', new Springy\Core\Input());
 }
 
 /**
 * Initializes all default global template variables.
 *
 * This method set values to all template variables used by default for any system template.
 * You can change it how you want.
 *
 * THIS IS AN EXAMPLE FUNCTION.
 */
 function bindDefaultTemplateVars()
 {
 // Sample how to define a template function
 Kernel::registerTemplateFunction('modifier', 'has', 'inArrayPlugin');
 Kernel::registerTemplateFunction('function', 'sampleFunction', 'sampleTemplateFunction');
 
 // Initiates app URL template variables
 Kernel::assignTemplateVar('urlMain', URI::buildURL(['']));
 Kernel::assignTemplateVar('urlLogin', URI::buildURL(['login'], [], true, 'secure'));
 Kernel::assignTemplateVar('urlLogut', URI::buildURL(['logout'], [], true, 'secure'));
 
 // Sets an template variable with querystring data
 Kernel::assignTemplateVar('queryString', URI::getParams());
 
 // pegando a URL atual sem paramêtros para passar a tag canonical do google
 Kernel::assignTemplateVar('urlCurrentURL', URI::buildURL(URI::getAllSegments(), [], true));
 }
 
 /**
 * Modifier function to Smarty templates for in array check.
 *
 * @param mixed $array
 * @param mixed $needle
 *
 * @return bool
 */
 function inArrayPlugin($array, $needle): bool
 {
 return is_array($array) ? in_array($needle, $array) : false;
 }
 
 /**
 * Creates and loads a model object by given key.
 *
 * @param string $model
 * @param string $key
 * @param mixed  $value
 *
 * @return Model
 */
 function loadModel(string $model, string $key, $value): Model
 {
 $where = new Where();
 $where->condition($key, $value);
 
 return new $model($where);
 }
 
 /**
 * Sample for a simple template function.
 *
 * This is a sample of how to create a template function form Smarty.
 *
 * @param array  $params an array of parameters passed to the function.
 * @param object $smarty the Smarty object.
 *
 * @return string
 */
 function sampleTemplateFunction($params, $smarty)
 {
 return 'ok';
 }
 
 |