First Commit
This commit is contained in:
Executable
+26
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
use DI\Container;
|
||||
use eftec\bladeone\BladeOne;
|
||||
use Pecee\SimpleRouter\SimpleRouter as Router;
|
||||
|
||||
|
||||
require __DIR__ . '/../config/templateengine.php';
|
||||
|
||||
require __DIR__ . '/csrf.php';
|
||||
|
||||
require __DIR__ . '/../config/envread.php';
|
||||
|
||||
require __DIR__ . '/../config/paths.php';
|
||||
|
||||
require __DIR__ . '/../config/database.php';
|
||||
|
||||
|
||||
require __DIR__ . '/../routes/auth.php';
|
||||
require __DIR__ . '/../routes/web.php';
|
||||
require __DIR__ . '/../routes/api.php';
|
||||
|
||||
require __DIR__ . '/../config/container.php';
|
||||
|
||||
require __DIR__ . '/helpers.php';
|
||||
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
function startSessionIfNeeded() {
|
||||
if (session_status() === PHP_SESSION_NONE) {
|
||||
session_start();
|
||||
}
|
||||
}
|
||||
|
||||
function generateCsrfToken() {
|
||||
startSessionIfNeeded();
|
||||
|
||||
if (empty($_SESSION['csrf_token'])) {
|
||||
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
|
||||
}
|
||||
|
||||
return $_SESSION['csrf_token'];
|
||||
}
|
||||
|
||||
function getCsrfToken() {
|
||||
startSessionIfNeeded();
|
||||
return $_SESSION['csrf_token'] ?? '';
|
||||
}
|
||||
|
||||
function validateCsrfToken($token) {
|
||||
startSessionIfNeeded();
|
||||
return hash_equals($_SESSION['csrf_token'] ?? '', $token ?? '');
|
||||
}
|
||||
|
||||
|
||||
|
||||
Executable
+409
@@ -0,0 +1,409 @@
|
||||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
|
||||
/**
|
||||
* Formats a date using Carbon.
|
||||
*
|
||||
* @param string $date
|
||||
* @param string $format
|
||||
* @return string
|
||||
*/
|
||||
function carbonFormatDate(string $date, string $format = 'Y-m-d H:i:s'): string {
|
||||
return Carbon::parse($date)->format($format);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the difference between two dates using Carbon.
|
||||
*
|
||||
* @param string $startDate
|
||||
* @param string $endDate
|
||||
* @return string
|
||||
*/
|
||||
function carbonDateDifference(string $startDate, string $endDate): string {
|
||||
$start = Carbon::parse($startDate);
|
||||
$end = Carbon::parse($endDate);
|
||||
return $start->diffForHumans($end);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the full URL for an asset in your project.
|
||||
*
|
||||
* @param string $path The relative path of the asset.
|
||||
* @return string The full URL of the asset.
|
||||
*/
|
||||
function asset($path)
|
||||
{
|
||||
// Get the base URL of the application from the defined constants
|
||||
$baseUrl = rtrim(APP_URL, '/');
|
||||
|
||||
// Combine the base URL with the asset path
|
||||
return $baseUrl . '/' . ltrim($path, '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a monetary value to cents.
|
||||
*
|
||||
* @param float $amount
|
||||
* @return int
|
||||
*/
|
||||
function toCents(float $amount): int {
|
||||
return (int) round($amount * 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a monetary value from cents to reais.
|
||||
*
|
||||
* @param int $cents
|
||||
* @return float
|
||||
*/
|
||||
function fromCents(int $cents): float {
|
||||
return $cents / 100;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a Flysystem file system.
|
||||
*
|
||||
* @return Filesystem
|
||||
*/
|
||||
function createFilesystem(): Filesystem {
|
||||
$adapter = new Local(__DIR__ . '/path/to/your/files');
|
||||
return new Filesystem($adapter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a file exists in Flysystem.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @return bool
|
||||
*/
|
||||
function flysystemFileExists(string $filePath): bool {
|
||||
$filesystem = createFilesystem();
|
||||
return $filesystem->has($filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resizes an image using Intervention Image.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param int $width
|
||||
* @param int $height
|
||||
* @return bool
|
||||
*/
|
||||
function resizeImage(string $filePath, int $width, int $height): bool {
|
||||
$manager = new ImageManager(['driver' => 'gd']);
|
||||
$image = $manager->make($filePath);
|
||||
$image->resize($width, $height);
|
||||
return $image->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads a view with BladeOne.
|
||||
*
|
||||
* @param string $view
|
||||
* @param array $data
|
||||
* @return string
|
||||
*/
|
||||
function view(string $view, array $data = []): string {
|
||||
global $blade;
|
||||
return $blade->run($view, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the base URL.
|
||||
*
|
||||
* @param string $path
|
||||
* @return string
|
||||
*/
|
||||
function baseUrl(string $path = ''): string {
|
||||
return 'http://localhost/' . trim($path, '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a value exists in the array.
|
||||
*
|
||||
* @param array $array
|
||||
* @param string $key
|
||||
* @return bool
|
||||
*/
|
||||
function arrayHas(array $array, string $key): bool {
|
||||
return isset($array[$key]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Merges arrays recursively.
|
||||
*
|
||||
* @param array $array1
|
||||
* @param array $array2
|
||||
* @return array
|
||||
*/
|
||||
function arrayMergeRecursive(array $array1, array $array2): array {
|
||||
return array_merge_recursive($array1, $array2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a value from an array or returns a default value.
|
||||
*
|
||||
* @param array $array
|
||||
* @param string $key
|
||||
* @param mixed $default
|
||||
* @return mixed
|
||||
*/
|
||||
function dataGet($array, $key, $default = null) {
|
||||
if (is_null($key)) {
|
||||
return $array;
|
||||
}
|
||||
|
||||
if (isset($array[$key])) {
|
||||
return $array[$key];
|
||||
}
|
||||
|
||||
foreach (explode('.', $key) as $segment) {
|
||||
if (is_array($array) && array_key_exists($segment, $array)) {
|
||||
$array = $array[$segment];
|
||||
} else {
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a string to camel case.
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
function toCamelCase(string $string): string {
|
||||
$result = str_replace(' ', '', ucwords(str_replace(['-', '_'], ' ', $string)));
|
||||
$result[0] = strtolower($result[0]);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a slug from a string.
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
function generateSlug(string $string): string {
|
||||
$slug = preg_replace('/[^A-Za-z0-9-]+/', '-', strtolower($string));
|
||||
return trim($slug, '-');
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a string to snake case.
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
function toSnakeCase(string $string): string {
|
||||
return strtolower(preg_replace('/[A-Z]/', '_$0', lcfirst($string)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a random string.
|
||||
*
|
||||
* @param int $length
|
||||
* @return string
|
||||
*/
|
||||
function randomString(int $length = 10): string {
|
||||
return substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($length / 62))), 1, $length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current date formatted.
|
||||
*
|
||||
* @param string $format
|
||||
* @return string
|
||||
*/
|
||||
function currentDateFormatted(string $format = 'Y-m-d H:i:s'): string {
|
||||
return date($format);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the difference between two dates.
|
||||
*
|
||||
* @param string $startDate
|
||||
* @param string $endDate
|
||||
* @return int
|
||||
*/
|
||||
function dateDifference(string $startDate, string $endDate): int {
|
||||
$start = new DateTime($startDate);
|
||||
$end = new DateTime($endDate);
|
||||
return $start->diff($end)->days;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a date.
|
||||
*
|
||||
* @param string $date
|
||||
* @param string $format
|
||||
* @return string
|
||||
*/
|
||||
function formatDate(string $date, string $format = 'Y-m-d H:i:s'): string {
|
||||
return date($format, strtotime($date));
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the age from a birth date.
|
||||
*
|
||||
* @param string $birthDate
|
||||
* @return int
|
||||
*/
|
||||
function calculateAge(string $birthDate): int {
|
||||
$birthDate = new DateTime($birthDate);
|
||||
$today = new DateTime('today');
|
||||
return $birthDate->diff($today)->y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirects to another URL.
|
||||
*
|
||||
* @param string $url
|
||||
*/
|
||||
function redirect(string $url) {
|
||||
header('Location: ' . $url);
|
||||
exit();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a JSON response.
|
||||
*
|
||||
* @param array $data
|
||||
* @param int $statusCode
|
||||
*/
|
||||
function jsonResponse(array $data, int $statusCode = 200) {
|
||||
header('Content-Type: application/json');
|
||||
http_response_code($statusCode);
|
||||
echo json_encode($data);
|
||||
exit();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a file exists.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @return bool
|
||||
*/
|
||||
function fileExists(string $filePath): bool {
|
||||
return file_exists($filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a directory.
|
||||
*
|
||||
* @param string $path
|
||||
* @param int $permissions
|
||||
*/
|
||||
function createDirectory(string $path, int $permissions = 0755) {
|
||||
if (!file_exists($path)) {
|
||||
mkdir($path, $permissions, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the string ends with a given suffix.
|
||||
*
|
||||
* @param string $haystack
|
||||
* @param string|array $needles
|
||||
* @return bool
|
||||
*/
|
||||
function strEndsWith($haystack, $needles) {
|
||||
foreach ((array) $needles as $needle) {
|
||||
if ($needle !== '' && substr($haystack, -strlen($needle)) === $needle) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the string contains a given value.
|
||||
*
|
||||
* @param string $haystack
|
||||
* @param string|array $needles
|
||||
* @return bool
|
||||
*/
|
||||
function strContains($haystack, $needles) {
|
||||
foreach ((array) $needles as $needle) {
|
||||
if ($needle !== '' && strpos($haystack, $needle) !== false) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper for debugging variables (prints in a readable manner and exits).
|
||||
*
|
||||
* @param mixed $var
|
||||
*/
|
||||
function dd($var) {
|
||||
echo '<pre>';
|
||||
var_dump($var);
|
||||
echo '</pre>';
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper for printing variables in a readable manner.
|
||||
*
|
||||
* @param mixed $var
|
||||
*/
|
||||
function dump($var) {
|
||||
echo '<pre>';
|
||||
var_dump($var);
|
||||
echo '</pre>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a monetary value.
|
||||
*
|
||||
* @param float $amount
|
||||
* @param string $currency
|
||||
* @return string
|
||||
*/
|
||||
function formatCurrency(float $amount, string $currency = 'BRL'): string {
|
||||
$formatter = new NumberFormatter('pt_BR', NumberFormatter::CURRENCY);
|
||||
return $formatter->formatCurrency($amount, $currency);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a monetary value to cents.
|
||||
*
|
||||
* @param float $amount
|
||||
* @return int
|
||||
*/
|
||||
function toCents2(float $amount): int {
|
||||
return (int) round($amount * 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a monetary value from cents to reais.
|
||||
*
|
||||
* @param int $cents
|
||||
* @return float
|
||||
*/
|
||||
function fromCents2(int $cents): float {
|
||||
return $cents / 100;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the string starts with a given prefix.
|
||||
*
|
||||
* @param string $haystack
|
||||
* @param string|array $needles
|
||||
* @return bool
|
||||
*/
|
||||
function strStartsWith($haystack, $needles) {
|
||||
foreach ((array) $needles as $needle) {
|
||||
if ($needle !== '' && substr($haystack, 0, strlen($needle)) === $needle) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user