Portions created by the Initial Developer are Copyright (C) 2008-2012 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ if (!function_exists('software_version')) { function software_version() { return '3.2'; } } if (!function_exists('check_str')) { function check_str($string) { global $db_type; //when code in db is urlencoded the ' does not need to be modified if ($db_type == "sqlite") { if (function_exists('sqlite_escape_string')) { $string = sqlite_escape_string($string); } else { $string = str_replace("'","''",$string); } } if ($db_type == "pgsql") { $string = pg_escape_string($string); } if ($db_type == "mysql") { $tmp_str = mysql_real_escape_string($string); if (strlen($tmp_str)) { $string = $tmp_str; } else { $search = array("\x00", "\n", "\r", "\\", "'", "\"", "\x1a"); $replace = array("\\x00", "\\n", "\\r", "\\\\" ,"\'", "\\\"", "\\\x1a"); $string = str_replace($search, $replace, $string); } } return trim($string); //remove white space } } if (!function_exists('check_sql')) { function check_sql($string) { return trim($string); //remove white space } } if (!function_exists('uuid')) { function uuid() { //uuid version 4 return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', // 32 bits for "time_low" mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), // 16 bits for "time_mid" mt_rand( 0, 0xffff ), // 16 bits for "time_hi_and_version", // four most significant bits holds version number 4 mt_rand( 0, 0x0fff ) | 0x4000, // 16 bits, 8 bits for "clk_seq_hi_res", // 8 bits for "clk_seq_low", // two most significant bits holds zero and one for variant DCE1.1 mt_rand( 0, 0x3fff ) | 0x8000, // 48 bits for "node" mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) ); } //echo uuid(); } if (!function_exists('recursive_copy')) { function recursive_copy($src,$dst) { $dir = opendir($src); if (!$dir) { throw new Exception("recursive_copy() source directory '".$src."' does not exist."); } if (!is_dir($dst)) { if (!mkdir($dst)) { throw new Exception("recursive_copy() failed to create destination directory '".$dst."'"); } } while(false !== ( $file = readdir($dir)) ) { if (( $file != '.' ) && ( $file != '..' )) { if ( is_dir($src . '/' . $file) ) { recursive_copy($src . '/' . $file,$dst . '/' . $file); } else { copy($src . '/' . $file,$dst . '/' . $file); } } } closedir($dir); } } if (!function_exists('if_group')) { function if_group($group) { //set default false $result = false; //search for the permission if (count($_SESSION["groups"]) > 0) { foreach($_SESSION["groups"] as $row) { if ($row['group_name'] == $group) { $result = true; break; } } } //return the result return $result; } } if (!function_exists('permission_exists')) { function permission_exists($permission) { //set default false $result = false; //search for the permission if (count($_SESSION["permissions"]) > 0) { foreach($_SESSION["permissions"] as $row) { if ($row['permission_name'] == $permission) { $result = true; break; } } } //return the result return $result; } } if (!function_exists('group_members')) { function group_members($db, $user_uuid) { global $domain_uuid; $sql = "select * from v_group_users "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and user_uuid = '".$user_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result_count = count($result); $group_members = "||"; foreach($result as $field) { //get the list of groups $group_members .= $field['group_name']."||"; } unset($sql, $result, $row_count); return $group_members; } } if (!function_exists('if_group_member')) { function if_group_member($group_members, $group) { if (stripos($group_members, "||".$group."||") === false) { return false; //group does not exist } else { return true; //group exists } } } if (!function_exists('superadmin_list')) { function superadmin_list($db) { global $domain_uuid; $sql = "select * from v_group_users "; $sql .= "where group_name = 'superadmin' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result_count = count($result); $superadmin_list = "||"; foreach($result as $field) { //get the list of superadmins $superadmin_list .= $field['user_uuid']."||"; } unset($sql, $result, $row_count); return $superadmin_list; } } //superadmin_list($db); if (!function_exists('if_superadmin')) { function if_superadmin($superadmin_list, $user_uuid) { if (stripos($superadmin_list, "||".$user_uuid."||") === false) { return false; //user_uuid does not exist } else { return true; //user_uuid exists } } } if (!function_exists('html_select_other')) { function html_select_other($db, $table_name, $field_name, $sql_where_optional, $field_current_value) { //html select other : build a select box from distinct items in db with option for other global $domain_uuid; $html = "\n"; $html .= "\n"; $html .= "\n"; $html .= "\n"; $html .= "\n"; $html .= "
\n"; $html .= "\n"; $html .= "\n"; $html .= "\n"; $html .= "\n"; $html .= "
"; return $html; } } if (!function_exists('html_select')) { function html_select($db, $table_name, $field_name, $sql_where_optional, $field_current_value, $field_value = '', $style = '') { //html select other : build a select box from distinct items in db with option for other global $domain_uuid; if (strlen($field_value) > 0) { $html .= "\n"; $html .= "\n"; $sql = "SELECT distinct($field_name) as $field_name FROM $table_name $sql_where_optional "; } $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result_count = count($result); if ($result_count > 0) { //if user account exists then show login foreach($result as $field) { if (strlen($field[$field_name]) > 0) { if ($field_current_value == $field[$field_name]) { if (strlen($field_value) > 0) { $html .= "\n"; } else { $html .= "\n"; } } else { if (strlen($field_value) > 0) { $html .= "\n"; } else { $html .= "\n"; } } } } } unset($sql, $result, $result_count); $html .= "\n"; return $html; } } //$table_name = 'v_templates'; $field_name = 'templatename'; $sql_where_optional = "where domain_uuid = '$domain_uuid' "; $field_current_value = ''; //echo html_select($db, $table_name, $field_name, $sql_where_optional, $field_current_value); if (!function_exists('html_select_on_change')) { function html_select_on_change($db, $table_name, $field_name, $sql_where_optional, $field_current_value, $onchange, $field_value = '') { //html select other : build a select box from distinct items in db with option for other global $domain_uuid; $html .= "\n"; return $html; } } if (!function_exists('th_order_by')) { //html table header order by function th_order_by($field_name, $columntitle, $order_by, $order) { $html = "    "; if (strlen($order_by)==0) { $html .= "$columntitle"; } else { if ($order=="asc") { $html .= "$columntitle"; } else { $html .= "$columntitle"; } } $html .= "    "; return $html; } } ////example usage //$table_name = 'tblcontacts'; $field_name = 'contactcategory'; $sql_where_optional = "", $field_current_value =''; //echo html_select_other($db, $table_name, $field_name, $sql_where_optional, $field_current_value); //// On the page that recieves the POST //if (check_str($_POST["contactcategory"]) == "Other") { //echo "found: ".$contactcategory; // $contactcategory = check_str($_POST["contactcategoryother"]); //} if (!function_exists('log_add')) { function log_add($db, $log_type, $log_status, $log_desc, $log_add_user, $log_add_user_ip) { return; //this disables the function global $domain_uuid; $sql = "insert into logs "; $sql .= "("; $sql .= "log_type, "; $sql .= "log_status, "; $sql .= "log_desc, "; $sql .= "log_add_user, "; $sql .= "log_add_user_ip, "; $sql .= "log_add_date "; $sql .= ")"; $sql .= "values "; $sql .= "("; $sql .= "'$log_type', "; $sql .= "'$log_status', "; $sql .= "'$log_desc', "; $sql .= "'$log_add_user', "; $sql .= "'$log_add_user_ip', "; $sql .= "now() "; $sql .= ")"; $db->exec(check_sql($sql)); unset($sql); } } //$log_type = ''; $log_status=''; $log_add_user=''; $log_desc=''; //log_add($db, $log_type, $log_status, $log_desc, $log_add_user, $_SERVER["REMOTE_ADDR"]); if (!function_exists('get_ext')) { function get_ext($filename) { preg_match('/[^?]*/', $filename, $matches); $string = $matches[0]; $pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); // check if there is any extension if(count($pattern) == 1){ //echo 'No File Extension Present'; return ''; } if(count($pattern) > 1) { $filenamepart = $pattern[count($pattern)-1][0]; preg_match('/[^?]*/', $filenamepart, $matches); return $matches[0]; } } //echo "ext: ".get_ext('test.txt'); } if (!function_exists('file_upload')) { function file_upload($field = '', $file_type = '', $dest_dir = '') { $uploadtempdir = $_ENV["TEMP"]."\\"; ini_set('upload_tmp_dir', $uploadtempdir); $tmp_name = $_FILES[$field]["tmp_name"]; $file_name = $_FILES[$field]["name"]; $file_type = $_FILES[$field]["type"]; $file_size = $_FILES[$field]["size"]; $file_ext = get_ext($file_name); $file_name_orig = $file_name; $file_name_base = substr($file_name, 0, (strlen($file_name) - (strlen($file_ext)+1))); //$dest_dir = '/tmp'; if ($file_size == 0){ return; } if (!is_dir($dest_dir)) { echo "dest_dir not found
\n"; return; } //check if allowed file type if ($file_type == "img") { switch (strtolower($file_ext)) { case "jpg": break; case "png": break; case "gif": break; case "bmp": break; case "psd": break; case "tif": break; default: return false; } } if ($file_type == "file") { switch (strtolower($file_ext)) { case "doc": break; case "pdf": break; case "ppt": break; case "xls": break; case "zip": break; case "exe": break; default: return false; } } //find unique filename: check if file exists if it does then increment the filename $i = 1; while( file_exists($dest_dir.'/'.$file_name)) { if (strlen($file_ext)> 0) { $file_name = $file_name_base . $i .'.'. $file_ext; } else { $file_name = $file_name_orig . $i; } $i++; } //echo "file_type: ".$file_type."
\n"; //echo "tmp_name: ".$tmp_name."
\n"; //echo "file_name: ".$file_name."
\n"; //echo "file_ext: ".$file_ext."
\n"; //echo "file_name_orig: ".$file_name_orig."
\n"; //echo "file_name_base: ".$file_name_base."
\n"; //echo "dest_dir: ".$dest_dir."
\n"; //move the file to upload directory //bool move_uploaded_file ( string $filename, string $destination ) if (move_uploaded_file($tmp_name, $dest_dir.'/'.$file_name)){ return $file_name; } else { echo "File upload failed! Here's some debugging info:\n"; return false; } exit; } //end function } if ( !function_exists('sys_get_temp_dir')) { function sys_get_temp_dir() { if( $temp=getenv('TMP') ) return $temp; if( $temp=getenv('TEMP') ) return $temp; if( $temp=getenv('TMPDIR') ) return $temp; $temp=tempnam(__FILE__,''); if (file_exists($temp)) { unlink($temp); return dirname($temp); } return null; } } //echo realpath(sys_get_temp_dir()); if (!function_exists('username_exists')) { function username_exists($username) { global $db, $domain_uuid; $sql = "select * from v_users "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and username = '".$username."' "; //$sql .= "and user_enabled = 'true' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result_count = count($result); if ($result_count > 0) { return true; } else { return false; } } } if (!function_exists('add_extension_user')) { function add_extension_user($extension_uuid, $username) { global $db, $domain_uuid; //get the user_uuid by using the username $sql = "select * from v_users "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and username = '$username' "; //$sql .= "and user_enabled = 'true' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); unset($prep_statement); foreach ($result as &$row) { //check if the user_uuid exists in v_extension_users $sql = "select * from v_extension_users "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and user_uuid = '".$row["user_uuid"]."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $extension_users_result = $prep_statement->fetchAll(PDO::FETCH_NAMED); unset($prep_statement); //assign the extension to the user if (count($extension_users_result) == 0) { $sql = "insert into v_extension_users "; $sql .= "("; $sql .= "domain_uuid, "; $sql .= "extension_uuid, "; $sql .= "user_uuid "; $sql .= ") "; $sql .= "values "; $sql .= "("; $sql .= "'$domain_uuid', "; $sql .= "'$extension_uuid', "; $sql .= "'".$row["user_uuid"]."' "; $sql .= ")"; $db->exec(check_sql($sql)); unset($sql); } } unset ($result); } } if (!function_exists('user_add')) { function user_add($username, $password, $user_email='') { global $db, $domain_uuid, $v_salt; $user_uuid = uuid(); if (strlen($username) == 0) { return false; } if (strlen($password) == 0) { return false; } if (!username_exists($username)) { //salt used with the password to create a one way hash $salt = generate_password('20', '4'); //add the user account $user_type = 'Individual'; $user_category = 'user'; $sql = "insert into v_users "; $sql .= "("; $sql .= "domain_uuid, "; $sql .= "user_uuid, "; $sql .= "username, "; $sql .= "password, "; $sql .= "salt, "; if (strlen($user_email) > 0) { $sql .= "user_email, "; } $sql .= "add_date, "; $sql .= "add_user "; $sql .= ")"; $sql .= "values "; $sql .= "("; $sql .= "'$domain_uuid', "; $sql .= "'$user_uuid', "; $sql .= "'$username', "; $sql .= "'".md5($salt.$password)."', "; $sql .= "'$salt', "; if (strlen($user_email) > 0) { $sql .= "'$user_email', "; } $sql .= "now(), "; $sql .= "'".$_SESSION["username"]."' "; $sql .= ")"; $db->exec(check_sql($sql)); unset($sql); //add the user to the member group $group_name = 'user'; $sql = "insert into v_group_users "; $sql .= "("; $sql .= "group_user_uuid, "; $sql .= "domain_uuid, "; $sql .= "group_name, "; $sql .= "user_uuid "; $sql .= ")"; $sql .= "values "; $sql .= "("; $sql .= "'".uuid()."', "; $sql .= "'$domain_uuid', "; $sql .= "'$group_name', "; $sql .= "'$user_uuid' "; $sql .= ")"; $db->exec(check_sql($sql)); unset($sql); } //end if !username_exists } //end function definition } //end function_exists function switch_module_is_running($fp, $mod) { if (!$fp) { //if the handle does not exist create it $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); //if the handle still does not exist show an error message if (!$fp) { $msg = "
Connection to Event Socket failed.
"; } } if ($fp) { //send the api command to check if the module exists $switchcmd = "module_exists $mod"; $switch_result = event_socket_request($fp, 'api '.$switchcmd); unset($switchcmd); if (trim($switch_result) == "true") { return true; } else { return false; } } else { return false; } } //switch_module_is_running('mod_spidermonkey'); //format a number (n) replace with a number (r) remove the number function format_string ($format, $data) { $x=0; $tmp = ''; for ($i = 0; $i <= strlen($format); $i++) { $tmp_format = strtolower(substr($format, $i, 1)); if ($tmp_format == 'x') { $tmp .= substr($data, $x, 1); $x++; } elseif ($tmp_format == 'r') { $x++; } else { $tmp .= $tmp_format; } } return $tmp; } //get the format and use it to format the phone number function format_phone($phone_number) { if (strlen($_SESSION["format_phone_array"]) == 0) { $_SESSION["format_phone_array"] = ""; //clear the menu global $domain_uuid, $db; $sql = "select * from v_vars "; $sql .= "where var_name = 'format_phone' "; $sql .= "and var_enabled = 'true' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); foreach ($result as &$row) { $_SESSION["format_phone_array"][] = $row["var_value"]; } unset ($prep_statement); } } foreach ($_SESSION["format_phone_array"] as &$format) { $format_count = substr_count($format, 'x'); $format_count = $format_count + substr_count($format, 'R'); if ($format_count == strlen($phone_number)) { //format the number $phone_number = format_string($format, $phone_number); } } return $phone_number; } //browser detection without browscap.ini dependency function http_user_agent() { $u_agent = $_SERVER['HTTP_USER_AGENT']; $bname = 'Unknown'; $platform = 'Unknown'; $version= ""; //get the platform? if (preg_match('/linux/i', $u_agent)) { $platform = 'linux'; } elseif (preg_match('/macintosh|mac os x/i', $u_agent)) { $platform = 'mac'; } elseif (preg_match('/windows|win32/i', $u_agent)) { $platform = 'windows'; } //get the name of the useragent yes seperately and for good reason if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) { $bname = 'Internet Explorer'; $ub = "MSIE"; } elseif(preg_match('/Firefox/i',$u_agent)) { $bname = 'Mozilla Firefox'; $ub = "Firefox"; } elseif(preg_match('/Chrome/i',$u_agent)) { $bname = 'Google Chrome'; $ub = "Chrome"; } elseif(preg_match('/Safari/i',$u_agent)) { $bname = 'Apple Safari'; $ub = "Safari"; } elseif(preg_match('/Opera/i',$u_agent)) { $bname = 'Opera'; $ub = "Opera"; } elseif(preg_match('/Netscape/i',$u_agent)) { $bname = 'Netscape'; $ub = "Netscape"; } //finally get the correct version number $known = array('Version', $ub, 'other'); $pattern = '#(?' . join('|', $known) . ')[/ ]+(?[0-9.|a-zA-Z.]*)#'; if (!preg_match_all($pattern, $u_agent, $matches)) { // we have no matching number just continue } // see how many we have $i = count($matches['browser']); if ($i != 1) { //we will have two since we are not using 'other' argument yet //see if version is before or after the name if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){ $version= $matches['version'][0]; } else { $version= $matches['version'][1]; } } else { $version= $matches['version'][0]; } // check if we have a number if ($version==null || $version=="") {$version="?";} return array( 'userAgent' => $u_agent, 'name' => $bname, 'version' => $version, 'platform' => $platform, 'pattern' => $pattern ); } //tail php function for non posix systems function tail($file, $num_to_get=10) { $fp = fopen($file, 'r'); $position = filesize($file); $chunklen = 4096; if($position-$chunklen<=0) { fseek($fp,0); } else { fseek($fp, $position-$chunklen); } $data="";$ret="";$lc=0; while($chunklen > 0) { $data = fread($fp, $chunklen); $dl=strlen($data); for($i=$dl-1;$i>=0;$i--){ if($data[$i]=="\n"){ if($lc==0 && $ret!="")$lc++; $lc++; if($lc>$num_to_get)return $ret; } $ret=$data[$i].$ret; } if($position-$chunklen<=0){ fseek($fp,0); $chunklen=$chunklen-abs($position-$chunklen); }else fseek($fp, $position-$chunklen); $position = $position - $chunklen; } fclose($fp); return $ret; } //generate a random password with upper, lowercase and symbols function generate_password($length = 10, $strength = 4) { $password = ''; $charset = ''; if ($strength >= 1) { $charset .= "0123456789"; } if ($strength >= 2) { $charset .= "abcdefghijkmnopqrstuvwxyz"; } if ($strength >= 3) { $charset .= "ABCDEFGHIJKLMNPQRSTUVWXYZ"; } if ($strength >= 4) { $charset .= "!!!!!^$%*?....."; } srand((double)microtime() * rand(1000000, 9999999)); while ($length > 0) { $password.= $charset[rand(0, strlen($charset)-1)]; $length--; } return $password; } //echo generate_password(4, 4); //based on Wez Furlong do_post_request if (!function_exists('send_http_request')) { function send_http_request($url, $data, $method = "POST", $optional_headers = null) { $params = array('http' => array( 'method' => $method, 'content' => $data )); if ($optional_headers !== null) { $params['http']['header'] = $optional_headers; } $ctx = stream_context_create($params); $fp = @fopen($url, 'rb', false, $ctx); if (!$fp) { throw new Exception("Problem with $url, $php_errormsg"); } $response = @stream_get_contents($fp); if ($response === false) { throw new Exception("Problem reading data from $url, $php_errormsg"); } return $response; } } //convert the string to a named array if(!function_exists('csv_to_named_array')) { function csv_to_named_array($tmp_str, $tmp_delimiter) { $tmp_array = explode ("\n", $tmp_str); $result = ''; if (trim(strtoupper($tmp_array[0])) != "+OK") { $tmp_field_name_array = explode ($tmp_delimiter, $tmp_array[0]); $x = 0; foreach ($tmp_array as $row) { if ($x > 0) { $tmp_field_value_array = explode ($tmp_delimiter, $tmp_array[$x]); $y = 0; foreach ($tmp_field_value_array as $tmp_value) { $tmp_name = $tmp_field_name_array[$y]; if (trim(strtoupper($tmp_value)) != "+OK") { $result[$x][$tmp_name] = $tmp_value; } $y++; } } $x++; } unset($row); } return $result; } } function get_time_zone_offset($remote_tz, $origin_tz = 'UTC') { $origin_dtz = new DateTimeZone($origin_tz); $remote_dtz = new DateTimeZone($remote_tz); $origin_dt = new DateTime("now", $origin_dtz); $remote_dt = new DateTime("now", $remote_dtz); $offset = $remote_dtz->getOffset($remote_dt) - $origin_dtz->getOffset($origin_dt); return $offset; } function number_pad($number,$n) { return str_pad((int) $number,$n,"0",STR_PAD_LEFT); } ?>