API15:JInstaller/parseMedia
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 media element of the installation manifest and take appropriate action.
Description:JInstaller/parseMedia
Syntax
parseMedia($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 parseMedia($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. * Default 'media' Files are copied to the JPATH_BASE/media folder */ $folder = ($element->attributes('destination')) ? DS.$element->attributes('destination') : null; $destination = JPath::clean(JPATH_ROOT.DS.'media'.$folder); /* * 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) { $path['src'] = $source.DS.$file->data(); $path['dest'] = $destination.DS.$file->data(); // Is this path a file or folder? $path['type'] = ( $file->name() == 'folder') ? 'folder' : 'file'; /* * 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); }
[Edit See Also] SeeAlso:JInstaller/parseMedia
Examples
<CodeExamplesForm />
