Source for file admin.languages.class.php

Documentation is available at admin.languages.class.php

  1. <?php
  2. /**
  3. @package Mambo
  4. @subpackage Languages
  5. @copyright  Refer to copyright.php
  6. @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
  7. @author Mambo Foundation Inc see README.php
  8. */ 
  9. defined'_VALID_MOS' or die'Direct Access to this location is not allowed.' );
  10. class Request
  11. {
  12.     var $name;
  13.     var $vars;
  14.  
  15.     function Request($name)
  16.     {
  17.         $this->name = $name;
  18.         $this->attributes array();
  19.     }
  20.     function set($var$value)
  21.     {
  22.         $this->vars[$var$value;
  23.     }
  24.     function get($var=null)
  25.     {
  26.         return is_null($var$this->vars : $this->vars[$var];
  27.     }
  28.     function addFromRequest($var$global='request'){
  29.         switch (strtolower($global))
  30.         {
  31.             case 'get':
  32.             $this->vars[$varmosGetParam($_GET$var);
  33.             break;
  34.             case 'post':
  35.             $this->vars[$varmosGetParam($_POST$var);
  36.             break;
  37.             case 'cookie':
  38.             $this->vars[$varmosGetParam($_COOKIE$var);
  39.             break;
  40.             case 'request':
  41.             $this->vars[$varmosGetParam($_REQUEST$var);
  42.             break;
  43.             default:
  44.             trigger_error('Invalid Request Array'E_USER_ERROR);
  45.             break;
  46.         }
  47.     }
  48.     function setByRef($var&$value)
  49.     {
  50.         $this->vars[$var&$value;
  51.     }
  52.     function &getByRef($var)
  53.     {
  54.         return $this->vars[$var];
  55.     }
  56.     function &session($reset false)
  57.     {
  58.         $name '__' $this->name . '_session';
  59.         if (!isset($_SESSION[$name]|| $reset{
  60.             $_SESSION[$namearray();
  61.         }
  62.         return $_SESSION[$name];
  63.     }
  64.     function &getInstance($name)
  65.     {
  66.         static $requests;
  67.         if (!isset($requests[$name])) {
  68.             $requests[$namenew Request($name);
  69.         }
  70.         return $requests[$name];
  71.     }
  72. }
  73.  
  74. class Controller
  75. {
  76.     var $name;
  77.     var $dir;
  78.     var $request;
  79.     var $action;
  80.     var $renderer;
  81.  
  82.  
  83.     function Controller($name)
  84.     {
  85.         $this->name = $name;
  86.         $this->request     =Request::getInstance($name);
  87.         $this->renderer    =Renderer::getInstance();
  88.         $this->renderer->setdir(dirname(__FILE__).DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.'templates');
  89.     }
  90.  
  91.     function forward($actionname)
  92.     {
  93.         if (!$actionnamereturn $this->view('index');
  94.  
  95.         $actionfile dirname(__FILE__)."/actions/$actionname.action.php";
  96.         $actionclass $actionname.'Action';
  97.         if (file_exists($actionfile)) include($actionfile);
  98.         else return trigger_error("Action file '$actionfile' not found."E_USER_ERROR);
  99.         if (class_exists($actionclass))  $action new $actionclass();
  100.         else return trigger_error("Action class '$actionclass' not found."E_USER_ERROR);
  101.         $action->execute($this$this->request);
  102.     }
  103.  
  104.  
  105.     function view($viewname)
  106.     {
  107.         $viewfile dirname(__FILE__)."/views/$viewname.view.php";
  108.         $viewclass $viewname.'View';
  109.         if (file_exists($viewfile)) include($viewfile);
  110.         #else return trigger_error("View file '$viewfile' not found.", E_USER_ERROR);
  111.         if (class_exists($viewclass))  $view new $viewclass($this);
  112.         else return trigger_error("View class '$viewclass' not found."E_USER_ERROR);
  113.         $view->render($this->renderer$this->request);
  114.     }
  115.     function redirect($task=null$act=null)
  116.     {
  117.         $url  $_SERVER['PHP_SELF'].'?option='.$this->name;
  118.         $url .= !is_null($task'&task='.$task '';
  119.         $url .= !is_null($act'&act='.$act '';
  120.         if (headers_sent()) {
  121.             echo "<script>document.location.href='$url';</script>";
  122.         else {
  123.             #if (ob_get_contents()) while (@ob_end_clean()); // clear output buffer if one exists
  124.             header"Location: $url);
  125.         }
  126.         exit;
  127.     }
  128. }
  129.  
  130. class Action
  131. {
  132.     var $view;
  133.  
  134.     function Action()
  135.     {
  136.     }
  137.     function execute(&$controller&$request)
  138.     {
  139.         return trigger_error('Action::execute() must be overridden.'E_USER_ERROR);
  140.     }
  141.     function setView($view)
  142.     {
  143.         $this->viewname $view;
  144.     }
  145.     function getView()
  146.     {
  147.         return $this->view;
  148.     }
  149. }
  150.  
  151. class View
  152. {
  153.     var $controller;
  154.  
  155.     function View(&$controller){
  156.         $this->controller = $controller;
  157.     }
  158.     function render(&$request&$renderer)
  159.     {
  160.         return trigger_error('View::render() must be overridden');
  161.     }
  162. }
  163.  
  164. class Renderer
  165. {
  166.  
  167.     var $dir;
  168.     var $vars = array();
  169.     var $engine = 'php';
  170.     var $template = '';
  171.     var $debug = 0;
  172.  
  173.     function Renderer(){}
  174.  
  175.     function &getInstance($type 'php'{
  176.         static $renderer;
  177.         if (is_null($renderer[$type])) {
  178.             if ($type == 'php'{
  179.                 $renderer[$typenew Renderer();
  180.             else {
  181.                 $classname $type 'Renderer';
  182.                 if (class_exists($classname))
  183.                 $renderer[$typenew $classname();
  184.             }
  185.         }
  186.         return $renderer[$type];
  187.     }
  188.  
  189.     function display($template$return false){
  190.         if ($template == NULL){
  191.             return trigger_error('A template has not been specified'E_USER_ERROR);
  192.         }
  193.         $this->template = $this->dir . $template;
  194.         if ($this->debugecho nl2br($this->template."\n");
  195.  
  196.         if (is_readable($this->template)) {
  197.             extract($this->getvars());
  198.             if ($return{
  199.                 ob_start();
  200.                 include_once($this->template);
  201.                 $ret ob_get_contents();
  202.                 ob_end_clean();
  203.                 return $ret;
  204.             else {
  205.                 include_once($this->template);
  206.             }
  207.         else {
  208.             return trigger_error("Template file $template does not exist or is not readable"E_USER_ERROR);
  209.         }
  210.         return false;
  211.     }
  212.  
  213.     function fetch($template){
  214.         return $this->display($templatetrue);
  215.     }
  216.  
  217.     function &getengine(){
  218.         return $this->engine;
  219.     }
  220.  
  221.     function addvar($key$value){
  222.         $this->vars[$key$value;
  223.     }
  224.  
  225.     function addbyref ($key&$value{
  226.         $this->vars[$key$value;
  227.     }
  228.  
  229.     function getvars($name false){
  230.         return (isset($this->vars[$name])) $this->vars[$name$this->vars;
  231.     }
  232.  
  233.     function setdir($dir){
  234.         $this->dir = (substr($dir-1== DIRECTORY_SEPARATOR$dir $dir.DIRECTORY_SEPARATOR;
  235.     }
  236.  
  237.     function getdir(){
  238.         return $this->dir;
  239.     }
  240.  
  241.     function settemplate($template){
  242.         $this->template = $template;
  243.     }
  244. }
  245.  
  246. class XMLUtils
  247. {
  248.     function parse_into_array($xml{
  249.         $p xml_parser_create();
  250.         xml_parser_set_option($pXML_OPTION_CASE_FOLDING0);
  251.         xml_parser_set_option($pXML_OPTION_SKIP_WHITE1);
  252.         xml_parse_into_struct($p$xml$values);
  253.         xml_parser_free($p);
  254.         $current $prev array();
  255.         $xmlarray =$current;
  256.         foreach($values as $key => $value{
  257.             $index count($xmlarray);
  258.             switch ($value['type'])
  259.             {
  260.                 case 'open':
  261.                 $xmlarray[$indexarray();
  262.                 $xmlarray[$index]['tag']        = isset($value["tag"]$value["tag"null;
  263.                 $xmlarray[$index]['value']      = isset($value["value"]$value["value"null;
  264.                 $xmlarray[$index]['attributes'= isset($value["attributes"]$value["attributes"null;
  265.                 $xmlarray[$index]['nodes']   array();
  266.                 $prev[count($prev)&$xmlarray;
  267.                 $xmlarray &$xmlarray[$index]['nodes'];
  268.                 break;
  269.                 case 'complete':
  270.                 $xmlarray[$indexarray();
  271.                 $xmlarray[$index]['tag']        = isset($value["tag"]$value["tag"null;
  272.                 $xmlarray[$index]['value']      = isset($value["value"]$value["value"null;
  273.                 $xmlarray[$index]['attributes'= isset($value["attributes"]$value["attributes"null;
  274.                 break;
  275.                 case 'close':
  276.                 $xmlarray &$prev[count($prev1];
  277.                 unset($prev[count($prev1]);
  278.                 break;
  279.             }
  280.         }
  281.         return $xmlarray;
  282.     }
  283.     function parse_file_into_array($file{
  284.         return XMLUtils::parse_into_array(file_get_contents($file));
  285.     }
  286.  
  287.     function array_to_xml($array$encoding='utf-8'{
  288.         $xml "<?xml version=\"1.0\" encoding=\"$encoding\"?>\n";
  289.         if ((!empty($array)) AND (is_array($array))) {
  290.             foreach ($array as $key => $value{
  291.                 switch ($value["type"]{
  292.                     case "open":
  293.                     $xml .= str_repeat("\t"$value["level"1);
  294.                     $xml .= "<" strtolower($value["tag"]);
  295.                     if (isset($value["attributes"])) {
  296.                         foreach ($value["attributes"as $k => $v{
  297.                             $xml .= sprintf(' %s="%s"'strtolower($k)$v);
  298.                         }
  299.                     }
  300.                     $xml .= ">\n";
  301.                     break;
  302.                     case "complete":
  303.                     $xml .= str_repeat("\t"$value["level"1);
  304.                     $xml .= "<" strtolower($value["tag"]);
  305.                     if (isset($value["attributes"])) {
  306.                         foreach ($value["attributes"as $k => $v{
  307.                             $xml .= sprintf(' %s="%s"'strtolower($k)$v);
  308.                         }
  309.                     }
  310.                     $xml .= ">";
  311.                     $xml .= isset($value['value']$value['value'false;
  312.                     $xml .= "</".strtolower($value["tag"]).">\n";
  313.                     break;
  314.                     case "close":
  315.                     $xml .= str_repeat("\t"$value["level"1);
  316.                     $xml .= "</" strtolower($value["tag"]">\n";
  317.                     break;
  318.                     default:
  319.                     break;
  320.                 }
  321.             }
  322.         }
  323.         return $xml;
  324.     }
  325. }
  326.  
  327.  
  328. ?>

Documentation generated on Mon, 05 May 2008 16:15:21 +0400 by phpDocumentor 1.4.0