* @copyright 2001 - 2011 Ampache.org * @license http://opensource.org/licenses/gpl-2.0 GPLv2 * @version PHP 5.2 * @link http://www.ampache.org/ * @since File available since Release 1.0 */ /** * set_memory_limit * This function attempts to change the php memory limit using init_set. * Will never reduce it below the current setting. */ function set_memory_limit($new_limit) { $current_memory = ini_get('memory_limit'); $current_memory = substr($current_memory,0,strlen($current_memory)-1); if ($current_memory < $new_limit) { $php_memory = $new_limit . "M"; ini_set (memory_limit, "$php_memory"); unset($php_memory); } } // set_memory_limit /** * generate_password * This generates a random password of the specified length */ function generate_password($length) { $vowels = 'aAeEuUyY12345'; $consonants = 'bBdDgGhHjJmMnNpPqQrRsStTvVwWxXzZ6789'; $password = ''; $alt = time() % 2; for ($i = 0; $i < $length; $i++) { if ($alt == 1) { $password .= $consonants[(rand(0,strlen($consonants)-1))]; $alt = 0; } else { $password .= $vowels[(rand(0,strlen($vowels)-1))]; $alt = 1; } } return $password; } // generate_password /** * scrub_in * Run on inputs, stuff that might get stuck in our db */ function scrub_in($input) { if (!is_array($input)) { return stripslashes(htmlspecialchars(strip_tags($input))); } else { $results = array(); foreach($input as $item) { $results[] = scrub_in($item); } return $results; } } // scrub_in /** * scrub_out * This function is used to escape user data that is getting redisplayed * onto the page, it htmlentities the mojo */ function scrub_out($string) { //This feature has been DEPRECATED as of PHP 5.3.0 if(version_compare(PHP_VERSION, '5.3.0', '<=') AND ini_get('magic_quotes_gpc') != 'Off') { $string = stripslashes($string); } $string = htmlentities($string, ENT_QUOTES, Config::get('site_charset')); return $string; } // scrub_out /** * unhtmlentities * Undoes htmlentities() */ function unhtmlentities($string) { return html_entity_decode($string, ENT_QUOTES, Config::get('site_charset')); } //unhtmlentities /** * format_bytes * Turns a size in bytes into a human-readable value */ function format_bytes($value, $precision = 2) { $divided = 0; while (strlen(floor($value)) > 3) { $value = ($value / 1024); $divided++; } switch ($divided) { case 1: $unit = 'kB'; break; case 2: $unit = 'MB'; break; case 3: $unit = 'GB'; break; case 4: $unit = 'TB'; break; case 5: $unit = 'PB'; break; default: $unit = 'B'; break; } // end switch return round($value, $precision) . ' ' . $unit; } /** * make_bool * This takes a value and returns what we consider to be the correct boolean * value. We need a special function because PHP considers "false" to be true. * @package General */ function make_bool($string) { if (strcasecmp($string,'false') == 0) { return false; } return (bool)$string; } // make_bool /** * invert_bool * This returns the opposite of what you've got */ function invert_bool($value) { return make_bool($value) ? false : true; } // invert_bool /** * get_languages * This function does a dir of ./locale and pulls the names of the * different languages installed, this means that all you have to do * is drop one in and it will show up on the context menu. It returns * in the form of an array of names */ function get_languages() { /* Open the locale directory */ $handle = @opendir(Config::get('prefix') . '/locale'); if (!is_resource($handle)) { debug_event('language','Error unable to open locale directory','1'); } $results = array(); /* Prepend English */ $results['en_US'] = 'English (US)'; while ($file = readdir($handle)) { $full_file = Config::get('prefix') . '/locale/' . $file; /* Check to see if it's a directory */ if (is_dir($full_file) AND substr($file,0,1) != '.' AND $file != 'base') { switch($file) { case 'af_ZA'; $name = 'Afrikaans'; break; /* Afrikaans */ case 'ca_ES'; $name = 'Català'; break; /* Catalan */ case 'cs_CZ'; $name = 'Česky'; break; /* Czech */ case 'da_DK'; $name = 'Dansk'; break; /* Danish */ case 'de_DE'; $name = 'Deutsch'; break; /* German */ case 'en_US'; $name = 'English (US)'; break; /* English */ case 'en_GB'; $name = 'English (UK)'; break; /* English */ case 'es_ES'; $name = 'Español'; break; /* Spanish */ case 'es_MX'; $name = 'Español (MX)'; break; /* Spanish */ case 'es_AR'; $name = 'Español (AR)'; break; /* Spanish */ case 'et_EE'; $name = 'Eesti'; break; /* Estonian */ case 'eu_ES'; $name = 'Euskara'; break; /* Basque */ case 'fr_FR'; $name = 'Français'; break; /* French */ case 'ga_IE'; $name = 'Gaeilge'; break; /* Irish */ case 'el_GR'; $name = 'Greek'; break; /* Greek */ case 'is_IS'; $name = 'Icelandic'; break; /* Icelandic */ case 'it_IT'; $name = 'Italiano'; break; /* Italian */ case 'lv_LV'; $name = 'Latviešu'; break; /* Latvian */ case 'lt_LT'; $name = 'Lietuvių'; break; /* Lithuanian */ case 'hu_HU'; $name = 'Magyar'; break; /* Hungarian */ case 'nl_NL'; $name = 'Nederlands'; break; /* Dutch */ case 'no_NO'; $name = 'Norsk bokmål'; break; /* Norwegian */ case 'pl_PL'; $name = 'Polski'; break; /* Polish */ case 'pt_BR'; $name = 'Português Brasileiro'; break; /* Portuguese */ case 'pt_PT'; $name = 'Português'; break; /* Portuguese */ case 'ro_RO'; $name = 'Română'; break; /* Romanian */ case 'sk_SK'; $name = 'Slovenčina'; break; /* Slovak */ case 'sl_SI'; $name = 'Slovenščina'; break; /* Slovenian */ case 'sr_CS'; $name = 'Srpski'; break; /* Serbian */ case 'fi_FI'; $name = 'Suomi'; break; /* Finnish */ case 'sv_SE'; $name = 'Svenska'; break; /* Swedish */ case 'uk_UA'; $name = 'Українська'; break; /* Ukrainian */ case 'vi_VN'; $name = 'Tiếng Việt'; break; /* Vietnamese */ case 'tr_TR'; $name = 'Türkçe'; break; /* Turkish */ case 'bg_BG'; $name = 'Български'; break; /* Bulgarian */ case 'ru_RU'; $name = 'Русский'; break; /* Russian */ case 'zh_CN'; $name = '简体中文'; break; /* Chinese */ case 'zn_TW'; $name = '繁體中文'; break; /* Chinese */ case 'ko_KR'; $name = '한국말'; break; /* Korean */ case 'ja_JP'; $name = '日本語'; break; /* Japanese */ case 'nb_NO'; $name = 'Norsk'; break; /* Norwegian */ /* These languages are right to left. */ case 'ar_SA'; $name = 'العربية'; break; /* Arabic */ case 'he_IL'; $name = 'עברית'; break; /* Hebrew */ case 'fa_IR'; $name = 'فارسي'; break; /* Farsi */ default: $name = _('Unknown'); break; } // end switch $results[$file] = $name; } } // end while return $results; } // get_languages /** * is_rtl * This checks whether to be a rtl language. */ function is_rtl($locale) { return in_array($locale, array("he_IL", "fa_IR", "ar_SA")); } /** * translate_pattern_code * This just contains a keyed array which it checks against to give you the * 'tag' name that said pattern code corrasponds to. It returns false if nothing * is found. */ function translate_pattern_code($code) { $code_array = array('%A'=>'album', '%a'=>'artist', '%c'=>'comment', '%g'=>'genre', '%T'=>'track', '%t'=>'title', '%y'=>'year', '%o'=>'zz_other'); if (isset($code_array[$code])) { return $code_array[$code]; } return false; } // translate_pattern_code /** * __autoload * This function automatically loads any missing classes as they are needed so * that we don't use a million include statements which load more than we need. */ function __autoload($class) { // Lowercase the class $class = strtolower($class); $file = Config::get('prefix') . "/lib/class/$class.class.php"; // See if it exists if (is_readable($file)) { require_once $file; if (is_callable($class . '::_auto_init')) { call_user_func(array($class, '_auto_init')); } } // Else log this as a fatal error else { debug_event('__autoload', "'$class' not found!",'1'); } } // __autoload ?>