web-dev-qa-db-fra.com

Script d'installation - Copier des fichiers du répertoire temporaire du programme d'installation vers le site joomla

Je crée un paquet Joomla qui installera des plugins et des fichiers image ensemble. Je souhaite copier les images du package sur le site Joomla à l'aide d'un script d'installation. Comment trouver le nom du répertoire d'installation temporaire afin de copier les fichiers?

Mon pkg_foo.Zip a la structure de répertoire suivante.

packages/plg_plugin1.Zip
packages/plg_plugin2.Zip
image.png
pkg_foo.xml
script.php

Et j'ai les éléments suivants dans script.php:

jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');

class pkg_fooInstallerScript
{
    function install($parent) {
            JFile::move( TEMPORARY_DIRECTORY . '/image.png', JPATH_ROOT . 'images/image.png';
        }
    }

}

Comment trouver le chemin d'accès au répertoire d'installation temporaire?

1
Codewise

Vous pouvez utiliser la fonction postflight() pour déplacer les images une fois que la fonction install() a été exécutée et complétée, comme suit:

class pkg_fooInstallerScript
{
    protected $extension = 'plg_myplugin';

    public function install($parent) 
    {
        // Do whatever you need to do when installing
    }

    public function postflight($type, $parent) 
    {
        // Only run the code if we're installing, not updating.
        if (strtolower($type) === 'install')
        {
            $imagePath = JPATH_SITE . '/plugins/' . $this->extension . '/images/image.png';
            $newPath   = JPATH_SITE . '/images/image.png';

            JFile::move($imagePath, $newPath;
        }
    }
}
1
Lodder

Pour obtenir le nom du répertoire d’installation temporaire à partir du script d’installation - script.php, utilisez ceci:

function install($parent)
{
    $temp_dir = $parent->getParent()->getPath('source');
}

et si vous en avez besoin pendant les mises à jour, placez-le dans la méthode de mise à jour.

0
Dom