/*=====================================================================*\
|| ###################################################################
|| # Blue Static ISSO Framework
-|| # Copyright (c)2005-2008 Blue Static
+|| # Copyright (c)2005-2009 Blue Static
|| #
|| # This program is free software; you can redistribute it and/or modify
|| # it under the terms of the GNU General Public License as published by
\*=====================================================================*/
/**
-* Static functions (Functions.php)
-*
-* @package ISSO
-*/
+ * Static functions (Functions.php)
+ *
+ * @package ISSO
+ */
/**
-* Functions
-*
-* This is a bunch of static functions. This class is singleton so it
-* can store data while remaining static.
-*
-* @author Blue Static
-* @copyright Copyright (c)2005 - 2008, Blue Static
-* @package ISSO
-*
-*/
+ * Functions
+ *
+ * This is a bunch of static functions wrapped in a class for modularity and
+ * namespace collisions.
+ *
+ * @author Blue Static
+ * @copyright Copyright (c)2005 - 2009, Blue Static
+ * @package ISSO
+ *
+ */
class BSFunctions
{
/**
- * Singleton instance
- * @var object
- */
- private static $instance;
+ * Make class static
+ */
+ private function __construct()
+ {}
/**
- * Cookie path
- * @var string
- */
- private $cookiePath = '/';
+ * Sets a cookie in the user's computer/browing session
+ *
+ * @param string Name of the cookie
+ * @param string Value of the cookie
+ * @param integer Timeout in seconds for non-sticky cookies. Can also be ::COOKIE_EXPIRE or ::COOKIE_STICKY
+ * @param string Cookie path
+ * @param string Domain
+ */
+ const COOKIE_EXPIRE = -1;
+ const COOKIE_STICKY = -2;
- /**
- * Cookie domain setting
- * @var string
- */
- private $cookieDomain = '';
-
- /**
- * Cookie expiration time
- * @var integer
- */
- private $cookieTimeout = 900;
-
- /**
- * Current swapped CSS class
- * @var string
- */
- public static $cssClass = '';
-
- // ###################################################################
- /**
- * Constructor
- */
- private function __construct() {}
-
- // ###################################################################
- /**
- * Returns the shared instance for singleton
- *
- * @return object Shared instance
- */
- private function _instance()
- {
- if (!self::$instance)
- {
- self::$instance = new BSFunctions();
- }
- return self::$instance;
- }
-
- // ###################################################################
- /**
- * Sets the cookie path
- *
- * @param string New path
- */
- public static function set_cookie_path($path)
- {
- self::_instance()->cookiePath = $path;
- }
-
- // ###################################################################
- /**
- * Sets the cookie domain setting
- *
- * @param string Cookie domain
- */
- public static function set_cookie_domain($domain)
- {
- self::_instance()->cookieDomain = $domain;
- }
-
- // ###################################################################
- /**
- * Sets the cookie timeout
- *
- * @param integer Cookie timeout
- */
- public static function set_cookie_timeout($timeout)
- {
- self::_instance()->cookieTimeout = intval($timeout);
- }
-
- // ###################################################################
- /**
- * Sets a cookie in the user's computer/browing session
- *
- * @param string Name of the cookie
- * @param string Value of the cookie, FALSE to clear
- * @param bool Is the cookie permanent?
- */
- public static function cookie($name, $value, $sticky = true)
+ public static function cookie($name, $value, $timeout = 900, $path = '/', $domain = '')
{
// expire the cookie
- if ($value === false)
+ if ($timeout == self::COOKIE_EXPIRE)
{
- setcookie($name, $value, time() - (2 * self::_instance()->cookieTimeout), self::_instance()->cookiePath, self::_instance()->cookieDomain);
+ setcookie($name, $value, time() - 1800, $path, $domain);
}
// set the cookie
else
{
- if ($sticky)
+ // it's sticky so keep it around for a while
+ if ($timeout == self::COOKIE_STICKY)
{
$expire = time() + 60 * 60 * 24 * 365;
}
else
{
- $expire = time() + self::_instance()->cookieTimeout;
+ $expire = time() + $timeout;
}
- setcookie($name, $value, $expire, self::_instance()->cookiePath, self::_instance()->cookieDomain);
+ setcookie($name, $value, $expire, $path, $domain);
}
}
- // ###################################################################
/**
- * Alternate between two CSS classes
- *
- * @param string First CSS class name
- * @param string Second CSS class name
- */
+ * Alternate between two CSS classes
+ *
+ * @param string First CSS class name
+ * @param string Second CSS class name
+ */
public static function swap_css_classes($class1 = 'alt1', $class2 = 'alt2')
{
static $count;
-
- self::$cssClass = ($count % 2) ? $class1 : $class2;
- $count++;
+ return ($count++ % 2) ? $class1 : $class2;
}
- // ###################################################################
/**
- * Returns the 'source path' version of a file path. It adds a
- * directory separator to the end of a string if it does not already
- * exist.
- *
- * @param string Path
- *
- * @return string Path with directory separator ending
- */
+ * Returns the 'source path' version of a file path. It adds a
+ * directory separator to the end of a string if it does not already
+ * exist.
+ *
+ * @param string Path
+ *
+ * @return string Path with directory separator ending
+ */
public static function fetch_source_path($source)
{
if (substr($source, strlen($source) - 1) != DIRECTORY_SEPARATOR)
return $source;
}
- // ###################################################################
/**
- * Force-download a file by sending application/octetstream
- *
- * @param string The text of the file to be streamed
- * @param string File name of the new file
- * @param bool Whether or not to die after stringeaming the file
- */
+ * Force-download a file by sending application/octetstream
+ *
+ * @param string The text of the file to be streamed
+ * @param string File name of the new file
+ * @param bool Whether or not to die after stringeaming the file
+ */
public static function download_file($file, $name, $exit = true)
{
header("Content-Type: application/octetstream");
}
}
- // ###################################################################
/**
- * Verify that an email address is valid via regex
- *
- * @param string An email address
- *
- * @return bool Validity of the email address
- */
+ * Verify that an email address is valid via regex
+ *
+ * @param string An email address
+ *
+ * @return bool Validity of the email address
+ */
public static function is_valid_email($email)
{
- if (preg_match('#^[a-z0-9\.\-\+_]+?@(.*?\.)*?[a-z0-9\-_]+?\.[a-z]{2,4}$#i', $email))
- {
- return true;
- }
- else
- {
- return false;
- }
+ return (preg_match('#^[a-z0-9\.\-\+_]+?@(.*?\.)*?[a-z0-9\-_]+?\.[a-z]{2,4}$#i', $email));
}
- // ###################################################################
/**
- * Generates a random string of random length (unless otherwise
- * specified)
- *
- * @param integer Optional length
- *
- * @return string A random string
- */
+ * Generates a random string of random length (unless otherwise
+ * specified)
+ *
+ * @param integer Optional length
+ *
+ * @return string A random string
+ */
public static function random($length = 0)
{
// length wasn't provided, so create our own
return $string;
}
- // ###################################################################
/**
- * Sets the current array position to be the specified key. This
- * function should be avoided on large arrays.
- *
- * @param array The array whose counter is to be updated
- * @param mixed The key of the element of the array that the counter is to be set to
- *
- * @return mixed Return the elelment of the array that we just put the counter to
- */
+ * Sets the current array position to be the specified key. This
+ * function should be avoided on large arrays.
+ *
+ * @param array The array whose counter is to be updated
+ * @param mixed The key of the element of the array that the counter is to be set to
+ *
+ * @return mixed Return the elelment of the array that we just put the counter to
+ */
public static function array_set_current(&$array, $key)
{
reset($array);
return current($array);
}
- // ###################################################################
/**
- * Calculates the microtime difference by taking a given microtime and
- * subtracting it from the current one
- *
- * @param string The start microtime
- *
- * @return float Microtime difference
- */
+ * Calculates the microtime difference by taking a given microtime and
+ * subtracting it from the current one
+ *
+ * @param string The start microtime
+ *
+ * @return float Microtime difference
+ */
public static function fetch_microtime_diff($mtstart)
{
$mtend = microtime();
return ($endMicro + $endSec) - ($startMicro + $startSec);
}
- // ###################################################################
/**
- * Fetches the extension of a file by extracting everything after the
- * last period
- *
- * @param string Filename
- *
- * @return string The extension for the specifid file name
- */
+ * Fetches the extension of a file by extracting everything after the
+ * last period
+ *
+ * @param string Filename
+ *
+ * @return string The extension for the specifid file name
+ */
public static function fetch_extension($filename)
{
$array = explode('.', $filename);
return strval(end($array));
}
- // ###################################################################
/**
- * Gets the maximum file size for attachment uploading, as specified by
- * PHP. If no value is present, 10 MB (represented in bytes) is
- * returned.
- *
- * @return integer The maximum file upload size in bytes
- */
+ * Gets the maximum file size for attachment uploading, as specified by
+ * PHP. If no value is present, 10 MB (represented in bytes) is
+ * returned.
+ *
+ * @return integer The maximum file upload size in bytes
+ */
public static function fetch_max_php_file_size()
{
if ($size = @ini_get('upload_max_filesize'))
}
}
- // ###################################################################
/**
- * Scans a specified directory path and returns an array of all the
- * items in that directory. Directories found by this are end in a "/"
- *
- * @param string Path to scan
- * @param bool Whether or not to recursively scan the directories encountered
- * @param bool Ignore files beginning with a dot
- *
- * @return array A list of all the files in the specified path
- */
+ * Scans a specified directory path and returns an array of all the
+ * items in that directory. Directories found by this are end in a "/"
+ *
+ * @param string Path to scan
+ * @param bool Whether or not to recursively scan the directories encountered
+ * @param bool Ignore files beginning with a dot
+ *
+ * @return array A list of all the files in the specified path
+ */
public static function scan_directory($path, $recurse = true, $ignoreDot = true)
{
return self::_help_scan_directory($path, $recurse, $ignoreDot, '');
}
- // ###################################################################
/**
- * Scans a specified directory path and returns an array of all the
- * items in that directory. Directories found by this are end in a "/"
- *
- * @param string Path to scan
- * @param bool Whether or not to recursively scan the directories encountered
- * @param bool Ignore files beginning with a dot
- * @param string Add to the beginning of the path
- *
- * @return array A list of all the files in the specified path
- */
+ * Scans a specified directory path and returns an array of all the
+ * items in that directory. Directories found by this are end in a "/"
+ *
+ * @param string Path to scan
+ * @param bool Whether or not to recursively scan the directories encountered
+ * @param bool Ignore files beginning with a dot
+ * @param string Add to the beginning of the path
+ *
+ * @return array A list of all the files in the specified path
+ */
private static function _help_scan_directory($path, $recurse = true, $ignoreDot = true, $pathAdd = '')
{
$filelist = array();
return $filelist;
}
- // ###################################################################
/**
- * Changes line breaks into one format
- *
- * @param string Text
- * @param string New line break (default is UNIX \n format)
- *
- * @return string Text with one type of line break
- */
+ * Changes line breaks into one format
+ *
+ * @param string Text
+ * @param string New line break (default is UNIX \n format)
+ *
+ * @return string Text with one type of line break
+ */
public static function convert_line_breaks($text, $convert_to = "\n")
{
$text = trim($text);
return $text;
}
- // ###################################################################
/**
- * Removes all empty() [by PHP's standards] elements in an array. This
- * can be used in place of using PREG_SPLIT_NO_EMPTY.
- *
- * @param array An array to strip empties from
- *
- * @return array Full-valued array
- */
+ * Removes all empty() [by PHP's standards] elements in an array. This
+ * can be used in place of using PREG_SPLIT_NO_EMPTY.
+ *
+ * @param array An array to strip empties from
+ *
+ * @return array Full-valued array
+ */
public static function array_strip_empty($array)
{
foreach ($array as $key => $value)
return $array;
}
- // ###################################################################
/**
- * A backtrace formatter.
- *
- * This is very slightly modified from PEAR/PHP_Compat (PHP license)
- *
- * @author Laurent Laville <pear@laurent-laville.org>
- * @author Aidan Lister <aidan@php.net>
- *
- * @param array The backtrace from debug_backtrace() to format
- *
- * @return string Formatted output
- */
+ * A backtrace formatter.
+ *
+ * This is very slightly modified from PEAR/PHP_Compat (PHP license)
+ *
+ * @author Laurent Laville <pear@laurent-laville.org>
+ * @author Aidan Lister <aidan@php.net>
+ *
+ * @param array The backtrace from debug_backtrace() to format
+ *
+ * @return string Formatted output
+ */
public static function format_backtrace($backtrace)
{
// Unset call to debug_print_backtrace
return implode("\n", $calls);
}
- // ###################################################################
/**
- * A variation of PHP's substr() method that takes in the start
- * and end position of a string, rather than a start and length. This
- * mimics Java's String.substring() method.
- *
- * @param string The string
- * @param integer Start position
- * @param integer End position
- *
- * @return string Part of a string
- */
+ * A variation of PHP's substr() method that takes in the start
+ * and end position of a string, rather than a start and length. This
+ * mimics Java's String.substring() method.
+ *
+ * @param string The string
+ * @param integer Start position
+ * @param integer End position
+ *
+ * @return string Part of a string
+ */
public static function substring($string, $start, $end)
{
return substr($string, $start, $end - $start);
}
+
+ /**
+ * Converts a boolean value into the string 'Yes' or 'No'
+ *
+ * @param boolean
+ * @return string
+ */
+ public static function bool_to_string($bool)
+ {
+ return ($bool ? _('Yes') : _('No'));
+ }
}
?>
\ No newline at end of file