Ecco per voi una raccolta di funzioni più comuni da utilizzare nei vostri progetti!
< ?php
class common {
static private $link = NULL;
static private $linki = NULL;
private $config = NULL;
function __construct() {
// ini_set(’include_path’, ini_get(’include_path’).’;’.BASEPATH.’application/my_classes/’);
// ini_set(’register_globals’,'off’);
// ini_set(’max_input_time’,'600′);
include(”./config.php”);
$this->config = $config;
}
function check_user() {
$user_id = “”;
$id = “”;
$user_id = $this->common->get_encrypted_id();
$uid = $this->common->value(’uid’);
if( (empty($user_id)) ) {
$session_id = ”;
$session_id = $_SESSION['userid'];
if(!empty($session_id)) {
$msg = “
session exists($session_id)”;
$id = $session_id;
}
else if(!empty($uid)) {
$msg = “
uid found($uid)”;
$id = $uid;
}
}
else {
$session_id = ”;
$session_id = $_SESSION['userid'];
if(!empty($session_id)) {
if( $user_id == $session_id ) {
$msg = “
Session($session_id) & user_id($user_id) matches”;
$id = $session_id;
}
else {
$msg = “
Session($session_id) exist but not matches with user_id($user_id)”;
$id = $user_id;
}
}
else {
$msg = “
Session not exist, user_id($user_id)”;
$id = $user_id;
}
}
// echo $msg.”, User_id=”.$id; exit;
if(empty($id)) {
// Redirecting into login page
$url = “http://www.google.co.in”;
header(”location:”.$url);
}
else {
$_SESSION['userid'] = $id;
return true;
}
}
function get_body($body, $type) {
$body = $this->get_absolute_value($body);
$newline=”\n”;
$content_type = strtolower($type);
$company_address = $this->config->config['organisation_details'];
$unsubscribe_ar = $this->config->config['unsubscribe_ar'];
if($content_type == “plain”) {
$str = “”;
$str .= $newline. $body . $newline.$newline.$newline.$this->remove_html(html_entity_decode($company_address));
return $str;
}
if($content_type == “html”) {
$str = “”;
$html_head = “”;
$html_foot = “”;
$html_head .= $newline.$newline.”;
$html_head .= $newline.”;
$html_head .= $newline.”;
$html_head .= $newline.”;
$html_head .= $newline.’Test document’;
$html_head .= $newline.”;
$html_head .= $newline.”;
$html_foot .= $newline.$newline.$newline.$company_address;
$html_foot .= $newline.$newline.$newline.$unsubscribe_ar;
$html_foot .= $newline.”;
$html_foot .= $newline.”;
$str .= $html_head . $body . $html_foot;
return $str;
}
}
function replace_personalized_text($body, $buyer_array, $user_array, $mail_type=”html”) {
$content = $this->get_body($body, $mail_type);
$access_code = $this->encode($buyer_array->first_name, $buyer_array->last_name);
$replace = array(
‘buyer_first_name’ => $this->value(’first_name’, ”, $buyer_array),
‘buyer_last_name’ => $this->value(’last_name’, ”, $buyer_array),
‘buyer_email’ => $this->value(’email’, ”, $buyer_array),
‘buyer_phone’ => $this->value(’phone’, ”, $buyer_array),
‘my_first_name’ => $this->value(’first_name’,”,$user_array),
‘my_last_name’ => $this->value(’last_name’,”,$user_array),
‘my_email’ => $this->value(’email’,”,$user_array),
‘my_phone’ => $this->value(’phone’,”,$user_array),
’subscribe_ar’ => BASEURL.’guest/subscribe/’.$buyer_array->id.’/’.$access_code,
);
while( is_array($replace) && list($key,$value) = each($replace) ) {
$patterns[] = ‘/>/’;
$patterns[] = ‘/< >/’;
foreach ($patterns as $pattern) {
$content = preg_replace($pattern, $value, $content);
}
}
return $content;
}
function remove_html($str) {
$patterns = “/]*>/”;
$content = preg_replace($patterns, “”, $str);
return htmlspecialchars($content);
}
function connect_smtp() {
try {
require_once “./libraries/swift/Swift.php”;
require_once “./libraries/swift/Swift/Connection/SMTP.php”;
require_once “./libraries/swift/Swift/Authenticator/LOGIN.php”;
$smtp =& new Swift_Connection_SMTP($this->config['smtp_host']);
//Continue like normal
$smtp->setUsername($this->config['smtp_user']);
$smtp->setPassword($this->config['smtp_pass']);
$swift =& new Swift($smtp);
return $swift;
}
catch (Swift_ConnectionException $e) {
echo “There was a problem communicating with SMTP: ” . $e->getMessage();
exit;
}
}
/**
* Enter description here…
*
* ex - $result = $this->common->send_mail(array(’Manoj Verma’ => ‘manoj.verma@hytechpro.com’, ‘Manu’ => ‘manabendra.sarkar@hytechpro.com’), array(’Manojkumar’ => ‘manoj.verma@hytechpro.com’), ‘test’, ‘testing purpose mail’);
*
* @param array $to
* @param array $from
* @param string $sub
* @param text $body
* @param string $mail_type
* @param object $swift
* @return mixed
*/
function send_mail($to=array(), $from=array(), $sub, $body, $mail_type=’html’, $swift=false, $undisclosed=true, $attachment=array(’browse_field_name’ => ‘attachment’)) {
$return = false;
if(!$swift) {
$swift = $this->connect_smtp();
}
$content_type = “text/html”;
if(strtolower($mail_type) == “plain”) {
$content_type = “text/plain”;
}
try {
//Create the message
$message =& new Swift_Message($sub, $body, $content_type);
// preparing from address
if($this->check_array($from)) {
foreach ($from as $from_name => $from_email) {
if(is_string($from_name)) {
$from_address = new Swift_Address($from_email, $from_name);
}
else {
$from_address = new Swift_Address($from_email);
}
}
}
else {
$this->log_msg(’Common::send_mail() –> Please mention from email address.’);
return false;
}
// Preparing to addressess
$recipients =& new Swift_RecipientList();
if($this->check_array($to)) {
if(count($to) > 1) {
if($undisclosed == true) {
$message->setTo(”undisclosed-recipients:;”);
}
}
else {
$to_email = array_values($to);
// setting header
$message->headers->set(”To”, array($to_email[0]));
}
foreach ($to as $to_name => $to_email) {
if(is_string($to_name)) {
$recipients->addTo($to_email, $to_name);
}
else {
$recipients->addTo($to_email);
}
}
}
else {
$this->log_msg(’Common::send_mail() –> Please mention to email address.’);
return false;
}
// Attachment
if($this->check_array($_FILES)) {
$attachment_fieldname = $attachment['browse_field_name'];
$attachment_name = $_FILES[$attachment_fieldname]['name'];
if(!empty($attachment_name)) {
$arr = explode(”.”, $attachment_name);
$extentsion = $arr['1'];
$attachment_type = “application/”.$extentsion;
$attachment_path = $_FILES[$attachment_fieldname]['tmp_name'];
$swift_file = new Swift_File($attachment_path);
$part =& new Swift_Message_Part($body, $content_type);
$message->attach(new Swift_Message_Attachment($swift_file, $attachment_name, $attachment_type));
$message->attach($part);
}
}
if ($number_sent = $swift->send($message, $recipients, $from_address)) {
$msg = “Mail has been sent to ($number_sent) users.”;
$return = $number_sent;
}
else {
$msg = “Unexpected error occured when sending mail.”;
$return = false;
}
}
catch (Swift_Message_MimeException $e) {
$msg = “There was an unexpected problem building the email:” . $e->getMessage();
$return = false;
}
$this->log_msg($msg);
return $return;
}
function check_email($address){
// check an email address is possibly valid
if(ereg(”^[^@ ]+@[^@ ]+\.[^@ ]+$”,$address,$trashed))
return true;
else
return false;
}
function find_client_ip()
{
global $_SERVER;
// No IP found (will be overwritten by for
// if any IP is found behind a firewall)
$ip = FALSE;
// $this->print_rr($_SERVER);
// If HTTP_CLIENT_IP is set, then give it priority
if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
// User is behind a proxy and check that we discard RFC1918 IP addresses
// if they are behind a proxy then only figure out which IP belongs to the
// user. Might not need any more hackin if there is a squid reverse proxy
// infront of apache.
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// Put the IP’s into an array which we shall work with shortly.
$ips = explode (”, “, $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
// Skip RFC 1918 IP’s 10.0.0.0/8, 172.16.0.0/12 and
// 192.168.0.0/16
if (!preg_match(’/^(?:10|172\.(?:1[6-9]|2\d|3[01])|192\.168)\./’, $ips[$i])) {
if (version_compare(phpversion(), “5.0.0″, “>=”)) {
if (ip2long($ips[$i]) != false) {
$ip = $ips[$i];
break;
}
} else {
if (ip2long($ips[$i]) != -1) {
$ip = $ips[$i];
break;
}
}
}
}
}
// Return with the found IP or the remote address
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
#######################
## MYSQL_I api Start
#######################
function connect_mysqli() {
$link = mysqli_connect($this->config["db_host"], $this->config["db_user"], $this->config["db_pass"], $this->config["db_name"]);
if (!$link) {
die (’i Mysqli connection failed: ‘ . mysqli_connect_error());
}
else {
$this->linki = $link;
}
}
function execute_queryi($query=”) {
if (empty($query)) {
$this->log_msg(”Common::execute_queryi() –> Query can not be empty.”, “#888888″);
return ”;
}
else {
if( self::$linki == NULL ) {
$this->connect_mysqli();
}
}
// execute query
$mtime = explode(” “, microtime());
$start = doubleval($mtime[1]) + doubleval($mtime[0]);
$result = @mysqli_query($this->linki, $query);
$mtime = explode(” “, microtime());
$end = doubleval($mtime[1]) + doubleval($mtime[0]);
$time_elapsed = number_format(abs($start - $end), 5, ‘.’, ”);
// if error occured
if (!$result) {
$error = @mysqli_error($this->linki);
$this->log_msg(”Common::execute_queryi() –> Error in query: [ $query ] ($time_elapsed), Mysqli error: “.$error);
}
else {
if(is_object($result)) {
$num_rows = @mysqli_num_rows($result);
$this->log_msg(”Common::execute_queryi() –> Num Rows: $num_rows, [ $query ] ($time_elapsed)”, “#8686D9″);
}
else {
$affected_rows = @mysqli_affected_rows($this->linki);
$this->log_msg(”Common::execute_queryi() –> Affacted Rows: $affected_rows, [ $query ] ($time_elapsed)”, “#8686D9″);
}
}
return $result;
}
function get_primarykeyi($table) {
$sql = “SELECT * FROM `”.$table.”`;”;
// execute query
$result = $this->execute_queryi($sql);
if($result) {
$fields = @mysqli_fetch_fields($result);
// $this->print_rr($fields);
foreach ($fields as $field) {
if($field->type == 253) {
$pk = $field->orgname;
return $pk;
}
}
}
return false;
}
#######################
## MYSQL_I api Ends
#######################
/**
* Returns a string representation of the date, of differing format
* depending on how recent the date is.
*
* @param int $_date Unix timestamp of the date.
* @return string String representation of the date.
*/
function nice_date( $_date ) {
$date_ymd = date( “Ymd”, $_date );
$now = time();
if ( $date_ymd == date( “Ymd”, $now + 86400 ) ) { // tomorrow
return “Tomorrow”;
} elseif ( $date_ymd == date( “Ymd”, $now ) ) { // today
return “Today”;
} elseif ( $date_ymd == date( “Ymd”, $now - 86400 ) ) { // yesterday
return “Yesterday”;
} elseif ( ( $now < $_date ) && ( abs( $now - $_date ) < 518400 ) ) { // next week
return “Next “.date( “l”, $_date );
} elseif ( ( $now > $_date ) && ( abs( $now - $_date ) < 518400 ) ) { // previous week
return “Last “.date( “l”, $_date );
} elseif ( date( “Y”, $now ) == date( “Y”, $_date ) ) { // this year
return date( “j M”, $_date );
} else {
return date( “j M Y”, $_date );
}
}
/**
* Returns a string representation of the date and time, of differing format
* depending on how recent the date is.
*
* @param int $_datetime Unix timestamp of the date.
* @return string String representation of the date and time.
*/
function nice_datetime( $_datetime ) {
$datetime_ymd = date( “Ymd”, $_datetime );
return $this->nice_date( $_datetime ).”, “.date( “g:ia”, $_datetime );
}
/**
* This function returns difference between two days.
*
* @param timestamp $start
* @param timestamp $end
* @return integer
*/
function daysInSpan($start,$end=”)
{
if(empty($end)) {
$today=getdate();
// $yesterday=mktime(0,0,0,$today[mon],$today[mday]-1,$today[year]);
$today=mktime(0,0,0,$today['mon'],$today['mday'],$today['year']);
$end = $today;
}
return (($end-$start)/86400);
}
#################################################################################################
#################################################################################################
#################################################################################################
#################################################################################################
#################################################################################################
function get_primarykey($table) {
$sql = “SELECT * FROM `”.$table.”`;”;
// execute query
$result = $this->execute_query($sql);
if($result)
for($i = 0; $i < @mysql_num_fields($result); $i++) {
if(eregi(”.*primary_key.*”, @mysql_field_flags($result, $i))){
$pk=@mysql_field_name($result, $i);
@mysql_free_result($result);
return $pk;
}
}
return false;
}
function connect_mysql() {
$link = mysql_connect($this->config["db_host"], $this->config["db_user"], $this->config["db_pass"]);
if (!$link) {
die (’Mysql connection failed: ‘ . mysql_error());
}
$db_selected = mysql_select_db($this->config["db_name"], $link);
if (!$db_selected) {
die (’Can not able to open database : ‘ . mysql_error());
}
else {
$this->link = $link;
}
}
function execute_query($query=”) {
if (empty($query)) {
$this->log_msg(”Common::execute_query() –> Query can not be empty.”, “#888888″);
return ”;
}
else {
if( self::$link == NULL ) {
$this->connect_mysql();
}
}
// execute query
$mtime = explode(” “, microtime());
$start = doubleval($mtime[1]) + doubleval($mtime[0]);
$result = @mysql_query($query);
$mtime = explode(” “, microtime());
$end = doubleval($mtime[1]) + doubleval($mtime[0]);
$time_elapsed = number_format(abs($start - $end), 5, ‘.’, ”);
// if error occured
if (!$result) {
$error = @mysql_error();
$this->log_msg(”Common::execute_query() –> Error in query: [ $query ] ($time_elapsed), Mysql error: “.$error);
}
else {
if(is_resource($result)) {
$num_rows = @mysql_num_rows($result);
$this->log_msg(”Common::execute_query() –> Num Rows: $num_rows, [ $query ] ($time_elapsed)”, “#8686D9″);
}
else {
$affected_rows = @mysql_affected_rows();
$this->log_msg(”Common::execute_query() –> Affacted Rows: $affected_rows, [ $query ] ($time_elapsed)”, “#8686D9″);
}
}
return $result;
}
function fetch_result($result, $fetch_type=”") {
$returnValue = array();
if(is_resource($result)) {
if(@mysql_num_rows($result) > 0 ) {
switch($fetch_type)
{
case ‘0′:
$array = array();
while($row = @mysql_fetch_row($result)) {
$array[] = $row;
}
break;
case ‘1′:
// returns associative array
$array = array();
while($row = @mysql_fetch_assoc($result)) {
$array[] = $row;
}
break;
case ‘2′:
// returns object type
$array = array();
while($row = @mysql_fetch_object($result)) {
$array[] = $row;
}
break;
case ‘3′:
$array = @mysql_fetch_row($result);
break;
case ‘4′:
$array = @mysql_fetch_assoc($result);
break;
case ‘5′:
$array = @mysql_fetch_object($result);
break;
default:
$array = @mysql_fetch_assoc($result);
break;
}
// gets momory free
@mysql_free_result($result);
if($this->check_array($array)) {
$returnValue = $array;
return $returnValue;
}
else {
return false;
}
}
else {
return false;
}
}
else {
return false;
}
}
function get_row($table, $id=”", $fields=”") {
if(empty($fields)) $fields=”*”;
if (!empty($id)) {
$pk = $this->get_primarykey($table);
if(!$pk) return false;
$sql = “SELECT $fields FROM $table WHERE $pk=’$id’”;
}
else {
$sql = “SELECT $fields FROM $table LIMIT 0 , 1″;
}
$rs = $this->execute_query($sql);
$row = $this->fetch_result($rs);
if($fields != ‘*’) {
return $row[$fields];
}
return $row;
}
function get_rows($table, $condition=”", $fields=”", $fetch_type=’1′) {
if(empty($fields)) $fields=”*”;
if (!empty($condition)) {
$sql = “SELECT $fields FROM $table WHERE $condition”;
}
else {
$sql = “SELECT $fields FROM $table”;
}
$rs = $this->execute_query($sql);
$rows = $this->fetch_result($rs, $fetch_type);
return $rows;
}
function get_result($sql=”", $fetch_type=”1″) {
$rs = $this->execute_query($sql);
$rows = $this->fetch_result($rs, $fetch_type);
return $rows;
}
function select($table=”, $arr=array(), $where=”) {
if(empty($table)) {
return false;
}
$result = self::execute_query(”SELECT * FROM $table LIMIT 0,1″);
$columns = @mysql_num_fields($result);
// getting list of columns of the specified table.
for ($i = 0; $i < $columns; $i++) {
$fieldarr[] = @mysql_field_name($result, $i);
}
$fields = ”;
$i=1;
if($this->check_array($arr)) {
foreach ($arr as $key => $field_name) {
$total = count($arr);
// Appending ‘,’ after field name
if (in_array ($field_name, $fieldarr)) {
$fields .= $field_name;
if($i != $total) {
$fields .= “,”;
}
}
$i++;
}
}
else {
$fields = ‘*’;
}
$sql = “SELECT $fields FROM $table”;
if(!empty($where))
$sql .= ” where “.$where;
// executing query.
$result = self::get_result($sql);
return $result;
}
function insert($table, $arr) {
$result = self::execute_query(”SELECT * FROM $table LIMIT 0,1″);
$columns = @mysql_num_fields($result);
// getting list of columns of the specified table.
for ($i = 0; $i < $columns; $i++) {
$fieldarr[] = @mysql_field_name($result, $i);
}
// building insert statement.
$sqla = “INSERT INTO $table ( “;
$sqlb = “) VALUES ( “;
foreach ($arr as $name => $value) {
if (in_array ($name, $fieldarr)) {
$sqla .= “$name,”;
if (is_array($value)) {
$sqlb .= “‘|”;
$j = count($value);
for ($i = 0; $i < $j-1; $i++) {
$sqlb .= addslashes($value[$i]) . “|,|”;
}
$k = $j-1;
$sqlb .= addslashes($value[$k]) . “|’,”;
} else {
if( $value == null ){
$sqlb .= ‘null’.”,”;
}
else
$sqlb .= “‘” . addslashes($value) . “‘,”;
}
}
}
$sqlb .= “)”;
$sql = $sqla . $sqlb;
$sql = str_replace(”,)”, “)”, $sql);
// executing query.
$result = self::execute_query($sql);
return $result;
}
function update($table, $arr, $where) {
$result = $this->execute_query(”SELECT * FROM $table LIMIT 0,1″);
$columns = @mysql_num_fields($result);
// getting list of columns of the specified table.
for ($i = 0; $i < $columns; $i++) {
$fieldarr[] = @mysql_field_name($result, $i);
}
// building update statement.
$sql = “UPDATE $table SET “;
foreach ($arr as $name => $value) {
if (in_array ($name, $fieldarr)) {
$sql .= “$name = “;
if (is_array($value)) {
$sql .= “‘|”;
$j = count($value);
for ($i = 0; $i < $j-1; $i++) {
$sql .= addslashes($value[$i]) . “|,|”;
}
$k = $j-1;
$sql .= addslashes($value[$k]) . “|’,”;
} else {
if( $value == null ){
$sql .= ‘null’.”,”;
}
else
$sql .= “‘” . addslashes($value) . “‘,”;
}
}
}
$sql .= “;”;
$sql = str_replace(”,;”, ” “, $sql);
$sql .= ” where “.$where;
$result = self::execute_query($sql);
return $result;
}
function value($key=”, $default=”, $arr=array()) {
if(gettype($arr) == ‘object’) {
$arr = get_object_vars($arr);
}
if(! $this->check_array($arr) ) {
global $_REQUEST;
$arr = $_REQUEST;
}
if(!$this->check_empty($key)) {
if( (!isset($arr[$key])) || (trim($arr[$key] == ”)) ) {
return $this->get_absolute_value($default, “Common::value() –> Element ($key) not found in array and default value not exist.”);
}else{
return $this->get_absolute_value($arr[$key]);
}
}
else {
return $this->get_absolute_value($default, “Common::value() –> Key is missing.”);
}
}
function get_absolute_value($val=”, $msg=”) {
if($this->check_empty($val)) {
if(empty($msg)) {
$this->log_msg(’Common::get_absolute_value() –> Value is Empty.’);
}
else {
$this->log_msg($msg);
}
return null;
}
else {
if(is_string($val) ) {
return htmlspecialchars_decode(stripslashes(trim($val)), ENT_QUOTES);
}
else {
return $val;
}
}
}
function check_empty($value=”) {
if(empty($value)) {
if( ($value === 0) || ($value === ‘0′) ) {
return false;
}
else {
return true;
}
}
else {
return false;
}
}
function check_array($arr = array()) {
if( (is_array($arr)) || (is_object($arr)) ){
if(count($arr) > 0) {
foreach ($arr as $val) {
if(!$this->check_empty($val)) return true;
}
}
}
return false;
}
#################################################################################################
#################################################################################################
#################################################################################################
#################################################################################################
#################################################################################################
function getxml($array=array(), $fields = array()) {
$sql = “select eid,ename from emp”;
$result = $this->execute_query($sql);
if(is_resource($result)){
$numRows = mysql_num_rows($result);
if($numRows >= ‘1′){
$xml = “\n”;
$xml .= “\n”;
while($arr=mysql_fetch_assoc($result)) {
$xml.= ” \n”;
foreach ($arr as $key => $value) {
if($key == ‘thumbImagePath’) {
$xml.= ” Title_Thumb/{$value}\n”;
}
}
$xml.= ” \n”;
}
$xml.= “\n”;
} else {
$xml = ”;
}
} else {
$xml = ”;
}
header(’Content-Type: text/xml’);
echo $xml;
}
/**
* xml2array() will convert the given XML text to an array in the XML structure.
* Link: http://www.bin-co.com/php/scripts/xml2array/
* Arguments : $contents - The XML text
* $get_attributes - 1 or 0. If this is 1 the function will get the attributes as well as the tag values - this results in a different array structure in the return value.
* $priority - Can be ‘tag’ or ‘attribute’. This will change the way the resulting array sturcture. For ‘tag’, the tags are given more importance.
* Return: The parsed XML in an array form. Use print_r() to see the resulting array structure.
* Examples: $array = xml2array(file_get_contents(’feed.xml’));
* $array = xml2array(file_get_contents(’feed.xml’, 1, ‘attribute’));
*/
function xml2array($contents, $get_attributes=1, $priority = ‘tag’) {
if(!$contents) return array();
if(!function_exists(’xml_parser_create’)) {
//print “‘xml_parser_create()’ function not found!”;
return array();
}
//Get the XML parser of PHP - PHP must have this module for the parser to work
$parser = xml_parser_create(”);
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, “UTF-8″); # http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, trim($contents), $xml_values);
xml_parser_free($parser);
if(!$xml_values) return;//Hmm…
//Initializations
$xml_array = array();
$parents = array();
$opened_tags = array();
$arr = array();
$current = &$xml_array; //Refference
//Go through the tags.
$repeated_tag_index = array();//Multiple tags with same name will be turned into an array
foreach($xml_values as $data) {
unset($attributes,$value);//Remove existing values, or there will be trouble
//This command will extract these variables into the foreach scope
// tag(string), type(string), level(int), attributes(array).
extract($data);//We could use the array by itself, but this cooler.
$result = array();
$attributes_data = array();
if(isset($value)) {
if($priority == ‘tag’) $result = $value;
else $result['value'] = $value; //Put the value in a assoc array if we are in the ‘Attribute’ mode
}
//Set the attributes too.
if(isset($attributes) and $get_attributes) {
foreach($attributes as $attr => $val) {
if($priority == ‘tag’) $attributes_data[$attr] = $val;
else $result['attr'][$attr] = $val; //Set all the attributes in a array called ‘attr’
}
}
//See tag status and do the needed.
if($type == “open”) {//The starting of the tag ”
$parent[$level-1] = &$current;
if(!is_array($current) or (!in_array($tag, array_keys($current)))) { //Insert New tag
$current[$tag] = $result;
if($attributes_data) $current[$tag. '_attr'] = $attributes_data;
$repeated_tag_index[$tag.'_'.$level] = 1;
$current = &$current[$tag];
} else { //There was another element with the same tag name
if(isset($current[$tag][0])) {//If there is a 0th element it is already an array
$current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
$repeated_tag_index[$tag.'_'.$level]++;
} else {//This section will make the value an array if multiple tags with the same name appear together
$current[$tag] = array($current[$tag],$result);//This will combine the existing item and the new item together to make an array
$repeated_tag_index[$tag.'_'.$level] = 2;
if(isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag.'_attr'];
unset($current[$tag.'_attr']);
}
}
$last_item_index = $repeated_tag_index[$tag.'_'.$level]-1;
$current = &$current[$tag][$last_item_index];
}
} elseif($type == “complete”) { //Tags that ends in 1 line ”
//See if the key is already taken.
if(!isset($current[$tag])) { //New Key
$current[$tag] = $result;
$repeated_tag_index[$tag.'_'.$level] = 1;
if($priority == ‘tag’ and $attributes_data) $current[$tag. '_attr'] = $attributes_data;
} else { //If taken, put all things inside a list(array)
if(isset($current[$tag][0]) and is_array($current[$tag])) {//If it is already an array…
// …push the new element into that array.
$current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
if($priority == ‘tag’ and $get_attributes and $attributes_data) {
$current[$tag][$repeated_tag_index[$tag.'_'.$level] . ‘_attr’] = $attributes_data;
}
$repeated_tag_index[$tag.'_'.$level]++;
} else { //If it is not an array…
$current[$tag] = array($current[$tag],$result); //…Make it an array using using the existing value and the new value
$repeated_tag_index[$tag.'_'.$level] = 1;
if($priority == ‘tag’ and $get_attributes) {
if(isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag.'_attr'];
unset($current[$tag.'_attr']);
}
if($attributes_data) {
$current[$tag][$repeated_tag_index[$tag.'_'.$level] . ‘_attr’] = $attributes_data;
}
}
$repeated_tag_index[$tag.'_'.$level]++; //0 and 1 index is already taken
}
}
} elseif($type == ‘close’) { //End of tag ”
$current = &$parent[$level-1];
}
}
return($xml_array);
}
/**
* This function helps to populate the form fields as well as Table fields.
*
* @param array $arrToAssign
* @param array $arrFromAssign
* @param integer $modeOfAssigning
* @param array $replaceArray
* @return array
* @access public
*/
function assignValueToFormElements($arrToAssign, $arrFromAssign=”, $modeOfAssigning=”, $replaceArray=”) {
global $_POST;
$is_return = 0;
// checking for replace array passed as parameter or not
if(is_array($replaceArray) && (count($replaceArray) > 0))
{
// if replace array passed as parameter no need to return anything.
$replace = &$replaceArray;
}else{
// if replace array not passed as parameter return array $arr;
$is_return = 1;
$arr = array();
$replace = &$arr;
}
$formArray = $arrToAssign;
if(empty($arrFromAssign)){
// if $arrFromAssign not passed peak the value from post array.
$arrFromAssign = $_POST;
}
switch ($modeOfAssigning){
case ‘0′:
// 0 for populating database fields with respect to database fields.
// used when needs to populate form fields with values stored in database.
foreach($formArray as $key => $value){
if(!empty($value)){
$replace[$value] = self::value($value, ”, $arrFromAssign);
}
}
break;
case ‘1′:
// 1 for populating form fields with respect to database fields
// used when needs to populate database values in form.
foreach($formArray as $key => $value){
if(!empty($key)){
$replace[$key] = self::value($value, ”, $arrFromAssign);
}
}
break;
case ‘2′:
// 2 for populating database fields with respect to form fields
// used when needs to insert form data into database table.
foreach($formArray as $key => $value){
if(!empty($value)){
$replace[$value] = self::value($key, ”, $arrFromAssign);
}
}
break;
default:
// populating form fields with respect to form fields, ($arr[key] = $arr[$key])
// used when server error occured to preserve the form value
foreach($formArray as $key => $value){
if(!empty($key)){
$replace[$key] = self::value($key, ”, $arrFromAssign);
}
}
break;
} // Switch Ends
if($is_return == ‘1′){
return $replace;
}
}
// Function assignValueToFormElements Ends
/**
* Select or remove array elements from an array.
* Source array could be either one dimensional or muti dimensional.
*
* @param array $existingArray like array(’first_name’=>’Manoj’, ‘last_name’=>’Verma’, ‘username’=>’abc’, ‘password’=>’abcpwd’)
* @param array $removingElementArray like array(’first_name’, ‘password’)
* @param strinf ($action != 2) if u want to remove the element from existing array and ($mode==2) if u want to select those elements from the existing array.
* @return array
* @access public
*/
function operateArrayElements($sourceArray, $targetArray, $action=’select’) {
$arr = array();
if((is_array($sourceArray)) && (is_array($targetArray))) {
if((count($targetArray) > 0) && (count($sourceArray) > 0)){
switch($action){
case ’select’:
foreach ($targetArray as $key) {
foreach($sourceArray as $key2 => $value2){
if($key == $key2){
$arr[$key] = $value2;
break;
}
}
}
break;
case ‘remove’:
foreach ($targetArray as $key) {
foreach($sourceArray as $key2 => $value2){
if($key == $key2){
unset($sourceArray[$key]);
break;
}
}
}
break;
case ‘modify’:
foreach ($targetArray as $key => $value) {
foreach($sourceArray as $key2 => $value2){
if($key == $key2){
$sourceArray[$key] = $value;
break;
}
}
}
break;
/**
* searching for value in $targetArray
* if value not found return false
* if value found, check value
* if value is empty
* return false;
* if value is not empty
* return true;
* if value not found
* return false;
*/
case ‘checkempty’:
foreach ($targetArray as $key) {
foreach($sourceArray as $key2 => $value2){
if($key == $key2){
if(empty($value2)){
// if value found empty
return ‘0′;
}
}
}
}
break;
// Default operation is ’select’
default:
foreach ($targetArray as $key) {
foreach($sourceArray as $key2 => $value2){
if($key == $key2){
$arr[$key] = $value2;
break;
}
}
}
break;
}
switch($action){
case ’select’:
return $arr;
break;
case ‘remove’:
return $sourceArray;
break;
case ‘modify’:
return $sourceArray;
break;
case ‘checkempty’:
return ‘1′;
break;
// Default operation is ’select’
default:
return $arr;
break;
}
}else{
// if $targetArray is empty.
return ‘0′;
}
}else{
// if $sourceArray is empty.
return ‘0′;
}
}
/** Function to find a single value or list of values(Array) from source array
* e.g., Capture the value and occurance of ’stage’ field comes in source array
* @Param $sourceArray — array() — Single or Multidimensional array
* @Param $toFindValue — Single value or an array(one dimensional)
* @Param $parentLevel — Tells that the value which i have to search, found in which Level of Source Array
* @Param $parentLevel — no need to pass as parameter when call this function
* @Param $parentLevel — no need to pass as parameter when call this function
* Rest of two parameter need not to pass in function calling
* ### THIS FUNCTION IS COPY OF getValueFromArray() IN nsLIB FILE.
*/
function getValueFromArray($sourceArray, $toFindValue=”, $parentLevel=”, $arr=array(), $level=0) {
$returnValue = ”;
$levelFound = true;
if((!empty($toFindValue)) && ($toFindValue != ”)){
foreach($sourceArray as $key => $value) {
// If value == array()
if (is_array($value) && (count($value)>0)) {
$level++;
$this->getValueFromArray($value, $toFindValue, $parentLevel, &$arr, $level);
$level–;
}else{
// Set value $levelFound either true or false after checking it is passed as parameter or not
if((!empty($parentLevel)) && ($parentLevel != ”)){
if($parentLevel == $level){
$levelFound = true;
}else{
$levelFound = false;
}
}
// If parentLevel is passing as parameter and found then block runs or if parentLevel is not passing as parameter then also block is running
if($levelFound == true){
if(is_array($toFindValue)){
foreach($toFindValue as $value2){ // $toFindvalue array is like array(’stage’, ‘name’, ‘roll’) — 1 dimensional
if($key == $value2){
$arr[$key] = $value;
}
}
}else{
// $Searching Value is not array
if($key == $toFindValue){
$arr[$key] = $value;
}
}
}
}
}
}
if(count($arr) > 0){
$returnValue = $arr;
}
return $returnValue;
}
/**
Function to output a separator either through whitespace, or with an image
*/
function putSpace($height=’1′, $image , $type=”hor”, $y){
if($y != ‘100%’) {
$y = $y.’px’;
}
if(($type == ‘hor’) || (empty($type))) {
return ‘
‘;
}
else {
return ‘
‘;
}
}
/**
* $this->putWhiteSpaces(array(’14′),&$replace);
* $this->putWhiteSpaces(array(’5′,’14′), &$replace, ‘pixel_silver.gif’, true, ’silverSpace’);
* $this->putWhiteSpaces(array(’5′,’14′, ‘30′, ‘80′), &$replace, ‘pixel_black.gif’, false, ‘blackSpace’);
* In template — or or
*/
function putWhiteSpaces($arr, $replace, $image=”, $y=’100%’, $type=”hor”, $range=true, $text=’whitespace’){
switch($image){
case ”:
$img = ‘pixel_trans.gif’;
break;
case ’silver’:
$img = ‘pixel_silver.gif’;
break;
case ‘black’;
$img = ‘pixel_black.gif’;
break;
default:
$img = $image;
break;
}
if($range == true){
$min = (count($arr) == 2) ? $arr[0] : ‘0′;
$max = (count($arr) == 2) ? $arr[1] : $arr[0];
for($height=$min; $height< =$max; $height++){
$key = $text.$height;
$replace[$key] = $this->putSpace($height, $img, $type, $y);
}
}else{
foreach($arr as $height){
$key = $text.$height;
$replace[$key] = $this->putSpace($height, $img, $type, $y);
}
}
}
/**
* Function to generate string like ‘1′,’2′,’3′ to use in “IN Query”
* e.g, SELECT * FROM user as u WHERE u.user_id IN (’44′,’48′,’47′,’53′,’27′,’29′)
*
* @param array $array
* @return string
* @access public
*
*/
function generateInQueryParameter($array) {
// counts the no of elements in array
$count_rows = count($array);
$str = “”;
$counter = 0;
foreach($array as $value){
$str .= “‘”.$value.”‘”;
$counter++;
if($counter != $count_rows){
$str .= “,”;
}
}
return $str;
}
/**
* format must be like - mm/dd/yy or mm/dd/yyyy
*/
function check_date($date) {
if(!empty($date)) {
$arr = explode(”/”, $date);
if( (count($arr) > 3) || (count($arr) < 3) ){
return false;
}
else {
foreach ($arr as $val) {
if(! is_numeric($val)) return false;
}
}
$mydate = date(”m-d-Y”, mktime(0, 0, 0, $arr[0], $arr[1], $arr[2]));
$arr2 = explode(”-”, $mydate);
$check = checkdate($arr2[0], $arr2[1], $arr2[2]);
if(!$check) {
return false;
}
}
return true;
}
function html_drop_down($name=”", $values=array(), $default = ”, $parameters = ”) {
if(empty($name)) $name=”select”;
$field = ‘
‘;
if($this->check_array($values))
foreach ($values as $key => $value) {
$field .= ” . htmlspecialchars($value) . ”;
}
$field .= ”;
return $field;
}
/**
* Function to add the elements in array on specified position.
* If position is not specified it will add array at end.
* Ex - $arr = $common->array_add_element(array(’Manoj’, ‘Manu’, ‘Koushal’), array(’Ratnesh’, ‘Janki’), ‘0′);
*
* @param array $arr - ex. array(’Manoj’, ‘Manu’, ‘Koushal’, ‘Janki’);
* @param array $element - ex. array(’Ratnesh’) || array(’Ratnesh’, ‘Sanjay’);
* @param integer $position
*/
function array_add_element($arr=array(), $element=array(), $position=”) {
if($this->check_array($arr)) {
if($this->check_array($element)) {
if($this->check_empty($position)) {
$position = count($arr);
}
array_splice($arr, $position, 0, $element);
}
}
return $arr;
}
#####################################################
## Functions for two way encryption and decryption
#####################################################
function generate_code($length=6) {
$chars = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789″;
$code = “”;
while (strlen($code) < $length) {
$code .= $chars[mt_rand(0,strlen($chars))];
}
return $code;
}
##————————————————–
## SIMPLE FUNCTION TO ENCODE & DECODE STRING
function encode($string,$key) {
$key = sha1($key);
$strLen = strlen($string);
$keyLen = strlen($key);
$j=”";
$hash=”";
for ($i = 0; $i < $strLen; $i++) {
$ordStr = ord(substr($string,$i,1));
if ($j == $keyLen) { $j = 0; }
$ordKey = ord(substr($key,$j,1));
$j++;
$hash .= strrev(base_convert(dechex($ordStr + $ordKey),16,36));
}
return $hash;
}
##————————————————–
function decode($string,$key) {
$key = sha1($key);
$strLen = strlen($string);
$keyLen = strlen($key);
$j=”";
$hash=”";
for ($i = 0; $i < $strLen; $i+=2) {
$ordStr = hexdec(base_convert(strrev(substr($string,$i,2)),36,16));
if ($j == $keyLen) { $j = 0; }
$ordKey = ord(substr($key,$j,1));
$j++;
$hash .= chr($ordStr - $ordKey);
}
return $hash;
}
##————————————————–
## Function to converting hexadecimal number into binary form.
function hex2bin($hexdata) {
$bindata=”;
for ($i=0;$iget_result($query, ‘2′);
if($this->check_array($row))
$id = $row[0]->id;
return $id;
}
##————————————————–
function set_encrypted_id($id, $key=’Test’) {
$encrypted_id = “”;
$query = “select hex(AES_ENCRYPT(’”.$id.”‘, ‘”.$key.”‘)) as encrypted_id”;
$row = $this->get_result($query);
if($this->check_array($row))
$encrypted_id = $row[0]->encrypted_id;
return $encrypted_id;
}
##**************************************************
//Get the result of the query as a CSV stream.
function CSVExport($query) {
$sql_csv = $this->execute_query($query);
header(”Content-type:text/octect-stream”);
header(”Content-Disposition:attachment;filename=data.csv”);
while($row = $this->fetch_result($sql_csv)) {
print ‘”‘ . stripslashes(implode(’”,”‘,$row)) . “\”\n”;
}
exit;
}
/**
* Import the contents of a CSV file after uploading it
* http://www.bin-co.com/php/scripts/csv_import_export/
* Aruguments : $table - The name of the table the data must be imported to
* $fields - An array of fields that will be used
* ex - $fields = array(’first_name, last_name, country, address, city, state, zip, phone, fax, email’,’status’,'priority’,'mail_subscription’,'user_id’,'created_at’,'updated_at’);
* $auto_fields - An array of fields that will be used — Not mandatory
* ex - $cur_date = date(”Y-m-d H:i:s”, time());
* $auto_fields = array(’ACTIVE’, ‘NORMAL’, ‘new’, ‘1′, $cur_date, $cur_date);
* $csv_fieldname - The name of the CSV file field
*/
function upload_csv($table=’buyers’, $fields=array(), $csv_fieldname=’buyercsv’, $auto_fields=array()) {
$return = FALSE;
global $_FILES;
if(count($fields) < = 0) {
$this->log_msg(”Common::upload_csv() –> Please specify corrospondant database fields.”); return false;
}
if( (count($_FILES) < = 0) || ($_FILES[$csv_fieldname]['name'] == ”) ) {
$this->log_msg(”Common::upload_csv() –> Please upload a csv file.”); return false;
}
$file_name = $_FILES[$csv_fieldname]['name'];
$arr = explode(”.”, $file_name);
$extentsion = $arr['1'];
if(strtolower($extentsion) != ‘csv’) { $this->log_msg(’Common::upload_csv() –> Please upload only csv files.’); return false; }
$handle = fopen($_FILES[$csv_fieldname]['tmp_name'],’r');
if(!$handle) die(’Cannot open uploaded file.’);
$row_count = 0;
$sql_query = “INSERT INTO $table(”. implode(’,',$fields) .”) VALUES(”;
$rows = array();
//Read the file as csv
while (($data = fgetcsv($handle, 1000, “,”)) !== FALSE) {
if( $this->check_array($data) ) {
$row_count++;
$data = array_merge($data, $auto_fields);
foreach($data as $key=>$value) {
$data[$key] = “‘” . addslashes($value) . “‘”;
}
if(count($data) != count($fields)) { $this->log_msg(’Common::upload_csv() –> Some fields are missing in csv, Please check.’); $return=TRUE; }
// $this->print_rr($data); exit;
$rows[] = implode(”,”,$data);
}
}
// $this->print_rr($rows); exit;
$sql_query .= implode(”),(”, $rows);
$sql_query .= “)”;
fclose($handle);
if($return == TRUE) {
return false;
}
// echo $sql_query; exit;
if(count($rows)) { //If some recores were found,
$this->execute_query($sql_query);
$this->log_msg(’Common::upload_csv() –> Successfully imported ‘.$row_count.’ record(s)’);
return true;
} else {
$this->set_message(’Cannot import data - no records found.’);
return false;
}
}
function print_rr($arr = array(), $arr_name=”) {
if( $this->check_array($arr) ) {
$rows = count($arr);
echo “
Total elements in array ($arr_name) = “.$rows.”“;
echo ”
“;
print_r($arr);
echo ”
“;
}
else {
if(is_array($arr)) {
echo “
Empty array having ‘”.count($arr).”‘ Keys.“;
echo ”
“;
print_r($arr);
echo ”
“;
}
else if($this->check_empty($arr)) {
echo “
Parameter is not an array or object, Type = (”.gettype($arr).”), Empty value.“;
}
else {
echo “
Parameter is not an array or object, Type = (”.gettype($arr).”), value = ($arr).“;
}
}
echo “
“;
}
function log_msg($msg=”Error occured.”, $color=”red”, $size=”3″) {
$str = ‘['.date("D M d H:i:s Y", time()).'] : ‘. $msg;
// echo $my_msg = ‘
‘.$str.’‘;
$source_file = “tmp/mylog.txt”;
@chmod($source_file, 0777);
$handle = @fopen($source_file, “a+”); // w+ is used to write every time from begining.
if($handle) {
$str2 = “\n $str”;
if (@fwrite($handle, $str2) === FALSE) {
echo “Cannot able to write into file ($source_file)”;
}
fclose($handle);
}
else {
echo “Cannot able to open file - ($source_file)”;
}
}
function echoo($str, $exit=false) {
$msg = ‘
Track Message : ‘.$str.’‘;
echo $msg;
if($exit != false) {
exit;
}
}
} // Common Class Ends
################################
## Testing
################################
$common = new common();
//$common->getxml(); exit;
//$common->execute_query(”update emp set ename=’Ratnesh kr’ where eid=1″);
//$common->execute_queryi(”update emp set ename=’Ratnesh kumar’ where eid=1″);
//$common->execute_queryi(”select * from emp inner join emp_profile on emp.eid=emp_profile.id”);
//$common->execute_query(”select * from emp inner join emp_profile on emp.eid=emp_profile.id”);
//$common->get_primarykeyi(’emp’);
//$row = $common->get_row(’te’, ‘1′);
//$rows = $common->select(’emp’, array(’eid’,'mid’));
//$replace = $common->assignValueToFormElements(array(’emp_id’ => ‘eid’, ‘emp_name’ => ‘ename’), ”, ”);
//$common->print_rr($replace);
//echo $common->html_drop_down(’dd’, array(’01′=>’Manoj’));
//$arr = $common->array_add_element(array(’Manoj’, ‘Manu’, ‘Koushal’), array(’Ratnesh’, ‘Janki’), ‘0′);
$arr = $common->array_add_element(array(’mannu’=>’Manoj’, ‘manu’=>’Manu’, ‘jha’=>’Koushal’), array(’ratan’=>’Ratnesh’, ‘jaan’=>’Janki’), ‘0′);
//$common->print_rr($arr); exit;
$common->upload_csv(’emp_profile’, array(’id’,'address’), ‘empcsv’);
$common->putWhiteSpaces(array(’1′, ‘10′), &$hor, ‘pixel_silver.gif’);
$common->putWhiteSpaces(array(’1′, ‘10′), &$ver, ‘verticle.gif’, ‘100′, ‘ver’);
//print_r($arr); exit;
/*echo ‘
1 ‘.$ver['whitespace1'].’ 2
1 ‘.$ver['whitespace10'].’ 2
1 ‘.$hor['whitespace1'].’ 2
1 ‘.$hor['whitespace10'].’ 2
‘;
*/
/*
echo ‘
Upload csv:
‘;
echo $common->nice_datetime(strtotime(’2009-05-17 14:25:50′));
echo “
My Machine’s IP = “.$common->find_client_ip();
echo “
No of Days-”.$numDays=$common->daysInSpan(mktime(0,0,0,5,1,2009));
*/
?>
fonte: www.sastgroup.com » Vai al post originale