Example #1
0
 /**
  * Method to parse through a media element of the installation manifest and take appropriate
  * action.
  *
  * @param   JXMLElement  $element  The XML node to process
  * @param   integer      $cid      Application ID of application to install to
  *
  * @return   boolean     True on success
  * @since    11.1
  */
 public function parseMedia($element, $cid = 0)
 {
     if (!$element || !count($element->children())) {
         // Either the tag does not exist or has no children therefore we return zero files processed.
         return 0;
     }
     // Initialise variables.
     $copyfiles = array();
     // Get the client info
     jimport('joomla.application.helper');
     $client = JApplicationHelper::getClientInfo($cid);
     // 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 = (string) $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.
     $folder = (string) $element->attributes()->folder;
     if ($folder && file_exists($this->getPath('source') . DS . $folder)) {
         $source = $this->getPath('source') . DS . $folder;
     } else {
         $source = $this->getPath('source');
     }
     // Process each file in the $files array (children of $tagName).
     foreach ($element->children() as $file) {
         $path['src'] = $source . DS . $file;
         $path['dest'] = $destination . DS . $file;
         // Is this path a file or folder?
         $path['type'] = $file->getName() == '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, JText::sprintf('JLIB_INSTALLER_ERROR_CREATE_DIRECTORY', $newdir));
                 return false;
             }
         }
         // Add the file to the copyfiles array
         $copyfiles[] = $path;
     }
     return $this->copyFiles($copyfiles);
 }
Example #2
0
 /**
  * Method to parse through a files element of the installation manifest and take appropriate
  * action.
  *
  * @access	public
  * @param	JXMLElement	$element	The xml node to process
  * @param	int			$cid		Application ID of application to install to
  * @param	Array		$oldFiles	List of old files (JXMLElement's)
  * @param	Array		$oldMD5		List of old MD5 sums (indexed by filename with value as MD5)
  * @return	boolean	True on success
  * @since	1.5
  */
 function parseFiles($element, $cid = 0, $oldFiles = null, $oldMD5 = null)
 {
     // Get the array of file nodes to process; we checked this had children above
     if (!$element || !count($element->children())) {
         // Either the tag does not exist or has no children (hence no files to process) therefore we return zero files processed.
         return 0;
     }
     // Initialise variables.
     $copyfiles = array();
     // Get the client info
     jimport('joomla.application.helper');
     $client = JApplicationHelper::getClientInfo($cid);
     /*
      * Here we set the folder we are going to remove the files from.
      */
     if ($client) {
         $pathname = 'extension_' . $client->name;
         $destination = $this->getPath($pathname);
     } else {
         $pathname = 'extension_root';
         $destination = $this->getPath($pathname);
     }
     /*
      * 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.
      */
     $folder = (string) $element->attributes()->folder;
     if ($folder && file_exists($this->getPath('source') . DS . $folder)) {
         $source = $this->getPath('source') . DS . $folder;
     } else {
         $source = $this->getPath('source');
     }
     // Process each file in the $files array (children of $tagName).
     foreach ($element->children() as $file) {
         $path['src'] = $source . DS . $file;
         $path['dest'] = $destination . DS . $file;
         // Is this path a file or folder?
         $path['type'] = $file->getName() == '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, JText::sprintf('JLIB_INSTALLER_ERROR_CREATE_DIRECTORY', $newdir));
                 return false;
             }
         }
         // Add the file to the copyfiles array
         $copyfiles[] = $path;
     }
     return $this->copyFiles($copyfiles);
 }
Example #3
0
 /**
  * Method to get the list of possible permission action names for the form field.
  *
  * @param   JXMLElement  $element  The JXMLElement object representing the <field /> tag for the
  *                                 form field object.
  *
  * @return  array   A list of permission action names from the form field element definition.
  *
  * @since   11.1
  */
 protected function getFieldActions($element)
 {
     // Initialise variables.
     $actions = array();
     // Initialise some field attributes.
     $section = $element['section'] ? (string) $element['section'] : '';
     $component = $element['component'] ? (string) $element['component'] : '';
     // Get the asset actions for the element.
     $elActions = JAccess::getActions($component, $section);
     // Iterate over the asset actions and add to the actions.
     foreach ($elActions as $item) {
         $actions[] = $item->name;
     }
     // Iterate over the children and add to the actions.
     foreach ($element->children() as $el) {
         if ($el->getName() == 'action') {
             $actions[] = (string) $el['name'];
         }
     }
     return $actions;
 }