API15:JInstaller/parseLanguages
From Joomla! Documentation
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.
Contents |
Description
Method to parse through a languages element of the installation manifest and take appropriate action.
[<! removed edit link to red link >]
<! removed transcluded page call, red link never existed >
Syntax
parseLanguages($element, $cid=0)
| Parameter Name | Default Value | Description |
|---|---|---|
| $element | $element The xml node to process | |
| $cid | 0 | $cid Application ID of application to install to |
Returns
boolean True on success
Defined in
libraries/joomla/installer/installer.php
Importing
jimport( 'joomla.installer.installer' );
Source Body
function parseLanguages($element, $cid=0) { // Initialize variables $copyfiles = array (); // Get the client info jimport('joomla.application.helper'); $client =& JApplicationHelper::getClientInfo($cid); if (!is_a($element, 'JSimpleXMLElement') || !count($element->children())) { // Either the tag does not exist or has no children therefore we return zero files processed. return 0; } // Get the array of file nodes to process $files = $element->children(); if (count($files) == 0) { // No files to process return 0; } /* * Here we set the folder we are going to copy the files to. * * 'languages' Files are copied to JPATH_BASE/language/ folder */ $destination = $client->path.DS.'language'; /* * Here we set the folder we are going to copy the files from. * * Does the element have a folder attribute? * * If so this indicates that the files are in a subdirectory of the source * folder and we should append the folder attribute to the source path when * copying files. */ if ($folder = $element->attributes('folder')) { $source = $this->getPath('source').DS.$folder; } else { $source = $this->getPath('source'); } // Process each file in the $files array (children of $tagName). foreach ($files as $file) { /* * Language files go in a subfolder based on the language code, ie. * * <language tag="en-US">en-US.mycomponent.ini</language> * * would go in the en-US subdirectory of the language folder. * * We will only install language files where a core language pack * already exists. */ if ($file->attributes('tag') != '') { $path['src'] = $source.DS.$file->data(); $path['dest'] = $destination.DS.$file->attributes('tag').DS.basename($file->data()); // If the language folder is not present, then the core pack hasn't been installed... ignore if (!JFolder::exists(dirname($path['dest']))) { continue; } } else { $path['src'] = $source.DS.$file->data(); $path['dest'] = $destination.DS.$file->data(); } /* * Before we can add a file to the copyfiles array we need to ensure * that the folder we are copying our file to exits and if it doesn't, * we need to create it. */ if (basename($path['dest']) != $path['dest']) { $newdir = dirname($path['dest']); if (!JFolder::create($newdir)) { JError::raiseWarning(1, 'JInstaller::install: '.JText::_('Failed to create directory').' "'.$newdir.'"'); return false; } } // Add the file to the copyfiles array $copyfiles[] = $path; } return $this->copyFiles($copyfiles); }
[<! removed edit link to red link >] <! removed transcluded page call, red link never existed >
Examples
<CodeExamplesForm />
