<?php
// $Id: xoopslists.php 1029 2007-09-09 03:49:25Z phppp $
//  ------------------------------------------------------------------------ //
//                XOOPS - PHP Content Management System                      //
//                    Copyright (c) 2000 XOOPS.org                           //
//                       <http://www.xoops.org/>                             //
//  ------------------------------------------------------------------------ //
//  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     //
//  the Free Software Foundation; either version 2 of the License, or        //
//  (at your option) any later version.                                      //
//                                                                           //
//  You may not change or alter any portion of this comment or credits       //
//  of supporting developers from this source code or any supporting         //
//  source code which is considered copyrighted (c) material of the          //
//  original comment or credit authors.                                      //
//                                                                           //
//  This program is distributed in the hope that it will be useful,          //
//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
//  GNU General Public License for more details.                             //
//                                                                           //
//  You should have received a copy of the GNU General Public License        //
//  along with this program; if not, write to the Free Software              //
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
//  ------------------------------------------------------------------------ //
// Author: The XOOPS Project                                                 //
// URL: http://www.xoops.org/                                                //
// Project: The XOOPS Project                                                //
// ------------------------------------------------------------------------- //


if ( !defined("XOOPS_LISTS_INCLUDED") ) {
	define("XOOPS_LISTS_INCLUDED",1);
	class XoopsLists
	{
		function getTimeZoneList()
		{
			include_once XOOPS_ROOT_PATH.'/language/'.$GLOBALS['xoopsConfig']['language'].'/timezone.php';
			$time_zone_list = array ("-12" => _TZ_GMTM12, "-11" => _TZ_GMTM11, "-10" => _TZ_GMTM10, "-9" => _TZ_GMTM9, "-8" => _TZ_GMTM8, "-7" => _TZ_GMTM7, "-6" => _TZ_GMTM6, "-5" => _TZ_GMTM5, "-4" => _TZ_GMTM4, "-3.5" => _TZ_GMTM35, "-3" => _TZ_GMTM3, "-2" => _TZ_GMTM2, "-1" => _TZ_GMTM1, "0" => _TZ_GMT0, "1" => _TZ_GMTP1, "2" => _TZ_GMTP2, "3" => _TZ_GMTP3, "3.5" => _TZ_GMTP35, "4" => _TZ_GMTP4, "4.5" => _TZ_GMTP45, "5" => _TZ_GMTP5, "5.5" => _TZ_GMTP55, "6" => _TZ_GMTP6, "7" => _TZ_GMTP7, "8" => _TZ_GMTP8, "9" => _TZ_GMTP9, "9.5" => _TZ_GMTP95, "10" => _TZ_GMTP10, "11" => _TZ_GMTP11, "12" => _TZ_GMTP12);
			return $time_zone_list;
		}

		/*
		 * gets list of themes folder from themes directory, excluding any directories that do not have theme.html
		 */
 function getThemesList(){
    $dirtyList = $cleanList = Array();
    $dirtyList = XoopsLists::getDirListAsArray(ICMS_THEME_PATH.'/');
    foreach($dirtyList as $item){
        if(file_exists(ICMS_THEME_PATH.'/'.$item.'/theme.html'))
            $cleanList[$item] = $item;
    }
    return $cleanList;
}

		/*
		 * gets a list of module folders from the modules directory
		 */
		function getModulesList()
		{
			return XoopsLists::getDirListAsArray(XOOPS_ROOT_PATH."/modules/");
		}

		/*
		 * gets list of name of directories inside a directory
		 */
		function getDirListAsArray( $dirname ) {
			$ignored = array( 'cvs', '_darcs' );
			$list = array();
			if ( substr( $dirname, -1 ) != '/' ) {
				$dirname .= '/';
			}
			if ( $handle = opendir( $dirname ) ) {
				while ( $file = readdir( $handle ) ) {
					if ( substr( $file, 0, 1 ) == '.' || in_array( strtolower( $file ), $ignored ) )	continue;
					if ( is_dir( $dirname . $file ) ) {
						$list[$file] = $file;
					}
				}
				closedir( $handle );
				asort( $list );
				reset( $list );
			}
			return $list;
		}

		/*
		 *  gets list of all files in a directory
		 */
		function getFileListAsArray($dirname, $prefix="")
		{
			$filelist = array();
			if (substr($dirname, -1) == '/') {
				$dirname = substr($dirname, 0, -1);
			}
			if (is_dir($dirname) && $handle = opendir($dirname)) {
				while (false !== ($file = readdir($handle))) {
					if (!preg_match("/^[\.]{1,2}$/",$file) && is_file($dirname.'/'.$file)) {
						$file = $prefix.$file;
						$filelist[$file] = $file;
					}
				}
				closedir($handle);
				asort($filelist);
				reset($filelist);
			}
			return $filelist;
		}

		/*
		 *  gets list of image file names in a directory
		 */
		function getImgListAsArray($dirname, $prefix="")
		{
			$filelist = array();
			if ($handle = opendir($dirname)) {
				while (false !== ($file = readdir($handle))) {
					if ( preg_match("/(\.gif|\.jpg|\.png)$/i", $file) ) {
						$file = $prefix.$file;
						$filelist[$file] = $file;
					}
				}
				closedir($handle);
				asort($filelist);
				reset($filelist);
			}
			return $filelist;
		}
		/*
		 *  gets list of font file names in a directory
		 */
		function getFontListAsArray($dirname, $prefix="")
		{
			$filelist = array();
			if ($handle = opendir($dirname)) {
				while (false !== ($file = readdir($handle))) {
					if ( preg_match("/(\.ttf)$/i", $file) ) {
						$file = $prefix.$file;
						$filelist[$file] = $file;
					}
				}
				closedir($handle);
				asort($filelist);
				reset($filelist);
			}
			return $filelist;
		}
		
		/*
		 *  gets list of html file names in a certain directory
		*/
		function getHtmlListAsArray($dirname, $prefix="")
		{
			$filelist = array();
			if ($handle = opendir($dirname)) {
				while (false !== ($file = readdir($handle))) {
					if ( ( preg_match( "/(\.htm|\.html|\.xhtml)$/i", $file ) && !is_dir( $file ) ) ) {
            			$file = $prefix.$file;
						$filelist[$file] = $prefix.$file;
        			}
				}
				closedir($handle);
				asort($filelist);
				reset($filelist);
			}
			return $filelist;
		}
					
		/*
		 *  gets list of avatar file names in a certain directory
		 *  if directory is not specified, default directory will be searched
		 */
		function getAvatarsList($avatar_dir="")
		{
			$avatars = array();
			if ( $avatar_dir != "" ) {
				$avatars = XoopsLists::getImgListAsArray(XOOPS_ROOT_PATH."/images/avatar/".$avatar_dir."/", $avatar_dir."/");
			} else {
				$avatars = XoopsLists::getImgListAsArray(XOOPS_ROOT_PATH."/images/avatar/");
			}
			return $avatars;
		}

		/*
		 *  gets list of all avatar image files inside default avatars directory
		 */
		function getAllAvatarsList()
		{
			$avatars = array();
			$dirlist = array();
			$dirlist = XoopsLists::getDirListAsArray(XOOPS_ROOT_PATH."/images/avatar/");
			if ( count($dirlist) > 0 ) {
				foreach ( $dirlist as $dir ) {
					$avatars[$dir] =& XoopsLists::getImgListAsArray(XOOPS_ROOT_PATH."/images/avatar/".$dir."/", $dir."/");
				}
			} else {
				return false;
			}
			return $avatars;
		}

		/*
		*  gets list of subject icon image file names in a certain directory
		*  if directory is not specified, default directory will be searched
		*/
		function getSubjectsList($sub_dir="")
		{
			$subjects = array();
			if($sub_dir != ""){
				$subjects = XoopsLists::getImgListAsArray(XOOPS_ROOT_PATH."/images/subject/".$sub_dir, $sub_dir."/");
			} else {
				$subjects = XoopsLists::getImgListAsArray(XOOPS_ROOT_PATH."/images/subject/");
			}
			return $subjects;
		}

		/*
		 * gets list of language folders inside default language directory
		 */
		function getLangList()
		{
			$lang_list = array();
			$lang_list = XoopsLists::getDirListAsArray(XOOPS_ROOT_PATH."/language/");
			return $lang_list;
		}

		/*
		 * gets list of editors folders inside editors directory
		 */
		function getEditorsList(){
			$editor_list = array();
			$editor_list = XoopsLists::getDirListAsArray(XOOPS_EDITOR_PATH);
			$editor_list = array_merge(array('default'=>'default'),$editor_list);
			return $editor_list;
		}
		
		/*
		 * gets list of editors folders inside editors directory
		 */
		function getEnabledEditorsList(){
			global $xoopsConfig;
			return $xoopsConfig['editor_enabled'];
		}

		function getCountryList()
		{
			$country_list = array (
				""   => "-",
				"AD" => "Andorra",
				"AE" => "United Arab Emirates",
				"AF" => "Afghanistan",
				"AG" => "Antigua and Barbuda",
				"AI" => "Anguilla",
				"AL" => "Albania",
				"AM" => "Armenia",
				"AN" => "Netherlands Antilles",
				"AO" => "Angola",
				"AQ" => "Antarctica",
				"AR" => "Argentina",
				"AS" => "American Samoa",
				"AT" => "Austria",
				"AU" => "Australia",
				"AW" => "Aruba",
				"AZ" => "Azerbaijan",
				"BA" => "Bosnia and Herzegovina",
				"BB" => "Barbados",
				"BD" => "Bangladesh",
				"BE" => "Belgium",
				"BF" => "Burkina Faso",
				"BG" => "Bulgaria",
				"BH" => "Bahrain",
				"BI" => "Burundi",
				"BJ" => "Benin",
				"BM" => "Bermuda",
				"BN" => "Brunei Darussalam",
				"BO" => "Bolivia",
				"BR" => "Brazil",
				"BS" => "Bahamas",
				"BT" => "Bhutan",
				"BV" => "Bouvet Island",
				"BW" => "Botswana",
				"BY" => "Belarus",
				"BZ" => "Belize",
				"CA" => "Canada",
				"CC" => "Cocos (Keeling) Islands",
				"CF" => "Central African Republic",
				"CG" => "Congo",
				"CH" => "Switzerland",
				"CI" => "Cote D'Ivoire (Ivory Coast)",
				"CK" => "Cook Islands",
				"CL" => "Chile",
				"CM" => "Cameroon",
				"CN" => "China",
				"CO" => "Colombia",
				"CR" => "Costa Rica",
				"CS" => "Czechoslovakia (former)",
				"CU" => "Cuba",
				"CV" => "Cape Verde",
				"CX" => "Christmas Island",
				"CY" => "Cyprus",
				"CZ" => "Czech Republic",
				"DE" => "Germany",
				"DJ" => "Djibouti",
				"DK" => "Denmark",
				"DM" => "Dominica",
				"DO" => "Dominican Republic",
				"DZ" => "Algeria",
				"EC" => "Ecuador",
				"EE" => "Estonia",
				"EG" => "Egypt",
				"EH" => "Western Sahara",
				"ER" => "Eritrea",
				"ES" => "Spain",
				"ET" => "Ethiopia",
				"FI" => "Finland",
				"FJ" => "Fiji",
				"FK" => "Falkland Islands (Malvinas)",
				"FM" => "Micronesia",
				"FO" => "Faroe Islands",
				"FR" => "France",
				"FX" => "France, Metropolitan",
				"GA" => "Gabon",
				"GB" => "Great Britain (UK)",
				"GD" => "Grenada",
				"GE" => "Georgia",
				"GF" => "French Guiana",
				"GH" => "Ghana",
				"GI" => "Gibraltar",
				"GL" => "Greenland",
				"GM" => "Gambia",
				"GN" => "Guinea",
				"GP" => "Guadeloupe",
				"GQ" => "Equatorial Guinea",
				"GR" => "Greece",
				"GS" => "S. Georgia and S. Sandwich Isls.",
				"GT" => "Guatemala",
				"GU" => "Guam",
				"GW" => "Guinea-Bissau",
				"GY" => "Guyana",
				"HK" => "Hong Kong",
				"HM" => "Heard and McDonald Islands",
				"HN" => "Honduras",
				"HR" => "Croatia (Hrvatska)",
				"HT" => "Haiti",
				"HU" => "Hungary",
				"ID" => "Indonesia",
				"IE" => "Ireland",
				"IL" => "Israel",
				"IN" => "India",
				"IO" => "British Indian Ocean Territory",
				"IQ" => "Iraq",
				"IR" => "Iran",
				"IS" => "Iceland",
				"IT" => "Italy",
				"JM" => "Jamaica",
				"JO" => "Jordan",
				"JP" => "Japan",
				"KE" => "Kenya",
				"KG" => "Kyrgyzstan",
				"KH" => "Cambodia",
				"KI" => "Kiribati",
				"KM" => "Comoros",
				"KN" => "Saint Kitts and Nevis",
				"KP" => "Korea (North)",
				"KR" => "Korea (South)",
				"KW" => "Kuwait",
				"KY" => "Cayman Islands",
				"KZ" => "Kazakhstan",
				"LA" => "Laos",
				"LB" => "Lebanon",
				"LC" => "Saint Lucia",
				"LI" => "Liechtenstein",
				"LK" => "Sri Lanka",
				"LR" => "Liberia",
				"LS" => "Lesotho",
				"LT" => "Lithuania",
				"LU" => "Luxembourg",
				"LV" => "Latvia",
				"LY" => "Libya",
				"MA" => "Morocco",
				"MC" => "Monaco",
				"MD" => "Moldova",
				"MG" => "Madagascar",
				"MH" => "Marshall Islands",
				"MK" => "Macedonia",
				"ML" => "Mali",
				"MM" => "Myanmar",
				"MN" => "Mongolia",
				"MO" => "Macau",
				"MP" => "Northern Mariana Islands",
				"MQ" => "Martinique",
				"MR" => "Mauritania",
				"MS" => "Montserrat",
				"MT" => "Malta",
				"MU" => "Mauritius",
				"MV" => "Maldives",
				"MW" => "Malawi",
				"MX" => "Mexico",
				"MY" => "Malaysia",
				"MZ" => "Mozambique",
				"NA" => "Namibia",
				"NC" => "New Caledonia",
				"NE" => "Niger",
				"NF" => "Norfolk Island",
				"NG" => "Nigeria",
				"NI" => "Nicaragua",
				"NL" => "Netherlands",
				"NO" => "Norway",
				"NP" => "Nepal",
				"NR" => "Nauru",
				"NT" => "Neutral Zone",
				"NU" => "Niue",
				"NZ" => "New Zealand (Aotearoa)",
				"OM" => "Oman",
				"PA" => "Panama",
				"PE" => "Peru",
				"PF" => "French Polynesia",
				"PG" => "Papua New Guinea",
				"PH" => "Philippines",
				"PK" => "Pakistan",
				"PL" => "Poland",
				"PM" => "St. Pierre and Miquelon",
				"PN" => "Pitcairn",
				"PR" => "Puerto Rico",
				"PT" => "Portugal",
				"PW" => "Palau",
				"PY" => "Paraguay",
				"QA" => "Qatar",
				"RE" => "Reunion",
				"RO" => "Romania",
				"RU" => "Russian Federation",
				"RW" => "Rwanda",
				"SA" => "Saudi Arabia",
				"Sb" => "Solomon Islands",
				"SC" => "Seychelles",
				"SD" => "Sudan",
				"SE" => "Sweden",
				"SG" => "Singapore",
				"SH" => "St. Helena",
				"SI" => "Slovenia",
				"SJ" => "Svalbard and Jan Mayen Islands",
				"SK" => "Slovak Republic",
				"SL" => "Sierra Leone",
				"SM" => "San Marino",
				"SN" => "Senegal",
				"SO" => "Somalia",
				"SR" => "Suriname",
				"ST" => "Sao Tome and Principe",
				"SU" => "USSR (former)",
				"SV" => "El Salvador",
				"SY" => "Syria",
				"SZ" => "Swaziland",
				"TC" => "Turks and Caicos Islands",
				"TD" => "Chad",
				"TF" => "French Southern Territories",
				"TG" => "Togo",
				"TH" => "Thailand",
				"TJ" => "Tajikistan",
				"TK" => "Tokelau",
				"TM" => "Turkmenistan",
				"TN" => "Tunisia",
				"TO" => "Tonga",
				"TP" => "East Timor",
				"TR" => "Turkey",
				"TT" => "Trinidad and Tobago",
				"TV" => "Tuvalu",
				"TW" => "Taiwan",
				"TZ" => "Tanzania",
				"UA" => "Ukraine",
				"UG" => "Uganda",
				"UK" => "United Kingdom",
				"UM" => "US Minor Outlying Islands",
				"US" => "United States",
				"UY" => "Uruguay",
				"UZ" => "Uzbekistan",
				"VA" => "Vatican City State (Holy See)",
				"VC" => "Saint Vincent and the Grenadines",
				"VE" => "Venezuela",
				"VG" => "Virgin Islands (British)",
				"VI" => "Virgin Islands (U.S.)",
				"VN" => "Viet Nam",
				"VU" => "Vanuatu",
				"WF" => "Wallis and Futuna Islands",
				"WS" => "Samoa",
				"YE" => "Yemen",
				"YT" => "Mayotte",
				"YU" => "Yugoslavia",
				"ZA" => "South Africa",
				"ZM" => "Zambia",
				"ZR" => "Zaire",
				"ZW" => "Zimbabwe"
			);
    		asort($country_list);
    		reset($country_list);
    		return $country_list;
		}

		function getHtmlList()
		{
			$html_list = array (
				"a" => "&lt;a&gt;",
				"abbr" => "&lt;abbr&gt;",
				"acronym" => "&lt;acronym&gt;",
				"address" => "&lt;address&gt;",
				"b" => "&lt;b&gt;",
				"bdo" => "&lt;bdo&gt;",
				"big" => "&lt;big&gt;",
				"blockquote" => "&lt;blockquote&gt;",
				"caption" => "&lt;caption&gt;",
				"cite" => "&lt;cite&gt;",
				"code" => "&lt;code&gt;",
				"col" => "&lt;col&gt;",
				"colgroup" => "&lt;colgroup&gt;",
				"dd" => "&lt;dd&gt;",
				"del" => "&lt;del&gt;",
				"dfn" => "&lt;dfn&gt;",
				"div" => "&lt;div&gt;",
				"dl" => "&lt;dl&gt;",
				"dt" => "&lt;dt&gt;",
				"em" => "&lt;em&gt;",
				"font" => "&lt;font&gt;",
				"h1" => "&lt;h1&gt;",
				"h2" => "&lt;h2&gt;",
				"h3" => "&lt;h3&gt;",
				"h4" => "&lt;h4&gt;",
				"h5" => "&lt;h5&gt;",
				"h6" => "&lt;h6&gt;",
				"hr" => "&lt;hr&gt;",
				"i" => "&lt;i&gt;",
				"img" => "&lt;img&gt;",
				"ins" => "&lt;ins&gt;",
				"kbd" => "&lt;kbd&gt;",
				"li" => "&lt;li&gt;",
				"map" => "&lt;map&gt;",
				"object" => "&lt;object&gt;",
				"ol" => "&lt;ol&gt;",
				"samp" => "&lt;samp&gt;",
				"small" => "&lt;small&gt;",
				"strong" => "&lt;strong&gt;",
				"sub" => "&lt;sub&gt;",
				"sup" => "&lt;sup&gt;",
				"table" => "&lt;table&gt;",
				"tbody" => "&lt;tbody&gt;",
				"td" => "&lt;td&gt;",
				"tfoot" => "&lt;tfoot&gt;",
				"th" => "&lt;th&gt;",
				"thead" => "&lt;thead&gt;",
				"tr" => "&lt;tr&gt;",
				"tt" => "&lt;tt&gt;",
				"ul" => "&lt;ul&gt;",
				"var" => "&lt;var&gt;"
			);
			asort($html_list);
    		reset($html_list);
    		return $html_list;
		}

		function getUserRankList()
		{
			$db =& Database::getInstance();
			$myts =& MyTextSanitizer::getInstance();
			$sql = "SELECT rank_id, rank_title FROM ".$db->prefix("ranks")." WHERE rank_special = '1'";
			$ret = array();
			$result = $db->query($sql);
			while ( $myrow = $db->fetchArray($result) ) {
				$ret[$myrow['rank_id']] = $myts->makeTboxData4Show($myrow['rank_title']);
			}
			return $ret;
		}
	}
}
?>
