0) { $asCleaningFunc = array_fill(1, count($oData), $sCleaningFunc); $asKeys = array_map(array('self', 'cleanData'), array_keys($oData), $asCleaningFunc); $asValues = array_map(array('self', 'cleanData'), $oData, $asCleaningFunc); return array_combine($asKeys, $asValues); } } public static function fixGlobalVars($argv) { //Add CLI arguments if(defined('STDIN')) mb_parse_str(implode('&', array_slice($argv, 1)), $_GET); //Add Server Name $sServerName = array_key_exists('SERVER_NAME', $_SERVER)?$_SERVER['SERVER_NAME']:$_SERVER['PWD']; $sAppPath = 'http://'.str_replace('http://', '', $sServerName.dirname($_SERVER['SCRIPT_NAME'])); $_GET['serv_name'] = $sAppPath.(mb_substr($sAppPath, -1)!='/'?'/':''); } public static function array_map_encapsulate($oData, $sChar) { if(is_array($oData)) { $asChar = array_fill(1, count($oData), $sChar); return array_combine(array_keys($oData), array_map(array('self', 'array_map_encapsulate'), $oData, $asChar)); } else { return $sChar.$oData.$sChar; } } public static function capitalizeWords($acText, $sCharList = '') { // Use ucwords if no delimiters are given if($sCharList=='') { return Toolbox::mb_ucwords($acText); } // Go through all characters $capitalizeNext = true; $max = mb_strlen($acText); for ($i = 0; $i < $max; $i++) { if(mb_strpos($sCharList, $acText[$i]) !== false) { $capitalizeNext = true; } elseif($capitalizeNext) { $capitalizeNext = false; $acText[$i] = mb_strtoupper($acText[$i]); } } return $acText; } public static function createThumbnail($sInPath, $iMaxWidth, $iMaxHeight, $sOutPath='', $bDeleteIn=false, $asImageExts=array('jpg', 'jpeg', 'gif', 'png')) { $asResult = array('error'=>''); //Look up the extension to choose the image creator //TODO use MIME types $sInInfo = pathinfo($sInPath); $sInName = mb_strtolower($sInInfo['basename']); $sImageExt = mb_strtolower($sInInfo['extension']); $sImageExt = ($sImageExt=='jpg')?'jpeg':$sImageExt; //New Destination folder if($sOutPath=='') $sOutPath = $sInPath; elseif(mb_substr($sOutPath, -1)=='/') $sOutPath .= $sInName; //New sizes if(in_array($sImageExt, $asImageExts)) { list($iWidth, $iHeight) = getimagesize($sInPath); if($iWidth > $iMaxWidth || $iHeight > $iMaxHeight) { $dResizeDeltaWidth = $iWidth - $iMaxWidth; $dResizeDeltaHeight = $iHeight - $iMaxHeight; if($dResizeDeltaWidth > $dResizeDeltaHeight) { $iResizedWidth = $iMaxWidth; $iResizedHeight = ($iResizedWidth / $iWidth) * $iHeight; } else { $iResizedHeight = $iMaxHeight; $iResizedWidth = ($iResizedHeight / $iHeight) * $iWidth; } //create image from source $oSource = call_user_func('imagecreatefrom'.$sImageExt, $sInPath); //Resize $oThumb = imagecreatetruecolor($iResizedWidth, $iResizedHeight); imagecopyresized($oThumb, $oSource, 0, 0, 0, 0, $iResizedWidth, $iResizedHeight, $iWidth, $iHeight); //Save if(file_exists($sOutPath)) unlink($sOutPath); if(!call_user_func_array('image'.$sImageExt, array($oThumb, $sOutPath))) { $asResult['error'] = 'Unable to create thumbnail : '.$sOutPath; } } elseif($sInPath != $sOutPath) { $iResizedWidth = $iWidth; $iResizedHeight = $iHeight; if(!copy($sInPath, $sOutPath)) $asResult['error'] = 'Copy failed from '.$sInPath.' to '.$sOutPath; } $asResult['width'] = $iResizedWidth; $asResult['height'] = $iResizedHeight; $asResult['out'] = $sOutPath; } else $asResult['error'] = 'Wrong file type'; if($bDeleteIn && $asResult['error']=='' && $sInPath != $sOutPath) unlink($sInPath); return $asResult; } public static function utf8_compliant($sText) { if(strlen($sText) == 0) return true; return (preg_match('/^.{1}/us', $sText, $ar) == 1); } public static function mb_ucwords($sText) { return mb_convert_case($sText, MB_CASE_TITLE, "UTF-8"); } public static function file_get_contents_utf8($oFile) { $sContent = file_get_contents($oFile); return mb_convert_encoding($sContent, 'UTF-8', mb_detect_encoding($sContent, 'UTF-8, ISO-8859-1', true)); } public static function rgbToHex($R, $G, $B) { $R = dechex($R); if(strlen($R)<2) $R='0'.$R; $G = dechex($G); if(strlen($G)<2) $G='0'.$G; $B = dechex($B); if(strlen($B)<2) $B='0'.$B; return $R.$G.$B; } public static function setCookie($sCookieName, $sCookieValue, $iDays) { $iTimeLimit = time()+60*60*24*$iDays; setcookie($sCookieName, $sCookieValue, $iTimeLimit); } } /* Debug */ function pre($sText, $sTitle='Test', $bDie=false, $sMode='log') { $sLog = '
'.$sTitle.'
'.print_r($sText, true).'
'; switch($sMode) { case 'echo': echo $sLog; break; case 'return': if($bDie) echo $sLog; break; case 'log': file_put_contents('log.html', ($sTitle!=''?$sTitle." :\n":'').print_r($sText, true)."\n\n", FILE_APPEND); break; default: break; } if($bDie) { die('die() called by the test function '.__FUNCTION__.'().'.($sMode=='log'?' Check log.html for details':'')); } return $sLog; } function dlog($sText, $bDie=false, $sTitle='Test') { pre($sText, date('d/m/Y H:m:i').' - '.$sTitle, $bDie, 'log'); } ?>