366 lines
8.7 KiB
PHP
366 lines
8.7 KiB
PHP
<?php
|
|
/**
|
|
* Dump helper. Functions to dump variables to the screen, in a nicley formatted manner.
|
|
* @author Joost van Veen
|
|
* @version 1.0
|
|
*/
|
|
if ( ! function_exists( 'dump' ) )
|
|
{
|
|
function dump( $var, $label = 'Dump', $echo = TRUE )
|
|
{
|
|
// Store dump in variable
|
|
ob_start();
|
|
var_dump( $var );
|
|
$output = ob_get_clean();
|
|
|
|
// Add formatting
|
|
$output = preg_replace( "/]=>n(s+)/m", "] => ", $output );
|
|
$output = '<pre style="background: #FFFEEF; color: #000; border: 1px dotted #000; padding: 10px; margin: 10px 0; text-align: left;">' . $label . ' => ' . $output . '</pre>';
|
|
|
|
// Output
|
|
if ( $echo == TRUE )
|
|
{
|
|
echo $output;
|
|
}
|
|
else
|
|
{
|
|
return $output;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists( 'dump_exit' ) )
|
|
{
|
|
function dump_exit( $var, $label = 'Dump', $echo = TRUE )
|
|
{
|
|
dump( $var, $label, $echo );
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
function mysql2text( $message )
|
|
{
|
|
$regeleinden = ['\r\n', '\r', '\n'];
|
|
$message = str_replace( $regeleinden, chr( 13 ), $message ?? '' );
|
|
$message = stripslashes( $message );
|
|
|
|
return ( $message );
|
|
}
|
|
|
|
function mysql2html( $message )
|
|
{
|
|
$regeleinden = ['\r\n', '\r', '\n'];
|
|
$message = str_replace( $regeleinden, "<br />", $message ?? '' );
|
|
$message = stripslashes( $message );
|
|
|
|
return ( $message );
|
|
}
|
|
|
|
function textarea2html( $message )
|
|
{
|
|
$regeleinden = [chr( 13 )];
|
|
$message = str_replace( $regeleinden, "<br />", $message ?? '' );
|
|
$message = stripslashes( $message );
|
|
|
|
return ( $message );
|
|
}
|
|
|
|
function date2mysql( $date )
|
|
{
|
|
if ( ! check_date( $date ) ) return NULL;
|
|
|
|
return date( 'Y-m-d', strtotime( $date ) );
|
|
}
|
|
|
|
function mysql2date( $date )
|
|
{
|
|
if ( ! check_date( $date ) ) return '';
|
|
|
|
return date( 'd-m-Y', strtotime( $date ) );
|
|
}
|
|
|
|
function mysql2dateWithTime( $date )
|
|
{
|
|
if ( ! check_date( $date ) ) return '';
|
|
|
|
return date( 'd-m-Y H:i:s', strtotime( $date ) );
|
|
}
|
|
|
|
function check_date( $date )
|
|
{
|
|
if ( is_null( $date ) || ( strlen( $date ) < 6 ) ) return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
function mysql2timestamp( $date )
|
|
{
|
|
$a = strptime( $date, '%Y-%m-%d' );
|
|
$timestamp = mktime( 0, 0, 0, $a['tm_mon'] + 1, $a['tm_mday'], $a['tm_year'] + 1900 );
|
|
|
|
return $timestamp;
|
|
}
|
|
|
|
function readTextFromStorage( $text )
|
|
{
|
|
return base64_decode( $text );
|
|
}
|
|
|
|
function cleanTextForStorage( $text )
|
|
{
|
|
$text = str_replace( '/r/n', '', $text ?? '' );
|
|
$text = str_replace( '\r\n', '', $text ?? '' );
|
|
$text = str_replace( '/n', '', $text ?? '' );
|
|
$text = str_replace( '\n', '', $text ?? '' );
|
|
$text = strip_slashes( $text );
|
|
|
|
return base64_encode( $text );
|
|
}
|
|
|
|
function setTextareaForStorage( $text )
|
|
{
|
|
$text = setTextArea( $text );
|
|
|
|
return base64_encode( $text );
|
|
}
|
|
|
|
function setTextArea( $text )
|
|
{
|
|
$text = str_replace( '/r/n', chr( 13 ), $text ?? '' );
|
|
$text = str_replace( '\r\n', chr( 13 ), $text ?? '' );
|
|
$text = str_replace( '/n', chr( 13 ), $text ?? '' );
|
|
$text = str_replace( '\n', chr( 13 ), $text ?? '' );
|
|
$text = str_replace( '\r', chr( 13 ), $text ?? '' );
|
|
$text = str_replace( '/r', chr( 13 ), $text ?? '' );
|
|
$text = str_replace( '\n\n', chr( 13 ) . chr( 13 ), $text ?? '' );
|
|
$text = strip_slashes( $text );
|
|
|
|
return $text;
|
|
}
|
|
|
|
function setTextAreaHtml( $text )
|
|
{
|
|
$text = str_replace( '/r/n', '<br />', $text ?? '' );
|
|
$text = str_replace( '\r\n', '<br />', $text ?? '' );
|
|
$text = str_replace( '/n', '<br />', $text ?? '' );
|
|
$text = str_replace( '\n', '<br />', $text ?? '' );
|
|
$text = str_replace( '\r', '<br />', $text ?? '' );
|
|
$text = str_replace( '/r', '<br />', $text ?? '' );
|
|
$text = str_replace( '\n\n', '<br /><br />', $text ?? '' );
|
|
$text = strip_slashes( $text );
|
|
|
|
return $text;
|
|
}
|
|
|
|
function checkBsn( $bsn )
|
|
{
|
|
// if ( strlen( $bsn ) < 8 || strlen( $bsn ) > 9 )
|
|
// {
|
|
// return FALSE;
|
|
// }
|
|
// else
|
|
// {
|
|
// $sum = 0;
|
|
// $counter = strlen( $bsn );
|
|
// $pos = 0;
|
|
// for ( $i = $counter; $i > 0; $i -- )
|
|
// {
|
|
// if ( $i == 1 )
|
|
// {
|
|
// $sum = $sum + intval( $bsn{$pos} ) * - 1;
|
|
// }
|
|
// else
|
|
// {
|
|
// $sum = $sum + ( intval( $bsn{$pos} ) * $i );
|
|
// }
|
|
// $pos ++;
|
|
// }
|
|
// if ( $sum % 11 != 0 )
|
|
// {
|
|
// return FALSE;
|
|
// }
|
|
// }
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/**
|
|
* Validate an object property
|
|
*
|
|
* @param object $in
|
|
* @param string $property Can be NULL, in that case the first parameter is evaluated
|
|
* @param boolean $zeroAllowed ,
|
|
* default FALSE
|
|
*
|
|
* @return boolean TRUE if the property exists ans in not null or empty
|
|
*/
|
|
function isNotNullOrEmpty( $in, $property = NULL, $zeroAllowed = FALSE )
|
|
{
|
|
if ( $property === NULL )
|
|
{
|
|
|
|
if ( is_object( $in ) && count( (array) $in ) === 0 )
|
|
return FALSE;
|
|
$isNotEmpty = $zeroAllowed ? ! empty ( $in ) : $in === 0 || $in === '0' || ! empty ( $in );
|
|
if ( is_string( $in ) )
|
|
{
|
|
return $isNotEmpty && strtoupper( $in ) !== 'NULL' && strtoupper( $in ) !== 'FALSE' && strtoupper( $in ) !== 'UNDEFINED';
|
|
}
|
|
else
|
|
{
|
|
return $isNotEmpty;
|
|
}
|
|
}
|
|
|
|
if ( ! is_object( $in ) )
|
|
throw new Exception ( 'Provided test $in must be a class instance(object) or a valid classname(string)' );
|
|
if ( ! property_exists( $in, $property ) )
|
|
return FALSE;
|
|
$prop = $in->{$property};
|
|
$isNotEmpty = $zeroAllowed ? ! empty ( $prop ) : $prop === 0 || $prop === '0' || ! empty ( $prop );
|
|
if ( is_string( $prop ) )
|
|
{
|
|
return $isNotEmpty && strtoupper( $prop ) !== 'NULL' && strtoupper( $prop ) !== 'FALSE' && strtoupper( $prop ) !== 'UNDEFINED';
|
|
}
|
|
else
|
|
{
|
|
return $isNotEmpty;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Validate an object property
|
|
*
|
|
* @param object $in
|
|
* @param string $property Can be NULL, in that case the first parameter is evaluated
|
|
*
|
|
* @return boolean TRUE if the property exists and is not NULL or empty or zero
|
|
*/
|
|
function isNotNullOrEmptyOrZero( $in, $property = NULL )
|
|
{
|
|
return isNotNullOrEmpty( $in, $property, TRUE );
|
|
}
|
|
|
|
/**
|
|
* Validate an object property
|
|
*
|
|
* @param object $in
|
|
* @param string $property Can be NULL, in that case the first parameter is evaluated
|
|
*
|
|
* @return boolean TRUE if the property exists and is NULL or empty
|
|
*/
|
|
function isNullOrEmpty( $in, $property = NULL )
|
|
{
|
|
return ! isNotNullOrEmpty( $in, $property );
|
|
}
|
|
|
|
/**
|
|
* Validate an object property
|
|
*
|
|
* @param object $in
|
|
* @param string $property Can be NULL, in that case the first parameter is evaluated
|
|
*
|
|
* @return boolean TRUE if the property exists and is NULL or empty or zero
|
|
*/
|
|
function isNullOrEmptyOrZero( $in, $property = NULL )
|
|
{
|
|
return ! isNotNullOrEmpty( $in, $property, TRUE );
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param sting|integer $in
|
|
*
|
|
* @return string
|
|
*/
|
|
function parseNotNullField( $in )
|
|
{
|
|
if ( isNullOrEmpty( $in ) )
|
|
{
|
|
return '';
|
|
}
|
|
|
|
return (string) $in;
|
|
}
|
|
|
|
|
|
function unique_multidim_array( $array, $key )
|
|
{
|
|
$temp_array = [];
|
|
$key_array = [];
|
|
|
|
foreach ( $array as $val )
|
|
{
|
|
$keyValue = is_array( $val ) ? $val[ $key ] : $val->$key;
|
|
{
|
|
if ( ! in_array( $keyValue, $key_array ) )
|
|
{
|
|
$key_array[] = $keyValue;
|
|
$temp_array[] = $val;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $temp_array;
|
|
}
|
|
|
|
/**
|
|
* Validate password strength
|
|
* Password must contain:
|
|
* - At least 8 characters
|
|
* - At least 1 uppercase letter
|
|
* - At least 1 lowercase letter
|
|
* - At least 1 number
|
|
* - At least 1 special character
|
|
*
|
|
* @param string $password The password to validate
|
|
* @return bool True if password meets all requirements
|
|
*/
|
|
if ( ! function_exists( 'validate_password_strength' ) )
|
|
{
|
|
function validate_password_strength( $password )
|
|
{
|
|
if ( strlen( $password ) < 8 ) {
|
|
return FALSE;
|
|
}
|
|
|
|
if ( ! preg_match( '/[A-Z]/', $password ) ) {
|
|
return FALSE;
|
|
}
|
|
|
|
if ( ! preg_match( '/[a-z]/', $password ) ) {
|
|
return FALSE;
|
|
}
|
|
|
|
if ( ! preg_match( '/[0-9]/', $password ) ) {
|
|
return FALSE;
|
|
}
|
|
|
|
if ( ! preg_match( '/[^A-Za-z0-9]/', $password ) ) {
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get password validation requirements in Dutch
|
|
*
|
|
* @return array Array of password requirements
|
|
*/
|
|
if ( ! function_exists( 'get_password_requirements_nl' ) )
|
|
{
|
|
function get_password_requirements_nl()
|
|
{
|
|
return [
|
|
'Minimaal 8 karakters',
|
|
'Minimaal 1 hoofdletter',
|
|
'Minimaal 1 kleine letter',
|
|
'Minimaal 1 cijfer',
|
|
'Minimaal 1 speciaal teken (!@#$%^&* etc.)'
|
|
];
|
|
}
|
|
}
|