Jump to content

[Modules]Déplacé fichier a l'installation


Recommended Posts

Bonjour,

 

Je suis actuellement en train de dévellopper plusieurs modules prestashop.Je travaille sur la derniere version de prestashop a savoir

Dans mon dossier de module j'ai un dossier css, je voudrais pouvoir a l'installation du module pourvoir le deplacé dans theme/mon_theme/css/modules/nom_du_module/.

Pour cela j'ai codé la fonction install de mon module comme ceci:

 

public function install()
 {
if (parent::install() == false
  OR !$this->registerHook( 'home' )
  OR !$this->registerHook('header')
  OR !Configuration::updateValue('PERIODE1', 'mardi;mercredi')
  OR !Configuration::updateValue('JOUR_FIN1', 'lundi')
  OR !Configuration::updateValue('HEURE_FIN1', '9')
  OR !Configuration::updateValue('PERIODE2', 'vendredi;samedi')
  OR !Configuration::updateValue('JOUR_FIN2', 'jeudi')
  OR !Configuration::updateValue('HEURE_FIN2', '9')
  OR !rename(_PS_MODULE_DIR_.$this->name.'/css', _THEME_CSS_DIR_.'modules/'.$this->name)
   )
  return false;
return true;
 }

 

J'utilise la fonction rename pour deplacé la totalité du dossier et j'obtiens le message d'erreur suivant lors de l'installation:

 

Warning: rename(/homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/css/,
/~lejuille/maj_presta/themes/pdf_theme/css/modules/blockdeliverytime/)
[function.rename]: No such file or directory in
/homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/blockdeliverytime.php on line 36

 

J'ai aussi essayer avec la fonction copy pour déplacé un par un les fichiers du dossier.Mais j'obtiens exactement la meme erreur.

 

Si quelqu'un a une petite idée je suis preneur.

Je pense que c'est pas bien méchant mais la je seche.

 

Merci d'avance.

 

KomaR

Link to comment
Share on other sites

Bonjour,

 

Si tu utilise la fonction rename, cela veux dire que lorsque l'on va désinstaller le module pour ensuite le réinstaller, les fichier sources n'existerons plus et l'installation ne pourra donc pas ce faire...

 

Donc j'utiliserais la fonction copy.

Contrairement à la fonction rename, la fonction copy s'applique uniquement aux fichiers et pas directement au dossier.

Ci-dessous une fonction pour copier un dossier trouvé sur php.net :

// copies files and non-empty directories
function rcopy($src, $dst) {
  if (file_exists($dst)) rrmdir($dst);
  if (is_dir($src)) {
 mkdir($dst);
 $files = scandir($src);
 foreach ($files as $file)
 if ($file != "." && $file != "..") rcopy("$src/$file", "$dst/$file");
 }
  else if (file_exists($src)) copy($src, $dst);
}

Link to comment
Share on other sites

c'est vrai jai oublié de préciser que dans ma fonction uninstall() je fais le rename dans le sens inverse :) .

Je vais testé ton script, mais je pense que mon erreur viens du fait que je n'ouvrais pas le dossier en php.

Link to comment
Share on other sites

j'ai modifier un peu ta fonction pour l'adapter a ma classe:

 

public function rcopy($src, $dst)
{
  if (file_exists($dst)) rrmdir($dst);
  if (is_dir($src))
  {
   mkdir($dst);
   $files = scandir($src);
   foreach ($files as $file)
   if ($file != "." && $file != "..") $this->rcopy("$src/$file", "$dst/$file");
}
  else if (file_exists($src)) {
   copy($src, $dst);
   return true;
  }else{
return false;
  }
 }

 

Mais voila lorsque j'essaye de l'utilisé je retombe sur le meme genre d'erreur :

 

Warning: mkdir() [function.mkdir]: No such file or directory in
/homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/blockdeliverytime.php on line 163
Warning: copy(/~lejuille/maj_presta/themes/pdf_theme/css/modules/blockdeliverytime/blockdeliverytime.css) [function.copy]:
failed to open stream: No such file or directory in
/homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/blockdeliverytime.php on line 169
Warning: copy(/~lejuille/maj_presta/themes/pdf_theme/css/modules/blockdeliverytime/index.php) [function.copy]:
failed to open stream: No such file or directory in
/homez.356/lejuille/www/maj_presta/modules/blockdeliverytime/blockdeliverytime.php on line 169

Link to comment
Share on other sites

Ma fonction rcopy renvoie toujours false, et donc le module s'installe pas correctement et la copie n'est pas effectuer

J'ai vu que tu utilise la fonction rrmdir, fonction qui n'est pas defini mais rmdir existe.

c'est une faute de frappe ? car j'ai trouver des script rrmdir sur le net

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...