<?php /* __ __ __ / / / /__ / /___ ___ __________ / /_/ / _ \/ / __ \/ _ \/ ___/ ___/ / __ / __/ / /_/ / __/ / (__ ) /_/ /_/\___/_/ .___/\___/_/ /____/ /_/ Static function to help */ require_once "./Utils/Constants.php"; class Helpers { /** * Construct won't be called inside this class and is uncallable from * the outside. This prevents instantiating this class. * This is by purpose, because we want a static class. */ private function __construct() {} private static $initialized = false; private static function initialize() { if (self::$initialized) return; self::$initialized = true; } /** * Serialize the LarZer data in Array. */ public static function getDataFromLazer($lazerObj) { self::initialize(); $lazerObj = (array) $lazerObj; if(array_key_exists ( '' . "\0" . '*' . "\0" . 'data' , $lazerObj ) && $lazerObj[ '' . "\0" . '*' . "\0" . 'data'] != null){ $lazerObj = (array) $lazerObj[ '' . "\0" . '*' . "\0" . 'data']; } else if(array_key_exists ( '' . "\0" . '*' . "\0" . 'set' , $lazerObj ) && $lazerObj[ '' . "\0" . '*' . "\0" . 'set'] != null){ $lazerObj = (array) $lazerObj[ '' . "\0" . '*' . "\0" . 'set']; } return $lazerObj; } /** * Get the dead line to consider a player as inactive. * (surival of a video game version of the forum) */ public static function getDeadline() { self::initialize(); $currentTimeStamp = time(); $deadLine = $currentTimeStamp - 3600; return $deadLine; } /** * Get the dead line to consider a player should be deleted. * (surival of a video game version of the forum) */ public static function getDeletionline() { self::initialize(); $currentTimeStamp = time(); $deadLine = $currentTimeStamp - 3600*24; return $deadLine; } /** * make a generic response for Web services */ public static function makeGenericResponse($isOk, $result, $error) { self::initialize(); //prepare the result $response = array( 'ok' => $isOk, 'result' => $result, 'error' => $error ); header("Content-type: application/json"); echo json_encode($response); exit(); } /** * Get the user IP */ public static function getClientIp() { // IP si internet partagé if (isset($_SERVER['HTTP_CLIENT_IP'])) { return $_SERVER['HTTP_CLIENT_IP']; } // IP derrière un proxy elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { return $_SERVER['HTTP_X_FORWARDED_FOR']; } // Sinon : IP normale else { return (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''); } } /** * CHECK IF BASE64 code is an image */ public static function check_base64_image($base64) { $img = imagecreatefromstring(base64_decode($base64)); if (!$img) { return false; } imagepng($img, 'tmp.png'); $info = getimagesize('tmp.png'); unlink('tmp.png'); if ($info[0] > 0 && $info[1] > 0 && $info['mime']) { return true; } return false; } /* * Check Base64 size */ public static function getBase64ImageSize($base64Image){ //return memory size in B, KB, MB try{ $size_in_bytes = (int) (strlen(rtrim($base64Image, '=')) * 3 / 4); $size_in_kb = $size_in_bytes / 1024; return $size_in_kb; } catch(Exception $e){ return $e; } } /** * Generate random Token */ public static function generateToken(){ //Generate a random string. $token = openssl_random_pseudo_bytes(16); //Convert the binary data into hexadecimal representation. return bin2hex($token); } /** * Hash password */ public static function hash_pw($plain_pw) { // (optional) change logic here for different hash algorithm //return password_hash($plain_pw, PASSWORD_DEFAULT); return md5($plain_pw); } /** * Verify hashed password */ public static function verify_pw($plain_pw, $hashed_pw) { // (optional) change logic here for different hash algorithm //return password_verify($plain_pw, $hashed_pw); return (md5($plain_pw)==$hashed_pw); } /** * Get Real File Name */ public static function getRealFileName($fileName_) { return md5($fileName_.'_'.Constants::CONST_IMAGE_SALT); } }