Pb pour utiliser JFile::delete

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Pb pour utiliser JFile::delete

    Bonjour à tous,

    voilà je travaille sur la version 1.5.17 de joomla.
    J'ai récupéré le travail d'un développeur qui a créé tout un ensemble avec des catégories d'un côté et de l'autre des fiches produits (un peu comme les articles mais plus personnalisés).
    Sur le formulaire qui permet de créer la fiche produit, il y a des upload.
    Ils fonctionnent parfaitement mais le problème vient dès que je souhaite supprimer le fichier uploadé sur le serveur.
    La mise à jour se fait bien dans la base mais le fichier n'est pas supprimé.
    Il me signale d'ailleurs une erreur.

    Formulaire :
    je vous place ci-dessous le code de la ligne où se trouve l'un des upload
    Code PHP:
            <tr>
                <td width="100" align="right" class="key" valign="top">
                    <label for="greeting">
                        <?php echo JText::_'Icône (page famille)' ); ?> :
                    </label>
                </td>
                <td>
                    <?php if($this->row->product_icone) : ?>
                    <a class="modal hasTip" title="::Voir L'image" href="<?php echo str_replace('\\','/',Produit_altiHelper::MediaPathProducts(true).DS.$this->row->product_id.DS.$this->row->product_icone); ?>">
                    <img src="<?php echo JURI::root()."images/M_images/image.png" ?>" />
                    </a>
                    <?php 
                    $link  
    JRoute::_'index.php?option='.Produit_altiHelper::ComposantName().'&c=products&task=blank_field&field=product_icone&id='$this->row->product_id );
                    
    ?>
                    <a class="hasTip" title="::Supprimer cette image" onclick="return(confirm('Etes-vous sûr de vouloir supprimer cette image?'));" href="<?php echo $link ?>"><img src="<?php echo JURI::root()."images/M_images/file_delete.png" ?>" /></a>
                    <br/>
                    <?php else : ?>
                    <input type="file" name="data[product_icone]" />
                    <?php endif; ?>
                </td>
            </tr>
    Produit_altiHelper
    Code PHP:
    class Produit_altiHelper {
        
        public function 
    ComposantName()
        {
            return 
    JRequest::getVar('option');
        }
        
        public function 
    MediaPathProducts($isurl false
        {
            if(
    $isurl) return    str_replaceDS'/',JURI::root().'media'.DS.'list_products'.DS.'products');
            else       return    
    str_replaceDS'/',JPATH_ROOT  .DS.'media'.DS.'list_products'.DS.'products'); 
        }

    la fonction blank_field
    Code PHP:
        function remove_file($id,$field)
        {
            
    jimport('joomla.filesystem.file');
            
            
    $model $this->getModel('products');
            
    $model->setId($id);
            
    $data $model->getData();

                if(
    JFile::delete(str_replace('\\','/',Produit_altiHelper::MediaPathProducts().DS.$id.DS.$data->$field)))
                    return 
    true;
                else
                    return 
    false;

        }
        
        function 
    blank_field()
        {
            
    $model $this->getModel('products');
            
    $id JRequest::getVar'id');
            
    $field JRequest::getVar'field' );
            
            @
    $model->blank_field($id,$field); 
            if(!
    $this->remove_file($id,$field)) {
                
    $msg JText::_'Erreur lors de la suppression' );
            } else {
                
    $msg JText::_'supprimée' );
            }
            
            
    $this->setRedirect'index.php?option='.Produit_altiHelper::ComposantName().'&c=products&task=edit&cid[]='.$id$msg );
        } 
    Si quelqu'un a une idée, je cherche mais ne trouve rien comme solution. Je ne suis pas experte du tout en développement Joomla.

    Merci par avance de votre aide.

  • #2
    Re : Pb pour utiliser JFile::delete

    voilà je travaille sur la version 1.5.17 de joomla.
    Sauf à être amateur d'antiquités (ou particulièrement amateur de risques inconsidérés) tu devrais très rapidement envisager une mise à jour vers la dernière version de Joomla (1.5.23). Sept versions de retard, c'est énorme.
    Connaissez-vous la loi de Murphy ? Appliquée à Joomla elle pourrait s'énoncer ainsi :
    C'est toujours lorsqu'on n'a pas pris le temps de faire une sauvegarde que les problèmes surgissent et s'enchainent.
    Moralité : faites des sauvegardes, elles vous paraitront peut-être superflues mais elles ne sont jamais inutiles.

    Commentaire


    • #3
      Re : Pb pour utiliser JFile::delete

      merci de la réponse mais là ça ne dépend pas de moi pour ça.
      pas de suggestions ?

      Merci d'avance des réponses.

      Commentaire


      • #4
        Re : Pb pour utiliser JFile::delete

        Envoyé par liloune89 Voir le message
        Il me signale d'ailleurs une erreur.
        Madame Irma, où êtes-vous ??? On a besoin de votre boule de cristal pour savoir quelle est l'erreur rencontrée sur le site de lilloune...
        Christophe (cavo789)
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
        Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
        Mes logiciels OpenSource : https://www.avonture.be
        Les 8 et 9 mars prochain ? J'peux pas, j'ai JoomlaDay 2019 #jd19fr (plus d'infos)

        Commentaire


        • #5
          Re : Pb pour utiliser JFile::delete

          Mme Irma arrive lol

          l'erreur est la suivante :
          Erreur
          * Delete failed: '20'

          Message
          * Erreur lors de la suppression

          j'ai pas mieux.

          Commentaire


          • #6
            Re : Pb pour utiliser JFile::delete

            Bonjour,

            Il faudrait commencer par vérifier si ça
            Code PHP:
            str_replace('\\','/',Produit_altiHelper::MediaPathProducts().DS.$id.DS.$data->$field
            correspond bien au chemin réel du fichier à supprimer. Mais vu la réponse, soit le chemin est faux, soit les droits sur le fichier en interdisent la suppression.
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : Pb pour utiliser JFile::delete

              Si l'astuce de Jisse ne donne pas de résultat et si les droits d'accès sont bons, tu peux toujours afficher le nom du fichier via un

              Code PHP:
              echo str_replace('\\','/',Produit_altiHelper::MediaPathProducts().DS.$id.DS.$data->$field); 
              ceci afin de contrôler le nom du fichier et t'assurer que le dit fichier existe bien.

              Ensuite, toujours dans l'esprit de debogage, tu peux activer le mode debug de Joomla et celui de php (variable error_reporting) afin de forcer Joomla/PHP à être plus loquace quand au message d'erreur rencontré.
              Christophe (cavo789)
              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)
              Développeur de marknotes, logiciel de gestion de prises de notes avec interface web et de multiples convertisseur https://github.com/cavo789/marknotes
              Mes logiciels OpenSource : https://www.avonture.be
              Les 8 et 9 mars prochain ? J'peux pas, j'ai JoomlaDay 2019 #jd19fr (plus d'infos)

              Commentaire


              • #8
                Re : Pb pour utiliser JFile::delete

                Ensuite, toujours dans l'esprit de debogage, tu peux activer le mode debug de Joomla et celui de php
                +1 avec Cavo, sur une machine de développement, error_reporting devrait être à E_ALL | E_STRICT pour forcer à écrire du code propre
                Pas de demande de support par MP.
                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                Commentaire


                • #9
                  Re : Pb pour utiliser JFile::delete

                  Merci à tous pour vos réponses.

                  Alors pour savoir si déjà le lien est bon, j'ai recherché "Produit_altiHelper" et "MediaPathProducts", cela m'a mené à la class suivante :
                  Code PHP:
                  class Produit_altiHelper {
                      
                      public function 
                  ComposantName()
                      {
                          return 
                  JRequest::getVar('option');
                      }
                      
                      public function 
                  MediaPathProducts($isurl false
                      {
                          if(
                  $isurl) return    str_replaceDS'/',JURI::root().'media'.DS.'list_products'.DS.'products');
                          else       return    
                  str_replaceDS'/',JPATH_ROOT  .DS.'media'.DS.'list_products'.DS.'products'); 
                      }

                  media = nom du dossier principal
                  list_products = nom du dossier secondaire
                  products = nom du dossier pour les produits (il en existe un aussi pour les catégories)
                  Les droits sur "products" sont à 775.

                  J'ai testé le lien et il est bon apparemment.
                  Code PHP:
                  echo str_replace('\\','/',Produit_altiHelper::MediaPathProducts().DS.$id.DS.$data->$field); 
                  J'ai pas encore testé le débugage car je ne sais pas trop comment faire.
                  Merci de vos réponses.

                  Commentaire

                  Annonce

                  Réduire
                  1 sur 2 < >

                  C'est [Réglé] et on n'en parle plus ?

                  A quoi ça sert ?
                  La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                  Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                  Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                  Comment ajouter la mention [Réglé] à votre discussion ?
                  1 - Aller sur votre discussion et éditer votre premier message :


                  2 - Cliquer sur la liste déroulante Préfixe.

                  3 - Choisir le préfixe [Réglé].


                  4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                  2 sur 2 < >

                  Assistance au forum - Outil de publication d'infos de votre site

                  Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                  Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                  Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                  UTILISER À VOS PROPRES RISQUES :
                  L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                  Problèmes connus :
                  FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                  Installation :

                  1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                  Archive zip : https://github.com/AFUJ/FPA/zipball/master

                  2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                  3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                  4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                  5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                  6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                  et remplacer www. votresite .com par votre nom de domaine


                  Exemples:
                  Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/
                  Pour executer le script: http://www..com/fpa-fr.php

                  Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/cms/
                  Pour executer le script: http://www..com/cms/fpa-fr.php

                  En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                  Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                  Voir plus
                  Voir moins
                  Travaille ...
                  X