i am problem with line 3462 ?! :@
<?php
function trigger_db_error($obj)
{
global $CFG;
$error_arr = debug_backtrace();
$subject = 'Report bug - Sql error - {site_url}';
$content = '<u><b>Url :</b></u>
{current_url}
<u><b>Error File :</b></u>
{file}
<u><b>Error Line No :</b></u>
{line}
<u><b>Error Description:</b></u>
{error}';
$frmobj = new FormHandler();
if(isset($CFG['site']['current_url']))
$frmobj->setEmailTemplateValue('current_url', $CFG['site']['current_url']);
$frmobj->setEmailTemplateValue('file', $error_arr[0]['file']);
$frmobj->setEmailTemplateValue('line', $error_arr[0]['line']);
$frmobj->setEmailTemplateValue('error', $error_arr[0]['args'][0]->debug_output);
$frmobj->buildEmailTemplate($subject, $content, false, true);
sendBugEmail($frmobj);
trigger_error('Error at '.$error_arr[0]['file'].' on line '.$error_arr[0]['line']."<br>".$obj->ErrorNo().' '.$obj->ErrorMsg(), E_USER_ERROR);
}
function sendBugEmail($frmobj)
{
global $CFG;
$EasySwift = new EasySwift($frmobj->getSwiftConnection());
$EasySwift->flush();
$EasySwift->addPart($frmobj->getEmailContent(), "text/html");
$from_email = $CFG['site']['noreply_email'];
$EasySwift->send($CFG['site']['dev_bug_email'], $from_email, $frmobj->getEmailSubject());
}
function getCurrentMemberUrl()
{
global $CFG;
return str_replace($CFG['site']['url'],$CFG['site']['url'].'members/',$CFG['site']['current_url']);
}
function postForm($url, $post_value)
{
$ch = curl_init();
// set the target url
curl_setopt($ch, CURLOPT_URL,$url);
// howmany parameter to post
curl_setopt($ch, CURLOPT_POST, 1);
// the parameter 'username' with its value 'johndoe'
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_value);
$result= curl_exec ($ch);
curl_close ($ch);
}
/**
* Check the site is under maintenance
*
* @access public
* @return boolean
*/
function chkIsSiteUnderMaintenance()
{
global $CFG;
if(!isAdmin())
{
$currentPage = strtolower($CFG['html']['current_script_name']);
if($CFG['admin']['module']['site_maintenance'] AND $currentPage != 'maintenance')
{
// Unset all of the session variables.
$_SESSION = array();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()]))
{
setcookie(session_name(), '', time()-42000, '/');
}
// Finally, destroy the session.
session_destroy();
session_write_close();
setcookie($CFG['cookie']['starting_text'].'_bba', '', time()-42000, '/');
$murl = getUrl($CFG['redirect']['maintenance_module_url']['file_name'], $CFG['redirect']['maintenance_module_url']['normal'], $CFG['redirect']['maintenance_module_url']['htaccess'], 'root');
$CFG['site']['current_url'];
if($CFG['site']['current_url']!=$murl)
{
Redirect2Url($murl);
exit;
}
}
}
else
{
$value_array = explode('/', $CFG['site']['relative_url']);
if(!in_array('admin', $value_array) and $CFG['admin']['module']['site_maintenance'])
{
$admin_url = $CFG['site']['url'].'admin/index.php';
Redirect2URL($admin_url);
}
}
}
/**
* Check the allowed country user
*
* @access public
* @return boolean
*/
function chkIsAllowedCountry()
{
global $CFG;
$country_code = apache_note("GEOIP_COUNTRY_CODE");
if(in_array($country_code, $CFG['admin']['geo_country']))
return false;
return true;
}
/**
* Return the matched pattern list from given string
*
* @access public
* @param string pattern to search
* @param string content
* @param integer to return the particular array value
* @return array
*/
function MatchPattern($PATTERN = '', $CONTENT = '', $KEY = '')
{
if ($PATTERN && $CONTENT)
{
preg_match_all ($PATTERN, $CONTENT, $Match);
}
if ($KEY != '')
{
return $Match[$KEY];
}
return $Match;
}
/**
$varrfile = '<filename class="class1">test<filename class="class2">dsfsd fsd<filename class="class3">';
$pattern2 ='~<filename class="([^"]+)">~i';
$lang_value = MatchPattern($pattern2, $varrfile);
echo '<pre>';print_r($lang_value);echo '</pre>';
*/
/**
* used to get the image with and height
*
* @access public
* @param integer required width
* @param integer required height
* @param integer image original width
* @param integer image original height
* @return string
*/
function DISP_IMAGE($cfg_width = 0, $cfg_height = 0, $img_width = 0, $img_height = 0)
{
$relative_height='';
$relative_width='';
if ($cfg_width > 0 AND $cfg_height > 0 AND ($cfg_width < $img_width) AND ($cfg_height < $img_height))
$attr = ($img_width > $img_height)? " width=\"".$cfg_width."\"" : " height=\"".$cfg_height."\"";
else if ($cfg_width > 0 AND $cfg_width < $img_width)
{
$ratio = $img_height / $img_width;
$relative_height=$cfg_width*$ratio;
$attr = " width=\"".$cfg_width."\" height=\"".$relative_height."\"";
}
else if ($cfg_height > 0 AND $cfg_height < $img_height)
{
$ratio = $img_width / $img_height;
$relative_width=$cfg_height*$ratio;
$attr = " width=\"".$relative_width."\" height=\"".$cfg_height."\"";
}
else
$attr = "";
return $attr;
}
/**
* Word Limiter
*
* Limits a string to X number of words.
*
* @access public
* @param string
* @param integer
* @param string the end character. Usually an ellipsis
* @return string
*/
function word_limiter($str, $limit = 100, $end_char = '…')
{
if (trim($str) == '')
{
return $str;
}
preg_match('/^\s*+(?:\S++\s*+){1,'.(int) $limit.'}/', $str, $matches);
if (strlen($str) == strlen($matches[0]))
{
$end_char = '';
}
return rtrim($matches[0]).$end_char;
}
/**
* Character Limiter
*
* Limits the string based on the character count. Preserves complete words
* so the character count may not be exactly as specified.
*
* @access public
* @param string
* @param integer
* @param string the end character. Usually an ellipsis
* @return string
*/
function character_limiter($str, $n = 500, $end_char = '…')
{
if (strlen($str) < $n)
{
return $str;
}
$str = preg_replace("/\s+/", ' ', preg_replace("/(\r\n|\r|\n)/", " ", $str));
if (strlen($str) <= $n)
{
return $str;
}
$out = "";
foreach (explode(' ', trim($str)) as $val)
{
$out .= $val.' ';
if (strlen($out) >= $n)
{
return trim($out).$end_char;
}
}
}
/**
* Word Censoring Function
*
* Supply a string and an array of disallowed words and any
* matched words will be converted to #### or to the replacement
* word you've submitted.
*
* @access public
* @param string the text string
* @param string the array of censoered words
* @param string the optional replacement value
* @return string
*/
function word_censor($str, $censored, $replacement = '')
{
if ( ! is_array($censored))
{
return $str;
}
$str = ' '.$str.' ';
foreach ($censored as $badword)
{
if ($replacement != '')
{
$str = preg_replace("/\b(".str_replace('\*', '\w*?', preg_quote($badword)).")\b/i", $replacement, $str);
}
else
{
$str = preg_replace("/\b(".str_replace('\*', '\w*?', preg_quote($badword)).")\b/ie", "str_repeat('#', strlen('\\1'))", $str);
}
}
return trim($str);
}
/**
* Code Highlighter
*
* Colorizes code strings
*
* @access public
* @param string the text string
* @return string
*/
function highlight_code($str)
{
// The highlight string function encodes and highlights
// brackets so we need them to start raw
$str = str_replace(array('<', '>'), array('<', '>'), $str);
// Replace any existing PHP tags to temporary markers so they don't accidentally
// break the string out of PHP, and thus, thwart the highlighting.
$str = str_replace(array('<?', '?>', '<%', '%>', '\\', '</script>'),
array('phptagopen', 'phptagclose', 'asptagopen', 'asptagclose', 'backslashtmp', 'scriptclose'), $str);
// The highlight_string function requires that the text be surrounded
// by PHP tags. Since we don't know if A) the submitted text has PHP tags,
// or B) whether the PHP tags enclose the entire string, we will add our
// own PHP tags around the string along with some markers to make replacement easier later
$str = '<?php tempstart'."\n".$str.'tempend ?>';
// All the magic happens here, baby!
$str = highlight_string($str, TRUE);
// Prior to PHP 5, the highlight function used icky font tags
// so we'll replace them with span tags.
if (abs(phpversion()) < 5)
{
$str = str_replace(array('<font ', ',',',',',',',','</font>'), array('<span ', ',',',',',',',','</span>'), $str);
$str = preg_replace('#color="(.*?)"#', 'style="color: \\1"', $str);
}
// Remove our artificially added PHP
$str = preg_replace("#\<code\>.+?tempstart\<br />(?:\</span\>)?#is", "<code>\n", $str);
$str = preg_replace("#tempend.+#is", "</span>\n</code>", $str);
// Replace our markers back to PHP tags.
$str = str_replace(array('phptagopen', 'phptagclose', 'asptagopen', 'asptagclose', 'backslashtmp', 'scriptclose'),
array('<?', '?>', '<%', '%>', '\\', '</script>'), $str);
return $str;
}
/**
* Phrase Highlighter
*
* Highlights a phrase within a text string
*
* @access public
* @param string the text string
* @param string the phrase you'd like to highlight
* @param string the openging tag to precede the phrase with
* @param string the closing tag to end the phrase with
* @return string
*/
function highlight_phrase($str, $phrase, $tag_open = '<strong>', $tag_close = '</strong>')
{
if ($str == '')
{
return '';
}
if ($phrase != '')
{
return preg_replace('/('.preg_quote($phrase, '/').')/i', $tag_open."\\1".$tag_close, $str);
}
return $str;
}
/**
* Word Wrap
*
* Wraps text at the specified character. Maintains the integrity of words.
* Anything placed between {unwrap}{/unwrap} will not be word wrapped, nor
* will URLs.
*
* @access public
* @param string the text string
* @param integer the number of characters to wrap at
* @return string
*/
function word_wrap($str, $charlim = '76')
{
// Se the character limit
if ( ! is_numeric($charlim))
$charlim = 76;
// Reduce multiple spaces
$str = preg_replace("| +|", " ", $str);
// Standardize newlines
$str = preg_replace("/\r\n|\r/", "\n", $str);
// If the current word is surrounded by {unwrap} tags we'll
// strip the entire chunk and replace it with a marker.
$unwrap = array();
if (preg_match_all("|(\{unwrap\}.+?\{/unwrap\})|s", $str, $matches))
{
for ($i = 0; $i < count($matches['0']); $i++)
{
$unwrap[] = $matches['1'][$i];
$str = str_replace($matches['1'][$i], "{{unwrapped".$i."}}", $str);
}
}
// Use PHP's native function to do the initial wordwrap.
// We set the cut flag to FALSE so that any individual words that are
// too long get left alone. In the next step we'll deal with them.
$str = wordwrap($str, $charlim, "\n", FALSE);
// Split the string into individual lines of text and cycle through them
$output = "";
foreach (explode("\n", $str) as $line)
{
// Is the line within the allowed character count?
// If so we'll join it to the output and continue
if (strlen($line) <= $charlim)
{
$output .= $line."\n";
continue;
}
$temp = '';
while((strlen($line)) > $charlim)
{
// If the over-length word is a URL we won't wrap it
if (preg_match("!\[url.+\]|://|wwww.!", $line))
{
break;
}
// Trim the word down
$temp .= substr($line, 0, $charlim-1);
$line = substr($line, $charlim-1);
}
// If $temp contains data it means we had to split up an over-length
// word into smaller chunks so we'll add it back to our current line
if ($temp != '')
{
$output .= $temp . "\n" . $line;
}
else
{
$output .= $line;
}
$output .= "\n";
}
// Put our markers back
if (count($unwrap) > 0)
{
foreach ($unwrap as $key => $val)
{
$output = str_replace("{{unwrapped".$key."}}", $val, $output);
}
}
// Remove the unwrap tags
$output = str_replace(array('{unwrap}', '{/unwrap}'), '', $output);
return $output;
}
/**
* Create a Directory Map
*
* Reads the specified directory and builds an array
* representation of it. Sub-folders contained with the
* directory will be mapped as well.
*
* @access public
* @param string path to source
* @param bool whether to limit the result to the top level only
* @return array
*/
function directory_map($source_dir, $top_level_only = FALSE)
{
if ($fp = @opendir($source_dir))
{
$filedata = array();
while (FALSE !== ($file = readdir($fp)))
{
if (@is_dir($source_dir.$file) && substr($file, 0, 1) != '.' AND $top_level_only == FALSE)
{
$temp_array = array();
$temp_array = directory_map($source_dir.$file."/");
$filedata[$file] = $temp_array;
}
elseif (substr($file, 0, 1) != ".")
{
$filedata[] = $file;
}
}
return $filedata;
}
}
/**
* Read File
*
* Opens the file specfied in the path and returns it as a string.
*
* @access public
* @param string path to file
* @return string
*/
function read_file($file)
{
if ( ! file_exists($file))
{
return FALSE;
}
if (function_exists('file_get_contents'))
{
return file_get_contents($file);
}
if ( ! $fp = @fopen($file, 'rb'))
{
return FALSE;
}
flock($fp, LOCK_SH);
$data = '';
if (filesize($file) > 0)
{
$data =& fread($fp, filesize($file));
}
flock($fp, LOCK_UN);
fclose($fp);
return $data;
}
/**
* Write File
*
* Writes data to the file specified in the path.
* Creates a new file if non-existent.
*
* @access public
* @param string path to file
* @param string file data
* @return bool
*/
function write_file($path, $data, $mode = 'w+')
{
if ( ! $fp = @fopen($path, $mode))
{
return FALSE;
}
flock($fp, LOCK_EX);
fwrite($fp, $data);
@chmod($path, 0777);
flock($fp, LOCK_UN);
fclose($fp);
return TRUE;
}
/**
* read Directory
*
* read to the file specified in the path.
*
* @access public
* @param string $dir_path to file
* @param string return (dir, file, both)
* @return bool
*/
function readDirectory($dir_path, $return = 'both')
{
$return_arr = array();
if ($handle = opendir($dir_path))
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != ".." && $file != ".svn")
{
if((is_file($dir_path.$file) and $return=='file') or (is_dir($dir_path.$file) and $return=='dir') or ($return=='both'))
{
$return_arr[] = $file;
}
}
}
closedir($handle);
}
return $return_arr;
}
/**
* Force Download
*
* Generates headers that force a download to happen
*
* @access public
* @param string filename
* @param mixed the data to be downloaded
* @return void
*/
function force_download($filename = '', $data = '')
{
global $CFG;
if ($filename == '' OR $data == '')
{
return FALSE;
}
// Try to determine if the filename includes a file extension.
// We need it in order to set the MIME type
if (FALSE === strpos($filename, '.'))
{
return FALSE;
}
// Grab the file extension
$x = explode('.', $filename);
$extension = end($x);
// Load the mime types
@include($CFG['site']['project_path'].'common/configs/config_mimes.inc..php');
// Set a default mime if we can't find it
if ( ! isset($mimes[$extension]))
{
$mime = 'application/octet-stream';
}
else
{
$mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];
}
// Generate the server headers
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: public');
header("Content-Length: ".strlen($data));
}
else
{
header('Content-Type: "'.$mime.'"');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".strlen($data));
}
echo $data;
}
/**
* Strip Slashes
*
* Removes slashes contained in a string or in an array
*
* @access public
* @param mixed string or array
* @return mixed string or array
*/
function strip_slashes($str)
{
if (is_array($str))
{
foreach ($str as $key => $val)
{
$str[$key] = strip_slashes($val);
}
}
else
{
$str = stripslashes($str);
}
return $str;
}
/**
* check particular cron file running status
*
* @access public
* @param string script name to check
* @return boolean
*/
function isCronRunning($script_name = '')
{
global $CFG;
if(strstr($CFG['site']['url'], '/localhost/'))
{
return false;
}
$max_cron_allowed = 1;
$cronRunning = false;
if ($script_name)
{
$command = ' ps -eaf | grep '.$script_name;
$result = @shell_exec($command);
$scriptCount = intval(@substr_count($result, $script_name));
$max_cron_allowed = ($max_cron_allowed + 3);// 1 for ps, 1 for grep, 1 for the current /usr/bin/php cron.php
$cronRunning = ($scriptCount >= $max_cron_allowed);
}
return $cronRunning;
}
/**
* to control the cron file running
*
* @access public
* @return static
*/
function callMultipleCronCheck()
{
global $CFG;
$cronUrl = $CFG['site']['current_url'];
$time = date('d-m-y H:i:s');
print "\n CRON:\t$cronUrl:\nTIME:$time\n";
if (isCronRunning($cronUrl))
{
print "CRON : $cronUrl\nTIME:$cronUrl\nConcurrent Process Detected\nSo Skipping ".$cronUrl." CRON at ".date('d-M-y H:i:s')."\n\n";
die();
}
}
/**
* get the md5 text with number of characters
*
* @access public
* @param string
* @param integer
* @return boolean
*/
function getMD5Text($text, $count = 15)
{
$text = md5($text);
return substr($text, 0, $count-1);
}
/**
* to encode purpose, we can change it as per requirement
*
* @access public
* @param string
* @param integer
* @return boolean
*/
function doEncode($text, $size=0)
{
$text = str_pad($text, $size, '0', STR_PAD_LEFT);
$text = base64_encode($text);
$text = urlencode($text);
return $text;
}
/**
* to decode purpose, we can change it as per requirement
*
* @access public
* @param string
* @return boolean
*/
function doDecode($text)
{
$text = urldecode($text);
$text = base64_decode($text);
return $text;
}
/**
* to get the seconds difference b/w current time and given time
*
* @access public
* @param integer
* @return integer
*/
function getTimeDiffInSeconds($date)
{
global $CFG;
global $db;
$sql = 'SELECT TIMEDIFF(NOW(), \''.$date.'\') AS date_added';
$stmt = $db->Prepare($sql);
$rs = $db->Execute($stmt);
if (!$rs)
trigger_db_error($db);
$row = $rs->FetchRow();
return $row['date_added'];
}
/**
* to get the time difference b/w current time and given time
*
* @access public
* @param integer
* @return string
*/
function getTimeDiffernce($time)
{
global $LANG;
$date_added_pc = array();
$date_added_pc = explode(':', $time);
if(sizeof($date_added_pc)!=3)
return '0 '.$LANG['timediff_seconds_ago'];
$date_added_pc[0] = intval($date_added_pc[0]);
$date_added_pc[1] = intval($date_added_pc[1]);
$date_added_pc[2] = intval($date_added_pc[2]);
if($date_added_pc[0])
{
$day = floor($date_added_pc[0]/24);
if($day>365)
{
$year = floor($day/365);
if($year>1)
$time = $year.' '.$LANG['timediff_years_ago'];
else
$time = $year.' '.$LANG['timediff_year_ago'];
}
else if($day>30)
{
$month = floor($day/30);
if($month>1)
$time = $month.' '.$LANG['timediff_months_ago'];
else
$time = $month.' '.$LANG['timediff_month_ago'];
}
else if($day)
{
if($day>1)
$time = $day.' '.$LANG['timediff_days_ago'];
else
$time = $day.' '.$LANG['timediff_day_ago'];
}
else
{
if($date_added_pc[0]>1)
$time = $date_added_pc[0].' '.$LANG['timediff_hours_ago'];
else
$time = $date_added_pc[0].' '.$LANG['timediff_hour_ago'];
}
}
else if($date_added_pc[1])
{
if($date_added_pc[1]>1)
$time = $date_added_pc[1].' '.$LANG['timediff_minutes_ago'];
else
$time = $date_added_pc[1].' '.$LANG['timediff_minute_ago'];
}
else
{
if($date_added_pc[2]>1)
$time = $date_added_pc[2].' '.$LANG['timediff_seconds_ago'];
else
$time = $date_added_pc[2].' '.$LANG['timediff_second_ago'];
}
return $time;
}
function getDateTimeDiff($date,$today)
{
list($year, $month, $day, $hrs, $min, $sec) = split('[ \:-]', $date);
list($year1, $month1, $day1, $hrs1, $min1, $sec1) = split('[ \:-]', $today);
$secs = mktime($hrs1, $min1, $sec1, $month1, $day1, $year1)-mktime($hrs, $min, $sec, $month, $day, $year);
$mins = floor($secs/60);
$hrs = floor($mins/60);
$secs = $secs % 60;
$mins = $mins % 60;
return $row['date_added'] = $hrs.':'.$mins.':'.$secs;
}
/**
* Looks for the first occurence of $needle in $haystack and replaces it with $replace.
*
* @access public
* @param string search string
* @param string replace string
* @param string given string
* @return string
*/
function str_replace_once($needle, $replace, $haystack)
{
$pos = strpos($haystack, $needle);
if ($pos === false)
{
return $haystack;
}
return substr_replace($haystack, $replace, $pos, strlen($needle));
}
/**
* get full text format of given string
*
* @access public
* @param string given string
* @return string
*/
function getFullTextSearchString($tags)
{
$tags= rawurlencode($tags);
return $tags = '[[:<:]]'.preg_replace('/\s+/', '|', addslashes($tags)).'[[:>:]]';
$tags = trim($tags);
while(strpos($tags, ' '))
{
$tags = str_replace(' ', ' ', $tags);
}
$tags = addslashes($tags);
$tags_arr = explode(' ', $tags);
$tags = '[[:<:]]'.implode('[[:>:]]|[[:<:]]', $tags_arr).'[[:>:]]';
return $tags;
}
/**
* to get search qurey like full text search query.
*
* @access public
* @param string tags to search
* @param string search field
* @param string additional string to add (AND, OR)
* @return string
*/
function getSearchRegularExpressionQueryForums($tags, $field_name, $extra = '')
{
global $CFG;
$not_allowed_search_array = $CFG['admin']['not_allowed_chars'];
$tags = replaceCharacter($not_allowed_search_array, '-', $tags);
$tags = addslashes($tags);
$additional_query = ' ('.$field_name.' REGEXP \''.formatSearchString($tags).'\') '.$extra.' ';
return $additional_query;
}
function replaceCharacter($search_value, $replace, $text)
{
if(is_array($search_value))
{
foreach($search_value as $key=>$value)
$text = str_replace ($value, $replace, $text);
return $text;
}
return str_replace ($char, $replace, $text);
}
function formatSearchString($tags)
{
return $tags = '[[:<:]]'.preg_replace('/\s+/', '|', $tags).'[[:>:]]';
$tags = trim($tags);
while(strpos($tags, ' '))
{
$tags = str_replace(' ', ' ', $tags);
}
$tags = addslashes($tags);
$tags_arr = explode(' ', $tags);
$tags = '[[:<:]]'.implode('[[:>:]]|[[:<:]]', $tags_arr).'[[:>:]]';
return $tags;
}
/**
* to get search qurey like full text search query.
*
* @access public
* @param string tags to search
* @param string search field
* @param string additional string to add (AND, OR)
* @return string
*/
function getSearchRegularExpressionQuery($tags, $field_name, $extra = '')
{
global $CFG;
$tags = addslashes($tags);
if($CFG['admin']['search']['regular_expression'])
{
$additional_query = ' ('.$field_name.' REGEXP \''.getFullTextSearchString($tags).'\') '.$extra.' ';
}
else
{
$additional_query = ' MATCH('.$field_name.') AGAINST (\''.$tags.'\' IN BOOLEAN MODE) '.$extra.' ';
}
return $additional_query;
}
/**
* to create the multi level folder.
*
* @access public
* @param string folder name to create (root/sub/test/)
* @return static
*/
function createMultiLevelFolder($folderName)
{
$folder_arr = explode('/', $folderName);
$folderName = '';
foreach($folder_arr as $key=>$value)
{
$folderName .= $value.'/';
if($value == '..' or $value == '.')
continue;
if (!is_dir($folderName))
{
mkdir($folderName);
@chmod($folderName, 0777);
}
}
}
/**
* to remove the directory, if sub folders or file is in given directory,
* this function will remove all the files
*
* @access public
* @param string directory name to delete
* @return boolean
*/
function removeDirectory($dirname)
{
if (is_dir($dirname))
{
$result = array();
if (substr($dirname,-1) != '/')
{
$dirname.='/';
}
$handle = opendir($dirname);
while (false !== ($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
{ //Ignore . and ..
$path = $dirname.$file;
if (is_dir($path))
{ //Recurse if subdir, Delete if file
$result=array_merge($result, $this->removeDirectory($path));
}
else
{
unlink($path);
$result[].=$path;
}
}
}
closedir($handle);
rmdir($dirname);
$result[].=$dirname;
return $result;
}
else
{
return false;
}
}
/**
* used to top of the ajax pages
*
* @access public
* @param
* @return static
*/
function setHeaderStart($check_login=false)
{
global $CFG;
ob_start();
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: 0"); // Date in the past
header("Content-type: text/xml; charset=\"".$CFG['site']['charset']."\"");
if($check_login)
echo 'check|||||||||valid|||||||||login';
}
/**
* used to bottom of the ajax pages
*
* @access public
* @param
* @return static
*/
function setHeaderEnd()
{
ob_end_flush();
}
/**
* to check given url valid or not with using curl
*
* @access public
* @param string
* @return boolean
*/
function chkIsValidUrlUsingCurl($url)
{
if(!strstr($url, '://'))
$url = 'http://'.$url;
if (function_exists('curl_init'))
{
$ch = @curl_init();
if ($ch)
{
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RANGE, "0-1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
$errno = curl_errno($ch);
curl_close($ch);
if ($errno!=0)
{
return false;
}
}
}
return true;
}
function getContents($url)
{
$result = '';
if(!strstr($url, '://'))
$url = 'http://'.$url;
if (function_exists('curl_init'))
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
if (!curl_errno($ch))
curl_close($ch);
else
$result = false;
}
else
{
set_time_limit(180);
$result = file_get_contents($url) ;
}
return $result;
}
/**
* used to get the font size of based on count(like search count)
*
* @access public
* @param array
* @return array
*/
function setFontSizeForTagCloud($tag_array=array())
{
$formattedArray = $tag_array;
$max_qty = max(array_values($formattedArray));
$min_qty = min(array_values($formattedArray));
$max_font_size = 28;
$min_font_size = 12;
$spread = $max_qty - $min_qty;
if (0 == $spread) { // Divide by zero
$spread = 1;
}
$step = ($max_font_size - $min_font_size)/($spread);
foreach ($tag_array as $catname => $count)
{
$size = $min_font_size + ($count - $min_qty) * $step;
$formattedArray[$catname] = ceil($size);
}
return $formattedArray;
}
/**
* intialize the template folder
*
* @access public
* @param string value may be ('', 'members/', 'admin/')
* @return static
*/
function setTemplateFolder($template_for = '',$module='')
{
global $smartyObj, $CFG;
if($module)
{
if($template_for == 'admin/')
{
$smartyObj->template_dir = $CFG['site']['project_path'].'/design/templates/'.$CFG['html']['template']['default'].'/'.$template_for.$module.'/';
$smartyObj->compile_dir = $CFG['site']['project_path'].'/design/templates/'.$CFG['html']['template']['default'].'/'.getTplFolder().$module.'/templates_c/';
$smartyObj->css_path = $CFG['site']['url'].'/design/templates/'.$CFG['html']['template']['default'].'/'.$template_for.$module.'/css/'.$CFG['html']['stylesheet']['screen']['default'].'/';
}
else
{
if(isAdmin())
{
$smartyObj->template_dir = $CFG['site']['project_path'].$module.'/design/templates/'.$CFG['html']['template']['default'].'/'.$template_for;
$smartyObj->compile_dir = $CFG['site']['project_path'].$module.'/design/templates/'.$CFG['html']['template']['default'].'/members/templates_c/';
$smartyObj->css_path = $CFG['site']['url'].$module.'/design/templates/'.$CFG['html']['template']['default'].'/'.$template_for.'css/'.$CFG['html']['stylesheet']['screen']['default'].'/';
}
else
{
$smartyObj->template_dir = $CFG['site']['project_path'].$module.'/design/templates/'.$CFG['html']['template']['default'].'/'.$template_for;
$smartyObj->compile_dir = $CFG['site']['project_path'].$module.'/design/templates/'.$CFG['html']['template']['default'].'/'.getTplFolder().'templates_c/';
$smartyObj->css_path = $CFG['site']['url'].$module.'/design/templates/'.$CFG['html']['template']['default'].'/'.$template_for.'css/'.$CFG['html']['stylesheet']['screen']['default'].'/';
}
//Check whether template is available for current module, if not available change template to available template
if(!is_dir($smartyObj->template_dir))
{
foreach($CFG['html']['template']['allowed'] as $available_template)
{
$available_template_dir = $CFG['site']['project_path'].$module.'/design/templates/'.$available_template.'/'.$template_for;
if(is_dir($available_template_dir))
{
foreach($CFG['html']['stylesheet'][$available_template]['allowed'] as $available_css)
{
$available_css_path = $CFG['site']['project_path'].$module.'/design/templates/'.$available_template.'/root/css/'.$available_css.'/';
if(is_dir($available_css_path))
{
$smartyObj->template_dir = $available_template_dir;
$smartyObj->compile_dir = $CFG['site']['project_path'].$module.'/design/templates/'.$available_template.'/'.getTplFolder().'templates_c/';
$smartyObj->css_path = $CFG['site']['url'].$module.'/design/templates/'.$available_template.'/'.$template_for.'css/'.$available_css.'/';
break;
}
}
}
}
}
}
}
else
{
$smartyObj->template_dir = $CFG['site']['project_path'].'design/templates/'.$CFG['html']['template']['default'].'/'.$template_for;
$smartyObj->compile_dir = $CFG['site']['project_path'].'design/templates/'.$CFG['html']['template']['default'].'/'.getTplFolder().'templates_c/';
$smartyObj->css_path = $CFG['site']['url'].'design/templates/'.$CFG['html']['template']['default'].'/'.$template_for.'css/'.$CFG['html']['stylesheet']['screen']['default'].'/';
//Check whether template is available for current module, if not available change template to available template
if(!empty($CFG['site']['is_module_page']))
{
//check whether directory exists or not for the current module & current template
$template_dir_module = $CFG['site']['project_path'].$CFG['site']['is_module_page'].'/design/templates/'.$CFG['html']['template']['default'].'/'.$template_for;
if(!is_dir($template_dir_module))
{
foreach($CFG['html']['template']['allowed'] as $available_template)
{
$available_template_dir = $CFG['site']['project_path'].$CFG['site']['is_module_page'].'/design/templates/'.$available_template.'/'.$template_for;
if(is_dir($available_template_dir))
{
$CFG['html']['template']['default'] = $available_template;
foreach($CFG['html']['stylesheet'][$available_template]['allowed'] as $available_css)
{
$available_css_path = $CFG['site']['project_path'].$CFG['site']['is_module_page'].'/design/templates/'.$available_template.'/root/css/'.$available_css.'/';
if(is_dir($available_css_path))
{
$CFG['html']['stylesheet']['screen']['default'] = $available_css;
$smartyObj->template_dir = $CFG['site']['project_path'].'design/templates/'.$available_template.'/'.$template_for;;
$smartyObj->compile_dir = $CFG['site']['project_path'].'design/templates/'.$available_template.'/'.getTplFolder().'templates_c/';
$smartyObj->css_path = $CFG['site']['url'].'design/templates/'.$available_template.'/'.$template_for.'css/'.$available_css.'/';
break;
}
}
}
}
}
}
}
$smartyObj->cache_dir = $CFG['site']['project_path'].'design/templates/'.$CFG['html']['template']['default'].'/'.getTplFolder().'cache/';
$image_path = $CFG['site']['url'].'design/templates/'.$CFG['html']['template']['default'].'/root/images/'.$CFG['html']['stylesheet']['screen']['default'].'/';
$smartyObj->assign('html_stylesheet', $smartyObj->css_path.$CFG['html']['stylesheet']['screen']['default_file'].'.css');
$smartyObj->css_defalut_path=$smartyObj->css_path.$CFG['html']['stylesheet']['screen']['default_file'].'.css';
$smartyObj->assign('images_path', $image_path);
$smartyObj->assign('html_stylesheet_path', $smartyObj->css_path);
}
/**
* return the url
*
* @access public
* @param string
* @return string
*/
function URL($url)
{
return $url;
}
/**
* check the current page is ajax request
*
* @access public
* @param
* @return boolean
*/
function isAjaxPage()
{
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
$_SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest';
}
/**
* used to show the help tip
*
* @access public
* @param string key in help file
* @param string name for smarty
* @return static
*/
function ShowHelpTip($tip_key, $tipfor = '')
{
global $LANG, $CFG;
$tipfor = $tipfor?$tipfor:$tip_key;
$tip = str_replace("\n", '
', $LANG['help'][$tip_key]);
?>
<div class="clsHelpText" id="<?php echo $tipfor;?>_Help" style="visibility:hidden"><?php echo $tip;?></div>
<?php
}
/**
* check the current page is ajax request
*
* @access public
* @param
* @return boolean
*/
function isAjax()
{
return (isset($_REQUEST['ajax_page']) and $_REQUEST['ajax_page']==true) or (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
$_SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest');
}
/**
* used to change the format of date
*
* @access public
* @param string
* @return string
*/
function FMT_DATE($date)
{
return $date;
}
/**
* used to change the format of amount
*
* @access public
* @param string
* @return string
*/
function FMT_AMOUNT($amount)
{
global $CFG;
$exponent = pow(10, $CFG['framework']['no_of_decimals']);
return (floor($amount * $exponent) / $exponent);
}
/**
* to display the exposed query
*
* @access public
* @param string error message
* @param string new line character (currently we don't use the argument)
* @return static
*/
function ExposeQuery($msg, $newline = '')
{
GLOBAL $SQL_QUERIES;
$SQL_QUERIES .= "\n".$msg."\n";
}
/**
* to display debugging list
*
* @access public
* @param string error name
* @param string error description
* @return static
*/
function DEBUG($var_name, $var_desc='')
{
global $CFG, $DEBUG_TRACE;
if ($CFG['debug']['is_debug_mode'])
{
$DEBUG_TRACE .= "\n".$var_desc.':';
if (!is_array($var_name))
$var_name = htmlspecialchars($var_name);
$DEBUG_TRACE .= print_r($var_name, true);
if (is_array($var_name))
reset($var_name);
$DEBUG_TRACE .= "\n";
}
}
/**
* to redirection
*
* @access public
* @param string
* @return static
*/
function Redirect2URL($url)
{
global $CFG;
if(isAjaxpage() or $CFG['admin']['session_redirect_light_window_page'])
{
if(!isMember())
{
unset($_SESSION['url']);
$param = '';
if(isAjaxpage() and $CFG['html']['current_script_name'] != 'shareVideo')
$param = '?ajax_page=true';
$url = $CFG['auth']['ajax_url'].$param;
}
}
if (!headers_sent())
{
header('Location: '.URL($url));
//if IIS, then send Refresh header too (as a safe solution)...Location header doesn't seems to work in IIS
if (stristr($_SERVER['SERVER_SIGNATURE'], 'IIS'))
header('Refresh: 0;url='.$url);
}
else
{
trigger_error('Headers already sent', E_USER_NOTICE);
echo '<meta http-equiv="refresh" content="0; URL='.URL($url).'" />'."\n";
echo '<p>Please click this <a href="'.URL($url).'">link</a> to continue...</p>'."\n";
}
exit(0);
}
/**
* to get the advertisement
*
* @access public
* @param string block name
* @return string
*/
$______ADVERTISEMENT_ID = array();
function getAdvertisement($block,$not_allowed_page_name=array())
{
global $CFG;
global $db;
global $______ADVERTISEMENT_ID;
$block_condition='';
if(!chkAllowedModule(array('banner')))
return;
$cur_page_name=strtolower(basename($_SERVER['SCRIPT_NAME'], ".php")); /* supposing filetype .php*/
if(sizeof($not_allowed_page_name)>0 && in_array($cur_page_name,$not_allowed_page_name))
{
return false;
}
$sql = 'SELECT add_id, source FROM '.$CFG['db']['tbl']['advertisement'].' WHERE'.
' post_from=\'Admin\'AND block=\''.$block.'\''.
' AND status=\'activate\'';
if($CFG['admin']['banner']['impressions_date'])
{
$sql .= ' AND NOW()>=start_date AND (((allowed_impressions!=\'\' AND allowed_impressions!=0) AND'.
' (completed_impressions < allowed_impressions)) OR ((allowed_impressions=\'\''.
' OR allowed_impressions=0) AND (end_date!=\'0000-00-00 00:00:00\''.
' AND end_date > NOW())))';
}
$stmt = $db->Prepare($sql);
$rs = $db->Execute($stmt, array());
if (!$rs)
trigger_db_error($db);
$total_count = $rs->PO_RecordCount();
if(!$total_count)
{
$sql = 'SELECT add_id, source FROM '.$CFG['db']['tbl']['advertisement'].' WHERE'.
' post_from=\'Admin\' AND block LIKE \'%'.$block.'\''.
' AND status=\'activate\'';
if($CFG['admin']['banner']['impressions_date'])
{
$sql .= ' AND NOW()>=start_date AND (((allowed_impressions!=\'\' AND allowed_impressions!=0) AND'.
' (completed_impressions < allowed_impressions)) OR ((allowed_impressions=\'\''.
' OR allowed_impressions=0) AND (end_date!=\'0000-00-00 00:00:00\''.
' AND end_date > NOW())))';
}
$stmt = $db->Prepare($sql);
$rs = $db->Execute($stmt);
if (!$rs)
trigger_db_error($db);
$total_count = $rs->PO_RecordCount();
}
if(!$total_count)
return false;
$add_array = array();
$need = rand(1, $total_count);
$i = 1;
while($row = $rs->FetchRow())
{
if($need==$i)
{
echo htmlentitydecode($row['source']);
$______ADVERTISEMENT_ID[$row['add_id']] = $row['add_id'];
break;
}
$i++;
}
}
function htmlentitydecode($text)
{
global $CFG;
$default_charset = strtolower($CFG['site']['charset']);
$allwable_charsets = array('iso-8859-1', 'iso-8859-15', 'utf-8', 'cp866', 'cp1251',
'cp1252', 'koi8-r', 'big5', 'gb2312', 'big5-hkscs', 'shift_jis',
'euc-jp', 'iso8859-1', 'iso8859-15', 'ibm866', '866', 'windows-1251',
'win-1251', '1251', 'windows-1252', '1252', 'koi8-ru', 'koi8r', '950',
'936', 'sjis', '932', 'eucjp');
if(in_array($default_charset, $allwable_charsets))
{
$charset = $CFG['site']['charset'];
}
else
{
$charset = 'ISO-8859-1';
}
return @html_entity_decode($text, ENT_QUOTES, $charset);
}
/**
* to update the advertisement view count
*
* @access public
* @param
* @return static
*/
function updateAdvertisementCount()
{
global $______ADVERTISEMENT_ID;
global $CFG;
global $db;
if(!$CFG['admin']['banner']['impressions_date'])
return;
if(sizeof($______ADVERTISEMENT_ID))
{
$sql = 'UPDATE '.$CFG['db']['tbl']['advertisement'].' SET'.
' completed_impressions=completed_impressions+1'.
' WHERE add_id IN('.implode(',', $______ADVERTISEMENT_ID).')';
$stmt = $db->Prepare($sql);
$rs = $db->Execute($stmt);
if (!$rs)
trigger_db_error($db);
$______ADVERTISEMENT_ID = array();
}
}
function getCleanUrl($url)
{
global $CFG;
if($CFG['feature']['rewrite_mode']=='clean')
{
$url = str_replace('&', '/', $url);
$url = str_replace('?', '/', $url);
$url = str_replace('&', '/', $url);
$url = str_replace('=', '/', $url);
}
return $url;
}
function populateGETValue()
{
global $CFG;
if($CFG['feature']['rewrite_mode']=='clean')
{
if($CFG['site']['query_string'])
{
$query_string = getCleanUrl($CFG['site']['query_string']);
/*while(strpos($query_string, '//'))
{
$query_string = str_replace('//', '/', $query_string);
}*/
if(strpos($query_string, '/')===0)
$query_string = substr($query_string, 1);
if(strrpos($query_string, '/')==strlen($query_string)-1)
$query_string = substr($query_string, 0, strlen($query_string)-1);
$query_string_arr = explode('/', $query_string);
for($i=0;$i<sizeof($query_string_arr);$i = $i+2)
{
$_REQUEST[$query_string_arr[$i]] = $_GET[$query_string_arr[$i]] = isset($query_string_arr[$i+1])?urldecode(str_replace('%25', '%', $query_string_arr[$i+1])):'';
}
}
}
}
populateGETValue();
/**
* to get the url based on htaccess setting
*
* @access public
* @param string file_name url
* @param string normal url
* @param string htaccess url
* @param boolean check url need to change or not(it may be current, root, members, nothing)
* @return string
*/
function getUrl($file_name, $normal = '', $htaccess = '', $change = '',$module='')
{
global $CFG;
global $folder_names_arr;
$relativeUrl='';
if(!$change)
{
$change='current';
}
$normal = $CFG['page_url'][$file_name]['normal'].$normal;
$htaccess = $CFG['page_url'][$file_name]['htaccess'].$htaccess;
if($CFG['feature']['rewrite_mode']=='clean')
{
$restricted_pages = array('addbookmark');
if(!in_array($file_name, $restricted_pages))
{
$normal = getCleanUrl($normal);
}
}
if($CFG['feature']['rewrite_mode']=='htaccess')
{
if(strrpos($htaccess, '/')==strlen($htaccess)-1 and ($htaccess!=$CFG['site']['url']) and ($htaccess!=$CFG['site']['url'].'/members/') and ($htaccess!=$CFG['site']['url'].'/admin/'))
{
$htaccess = substr($htaccess, 0, strrpos($htaccess, '/')).$CFG['feature']['rewrite_mode_endwith'];
}
$htaccess = str_replace('/?', '.html?', $htaccess);
$htaccess = str_replace('/&', '.html&', $htaccess);
}
if($module)
{
if($CFG['site']['relative_url']==$CFG['site']['url'])
{
$relativeUrl=$CFG['site']['url'].$module.'/';
}
foreach($folder_names_arr as $folder)
{
if($CFG['site']['relative_url']==$CFG['site']['url'].$folder)
{
$relativeUrl=$CFG['site']['url'].$module.'/'.$folder;
break;
}
}
foreach($CFG['site']['modules_arr'] as $mod)
{
if($CFG['site']['relative_url']==$CFG['site']['url'].$mod.'/')
{
$relativeUrl=$CFG['site']['url'].$module.'/';
break;
}
if($CFG['site']['relative_url']==$CFG['site']['url'].$mod.'/members/')
{
$relativeUrl=$CFG['site']['url'].$module.'/members/';
break;
}
if($CFG['site']['relative_url']==$CFG['site']['url'].$mod.'/rss/')
{
$relativeUrl=$CFG['site']['url'].$module.'/rss/';
break;
}
if($CFG['site']['relative_url']==$CFG['site']['url'].'admin/'.$mod.'/')
{
$relativeUrl=$CFG['site']['url'].'admin/'.$module.'/';
break;
}
}
$siteUrl=$CFG['site']['url'].$module.'/';
}
else
{
foreach($CFG['site']['modules_arr'] as $mod)
{
if($CFG['site']['relative_url']==$CFG['site']['url'].$mod.'/')
{
$CFG['site']['relative_url']=$CFG['site']['url'];
}
if($CFG['site']['relative_url']==$CFG['site']['url'].$mod.'/members/')
{
$relativeUrl=$CFG['site']['url'].'members/';
break;
}
if($CFG['site']['relative_url']==$CFG['site']['url'].$mod.'/rss/')
{
$relativeUrl=$CFG['site']['url'].'rss/';
break;
}
if($CFG['site']['relative_url']==$CFG['site']['url'].$mod.'/admin/')
{
$relativeUrl=$CFG['site']['url'].'admin/';
break;
}
}
$siteUrl=$CFG['site']['url'];
}
if(!$relativeUrl)
{
$relativeUrl=$CFG['site']['relative_url'];
$siteUrl=$CFG['site']['url'];
}
switch($change)
{
case 'current':
if($CFG['feature']['rewrite_mode']=='htaccess')
return $relativeUrl.$htaccess;
else
return $relativeUrl.$normal;
break;
case 'root':
if($CFG['feature']['rewrite_mode']=='htaccess')
return $siteUrl.$htaccess;
else
return $siteUrl.$normal;
break;
case 'members':
if($CFG['feature']['rewrite_mode']=='htaccess')
return $siteUrl.'members/'.$htaccess;
else
return $siteUrl.'members/'.$normal;
break;
case 'admin':
if($CFG['feature']['rewrite_mode']=='htaccess')
return $siteUrl.'admin/'.$htaccess;
else
return $siteUrl.'admin/'.$normal;
break;
case 'nothing':
if($CFG['feature']['rewrite_mode']=='htaccess')
return $htaccess;
else
return $normal;
break;
}
}
function getCurrentUrl($with_query_string = false)
{
global $CFG;
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if(!$with_query_string)
{
if(strpos($url, '?'))
$url = substr($url, 0, strpos($url, '?'));
if(strpos($url, '.php'))
$url = substr($url, 0, strpos($url, '.php')+4);
//$url = $CFG['site']['relative_url'].$CFG['site']['script_name'];
}
return $url;
}
function getQueryString($url)
{
if(strpos($url, '?'))
$url = substr($url, strpos($url, '?'));
if(strpos($url, '.php'))
$url = substr($url, strpos($url, '.php')+4);
return $url;
}
/**
* to control the module
*
* @access public
* @param array module list
* @return boolean
*/
function chkAllowedModule($module_arr = array())
{
global $CFG;
foreach($module_arr as $key=>$value)
{
if(!isset($CFG['admin']['module'][$value]) or
!$CFG['admin']['module'][$value])
return false;
}
return true;
}
/**
* to check member logged in or not
*
* @access public
* @param
* @return boolean
*/
function isMember()
{
if(isset($_SESSION['user']['user_id']) and $_SESSION['user']['user_id'])
return true;
return false;
}
function ispaidmember(){
if(isset($_SESSION['user']['is_paid_member']) and $_SESSION['user']['is_paid_member']=='Yes')
return true;
return false;
}
function chkAndUpdatePaidMember(){
global $db;
global $CFG;
$sql = 'SELECT is_paid_member FROM '.$CFG['db']['tbl']['users'].' WHERE user_id ='.$db->Param('user_id');
$stmt = $db->Prepare($sql);
$rs = $db->Execute($stmt, array($CFG['user']['user_id']));
if (!$rs)
trigger_db_error($db);
if($row = $rs->FetchRow())
{
$_SESSION['user']['is_paid_member']=$row['is_paid_member'];
}
}
/**
* to check admin logged in or not
*
* @access public
* @param
* @return boolean
*/
function isAdmin()
{
if((isset($_SESSION['user']['user_id']) and $_SESSION['user']['user_id']) and (isset($_SESSION['admin']['is_logged_in']) and $_SESSION['admin']['is_logged_in']))
return true;
return false;
}
/**
* to check display the block for particular pages
*
* @access public
* @param array pages list
* @param boolean make functionality to reverse
* @return boolean
*/
function displayBlock($allowed_pages = array(), $reverse = false)
{
global $CFG;
if($allowed_pages and in_array('index.php', $allowed_pages) and !$reverse)
$allowed_pages=array_merge($CFG['site']['side_menu_showing_pages'],$allowed_pages);
$REQUEST_UNAME = (isset($_REQUEST['uname']))?($_REQUEST['uname']):(isset($CFG['user']['user_name'])?$CFG['user']['user_name']:'');
$script_name = substr($_SERVER['SCRIPT_NAME'], strrpos($_SERVER['SCRIPT_NAME'], '/')+1);
if(!$reverse)
{
if(in_array($script_name, $allowed_pages))
return true;
return false;
}
else
{
if(!in_array($script_name, $allowed_pages))
return true;
return false;
}
}
/**
* to change the url and email to clickable from given text
*
* @access public
* @param string
* @return string
*/
function makeClickableLinks($text)
{
$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text);
$ret = ' ' . $text;
$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
$ret = substr($ret, 1);
return $ret;
}
/**
* to connect the db
*
* @access public
* @param
* @return static
*/
function dbConnect()
{
global $db;
global $CFG;
$db->Connect($CFG['db']['hostname'], $CFG['db']['username'], $CFG['db']['password'], $CFG['db']['name']);
if (!$db)
trigger_error('DB Connection Error', E_USER_ERROR);
}
/**
* to disconnect the db
*
* @access public
* @param
* @return static
*/
function dbDisconnect()
{
global $db;
global $CFG;
$db->Disconnect();
}
function getUserDisplayName($user_fields_arr)
{
global $CFG;
$user_fields_arr['user_name'] = isset($user_fields_arr['user_name'])?$user_fields_arr['user_name']:'';
$user_fields_arr['first_name'] = isset($user_fields_arr['first_name'])?$user_fields_arr['first_name']:'';
$user_fields_arr['middle_name'] = isset($user_fields_arr['middle_name'])?$user_fields_arr['middle_name']:'';
$user_fields_arr['last_name'] = isset($user_fields_arr['last_name'])?$user_fields_arr['last_name']:'';
$display_name = $CFG['username']['display_format'];
$display_name = str_replace('{first_name}', $user_fields_arr['first_name'], $display_name);
$display_name = str_replace('{middle_name}', $user_fields_arr['middle_name'], $display_name);
$display_name = str_replace('{last_name}', $user_fields_arr['last_name'], $display_name);
$display_name = str_replace('{user_name}', $user_fields_arr['user_name'], $display_name);
return trim($display_name);
}
function populateRichTextEdit($field_name='', $value='', $useHtmlSpChars = true)
{
global $CFG;
global $LANG;
$param = 'framework_page';
$_SESSION[$param] = urlencode($value);
?>
<script language="JavaScript" type="text/javascript" src="<?php echo $CFG['site']['url'];?>js/lib/richtext/richtext.js"></script>
<script language="JavaScript" type="text/javascript">
var palette_url = '<?php echo $CFG['site']['url'].'js/lib/richtext/palette.htm';?>';
var field_name = '<?php echo $field_name;?>';
var filenameNew = "<?php echo $CFG['site']['url'];?>richText.php?htmSpChar=<?php echo $useHtmlSpChars?1:0;?>&source=<?php echo $param;?>";
function submitForm() {
updateRTE('rte1');
alert("rte1 = " + document.RTEDemo.rte1.value);
return false;
}
initRTE("<?php echo $CFG['site']['url'];?>js/lib/richtext/icons/", "<?php echo $CFG['site']['url'];?>js/lib/richtext/", "");
</script>
<noscript><p><b><?php echo $LANG['javascript_enabled'];?></b></p></noscript>
<script language="JavaScript" type="text/javascript">
if(!b.isFirefox())
{
writeRichText('rte1', '', 400, 200, true, false);
}
</script>
<?php
if ($useHtmlSpChars)
{
$value = htmlspecialchars($value);
}
?>
<input type="hidden" id="<?php echo $field_name;?>" name="<?php echo $field_name;?>" value="<?php echo ($value);?>" />
<script language="JavaScript" type="text/javascript">
if(b.isFirefox())
{
writeRichText('rte1', '', 400, 200, true, false);
}
</script>
<?php
}
function populateWYSIWYGeditor($field_name)
{
global $CFG;
global $LANG;
if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'opera'))
return;
?>
<script language="JavaScript" type="text/javascript" src="<?php echo $CFG['site']['url'];?>js/lib/wysiwyg/wysiwyg.js"></script>
<script language="javascript" type="text/javascript">
generate_wysiwyg('<?php echo $field_name;?>');
</script>
<?php
}
function populateTinyMceEditor($field_name='', $value='')
{
global $CFG;
global $LANG;
?>
<script type="text/javascript" src="<?php echo $CFG['site']['url'];?>js/lib/tinymce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
mode : "exact",
elements: "<?php echo $field_name; ?>",
theme : "advanced",//"advanced", "simple"
plugins : "safari,spellchecker,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,preview",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,ltr,rtl",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,|,visualchars,nonbreaking,blockquote,|,forecolor,backcolor,|,print,|,fullscreen",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "none",
width: "100%",
height : "370",
theme_advanced_resizing_min_height : 370,
theme_advanced_resizing_max_height : 500,
use_native_selects : true,
convert_urls : false,
remove_script_host : false,
//relative_urls : false,
//theme_advanced_resizing : true,
spellchecker_languages : "+English=en",
tab_focus : ':prev,:next',
//auto_resize: true
cleanup_on_startup : true
// Replace values for the template plugin
/*template_replace_values : {
username : "Some User",
staffid : "991234"
}*/
});
</script>
<div id="desc_textarea"><textarea name="<?php echo $field_name; ?>"><?php echo $value; ?></textarea></div>
<noscript><p><b><?php echo $LANG['javascript_enabled'];?></b></p></noscript>
<?php
}
function populateSimpleTinyMceEditor($field_name='', $value='')
{
global $CFG;
global $LANG;
?>
<script type="text/javascript" src="<?php echo $CFG['site']['url'];?>js/lib/tinymce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
mode : "exact",
elements: "<?php echo $field_name; ?>",
theme : "advanced",//"advanced", "simple"
plugins : "safari,advlink,emotions,inlinepopups,noneditable,xhtmlxtras",
// Theme options
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,undo,redo,cleanup,|,styleselect,formatselect,fontselect,fontsizeselect,",
theme_advanced_buttons2 : "bullist,numlist,|,justifyleft,justifycenter,justifyright,justifyfull,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,|,link,unlink,|,forecolor,|,code",
theme_advanced_buttons3 : false,
theme_advanced_buttons4 : false,
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "none",
width: "100%",
height : "370",
theme_advanced_resizing_min_height : 370,
theme_advanced_resizing_max_height : 500,
use_native_selects : true,
convert_urls : false,
remove_script_host : false,
//relative_urls : false,
//theme_advanced_resizing : true,
//auto_resize: true
cleanup_on_startup : true
// Replace values for the template plugin
/*template_replace_values : {
username : "Some User",
staffid : "991234"
}*/
});
</script>
<div id="desc_textarea"><textarea name="<?php echo $field_name; ?>"><?php echo $value; ?></textarea></div>
<noscript><p><b><?php echo $LANG['javascript_enabled'];?></b></p></noscript>
<?php
}
function writeLog($file_name, $data)
{
global $CFG;
if($CFG['feature']['log'])
{
chkAndCreateFolder($CFG['site']['project_path'].'files/logs/');
$path = $CFG['site']['project_path'].'files/logs/'.$file_name;
$seperator = "\n--------------------------------------------------------------------\n\n";
$data = date('Y-m-d H:i:s')."\n.....................\n".$data.$seperator;
write_file($path, $data, 'a+');
}
}
function isMemberShipValid($date)
{
global $db, $CFG;
if(!$CFG['feature']['signup_payment'])
return true;
$sql = 'SELECT NOW()<\''.$date.'\' AS date_diff';
$stmt = $db->Prepare($sql);
$rs = $db->Execute($stmt);
if (!$rs)
trigger_db_error($db);
$row = $rs->FetchRow();
return $row['date_diff'];
}
function to7bit($text)
{
global $CFG;
$text = mb_convert_encoding($text,'HTML-ENTITIES',$CFG['site']['charset']);
$text = preg_replace( array('/ß/','/&(..)lig;/', '/&([aouAOU])uml;/','/&(.)[^;]*;/'), array('ss',"$1","$1".'e',"$1"), $text);
return $text;
}
function getUrlTitle($text)
{
$text = to7bit($text);
$text = ereg_replace ('[^a-zA-Z0-9]', '_', $text);
return $text;
}
function setMetaKeywords($keywords)
{
global $LANG,$CFG;
$currentPage = strtolower($CFG['html']['current_script_name']);
if(isset($LANG['header_meta_'.$currentPage.'_keywords']))
{
$LANG['header_meta_'.$currentPage.'_keywords'] .= ', '.$keywords ;
return;
}
$LANG['header_meta_'.$currentPage.'_keywords'] = $keywords ;
return;
}
function setMetaDescription($description)
{
global $LANG,$CFG;
$currentPage = strtolower($CFG['html']['current_script_name']);
if(isset($LANG['header_meta_'.$currentPage.'_description']))
{
$LANG['header_meta_'.$currentPage.'_description'] .= ' '.$description ;
return;
}
$LANG['header_meta_'.$currentPage.'_description'] = $description ;
return;
}
function setPageTitle($title)
{
global $LANG,$CFG;
$currentPage = strtolower($CFG['html']['current_script_name']);
if(isset($LANG['header_meta_'.$currentPage.'_title']))
{
$LANG['header_meta_'.$currentPage.'_title'] = $title ;
return;
}
$LANG['header_meta_'.$currentPage.'_title'] = $title ;
return;
}
function regSupportText($text)
{
$not_su = array('(', ')', '{', '}', '[', ']', '>', '<', '$', '^');
foreach($not_su as $value)
{
if(strstr($text, $value))
{
return false;
}
}
return true;
}
function getInitialFilterLink()
{
global $CFG;
global $LANG;
$url = $CFG['site']['url'].'members/changeContentFilterStatus.php';
$method_type = 'post';
$onlink = '<a href="#" onClick="return chnageContentFilter(\''.$url.'\', \'status=On\', \''.$method_type.'\')">'.$LANG['header_off_link'].'</a>';
$onlink_non_member = '<a href="'.getUrl('profilesettings', '', '', 'members').'">'.$LANG['header_on_link'].'</a>';
$offlink_non_member = '<a href="'.getUrl('profilesettings', '', '', 'members').'">'.$LANG['header_off_link'].'</a>';
$offlink = '<a href="#" onClick="return chnageContentFilter(\''.$url.'\', \'status=Off\', \''.$method_type.'\')">'.$LANG['header_on_link'].'</a>';
if (!chkAllowedModule(array('content_filter')))
return '';
if($CFG['admin']['is_logged_in'])
{
if($CFG['user']['content_filter'] == 'Off')
return $onlink;
else if($CFG['user']['content_filter'] == 'On')
return $offlink;
return;
}
if(isAdultUser('allow'))
{
if(isset($CFG['admin']['videos']['adult_content_view'])
and $CFG['admin']['videos']['adult_content_view']=='No')
{
return $LANG['header_on_link'];
}
else
{
if($CFG['user']['content_filter'] == 'Off')
{
if(isMember())
return $onlink;
else
return $onlink_non_member;
}
else if($CFG['user']['content_filter'] == 'On')
{
if(isMember())
return $onlink;
else
return $onlink_non_member;
}
else if(isset($CFG['admin']['videos']['adult_content_view'])
and $CFG['admin']['videos']['adult_content_view']!='No')
{
if(isMember())
return $onlink;
else
return $onlink_non_member;
}
}
}
else
{
if(isset($CFG['admin']['videos']['adult_content_view'])
and $CFG['admin']['videos']['adult_content_view']=='No')
{
return $LANG['header_on_link'];
}
else
{
if(isMember())
{
return $LANG['header_on_link'];
}
else
{
return $onlink_non_member;
}
}
}
}
function searchJavaScriptCode()
{
?>
<script type="text/javascript">
function changeAction(){
var obj = document.formCommonSearch;
var act_url = '';
if(obj.tags.value=='')
return false;
switch (obj.soption.value){
case 'videos':
act_url = '<?php echo getUrl('videolist', '?pg=videonew&tags=', 'videonew/?tags=');?>';
obj.action = act_url+obj.tags.value;
return true;
break;
case 'members':
act_url = '<?php echo getUrl('memberslist', '?tags=', '?tags=');?>';
obj.action = act_url + obj.tags.value;
return true;
default:
return false;
break;
}
}
function changeActionSub(){
var obj = document.formCommonSearchSub;
var act_url = '';
if(obj.tagsSub.value=='')
return false;
switch (obj.soptionSub.value){
case 'videos':
act_url = '<?php echo getUrl('videolist', '?pg=videonew&tags=', 'videonew/?tags=');?>';
act_url = act_url+obj.tagsSub.value;
act_url = act_url+'&cid='+obj.catIdSub.value;
obj.action = act_url;
return true;
break;
case 'members':
act_url = '<?php echo getUrl('memberslist', '?tags=', '?tags=');?>';
act_url = act_url + obj.tagsSub.value;
obj.action = act_url;
return true;
default: