API15

JApplicationHelper/parseXMLInstallFile: Difference between revisions

From Joomla! Documentation

Doxiki (talk | contribs)
New page: ===Description=== Parse a XML install manifest file. <span class="editsection" style="font-size:76%;"> <nowiki>[</nowiki>[[Description:JApplicationHelper/parseXMLInstallFile|Edit Desc...
 
Doxiki (talk | contribs)
No edit summary
Line 1: Line 1:
===Description===
Parse a XML install manifest file.


<span class="editsection" style="font-size:76%;">
<span class="editsection" style="font-size:76%;">
Line 9: Line 7:


===Syntax===
===Syntax===
<source lang="php">static parseXMLInstallFile($path)</source>
<source lang="php">parseXMLInstallFile($path)</source>


  {| class="wikitable"
  {| class="wikitable"
Line 19: Line 17:
| $path
| $path
|  
|  
|  $path Full path to xml file.
|   
|}
|}
===Returns===
array XML metadata.


===Defined in===
===Defined in===
Line 32: Line 27:
===Source Body===
===Source Body===
<source lang="php">
<source lang="php">
public static function parseXMLInstallFile($path)
function parseXMLInstallFile($path)
{
{
         // Read the file to see if it's a valid component XML file
         // Read the file to see if it's a valid component XML file
         if( ! $xml = JFactory::getXML($path))
         $xml = & JFactory::getXMLParser('Simple');
        {
 
        if (!$xml->loadFile($path)) {
                unset($xml);
                 return false;
                 return false;
         }
         }
Line 43: Line 40:
         * Check for a valid XML root tag.
         * Check for a valid XML root tag.
         *
         *
         * Should be 'install', but for backward compatability we will accept 'extension'.
         * Should be 'install', but for backward compatability we will accept 'mosinstall'.
        * Languages are annoying and use 'metafile' instead
         */
         */
         if($xml->getName() != 'install'
         if ( !is_object($xml->document) || ($xml->document->name() != 'install' && $xml->document->name() != 'mosinstall')) {
        && $xml->getName() != 'extension'
        && $xml->getName() != 'metafile')
        {
                 unset($xml);
                 unset($xml);
                 return false;
                 return false;
Line 55: Line 48:


         $data = array();
         $data = array();
        $data['legacy'] = $xml->document->name() == 'mosinstall';
        $element = & $xml->document->name[0];
        $data['name'] = $element ? $element->data() : '';
        $data['type'] = $element ? $xml->document->attributes("type") : '';
        $element = & $xml->document->creationDate[0];
        $data['creationdate'] = $element ? $element->data() : JText::_('Unknown');
        $element = & $xml->document->author[0];
        $data['author'] = $element ? $element->data() : JText::_('Unknown');
        $element = & $xml->document->copyright[0];
        $data['copyright'] = $element ? $element->data() : '';


         $data['legacy'] = ($xml->getName() == 'mosinstall' || $xml->getName() == 'install');
        $element = & $xml->document->authorEmail[0];
         $data['authorEmail'] = $element ? $element->data() : '';


         $data['name'] = (string)$xml->name;
        $element = & $xml->document->authorUrl[0];
         $data['authorUrl'] = $element ? $element->data() : '';


         // check if we're a language if so use that
         $element = & $xml->document->version[0];
         $data['type'] = $xml->getName() == 'metafile' ? 'language' : (string)$xml->attributes()->type;
         $data['version'] = $element ? $element->data() : '';


         $data['creationDate'] =((string)$xml->creationDate) ? (string)$xml->creationDate : JText::_('Unknown');
         $element = & $xml->document->description[0];
         $data['author'] =((string)$xml->author) ? (string)$xml->author : JText::_('Unknown');
         $data['description'] = $element ? $element->data() : '';


         $data['copyright'] = (string)$xml->copyright;
         $element = & $xml->document->group[0];
        $data['authorEmail'] = (string)$xml->authorEmail;
         $data['group'] = $element ? $element->data() : '';
        $data['authorUrl'] = (string)$xml->authorUrl;
         $data['version'] = (string)$xml->version;
        $data['description'] = (string)$xml->description;
        $data['group'] = (string)$xml->group;


         return $data;
         return $data;

Revision as of 22:09, 22 March 2010

[Edit Descripton]

Template:Description:JApplicationHelper/parseXMLInstallFile

Syntax

parseXMLInstallFile($path)
Parameter Name Default Value Description
$path

Defined in

libraries/joomla/application/helper.php

Importing

jimport( 'joomla.application.helper' );

Source Body

function parseXMLInstallFile($path)
{
        // Read the file to see if it's a valid component XML file
        $xml = & JFactory::getXMLParser('Simple');

        if (!$xml->loadFile($path)) {
                unset($xml);
                return false;
        }

        /*
         * Check for a valid XML root tag.
         *
         * Should be 'install', but for backward compatability we will accept 'mosinstall'.
         */
        if ( !is_object($xml->document) || ($xml->document->name() != 'install' && $xml->document->name() != 'mosinstall')) {
                unset($xml);
                return false;
        }

        $data = array();
        $data['legacy'] = $xml->document->name() == 'mosinstall';

        $element = & $xml->document->name[0];
        $data['name'] = $element ? $element->data() : '';
        $data['type'] = $element ? $xml->document->attributes("type") : '';

        $element = & $xml->document->creationDate[0];
        $data['creationdate'] = $element ? $element->data() : JText::_('Unknown');

        $element = & $xml->document->author[0];
        $data['author'] = $element ? $element->data() : JText::_('Unknown');

        $element = & $xml->document->copyright[0];
        $data['copyright'] = $element ? $element->data() : '';

        $element = & $xml->document->authorEmail[0];
        $data['authorEmail'] = $element ? $element->data() : '';

        $element = & $xml->document->authorUrl[0];
        $data['authorUrl'] = $element ? $element->data() : '';

        $element = & $xml->document->version[0];
        $data['version'] = $element ? $element->data() : '';

        $element = & $xml->document->description[0];
        $data['description'] = $element ? $element->data() : '';

        $element = & $xml->document->group[0];
        $data['group'] = $element ? $element->data() : '';

        return $data;
}

[Edit See Also] Template:SeeAlso:JApplicationHelper/parseXMLInstallFile

Examples

<CodeExamplesForm />