wp_blog/wp-content/plugins/revslider/inc_php/framework/functions.class.php
2020-01-02 23:15:16 +07:00

770 lines
19 KiB
PHP

<?php
class UniteFunctionsRev{
public static function throwError($message,$code=null){
if(!empty($code))
throw new Exception($message,$code);
else
throw new Exception($message);
}
/**
*
* set output for download
*/
public static function downloadFile($str,$filename="output.txt"){
//output for download
header('Content-Description: File Transfer');
header('Content-Type: text/html; charset=UTF-8');
header("Content-Disposition: attachment; filename=".$filename.";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".strlen($str));
echo $str;
exit();
}
/**
*
* turn boolean to string
*/
public static function boolToStr($bool){
if(gettype($bool) == "string")
return($bool);
if($bool == true)
return("true");
else
return("false");
}
/**
*
* convert string to boolean
*/
public static function strToBool($str){
if(is_bool($str))
return($str);
if(empty($str))
return(false);
if(is_numeric($str))
return($str != 0);
$str = strtolower($str);
if($str == "true")
return(true);
return(false);
}
//------------------------------------------------------------
// get black value from rgb value
public static function yiq($r,$g,$b){
return (($r*0.299)+($g*0.587)+($b*0.114));
}
//------------------------------------------------------------
// convert colors to rgb
public static function html2rgb($color){
if ($color[0] == '#')
$color = substr($color, 1);
if (strlen($color) == 6)
list($r, $g, $b) = array($color[0].$color[1],
$color[2].$color[3],
$color[4].$color[5]);
elseif (strlen($color) == 3)
list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);
else
return false;
$r = hexdec($r); $g = hexdec($g); $b = hexdec($b);
return array($r, $g, $b);
}
//---------------------------------------------------------------------------------------------------
// convert timestamp to time string
public static function timestamp2Time($stamp){
$strTime = date("H:i",$stamp);
return($strTime);
}
//---------------------------------------------------------------------------------------------------
// convert timestamp to date and time string
public static function timestamp2DateTime($stamp){
$strDateTime = date("d M Y, H:i",$stamp);
return($strDateTime);
}
//---------------------------------------------------------------------------------------------------
// convert timestamp to date string
public static function timestamp2Date($stamp){
$strDate = date("d M Y",$stamp); //27 Jun 2009
return($strDate);
}
/**
* get value from array. if not - return alternative
*/
public static function getVal($arr,$key,$altVal=""){
if(isset($arr[$key])) return($arr[$key]);
return($altVal);
}
/**
*
* convert object to string.
*/
public static function toString($obj){
return(trim((string)$obj));
}
/**
* remove utf8 bom sign
*/
public static function remove_utf8_bom($content){
$content = str_replace(chr(239),"",$content);
$content = str_replace(chr(187),"",$content);
$content = str_replace(chr(191),"",$content);
$content = trim($content);
return($content);
}
//------------------------------------------------------------
// get variable from post or from get. get wins.
public static function getPostGetVariable($name,$initVar = ""){
$var = $initVar;
if(isset($_POST[$name])) $var = $_POST[$name];
else if(isset($_GET[$name])) $var = $_GET[$name];
return($var);
}
//------------------------------------------------------------
public static function getPostVariable($name,$initVar = ""){
$var = $initVar;
if(isset($_POST[$name])) $var = $_POST[$name];
return($var);
}
//------------------------------------------------------------
public static function getGetVar($name,$initVar = ""){
$var = $initVar;
if(isset($_GET[$name])) $var = $_GET[$name];
return($var);
}
/**
*
* validate that some file exists, if not - throw error
*/
public static function validateFilepath($filepath,$errorPrefix=null){
if(file_exists($filepath) == true)
return(false);
if($errorPrefix == null)
$errorPrefix = "File";
$message = $errorPrefix." $filepath not exists!";
self::throwError($message);
}
/**
*
* validate that some value is numeric
*/
public static function validateNumeric($val,$fieldName=""){
self::validateNotEmpty($val,$fieldName);
if(empty($fieldName))
$fieldName = "Field";
if(!is_numeric($val))
self::throwError("$fieldName should be numeric ");
}
/**
*
* validate that some variable not empty
*/
public static function validateNotEmpty($val,$fieldName=""){
if(empty($fieldName))
$fieldName = "Field";
if(empty($val) && is_numeric($val) == false)
self::throwError("Field <b>$fieldName</b> should not be empty");
}
/**
*
* if directory not exists - create it
* @param $dir
*/
public static function checkCreateDir($dir){
if(!is_dir($dir))
mkdir($dir);
if(!is_dir($dir))
self::throwError("Could not create directory: $dir");
}
/**
*
* delete file, validate if deleted
*/
public static function checkDeleteFile($filepath){
if(file_exists($filepath) == false)
return(false);
$success = @unlink($filepath);
if($success == false)
self::throwError("Failed to delete the file: $filepath");
}
//------------------------------------------------------------
//filter array, leaving only needed fields - also array
public static function filterArrFields($arr,$fields){
$arrNew = array();
foreach($fields as $field){
if(isset($arr[$field]))
$arrNew[$field] = $arr[$field];
}
return($arrNew);
}
//------------------------------------------------------------
//get path info of certain path with all needed fields
public static function getPathInfo($filepath){
$info = pathinfo($filepath);
//fix the filename problem
if(!isset($info["filename"])){
$filename = $info["basename"];
if(isset($info["extension"]))
$filename = substr($info["basename"],0,(-strlen($info["extension"])-1));
$info["filename"] = $filename;
}
return($info);
}
/**
* Convert std class to array, with all sons
* @param unknown_type $arr
*/
public static function convertStdClassToArray($arr){
$arr = (array)$arr;
$arrNew = array();
foreach($arr as $key=>$item){
$item = (array)$item;
$arrNew[$key] = $item;
}
return($arrNew);
}
//------------------------------------------------------------
//save some file to the filesystem with some text
public static function writeFile($str,$filepath){
$fp = fopen($filepath,"w+");
fwrite($fp,$str);
fclose($fp);
}
//------------------------------------------------------------
//save some file to the filesystem with some text
public static function writeDebug($str,$filepath="debug.txt",$showInputs = true){
$post = print_r($_POST,true);
$server = print_r($_SERVER,true);
if(getType($str) == "array")
$str = print_r($str,true);
if($showInputs == true){
$output = "--------------------"."\n";
$output .= $str."\n";
$output .= "Post: ".$post."\n";
}else{
$output = "---"."\n";
$output .= $str . "\n";
}
if(!empty($_GET)){
$get = print_r($_GET,true);
$output .= "Get: ".$get."\n";
}
//$output .= "Server: ".$server."\n";
$fp = fopen($filepath,"a+");
fwrite($fp,$output);
fclose($fp);
}
/**
*
* clear debug file
*/
public static function clearDebug($filepath = "debug.txt"){
if(file_exists($filepath))
unlink($filepath);
}
/**
*
* save to filesystem the error
*/
public static function writeDebugError(Exception $e,$filepath = "debug.txt"){
$message = $e->getMessage();
$trace = $e->getTraceAsString();
$output = $message."\n";
$output .= $trace."\n";
$fp = fopen($filepath,"a+");
fwrite($fp,$output);
fclose($fp);
}
//------------------------------------------------------------
//save some file to the filesystem with some text
public static function addToFile($str,$filepath){
$fp = fopen($filepath,"a+");
fwrite($fp,"---------------------\n");
fwrite($fp,$str."\n");
fclose($fp);
}
//--------------------------------------------------------------
//check the php version. throw exception if the version beneath 5
private static function checkPHPVersion(){
$strVersion = phpversion();
$version = (float)$strVersion;
if($version < 5) throw new Exception("You must have php5 and higher in order to run the application. Your php version is: $version");
}
//--------------------------------------------------------------
// valiadte if gd exists. if not - throw exception
private static function validateGD(){
if(function_exists('gd_info') == false)
throw new Exception("You need GD library to be available in order to run this application. Please turn it on in php.ini");
}
//--------------------------------------------------------------
//return if the json library is activated
public static function isJsonActivated(){
return(function_exists('json_encode'));
}
/**
*
* encode array into json for client side
*/
public static function jsonEncodeForClientSide($arr){
$json = "";
if(!empty($arr)){
$json = json_encode($arr);
$json = addslashes($json);
}
$json = "'".$json."'";
return($json);
}
/**
*
* decode json from the client side
*/
public static function jsonDecodeFromClientSide($data){
$data = stripslashes($data);
$data = str_replace('&#092;"','\"',$data);
$data = json_decode($data);
$data = (array)$data;
return($data);
}
//--------------------------------------------------------------
//validate if some directory is writable, if not - throw a exception
private static function validateWritable($name,$path,$strList,$validateExists = true){
if($validateExists == true){
//if the file/directory doesn't exists - throw an error.
if(file_exists($path) == false)
throw new Exception("$name doesn't exists");
}
else{
//if the file not exists - don't check. it will be created.
if(file_exists($path) == false) return(false);
}
if(is_writable($path) == false){
chmod($path,0755); //try to change the permissions
if(is_writable($path) == false){
$strType = "Folder";
if(is_file($path)) $strType = "File";
$message = "$strType $name is doesn't have a write permissions. Those folders/files must have a write permissions in order that this application will work properly: $strList";
throw new Exception($message);
}
}
}
//--------------------------------------------------------------
//validate presets for identical keys
public static function validatePresets(){
global $g_presets;
if(empty($g_presets)) return(false);
//check for duplicates
$assoc = array();
foreach($g_presets as $preset){
$id = $preset["id"];
if(isset($assoc[$id]))
throw new Exception("Double preset ID detected: $id");
$assoc[$id] = true;
}
}
//--------------------------------------------------------------
//Get url of image for output
public static function getImageOutputUrl($filename,$width=0,$height=0,$exact=false){
//exact validation:
if($exact == "true" && (empty($width) || empty($height) ))
self::throwError("Exact must have both - width and height");
$url = CMGlobals::$URL_GALLERY."?img=".$filename;
if(!empty($width))
$url .= "&w=".$width;
if(!empty($height))
$url .= "&h=".$height;
if($exact == true)
$url .= "&t=exact";
return($url);
}
/**
*
* get list of all files in the directory
* ext - filter by his extension only
*/
public static function getFileList($path,$ext=""){
$dir = scandir($path);
$arrFiles = array();
foreach($dir as $file){
if($file == "." || $file == "..") continue;
if(!empty($ext)){
$info = pathinfo($file);
$extension = UniteFunctionsRev::getVal($info, "extension");
if($ext != strtolower($extension))
continue;
}
$filepath = $path . "/" . $file;
if(is_file($filepath)) $arrFiles[] = $file;
}
return($arrFiles);
}
/**
*
* get list of all files in the directory
*/
public static function getFoldersList($path){
$dir = scandir($path);
$arrFiles = array();
foreach($dir as $file){
if($file == "." || $file == "..") continue;
$filepath = $path . "/" . $file;
if(is_dir($filepath)) $arrFiles[] = $file;
}
return($arrFiles);
}
/**
*
* do "trim" operation on all array items.
*/
public static function trimArrayItems($arr){
if(gettype($arr) != "array")
UniteFunctionsRev::throwError("trimArrayItems error: The type must be array");
foreach ($arr as $key=>$item)
$arr[$key] = trim($item);
return($arr);
}
/**
*
* get url contents
*/
public static function getUrlContents($url,$arrPost=array(),$method = "post",$debug=false){
$ch = curl_init();
$timeout = 0;
$strPost = '';
foreach($arrPost as $key=>$value){
if(!empty($strPost))
$strPost .= "&";
$value = urlencode($value);
$strPost .= "$key=$value";
}
//set curl options
if(strtolower($method) == "post"){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$strPost);
}
else //get
$url .= "?".$strPost;
//remove me
//Functions::addToLogFile(SERVICE_LOG_SERVICE, "url", $url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$headers = array();
$headers[] = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8";
$headers[] = "Accept-Charset:utf-8;q=0.7,*;q=0.7";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
if($debug == true){
dmp($url);
dmp($response);
exit();
}
if($response == false)
throw new Exception("getUrlContents Request failed");
curl_close($ch);
return($response);
}
/**
*
* get link html
*/
public static function getHtmlLink($link,$text,$id="",$class=""){
if(!empty($class))
$class = " class='$class'";
if(!empty($id))
$id = " id='$id'";
$html = "<a href=\"$link\"".$id.$class.">$text</a>";
return($html);
}
/**
*
* get select from array
*/
public static function getHTMLSelect($arr,$default="",$htmlParams="",$assoc = false){
$html = "<select $htmlParams>";
foreach($arr as $key=>$item){
$selected = "";
if($assoc == false){
if($item == $default) $selected = " selected ";
}
else{
if(trim($key) == trim($default))
$selected = " selected ";
}
if($assoc == true)
$html .= "<option $selected value='$key'>$item</option>";
else
$html .= "<option $selected value='$item'>$item</option>";
}
$html.= "</select>";
return($html);
}
/**
*
* Convert array to assoc array by some field
*/
public static function arrayToAssoc($arr,$field=null){
$arrAssoc = array();
foreach($arr as $item){
if(empty($field))
$arrAssoc[$item] = $item;
else
$arrAssoc[$item[$field]] = $item;
}
return($arrAssoc);
}
/**
*
* convert assoc array to array
*/
public static function assocToArray($assoc){
$arr = array();
foreach($assoc as $item)
$arr[] = $item;
return($arr);
}
/**
*
* strip slashes from textarea content after ajax request to server
*/
public static function normalizeTextareaContent($content){
if(empty($content))
return($content);
$content = stripslashes($content);
$content = trim($content);
return($content);
}
/**
*
* get random array item
*/
public static function getRandomArrayItem($arr){
$numItems = count($arr);
$rand = rand(0, $numItems-1);
$item = $arr[$rand];
return($item);
}
/**
*
* recursive delete directory or file
*/
public static function deleteDir($path,$deleteOriginal = true, $arrNotDeleted = array(),$originalPath = ""){
if(empty($originalPath))
$originalPath = $path;
//in case of paths array
if(getType($path) == "array"){
$arrPaths = $path;
foreach($path as $singlePath)
$arrNotDeleted = self::deleteDir($singlePath,$deleteOriginal,$arrNotDeleted,$originalPath);
return($arrNotDeleted);
}
if(!file_exists($path))
return($arrNotDeleted);
if(is_file($path)){ // delete file
$deleted = unlink($path);
if(!$deleted)
$arrNotDeleted[] = $path;
}
else{ //delete directory
$arrPaths = scandir($path);
foreach($arrPaths as $file){
if($file == "." || $file == "..")
continue;
$filepath = realpath($path."/".$file);
$arrNotDeleted = self::deleteDir($filepath,$deleteOriginal,$arrNotDeleted,$originalPath);
}
if($deleteOriginal == true || $originalPath != $path){
$deleted = @rmdir($path);
if(!$deleted)
$arrNotDeleted[] = $path;
}
}
return($arrNotDeleted);
}
/**
* copy folder to another location.
*
*/
public static function copyDir($source,$dest,$rel_path = "",$blackList = null){
$full_source = $source;
if(!empty($rel_path))
$full_source = $source."/".$rel_path;
$full_dest = $dest;
if(!empty($full_dest))
$full_dest = $dest."/".$rel_path;
if(!is_dir($full_source))
self::throwError("The source directroy: '$full_source' not exists.");
if(!is_dir($full_dest))
mkdir($full_dest);
$files = scandir($full_source);
foreach($files as $file){
if($file == "." || $file == "..")
continue;
$path_source = $full_source."/".$file;
$path_dest = $full_dest."/".$file;
//validate black list
$rel_path_file = $file;
if(!empty($rel_path))
$rel_path_file = $rel_path."/".$file;
//if the file or folder is in black list - pass it
if(array_search($rel_path_file, $blackList) !== false)
continue;
//if file - copy file
if(is_file($path_source)){
copy($path_source,$path_dest);
}
else{ //if directory - recursive copy directory
if(empty($rel_path))
$rel_path_new = $file;
else
$rel_path_new = $rel_path."/".$file;
self::copyDir($source,$dest,$rel_path_new,$blackList);
}
}
}
}
?>