=5.3 and <7 if (function_exists('openssl_random_pseudo_bytes')) { $token = base64_encode(openssl_random_pseudo_bytes($length, $strong)); // is the token strong enough? if($strong == true) return strtr(substr($token, 0, $length), '+/=', '-_,'); } //fallback to mt_rand if php < 5.3 or no openssl available $characters = '0123456789'; $characters .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+'; $charactersLength = strlen($characters)-1; $token = ''; //select some random characters for ($i = 0; $i < $length; $i++) $token .= $characters[mt_rand(0, $charactersLength)]; return $token; } /** * Gets the output of the var_dump function and print it out * via the error log. It also removes the end line characters */ function var_dump_to_error_log($parameter) { ob_start(); var_dump($parameter); // KEEP IT!!! $ob_get_contents = ob_get_contents(); ob_end_clean(); error_log(str_replace("\n", '', $ob_get_contents)); // KEEP IT!!! } /** * Utility function to include only once one or more php files * It can load more php files and also search in the subdirectories (one level only) * Ex: * - loadResource('/var/www/htdocs'): it loads all the php files present in path (no subdirectories) * - loadResource('/var/www/htdocs', null, true): it loads all the php files present path and * subdirectories (one level only) * - loadResource('/var/www/htdocs', 'file1'): it loads the file file1.php present in path * - loadResource('/var/www/htdocs', 'file1', true): it loads the file file1.php present in path * or in the subdirs (one level only) * - loadResource('/var/www/htdocs', array('file1', 'file2', 'file3')): it loads the files file1.php, * file2.php and file3.php present in path * - loadResource('/var/www/htdocs', array('file1', 'file2', 'file3'), true): it loads the files * file1.php, file2.php and file3.php present in path or in the subdirectories (one level only) */ function loadResource($path, $resources = null, $subdir = false) { // Place a / character at the and of the string if not present if (strrpos($path, '/') < strlen($path) - 1) { $path .= '/'; } // Loads in $tmpResources all the given resources $tmpResources = $resources; if ($resources == null) { $tmpResources = array(); } elseif (!is_array($resources)) { $tmpResources = array($resources); } // Loads in $tmpPaths path and eventually the subdirectories $tmpPaths = array($path); // NOTE: Used @ to prevent ugly error messages if (is_dir($path) && ($dirHandler = @opendir($path)) !== false) { // Reads all file system entries present in path while (($entry = readdir($dirHandler)) !== false) { // If entry is a directory but not the current and subdirectories should be loaded if ($subdir === true && $entry != '.' && $entry != '..' && is_dir($entry)) { $tmpPaths[] = $entry; } // If no resources are specified and the current file system entry is a file if ($resources == null && is_file($path.$entry)) { // If the current entry is a php file store the name without extension if ($entry != ($tmpName = str_replace('.php', '', $entry))) { $tmpResources[] = $tmpName; } } } closedir($dirHandler); } // Loops through the resources foreach ($tmpResources as $tmpResource) { // Loops through the paths foreach ($tmpPaths as $tmpPath) { $fileName = $tmpPath.$tmpResource.'.php'; // Php extension if (file_exists($fileName)) { include_once($fileName); } } } } /** * Returns true if the given string is empty * Empty means that the parameter string is null or made of space, tab, vertical tab, line feed, carriage return * and form feed characters. */ function isEmptyString($string) { return ($string == null) || ($string != null && ctype_space($string) === true); } /** * Returns true if the given array is empty * Empty means that is null, or is not null and it is not an array, or it is an array but without elements */ function isEmptyArray($array) { return ($array == null) || ($array != null && !is_array($array) || (is_array($array) && count($array) == 0)); } /** * The function checks if a date is a working day (true) or a holiday (false) * @param string $date Date (YYYY-MM-DD) to check if working day or holiday * @param string $days Optional. Number of days to deduct from $date * @return boolean True, if $date is a working day, false if not */ function isDateWorkingDay($date, $days = null) { // Array of static Austrian holidays $austrian_holidays = array(); //Get year of $resultDate $startYear = substr($date, 0, 4); $austrian_holidays[] = $startYear.'-01-01'; // Neujahr $austrian_holidays[] = $startYear.'-01-06'; // 3 Könige $austrian_holidays[] = $startYear.'-05-01'; // Staatsfeiertag $austrian_holidays[] = $startYear.'-08-15'; // Maria Himmelfahrt $austrian_holidays[] = $startYear.'-10-26'; // Nationalfeiertag $austrian_holidays[] = $startYear.'-11-01'; // Allerheiligen $austrian_holidays[] = $startYear.'-12-08'; // Maria Empfängnis $austrian_holidays[] = $startYear.'-12-25'; // Weihnachten $austrian_holidays[] = $startYear.'-12-26'; // Stefanitag $ostersonntag = date("Y-m-d", easter_date($startYear)); //Ostermontag $austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 1 days")); // Ostersonntag + 1 //Christi Himmelfahrt $austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 39 days")); // Ostersonntag + 39 //Pfingstmontag $austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 50 days")); // Ostersonntag + 50 //Fronleichnam $austrian_holidays[] = date("Y-m-d", strtotime($ostersonntag. "+ 60 days")); // Ostersonntag + 60 if ($days != '') { if (date("w", strtotime("$date -".$days." days")) == 0 || date("w", strtotime("$date -".$days." days")) == 6 || in_array(date("Y-m-d", strtotime("$date -".$days." days")), $austrian_holidays)) return false; else return true; } else { if (date("w", strtotime($date)) == 0 || date("w", strtotime($date)) == 6 || in_array(date("Y-m-d", strtotime($date)), $austrian_holidays)) return false; else return true; } } /** * Checks if the current user is logged by checking that the AuthLib is loaded and * it is present the authentication object in session * NOTE: it is placed here instead of being placed in the helper hlp_authentication_helper * because hlp_authentication_helper is loaded after the authentication. * It is very useful to use this function even in those parts of the code that are accessible * even when a user is NOT authenticated!!! * If and only if this function returns true, then all the functions present in hlp_authentication_helper can be used! */ function isLogged() { $ci =& get_instance(); // get CI instance return isset($ci->authlib) && $ci->authlib->getAuthObj() != null; }