%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/www/administrator/components/com_joomailermailchimpintegration/helpers/
Upload File :
Create Path :
Current File : /home/lightco1/www/administrator/components/com_joomailermailchimpintegration/helpers/ini.php

<?php
/**
 *  @package AdminTools
 *  @copyright Copyright (c)2010 Nicholas K. Dionysopoulos
 *  @license GNU General Public License version 3, or later
 *  @version $Id: ini.php 44 2010-10-01 11:39:31Z nikosdion $
 */

// Protect from unauthorized access
defined('_JEXEC') or die('Restricted Access');

/**
 * A class to load INI files, without bumping into incompatibilities between
 * different PHP versions
 */
class joomailermailchimpintegrationHelperINI {

	/**
	 * Parse an INI file and return an associative array. Since PHP versions before
	 * 5.1 are bitches with regards to INI parsing, I use a PHP-only solution to
	 * overcome this obstacle.
	 * @param	string	$file	The file to process
	 * @param	bool	$process_sections	True to also process INI sections
	 * @return	array	An associative array of sections, keys and values
	 */
	public static function parse_ini_file($file, $process_sections, $rawdata = false)
	{
	    if ($rawdata)
	    {
		return self::parse_ini_file_php($file, $process_sections, $rawdata);
	    }
	    else
	    {
		if (version_compare(PHP_VERSION, '5.1.0', '>=') && (!$rawdata))
		{
		    if (function_exists('parse_ini_file'))
		    {
			return parse_ini_file($file, $process_sections);
		    }
		    else
		    {
			return self::parse_ini_file_php($file, $process_sections);
		    }
		} else {
		    return self::parse_ini_file_php($file, $process_sections, $rawdata);
		}
	    }
	}

	/**
	 * A PHP based INI file parser.
	 * Thanks to asohn ~at~ aircanopy ~dot~ net for posting this handy function on
	 * the parse_ini_file page on http://gr.php.net/parse_ini_file
	 * @param	string	$file	Filename to process
	 * @param	bool	$process_sections	True to also process INI sections
	 * @param	bool	$rawdata	If true, the $file contains raw INI data, not a filename
	 * @return	array	An associative array of sections, keys and values
	 */
	static function parse_ini_file_php($file, $process_sections = false, $rawdata = false)
	{
	    $process_sections = ($process_sections !== true) ? false : true;

	    if (!$rawdata)
	    {
		$ini = file($file);
	    }
	    else
	    {
		$file = str_replace("\r","",$file);
		$ini = explode("\n", $file);
	    }

	    if (count($ini) == 0) {return array();}

	    $sections = array();
	    $values = array();
	    $result = array();
	    $globals = array();
	    $i = 0;
	    foreach ($ini as $line) {
		$line = trim($line);
		$line = str_replace("\t", " ", $line);

		// Comments
		if (!preg_match('/^[a-zA-Z0-9[]/', $line)) {continue;}

		// Sections
		if ($line{0} == '[') {
		    $tmp = explode(']', $line);
		    $sections[] = trim(substr($tmp[0], 1));
		    $i++;
		    continue;
		}

		// Key-value pair
		list($key, $value) = explode('=', $line, 2);
		$key = trim($key);
		$value = trim($value);
		if (strstr($value, ";")) {
		    $tmp = explode(';', $value);
		    if (count($tmp) == 2) {
			if ((($value{0} != '"') && ($value{0} != "'")) ||
			preg_match('/^".*"\s*;/', $value) || preg_match('/^".*;[^"]*$/', $value) ||
			preg_match("/^'.*'\s*;/", $value) || preg_match("/^'.*;[^']*$/", $value)){
			    $value = $tmp[0];
			}
		    } else {
			if ($value{0} == '"') {
			    $value = preg_replace('/^"(.*)".*/', '$1', $value);
			} elseif ($value{0} == "'") {
			    $value = preg_replace("/^'(.*)'.*/", '$1', $value);
			} else {
			    $value = $tmp[0];
			}
		    }
		}
		$value = trim($value);
		$value = trim($value, "'\"");

		if ($i == 0) {
		    if (substr($line, -1, 2) == '[]') {
			$globals[$key][] = $value;
		    } else {
			$globals[$key] = $value;
		    }
		} else {
		    if (substr($line, -1, 2) == '[]') {
			$values[$i-1][$key][] = $value;
		    } else {
			$values[$i-1][$key] = $value;
		    }
		}
	    }

	    for($j = 0; $j < $i; $j++) {
		if ($process_sections === true) {
		    if (isset($sections[$j]) && isset($values[$j]))	$result[$sections[$j]] = $values[$j];
		} else {
		    if (isset($values[$j])) $result[] = $values[$j];
		}
	    }

	    return $result + $globals;
	}

	/**
	 * Parses a graphical interface INI file returning two arrays, one with the general
	 * information of that configuration section and one with its configuration variables'
	 * definitions.
	 * @param string $inifile Absolute path to engine INI file
	 * @param array $information [out] The GUI information hash array
	 * @param array $parameters [out] The parameters hash array
	 * @return bool True if the file was loaded
	 */
	public static function parseInterfaceINI($inifile, &$information, &$parameters)
	{
	    if (!file_exists($inifile)) return false;
	    $information = array(
		'description' => ''
	   );
	    $parameters = array();
	    $inidata = self::parse_ini_file($inifile, true);
	    foreach($inidata as $section => $data)
	    {
		if (is_array($data))
		{
		    if ($section == '_group')
		    {
			// Parse information
			foreach($data as $key=>$value)
			{
			    $information[$key] = $value;
			}
		    }
		    elseif (substr($section,0,1) != '_')
		    {
			// Parse parameters
			$newparam = array(
				'title' => '',
				'description' => '',
				'type' => 'string',
				'default' => ''
			);
			foreach($data as $key=>$value)
			{
			    $newparam[$key] = $value;
			}
			$parameters[$section] = $newparam;
		    }
		}
	    }
	    return true;
	}
}
?>

Zerion Mini Shell 1.0