JInstallerTemplate/install

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

Syntax

install()

Returns

boolean True on success

Defined in

libraries/joomla/installer/adapters/template.php

Importing

jimport('joomla.installer.adapters.template');

Source Body

function install(){// Get database connector object$db=&$this->parent->getDBO();$manifest=&$this->parent->getManifest();$root=&$manifest->document;// Get the client application targetif($cname=$root->attributes('client')){// Attempt to map the client to a base path
jimport('joomla.application.helper');$client=& JApplicationHelper::getClientInfo($cname,true);if($client===false){$this->parent->abort(JText::_('Template').' '.JText::_('Install').': '.JText::_('Unknown client type').' ['.$cname.']');returnfalse;}$basePath=$client->path;$clientId=$client->id;}else{// No client attribute was found so we assume the site as the client$cname='site';$basePath= JPATH_SITE;$clientId=0;}// Set the extensions name$name=&$root->getElementByPath('name');$name= JFilterInput::clean($name->data(),'cmd');$this->set('name',$name);// Set the template root path$this->parent->setPath('extension_root',$basePath.DS.'templates'.DS.strtolower(str_replace(" ","_",$this->get('name'))));/*
* If the template directory already exists, then we will assume that the template is already
* installed or another template is using that directory.
*/if(file_exists($this->parent->getPath('extension_root'))&&!$this->parent->getOverwrite()){
JError::raiseWarning(100, JText::_('Template').' '.JText::_('Install').': '.JText::_('Another template is already using directory').': "'.$this->parent->getPath('extension_root').'"');returnfalse;}// If the template directory does not exist, lets create it$created=false;if(!file_exists($this->parent->getPath('extension_root'))){if(!$created= JFolder::create($this->parent->getPath('extension_root'))){$this->parent->abort(JText::_('Template').' '.JText::_('Install').': '.JText::_('Failed to create directory').' "'.$this->parent->getPath('extension_root').'"');returnfalse;}}// If we created the template directory and will want to remove it if we have to roll back// the installation, lets add it to the installation step stackif($created){$this->parent->pushStep(array('type'=>'folder','path'=>$this->parent->getPath('extension_root')));}// Copy all the necessary filesif($this->parent->parseFiles($root->getElementByPath('files'),-1)===false){// Install failed, rollback changes$this->parent->abort();returnfalse;}if($this->parent->parseFiles($root->getElementByPath('images'),-1)===false){// Install failed, rollback changes$this->parent->abort();returnfalse;}if($this->parent->parseFiles($root->getElementByPath('css'),-1)===false){// Install failed, rollback changes$this->parent->abort();returnfalse;}// Parse optional tags$this->parent->parseFiles($root->getElementByPath('media'),$clientId);$this->parent->parseLanguages($root->getElementByPath('languages'));$this->parent->parseLanguages($root->getElementByPath('administration/languages'),1);// Get the template description$description=&$root->getElementByPath('description');if(is_a($description,'JSimpleXMLElement')){$this->parent->set('message',$description->data());}else{$this->parent->set('message','');}// Lastly, we will copy the manifest file to its appropriate place.if(!$this->parent->copyManifest(-1)){// Install failed, rollback changes$this->parent->abort(JText::_('Template').' '.JText::_('Install').': '.JText::_('Could not copy setup file'));returnfalse;}// Load template language file$lang=& JFactory::getLanguage();$lang->load('tpl_'.$name);returntrue;}