<?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';
}
|