--- mambo/branches/4.6/administrator/includes/admin.php 2006/01/16 11:12:43 138
+++ mambo/branches/4.6/administrator/includes/admin.php 2007/02/06 06:05:27 964
@@ -1,693 +1,714 @@
-modParameter = $mosParameter;
- $this->name = $name;
- $this->setTree();
- $parser = xml_parser_create();
- xml_set_element_handler ($parser, array ($this, 'start_element'), array ($this, 'end_element'));
- xml_set_character_data_handler ($parser, array ($this, 'character_data'));
-
- $fp = fopen($file, 'rb');
- while ($data = fread($fp, 4096) AND !$this->terminalError) {
- $data = str_replace('&', ' ampersand ', $data);
- $ret = xml_parse($parser, $data, feof($fp)) or die (sprintf('XML ERROR: %s at line %d',
- xml_error_string(xml_get_error_code($parser)),
- xml_get_current_line_number($parser)));
- }
- if (count($this->opentags) != 0) {
- $tags = implode (', ', $this->opentags);
- trigger_error ("XML error - unclosed tag(s) ($tags) at end of file");
- }
- xml_parser_free($parser);
- if (count($this->errors)) var_dump ($this->errors);
- }
-
- function setTree () {
- $this->accept['MOSINSTALL'] = array ('NAME', 'CREATIONDATE', 'AUTHOR', 'COPYRIGHT',
- 'LICENSE', 'AUTHOREMAIL', 'AUTHORURL', 'VERSION', 'DESCRIPTION', 'FILES', 'GROUP',
- 'PARAMS', 'INSTALL', 'UNINSTALL', 'INSTALLFILE', 'UNINSTALLFILE', 'ADMINISTRATION',
- 'IMAGES', 'CSS');
- $this->accept['PARAMS'] = array ('PARAM');
- $this->accept['PARAM'] = array ('OPTION');
- $this->accept['FILES'] = array ('FILENAME');
- $this->accept['INSTALL'] = array ('QUERIES');
- $this->accept['UNINSTALL'] = array ('QUERIES');
- $this->accept['QUERIES'] = array ('QUERY');
- $this->accept['ADMINISTRATION'] = array ('FILES', 'IMAGES', 'MENU');
- $this->accept['IMAGES'] = array ('FILENAME');
- $this->accept['MENU'] = array ('SUBMENU');
- $this->accept['SUBMENU'] = array('MENU');
- $this->accept['CSS'] = array('FILENAME');
- }
-
- function start_element ($parser, $element_name, $element_attrs) {
- if ($this->terminalError) return;
- $method = 'element_'.$element_name;
-
- $specific = array ($this, $method);
- if (is_callable($specific)) $this->$method($element_attrs);
- if ($this->mosinstall) {
- $container = $this->opentags[0];
- if (!isset($this->accept[$container]) OR !is_array($this->accept[$container])) trigger_error ("XML error $container is not a valid containing element");
- if (!in_array($element_name, $this->accept[$container])) trigger_error ("XML error $element_name not permitted within $container");
- }
- if ($this->mosinstall OR $element_name == 'MOSINSTALL') {
- $this->opencount = array_unshift ($this->opentags, $element_name);
- dump($this->opentags);
- $setdata = array ($this, 'set_data');
- if (is_callable($setdata)) $this->set_data($element_attrs);
- $this->mosinstall = true;
- }
- else trigger_error ("XML expected MOSINSTALL but found $element_name");
-// echo '
Start of '.$element_name;
- }
-
- function end_element ($parser, $element_name) {
- if ($this->terminalError) return;
- $check = array_shift ($this->opentags);
- dump($this);
- if ($check != $element_name) {
- $this->opencount = array_unshift ($this->opentags, $check);
- trigger_error("XML last open tag was $check, but found end of $element_name");
- }
- else $this->opencount--;
- $method = 'end_element_'.$element_name;
- $specific = array ($this, $method);
- if (is_callable($specific)) $this->$method();
-// echo '
End of '.$element_name;
- }
-
- function character_data ($parser, $data) {
- // Should be overridden by inheriting class
- $this->errors[] = 'XML handler error - no method provided to deal with character data';
- $this->terminalError = true;
- }
-
- function element_mosinstall ($attrs) {
- if (isset($attrs['TYPE'])) $this->type = $attrs['TYPE'];
- else trigger_error ("XML error - mosinstall does not have type attribute");
- }
-
- function getType () {
- return $this->type;
- }
-
-}
-
-/**
-* Extend basic parser to extract the description for a type of install file
-**/
-
-class mosXMLDescription extends mosBasicXML {
- var $values = array();
-
- function character_data ($parser, $data) {
- if ($this->terminalError) return;
- $this->topLevelCharacterData($data);
- }
-
- function topLevelCharacterData ($data) {
- if ($data = trim($data)) {
- if (isset($this->opentags[1]) AND $this->opentags[1] == 'MOSINSTALL') $this->values[$this->opentags[0]] = $data;
- }
- }
-
- function getDescription ($type) {
- if ($type == $this->type AND isset($this->values['DESCRIPTION'])) return $this->values['DESCRIPTION'];
- else return '';
- }
-
- function getName ($type) {
- if ($type == $this->type AND isset($this->values['NAME'])) return $this->values['NAME'];
- else return '';
- }
-
- function getGroup ($type) {
- if ($type == $this->type AND isset($this->values['GROUP'])) return $this->values['GROUP'];
- else return '';
- }
-
- function getCreationDate ($type) {
- if ($type == $this->type AND isset($this->values['CREATIONDATE'])) return $this->values['CREATIONDATE'];
- else return '';
- }
-
- function getAuthor ($type) {
- if ($type == $this->type AND isset($this->values['AUTHOR'])) return $this->values['AUTHOR'];
- else return '';
- }
-
- function getCopyright ($type) {
- if ($type == $this->type AND isset($this->values['COPYRIGHT'])) return $this->values['COPYRIGHT'];
- else return '';
- }
-
- function getAuthorEmail ($type) {
- if ($type == $this->type AND isset($this->values['AUTHOREMAIL'])) return $this->values['AUTHOREMAIL'];
- else return '';
- }
-
- function getAuthorUrl ($type) {
- if ($type == $this->type AND isset($this->values['AUTHORURL'])) return $this->values['AUTHORURL'];
- else return '';
- }
-
- function getVersion ($type) {
- if ($type == $this->type AND isset($this->values['VERSION'])) return $this->values['VERSION'];
- else return '';
- }
-
-}
-
-class mosXMLParams extends mosXMLDescription {
- var $options = array();
- var $optvalue = '';
- var $optdata = '';
- var $paramattrs = array();
- var $paramcount = 0;
- var $html = array();
-
- function element_params ($attrs) {
- $this->html[] = '
| $pname | |||
| '.$label.' | '; - $controlname = $this->name; - switch ($type) { - case 'text': - $size = mosGetParam ($this->paramattrs, 'SIZE', 0); - $controlstring = ''; - break; - case 'list': - $controlstring = mosHTML::selectList($this->options, "$controlname[$name]", 'class="inputbox"', 'value', 'text', $value); - break; - case 'radio': - $controlstring = mosHTML::radioList($this->options, "$controlname[$name]", $value); - break; - case 'imagelist': - $directory = new mosDirectory (mamboCore::get('mosConfig_absolute_path').mosGetParam($this->paramattrs, 'DIRECTORY', '')); - $files = $directory->listFiles ('\.png$|\.gif$|\.jpg$|\.bmp$|\.ico$'); - $options = array(); - foreach ($files as $file) $options[] = mosHTML::makeOption($file, $file); - if (!isset($this->paramattrs['HIDE_NONE'])) array_unshift($options, mosHTML::makeOption('-1', '- Do not use an image -' )); - if (!isset($this->paramattrs['HIDE_DEFAULT'])) array_unshift($options, mosHTML::makeOption('', '- Use Default image -')); - $controlstring = mosHTML::selectList ($options, "$controlname[$name]", 'class="inputbox"', 'value', 'text', $value); - break; - case 'textarea': - $rows = mosGetParam ($this->paramattrs, 'ROWS', 0); - $cols = mosGetParam ($this->paramattrs, 'COLS', 0); - $value = str_replace ('$type | "; - $this->html[] = "$controlstring | "; - $this->html[] = "$tooltip | "; - $this->html[] = '