PHP Classes

File: ilaria.php

Recommend this page to a friend!
  Classes of Giulio Bai   Ilaria   ilaria.php   Download  
File: ilaria.php
Role: Class source
Content type: text/plain
Description: Main class file
Class: Ilaria
General purpose functions for Web development
Author: By
Last change:
Date: 16 years ago
Size: 59,120 bytes
 

Contents

Class file image Download
<?php class Ilaria { var $package; var $version; var $functions; var $include_path; function Ilaria () { $this->package = "ILARIA - I Love Avoiding Repetitions In Applications"; $this->version = 1.0; /** * DATES_TIME : 11 * FILES : 7 * MISC : 9 * NUMBERS_ARRAYS : 3 * TEXT : 11 * VALIDATIONS : 9 */ $this->functions = 50; $this->include_path = "include/"; } // DATES - TIME /** * A simple html/pjp formatted calendar which returns the date as * a unix timestamp when the required day is selected. * Also allows for setting of time in the 24h format. * * @author Kris Dover <krisdover@hotmail.com> * @from http://php.net/date * * @return void */ function calendar () { $sel_date = isset($_REQUEST['sel_date']) ? $_REQUEST['sel_date'] : time(); if (isset($_POST['hrs'])) { $t = getdate($sel_date); $sel_date = mktime($_POST['hrs'], $_POST['mins'], $t['seconds'], $t['mon'], $t['mday'], $t['year']); } $t = getdate($sel_date); $start_date = mktime($t['hours'], $t['minutes'], $t['seconds'], $t['mon'], 1, $t['year']); $start_date -= 86400 * date('w', $start_date); $prev_year = mktime($t['hours'], $t['minutes'], $t['seconds'], $t['mon'], $t['mday'], $t['year'] - 1); $prev_month = mktime($t['hours'], $t['minutes'], $t['seconds'], $t['mon'] - 1, $t['mday'], $t['year']); $next_year = mktime($t['hours'], $t['minutes'], $t['seconds'], $t['mon'], $t['mday'], $t['year'] + 1); $next_month = mktime($t['hours'], $t['minutes'], $t['seconds'], $t['mon'] + 1, $t['mday'], $t['year']); ?> <form method="post"> <table width="180" border="0" cellspacing="1" style="border: 1px solid black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small; text-align: center"> <tr> <td width="14%" bgcolor="#66FF99"> <a href="?sel_date=<?= $prev_year ?>" style="text-decoration: none" title="Prevous Year">&lt;&lt;</a> </td> <td width="14%" bgcolor="#66FF99"> <a href="?sel_date=<?= $prev_month ?>" style="text-decoration: none" title="Prevous Month">&lt;</a> </td> <td colspan="3" bgcolor="#66FF99"> <?= date('M Y', $sel_date) ?> </td> <td width="14%" bgcolor="#66FF99"> <a href="?sel_date=<?= $next_month ?>" style="text-decoration: none" title="Next Month">&gt;</a> </td> <td width="14%" bgcolor="#66FF99"> <a href="?sel_date=<?= $next_year ?>" style="text-decoration: none" title="Next Year">&gt;&gt;</a> </td> </tr> <tr> <td bgcolor="#0099FF">Sun</td> <td bgcolor="#0099FF">Mon</td> <td width="14%" bgcolor="#0099FF">Tue</td> <td width="14%" bgcolor="#0099FF">Wed</td> <td width="14%" bgcolor="#0099FF">Thu</td> <td bgcolor="#0099FF">Fri</td> <td bgcolor="#0099FF">Sat</td> </tr> <?php $day = 1; for ($i=$start_date; $day<=42; $i+=86400, $day++) { if ($day % 7 == 1) { echo "<tr>\n"; } if ($t['mon'] == date('n', $i )) { if ($i == $sel_date) { echo ' <td bgcolor="gold">'. date('j', $i) ."</td>\n"; } else { echo ' <td><a href="?sel_date='. $i .'" style="text-decoration: none">'. date('j', $i) ."</a></td>\n"; } } else { echo ' <td ><a href="?sel_date='. $i .'" style="text-decoration: none"><font color="silver">'. date('j', $i) ."</font></a></td>\n"; } if ($day % 7 == 0) { echo "</tr>\n"; } } ?> <tr> <td colspan="7" align="left" bgcolor="silver">Time: <select name="hrs" onchange="document.forms[0].submit()"> <?php for ($i=0; $i<24; $i++) { echo ' <option '. (date('G', $sel_date)==$i ? 'selected':'') .'>'. sprintf('%02d', $i) ."</option>\n"; } ?> </select>: <select name="mins" onchange="document.forms[0].submit()"> <?php for ($i=0; $i<60; $i++) { echo ' <option '. (date('i', $sel_date)==$i ? 'selected':'') .'>'. sprintf('%02d', $i) ."</option>\n"; } ?> </select> hrs <input type="hidden" name="sel_date" value="<?= $sel_date ?>"> </td> </tr> </table> </form> <?php } /** * Converts a date to number of days * * @from PEAR * * @param int $day the day of the month * @param int $month the month * @param int $year the year * @return int the number of days since that date */ function date2days($day, $month, $year) { $century = substr($year, 0, 2); $year = substr($year, 2, 2); if ($month > 2) { $month -= 3; } else { $month += 9; if ($year) { $year --; } else { $year = 99; $century --; } } return (floor((146097 * $century) / 4 ) + floor((1461 * $year) / 4 ) + floor((153 * $month + 2) / 5 ) + $day + 1721119); } /** * Returns an array containing all the parameters of a date * * @param string $time_format time format to split * @param string $separator the separator used in the date string * @return array array containing all the parts of the date */ function get_date_array ($time_format, $separator) { return explode($separator, date($time_format)); } /** * Gets all month names * * @param bool $abbr if NOT set names are full-length ones [default: false] * @param int $year the current year [default: 2007] * @return array array with names ordered by months' position in the year */ function get_months_names($abbr = 0, $year = 2007) { $months = array(); for ($i=1; $i<13; $i++) { $month = strftime('%B', mktime(0, 0, 0, $i, 1, $year)); if ($abbr) { $month = substr($month, 0, 3); } $months[$i] = $month; } return $months; } /** * Gets a single month name * * @param bool $abbr if NOT set names are full-length ones [default: false] * @param int $year the current year [default: 2007] * @return string the month name */ function get_month_name($month, $abbr = 0, $year = 2007) { $months = $this->get_months_names($abbr, $year); return $months[$month]; } /** * Gets all weekday names * * @param bool $abbr if NOT set names are full-length ones [default: false] * @param int $year the current year [default: 2007] * @return array array with names ordered by days' position in the week */ function get_weekdays_names($abbr = 0, $year = 2007) { for ($i=1; $i<8; $i++) { $weekday = strftime('%A', mktime(0, 0, 0, 1, $i, $year)); if ($abbr) { $weekday = substr($weekday, 0, 3); } $weekdays[$i] = $weekday; } return $weekdays; } /** * Gets a single weekday name * * @param int $day the number of the day in the week * @param bool $abbr if NOT set names are full-length ones [default: false] * @param int $year the current year [default: 2007] * @return string the day name */ function get_weekday_name($day, $abbr = 0, $year = 2007) { $weekdays = $this->get_weekdays_name($abbr, $year); return $weekdays[$day]; } /** * What time is it? * * @param string $time_format the format you want the time in [default: H:i:s] * @return string the current time */ function get_time($time_format = "H:i:s") { return date($time_format); } /** * Gets the current day * * @param bool $name literal (1) or numeric (0) expression [default: 0] * @param bool $abbr determines if the literal result must be shorten [default: 1] * @return mixed the current day expressed by a number or its own name */ function this_day ($name = 0, $abbr = 1) { $day = date("d"); if ($name) { $day = $this->get_weekday_name($day, $abbr); } return $day; } /** * Gets the current month * * @param bool $name literal (1) or numeric (0) expression [default: 0] * @param bool $abbr determines if the literal result must be shorten [default: 1] * @return mixed the current month expressed by a number or its own name */ function this_month ($name = 0, $abbr = 1) { $month = date("m"); if ($name) { $day = $this->get_weekday_name($month, $abbr); } return $month; } /** * Gets the current year * * @param bool $abbr determines if the literal result must be shorten [default: 0] * @return mixed the current year in 2/4 figures */ function this_year ($abbr = 0) { $format = "Y"; if ($abbr) { $format = "y"; } $year = date($format); return $year; } // FILES /** * Deletes a directory after have empty it [recursive] * * @param string $directory the path to the directory * @return void */ function deldir($directory) { $directory_contents = scandir($directory); foreach ($directory_contents as $item) { if (is_dir($directory . $item) && $item != '.' && $item != '..') { $this->deldir($directory . $item . '/'); } elseif (file_exists($directory . $item) && $item != '.' && $item != '..') { unlink($directory . $item); } } rmdir($directory); } /** * Deletes all file in a certain location [recursive] * * @param string $source the path to delete files from * @return bool 0 on failure, 1 otherwise */ function delfiles($source) { $folder = opendir($source); while ($file = readdir($folder)) { if ($file == '.' || $file == '..') { } if (is_dir($source . '/' . $file)) { $this->delfiles($source . '/' . $file); } else { unlink($source . '/' . $file); return 0; } } closedir($folder); rmdir($source); return 1; } /** * Copies a directory and its content to another location * * @param string $srcdir the path to the source directory * @param string $dstdir the destination path * @param bool $verbose If true, prints out some message [default: false] * @return int 0 on failure */ function dircopy($srcdir, $dstdir, $verbose = false) { $num = 0; if (!is_dir($dstdir)) { mkdir($dstdir); } if ($curdir = opendir($srcdir)) { while ($file = readdir($curdir)) { if ($file != '.' && $file != '..') { $srcfile = $srcdir . '\\' . $file; $dstfile = $dstdir . '\\' . $file; if (is_file($srcfile)) { if (is_file($dstfile)) { $ow = filemtime($srcfile) - filemtime($dstfile); } else { $ow = 1; } if ($ow > 0) { if ($verbose) { echo "Copying '$srcfile' to '$dstfile'..."; } if (copy($srcfile, $dstfile)) { touch($dstfile, filemtime($srcfile)); $num ++; if ($verbose) { echo "OK\n"; } } else { return 0; } } } else if (is_dir($srcfile)) { $num += $this->dircopy($srcfile, $dstfile, $verbose); } } } closedir($curdir); } return $num; } /** * Gets the file extension * * @param string $file_name the file name * @return string the extension (without the dot [.]) */ function get_ext($file_name) { $efile_name = explode('.', $file_name); $ext = $efile_name[count($efile_name) - 1]; return $ext; } /** * Prints a list of all the files contained in a directory * * @param string $path the path containing the files to list * @return mixed 0 on failure, else the array of files */ function list_files($path) { $files = array(); $fileNames = array(); $sortedFiles = array(); $i = 0; if (is_dir($path)) { if ($dh = opendir($path)) { while (($file = readdir($dh)) !== false) { if ($file == "." || $file == "..") { continue; } $fullpath = $path . "/" . $file; $fkey = strtolower($file); while (array_key_exists($fkey, $fileNames)) { $fkey .= " "; } $a = stat($fullpath); $files[$fkey]['size'] = $a['size']; if ($a['size'] == 0) { $files[$fkey]['sizetext'] = "-"; } elseif ($a['size'] > 1024) { $files[$fkey]['sizetext'] = (ceil($a['size'] / 1024 * 100) / 100) . " K"; } elseif ($a['size'] > 1024 * 1024) { $files[$fkey]['sizetext'] = (ceil($a['size'] / (1024 * 1024) * 100) / 100) . " Mb"; } else { $files[$fkey]['sizetext'] = $a['size'] . " bytes"; } $files[$fkey]['name'] = $file; $files[$fkey]['type'] = filetype($fullpath); $fileNames[$i++] = $fkey; } closedir($dh); } else { return 0; } } else { return 0; } sort($fileNames, SORT_STRING); $i = 0; foreach($fileNames as $f) { $sortedFiles[$i++] = $files[$f]; } return $sortedFiles; } /** * Unzips files in an archive by using the ZipFolder class * * @param string $zipfile name of the file to unzip * @param string $savepath path to where save the archive contents * @param string $target_dirname path to the extract directory * @param bool $del if 1 deletes the archive saved in $savepath [default: 1] * @return void */ function UnZipThem($zipfile, $savepath, $target_dirname, $del = 1) { include_once($this->include_path . "ZipFolder.php"); $unzipper = new ZipFolder; // Set the load path of the compressed archive $unzipper->setSavePath($savepath); // Set the zip file to be uncompressed $unzipper->setFile($zipfile); // Set the name of the folder where the zip file will be uncompressed $unzipper->setFolder($target_dirname); // Set the save path of the uncompressed archive $unzipper->setSavePath($savepath); // Once the parameters have been set we will uncompress the zip file $unzipper->openZip(); if ($del) { // After the zip folder has been uncompressed we will delete it $unzipper->eraseZip(); } } /** * Alternative to scandir for php4 * * @author Aryel <aryel@redtwilight.com.br> * @from http://www.php.net/manual/en/function.scandir.php */ function php4_scandir($dir,$listDirectories=false, $skipDots=true) { $dirArray = array(); if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if (($file != "." && $file != "..") || $skipDots == true) { if ($listDirectories == false) { if (is_dir($file)) { continue; } } array_push($dirArray,basename($file)); } } closedir($handle); } return $dirArray; } // MISC function random_color() { $chars = "abcdef0123456789"; srand((double)microtime() * 1000000); $color = ''; for ($i=0; $i<6; $i++) { $num = rand(0, 15); $tmp = substr($chars, $num, 1); $color .= $tmp; } return "#" . $color; } function put_contents($filename, $contents) { $file = @fopen($filename, "w"); if (!$file) { return false; } else { fwrite($file, $contents); fclose($file); return true; } } function bbcode($text){ $text = nl2br(htmlspecialchars($text)); $search = array( '`\[b\](.+?)\[/b\]`is', '`\[i\](.+?)\[/i\]`is', '`\[u\](.+?)\[/u\]`is', '`\[strike\](.+?)\[/strike\]`is', '`\[color=#([0-9]{6})\](.+?)\[/color\]`is', '`\[email\](.+?)\[/email\]`is', '`\[img\](.+?)\[/img\]`is', '`\[url=([a-z0-9]+://)([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\](.*?)\[/url\]`si', '`\[url\]([a-z0-9]+?://){1}([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\[/url\]`si', '`\[url\]((www|ftp)\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\[/url\]`si', '`\[quote\](.+?)\[/quote\]`is', '`\[code](.+?)\[/code\]`is' ); $replace = array( '<strong>\\1</strong>', '<em>\\1</em>', '<span style="border-bottom: 1px dotted">\\1</span>', '<strike>\\1</strike>', '<span style="color:#\1;">\2</span>', '<a href="mailto:\1">\1</a>', '<img src="\1" alt="" />', '<a href="\1\2">\6</a>', '<a href="\1\2">\1\2</a>', '<a href="http://\1">\1</a>', '<strong>Quote:</strong><blockquote><em>\1</em></blockquote>', '<pre>\\1</pre>', ); $text = preg_replace($search, $replace , $text); return $text; } /** * Converts money amounts from EUROS to another currency and viceversa * * @param float $value value to convert * @param string $way the type of conversion * AUD : Australian Dollars * CAD : Canadian Dollars * CHF : Swiss ... * EUR : Euros * CNY : Chinese Y... * DKK : Denemark Korona * GBP : Great Britain Pounds * HKD : ...? * HUF : Hungarian F... * INR : ...? * JPY : Japanese Yens * MXN : Mexican N... * MYN : Malaysian N... * NOK : Norway Korona * NZD : New Zeland Dollars * RUB : Russian B... * SEK : ...? * SGB : ...? * THB : Thailandia B... * USD : United States Dollars * ZAR : ..? * use the format "eur-[other_value]" or "[other_value]-eur" [default: eur-usd] * @param float $cval 1 euro is equal to this amount of money in the other currency [default: NULL] * @return float money amont converted! */ function cconv($value, $way = "eur-usd", $cval = NULL) { if (is_numeric($value)) { $way = strtolower($way); switch ($way) { case "eur-usd" : case "usd-eur" : if (is_null($cval)) { $cval = 1.35; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-jpy" : case "jpy-eur" : if (is_null($cval)) { $cval = 160.9; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-gbp" : case "gbp-eur" : if (is_null($cval)) { $cval = 0.; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-aud" : case "aud-eur" : if (is_null($cval)) { $cval = 1.63; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-cad" : case "cad-eur" : if (is_null($cval)) { $cval = 1.53; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-chf" : case "chf-eur" : if (is_null($cval)) { $cval = 1.64; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-cny" : case "cny-eur" : if (is_null($cval)) { $cval = 10.49; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-dkk" : case "dkk-eur" : if (is_null($cval)) { $cval = 7.45; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-hkd" : case "hkd-eur" : if (is_null($cval)) { $cval = 10.62; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-huf" : case "huf-eur" : if (is_null($cval)) { $cval = 246.2; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-inr" : case "inr-eur" : if (is_null($cval)) { $cval = 246.2; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-mxn" : case "mxn-eur" : if (is_null($cval)) { $cval = 14.96; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-myr" : case "myr-eur" : if (is_null($cval)) { $cval = 4.659; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-nok" : case "nok-eur" : if (is_null($cval)) { $cval = 8.111; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-nzd" : case "nzd-eur" : if (is_null($cval)) { $cval = 1.827; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-rub" : case "rub-eur" : if (is_null($cval)) { $cval = 34.99; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-sek" : case "sek-eur" : if (is_null($cval)) { $cval = 9.207; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-sgd" : case "sgd-eur" : if (is_null($cval)) { $cval = 2.056; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-thb" : case "thb-eur" : if (is_null($cval)) { $cval = 44.11; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; case "eur-zar" : case "zar-eur" : if (is_null($cval)) { $cval = 9.598; } if (substr_count($way, "eur-") == 1) $rc = $value * $cval; break; $rc = $value / $cval; break; default: $rc = 0; break; } } else { $rc = 0; } return $rc; } /** * URL completition * * @param string $url the URL to complete * @param string $protocol default protocol to add [default: "http://"] * @return string the complete URL */ function complete_url($url, $protocol = "http://") { if (substr_count($url, "://") == 0) $url = $protocol . $url; if (substr_count($url, "://www.") == 0) $url = substr_replace($url, "www.", strpos($url, ":")+3, 0); return $url; } /** * Creates a unique hash id string * * @param bool $with_time if set the timestamp will be added to the code [defaul: true] * @return string the id string */ function id_code($with_time = true) { $string = $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']; if ($with_time) { mt_srand((double)microtime() * 1000000); $time = md5(mt_rand()); } else { $time = ""; } return md5($string . $time); } /** * Return the size of an image * * @param string $image path to the image * @param string $format switch between bytes(b), megabytes(m), gigabytes(g) * @return int size in bytes (-1 on error) */ function image_size($image) { if (file_exists($image)) { $a_size = getimagesize($image, $format = NULL); $size = $a_size[3]; switch($format) { case "k" : $size /= pow(1024, 1); break; case "m" : $size /= pow(1024, 2); break; case "g" : $size /= pow(1024, 3); break; default : break; } } else { $size = -1; } return $size; } /** * Converts RGB colors to their decimal value * * @param string $rgb RGB color value * @return string the color in decimal code */ function rgb2dec($rgb) { $color = array(); $hex = ""; ereg("([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})", strtoupper($rgb), $color); if ($color[0]) $hex = hexdec($color[1]) . hexdec($color[2]) . hexdec($color[3]); return $hex; } /** * Shows an error message and vary the level of danger * * @param string $id id of the error or name of the method * @param string $message error message [default: An unknow error has occurred!"] * @param string $text the format of the error * !id! => $id * !message! => $message * !level! => $level * [default: (!id!) !message! - Level !level!] * @param bool $level 1 to stop the execution, 0 to go on [default: 1] * @return void */ function show_error($id, $message = "An unknown error has occurred!", $text = "(!id!) !message! - Level !level!", $level = 1) { $search = array("!id!", "!message!", "!level!"); $replace = array($id, $message, $level); $error = str_ireplace($search, $replace, $text); if ($level) { die($error); } else { echo $error; } } // NUMBERS - ARRAYS /** * Search a needle in a multi array [recursive] * * @param string $needle the item to look for * @param array $haystack the multi array to search in * @return bool true if the needle is there, 0 otherwise */ function in_multi_array($needle, $haystack) { if (is_array($haystack)) { if (in_array($needle, $haystack)) { return true; } else { for ($i=0; $i<sizeof($haystack); $i++) { if (is_array($haystack[$i])) { if ($this->in_multi_array($needle, $haystack[$i])) { return true; } } } } } return false; } /** * Adds a certain number of zeros depending on the length the number should have * * @param numeric $number the number * @param int $places the numerb of symbols the number should be composed of * @return numeric the number with some leading zeros */ function leading_zeros($number, $places) { if (is_numeric($number)) { $leading = ""; for ($i=1; $i<=$places; $i++) { $ceiling = pow(10, $i); if ($number < $ceiling) { $zeros = $places - $i; for ($j=1; $j<=$zeros; $j++) { $leading .= "0"; } $i = $places + 1; } } $value = $leading . $number; } else { $value = $value; } return $value; } /** * Adds the english ordinal suffix to a number * * @param int $number the number * @param bool $sup if 1 displays the suffix using the <sup> HTML tag [default: 0] * @return string the number with suffix */ function ordinal_suffix($number, $sup = 0) { if (is_numeric($number)) { if (substr($value, -2, 2) == 11 || substr($value, -2, 2) == 12 || substr($value, -2, 2) == 13) $suffix = "th"; switch (substr($value, -1, 1)) { case 1: $suffix = "st"; break; case 2: $suffix = "nd"; break; case 3: $suffix = "rd"; break; default: $suffix = "th"; break; } if ($sup) $suffix = "<sup>" . $suffix . "</sup>"; } else { return 0; } return $number . $suffix; } /** * Removes magic quotes * * @param array $array * @return void */ function remove_magic_quotes(&$array) { if(!get_magic_quotes_gpc()) { return; } foreach($array as $key => $value) { if(is_array($value)) { $this->remove_magic_quotes($value); } else { $array[$key] = stripslashes($value); } } } // TEXT /** * Cleans the start and end of a string from a character * * @param string $string the string to clean * @param string $rms the text to delete from the beginning * @param string $rml the text to delete from the end * @return string the string */ function clean($string, $rms, $rml) { $s = strlen($rms); $l = strlen($rml); do { if (substr($string, 0, $s) == $rms) $string = substr($string, $s); } while (substr($string, 0, $s) == $rms); do { if (substr($string, -$l, $l) == $rml) $string = substr($string, 0, -$l); } while (substr($string, -$l, $l) == $rml); return $string; } /** * Decodes a text with many algorithms many times * * @param string $text the text to decode * @param string $mode the sequence of decryption methods separated by commas [,] * G : gEncryption method using the class gEncrypter * base64 : base64 decoding algorithm * uu : decryption using the function uudecode() * [default: G] * @param string $key the key to use separated by commas [,] * one for each "G" you put in the sequence * [gEncrypter only] [default: ilarvet] * @return string the text finally decrypted */ function decode($text, $mode = "G", $key = "ilarvet") { $exmode = explode(",", $mode); $exkey = explode(",", $key); $kcount = 0; $dec = $text; for ($i=0; $i<count($exmode); $i++) { $exmode[$i] = trim($exmode[$i]); switch (strtolower($exmode[$i])) { case "g": include_once($this->include_path . "gEncrypter.php"); $e = new gEncrypter; $dec = $e->gED($dec, $exkey[$kcount]); $kcount ++; break; case "base64": $dec = base64_decode($dec); break; case "uu": $dec = convert_uudecode($dec); break; default: break; } } return $dec; } /** * Draws a frame around the text * * @param string $text the text to be "framed" * @param string $top top symbol of the frame [default: "="] * @param string $bottom bottom symbol of the frame [default: "="] * @param string $left the left symbol of the frame [default: "|"] * @param string $right the right symbol of the frame [default: "|"] * @return string the new framed text */ function drawframe($text, $top = "=", $bottom = "=", $left = "|", $right = "|") { $l = strlen($text); $tframe = ""; $bframe = ""; for ($i=0; $i<$l; $i++) { $tframe .= $top; $bframe .= $bottom; } $tframe .= "\n"; $bframe .= "\n"; $string = $tframe . $left . " " . $text . " " . $right . "\n" . $bframe; return $string; } /** * Encodes a text with many algorithms many times * * @param string $text the text to encode * @param string $mode the sequence of encryption methods separated by commas [,] * G : gEncryption method using the class gEncrypter * base64 : base64 encoding algorithm * uu : encryption using the function uuencode() * [default: G] * @param string $key the key to use separated by commas [,] * one for each "G" you put in the sequence * [gEncrypter only] [default: ilarvet] * @return string the text heavy encrypted */ function encode($text, $mode = "G", $key = "ilarvet") { $exmode = explode(",", $mode); $exkey = explode(",", $key); $kcount = 0; $enc = $text; for ($i=0; $i<count($exmode); $i++) { $exmode[$i] = trim($exmode[$i]); switch (strtolower($exmode[$i])) { case "g": include_once($this->include_path . "gEncrypter.php"); $e = new gEncrypter; $enc = $e->gED($enc, $exkey[$kcount]); $kcount ++; break; case "base64": $enc = base64_encode($enc); break; case "uu": $enc = convert_uuencode($enc); break; default: break; } } } /** * Fills spaces with a given symbol * * @param string $text the text with spaces * @param string $fillwith the symbol to fill spaces with [default: "+"] * @return string the text witout spaces */ function fill_spaces($text, $fillwith = "+") { $text = htmlentities($text); $text = str_replace("&nbsp;", $fillwith, $text); $text = str_replace("&#160;", $fillwith, $text); $text = str_replace(" ", $fillwith, $text); return $text; } /** * Makes links from strings containing URLs * * @param string $text the text to scan * @return string the text with URLs linked */ function make_links($text) { $text = preg_replace("/(http:\/\/|mailto:|www.|ftp:\/\/)([^\s,]*)/i", "<a href='$1$2'>$1$2</a>", $text); return $text; } /** * Convert the given text to a javascript compatible one * * @param string $text the original text * @return string the js-compatible string */ function make_js($text) { $text = str_replace("'","\\'", $text); $text = str_replace("\"","&quot;", $text); return $text; } /** * Removes all whitespaces in a string * * @param string $text the text with spaces * @return string the text without spaces */ function rm_spaces($text) { $text = htmlentities($text); $text = str_replace("&nbsp;", "", $text); $text = str_replace("&#160;", "", $text); $text = str_replace(" ", "", $text); return $text; } /** * Shorten the text to the passed length * * @param string $text text to shorten * @param int $length max lenght of the text * @param string $complete completes the text with this [default: ...] * @return array array composed of 'base' : base text * 'more' : cut text */ function shorten($text, $length, $complete = "...") { $rc = array(); if (strlen($text) > $length) { $rc['base'] = substr($text, 0, $length) . $complete; $rc['more'] = substr($text, $length, -(strlen($rc['base']) - strlen($complete))); } else { $rc['base'] = $text; $rc['more'] = ""; } return $rc; } /** * Emulates the strleft function * * @param string $s1 the first string * @param string $s2 the second string * @return string */ function strleft($s1, $s2) { return substr($s1, 0, strpos($s1, $s2)); } // VALIDATIONS /** * Checks a phone number * * @param string $phone phone number to check * @param int $length the length of a phone number [default: 9] * @return bool right or not? */ function check_phone($number, $length = 9) { // Only numbers $regexp = '^[[:digit:]]+$'; if (!preg_match($regexp, $number) || strlen($nember) != $length) { return true; } return false; } /** * Checks a zip code * * @param string $zip zip code to check * @return bool true if the code is right, false otherwise */ function check_zip($zip) { // Zip code format may be different depending on your country $regexp = '^[0-9]{5}(-[0-9]{4})?$'; if (eregi($regexp, $zip)) { return true; } return false; } /** * Checks email addresses * * @from Some package I don't remember * * @param string $address the email address * @return bool true if the address is valid */ function check_email($address) { $address = trim($address); $regexp = "/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+($known_doms)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"; $known_doms = "ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba"; $known_doms .= "|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca"; $known_doms .= "|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy"; $known_doms .= "|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm"; $known_doms .= "|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw"; $known_doms .= "|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm"; $known_doms .= "|jo|jobs|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls"; $known_doms .= "|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt"; $known_doms .= "|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np"; $known_doms .= "|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw"; $known_doms .= "|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so"; $known_doms .= "|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|travel|tt|tv"; $known_doms .= "|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt"; $known_doms .= "|yu|za|zm|zw"; if (preg_match($regexp, $address)) { return true; } return false; } /** * Domain name validation * * @param string $domain the domain name * @param string $tld top level domain [default: NULL] * @return bool valid (true) or not (false) */ function check_domain($domain, $tld = NULL) { $length = strlen($domain); $dot = substr_count($domain, "."); if ((substr($domain, ($length - strlen($tld) - 1) == $tld)) && ($dot > 0) && ($length <= ($dot * 63)) && (!preg_match('/[^a-z0-9\._\-]/i', $domain)) ) { return true; } return false; } /** * IP address checker * * @param string $address the IP address to validate * @return bool true if valid, false otherwise */ function check_IP($address) { if ((strlen($address) < 16) && (!preg_match('/[^0-9\.]/', $address))) { $ip = explode(".", $address); if (count($ip) == 4) { for ($i=0; $i<4; $i++) { if ((strlen($ip[$i])==0) || ($ip[$i]<0) || ($ip[$i]>255)) { return false; } } return true; } } return false; } /** * Check if a text has some HTML tags * * @param string $text text to check * @return bool true if html tags are present */ function check_HTMLTags($text) { if (!preg_match('/[<]/', $text)) { return true; } return false; } /** * Checks for username validity * * Only alpha-numeric, _ and - (but not as first sign) are allowed by default * * @param string $username the username to check * @param int $min_length min length of the username [default: 3] * @param int $max_length max length of the username [default: 30] * @param bool $allow_upper_case if set allows uppercase names [default: true] * @return bool is the username valid? (true = yes) */ function check_username($username, $min_length = 3, $max_length = 30, $uppercase = true) { if (strlen($username) < $min_length || $username > $max_length) { return false; } if ($upper_case) { $regexp='/[^A-Za-z0-9\_\-]/'; } else { $regexp='/[^a-z0-9\_\-]/'; } if (preg_match($regexp, $username)) { return false; } return true; } /** * Which browser are we using? * * @return string i = Internet Explorer * k = Konqueror * m = Mozilla and brothers/sisters * n = Netscape * o = Opera * u = unknown */ function check_browser() { $agent = strtolower($_SERVER['HTTP_USER_AGENT']); if (substr_count($agent, "gecko") > 0) $browser = "m"; else if (substr_count($agent, "konqueror") > 0) $browser = "k"; else if (substr_count($agent, "opera") > 0) $browser = "o"; else if (substr_count($agent, "mozilla") > 0) $browser = "n"; else if (substr_count($agent, "msie") > 0) $browser = "i"; else $browser = "u"; return $browser; } /** * Which platform are we working on? * * @return char l = Linux * m = Mac * o = OS/2 * u = unknown * w = Windows * x = Unix */ function check_os() { $agent = strtolower($_SERVER['HTTP_USER_AGENT']); if (substr_count($agent, "unix") > 0) $os = "x"; else if (substr_count($agent, "linux") > 0) $os = "l"; else if (substr_count($agent, "mac") > 0) $os = "m"; else if (substr_count($agent, "os/2") > 0) $os = "o"; else if (substr_count($agent, "win") > 0) $os = "w"; else $os = "u"; return $os; } } ?>