Méthodo pour un champ file

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

  • roland_d_alsace
    a répondu
    Envoyé par y.berges Voir le message
    as tu regles le champs dans le dossier tmp
    puis tu le recuepere via
    $mailer->addAttachment(JPATH_COMPONENT.'/assets/document.pdf'); tu aurais le bout de code pour l'envoi et la destruction ? (l'event send j'ai)
    Pas évident, j'ai tout dans des classes bien spécifiques, un espèce de framework à moi si tu veux.
    Voici bout à bout les principales méthodes que j'utilise.

    Pour l’écriture du fichier c'est :

    Code PHP:


    $FileInscriptionsUrl 
    GskiFileHelper::URLFichierTmp();
    JFile::write($FileInscriptionsUrlimplode("\n"$infos->fichier_lignes
    Code PHP:
    abstract class GskiFileHelper
    {

        public static function 
    DossierTmp($sdossier 'gski'){

            
    $dir_dest=JFactory::getConfig()->get('tmp_path');
            if(
    strlen($sdossier)>0){
                
    $dir_dest .= DIRECTORY_SEPARATOR.$sdossier;
            }
            if(!
    self::DirInitialize($dir_dest)){
                
    $dir_dest=JFactory::getConfig()->get('tmp_path');
            }
            return 
    $dir_dest;
        }

        public static function 
    DirInitialize($dir_dest){
            
    $app JFactory::getApplication();
            if(
    is_file($dir_dest)){
                
    $app->enqueueMessage(JText::sprintf('COM_GSKIEPREUVE_FOLDER_CREATE_ERROR',$dir_dest), 'error');
                return 
    false;
            }
            if(!
    is_dir($dir_dest)){
                if (
    JFolder::create($dir_dest,511)){
                    
    $data "<html>\n<body bgcolor="#FFFFFF">\n</body>\n</html>";
                    
    JFile::write($dir_dest DIRECTORY_SEPARATOR "index.html"$data);
                    
    $data "order deny,allow\ndeny from all\nallow from none\n";
                    
    JFile::write($dir_dest DIRECTORY_SEPARATOR '.htaccess'$data);
                }else{
                    
    $app->enqueueMessage(JText::sprintf('COM_GSKIEPREUVE_FOLDER_CREATE_ERROR',$dir_dest), 'error');
                    return 
    false;
                }
            }
            return 
    true;

        }

        public static function 
    NomFichierTmp($suffix=''){

            
    $nom 'gski_tmp_' .  JFactory::getUser()->id '_' time();

            if(
    strlen($suffix)>0){
                if(
    $suffix[0] == '.'){
                    
    $nom .= $suffix;
                }else{
                    
    $nom .= '.'.$suffix;
                }

            }
            return 
    $nom;
        }


        public static function 
    URLFichierTmp($suffix=''){

            
    $dir_dest=self::DossierTmp();
            
    $nom self::NomFichierTmp($suffix);
            
    $retour $dir_dest DIRECTORY_SEPARATOR $nom;
            return 
    $retour;
        } 
    Pour l'envoi :
    Code PHP:

    // c'est une autre methode d'une autre classe abstraite $FileInscriptionsUrl est passé en paramètre et devient maintenant $urlFile

            
    $mailer JFactory::getMailer();

            if(
    $format=='html'){
                
    $mailer->isHtml(true);
                
    $mailer->Encoding 'base64';
            }

    ....

            
    $mailer->addRecipient($tabEmails); // tableau avec les adresses mail des destinataires

            
    $mailer->setSubject(GskiStringHelper::tags_chaine_traite($titre$tagstables'text'));
    // GskiStringHelper::tags_chaine_traite c'est une fonction qui remplaces des tags par des valeurs de champs dans les templates de mail
            
    $mailer->setBody(GskiStringHelper::tags_chaine_traite($mess$tagstables$format));

            
    $mailer->setSender(array($config->get('mailfrom'),$config->get('fromname')));

    .....


            if(
    $urlFile!=''){
                
    $filename 'skiffs_concurrents_'.$CLEvenement->codex// nom du fichier dans le mail
                
    $mailer->addAttachment($urlFile,$filename,'base64','text/plain');
            }
    $result=$mailer->send(); 
    Pour la destruction c'est :
    Code PHP:
                    if($FileInscriptionsUrl != ''){
                        
    JFile::delete($FileInscriptionsUrl);
                    } 
    Dernière édition par roland_d_alsace à 12/02/2019, 15h24

    Laisser un commentaire:


  • y.berges
    a répondu
    as tu regles le champs dans le dossier tmp
    puis tu le recuepere via
    $mailer->addAttachment(JPATH_COMPONENT.'/assets/document.pdf'); tu aurais le bout de code pour l'envoi et la destruction ? (l'event send j'ai)
    Dernière édition par y.berges à 12/02/2019, 14h10

    Laisser un commentaire:


  • roland_d_alsace
    a répondu
    Tu as vu la doc : https://docs.joomla.org/Sending_email_from_extensions

    Je mets tous mes fichier en PJ dans le dossier tmp de Joomla et cela marche très bien.

    Faut juste penser à effacer les fichiers après.

    Laisser un commentaire:


  • y.berges
    a crée un sujet Méthodo pour un champ file

    Méthodo pour un champ file

    hello je cherche a fignolé un petit plugin de formulaire spécifique qui envois des emails (pas de stokage en bdd)
    j'arrive a générer les mes champs via des input html5
    et je voudrais pouvoir mettre un fichier en PJ au email
    via Jmail c'est pas trop complexe mais comme faire pour stocker temporairement la pj pour la mettre dans l'email ?
    Merci par avance

    Code PHP:
    $list_fields $field->parameters->get('form_fields');
                                    if (
    $list_fields){
                      foreach( 
    $list_fields as $list_fields_idx => $list_field ) {
                                        
    //print_r ($list_field);
                                        //check and create required class
                                        
    $required ='';
                                        if (
    $list_field->field_required){
                                            
    $required="required";
                                        }
                                        
    //create field id
                                        
    $field_id preg_replace("#[^a-zA-Z-0-9]#"""JText::_($list_field->field_label));

                                        
    //create field value
                                        
    $field_value preg_replace("#[^a-zA-Z-0-9]#"""JText::_($list_field->field_value));

                                        
    //placeholder
                                        
    $placeholder = ($label_position === 'placeholder') ? 'placeholder="'.$list_field->field_label.'"''';

                                        
    //create JText value
                                        
    $field_label JText::_($list_field->field_label);

                                        if(
    $list_field->field_type === 'text') {
                                            
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$field_label.'</label><input type="text" name="'.$field_value.'" id="'.$field_id.'" '.$placeholder.' aria-label="'.$field_label.'" class="'.$required.'"></div>';
                                            }
                                        if(
    $list_field->field_type === 'email') {
                                            
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$field_label.'</label><input type="email" name="'.$field_value.'" id="'.$field_id.'" '.$placeholder.' aria-label="'.$field_label.'" class="'.$required.' validate-email"></div>';
                                            }
                                        if(
    $list_field->field_type === 'date') {
                                                
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$field_label.'</label><input type="date" name="'.$field_value.'" id="'.$field_id.'" '.$placeholder.' aria-label="'.$field_label.'" class="'.$required.'"></div>';
                                                }
                                        if(
    $list_field->field_type === 'datetime-local') {
                                                
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$field_label.'</label><input type="datetime-local" name="'.$field_value.'" id="'.$field_id.'" '.$placeholder.' aria-label="'.$field_label.'" class="'.$required.'"></div>';
                                                }
                                        if(
    $list_field->field_type === 'textarea') {
                                            
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$field_label.'</label><textarea rows="4" cols="50" name="'.$field_value.'" '.$placeholder.' aria-label="'.$field_label.'" id="'.$field_id.'" class="'.$required.'"></textarea></div>';
                                            }
                                        if(
    $list_field->field_type === 'radio') {
                                            
    $values_field explode(";;",$list_field->field_value);
                                            
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$list_field->field_label.'</label>';
                                                foreach( 
    $values_field as $value_field ) {
                                                    
    $value preg_replace("#[^a-zA-Z-0-9]#"""JText::_($value_field));
                                                    
    $fields_display .= '<input type="radio" value="'.$value.'" name="'.$field_id.'" aria-label="'.JText::_($value_field).'" class="'.$required.'"><label for="'.$field_id.'">'.JText::_($value_field).'</label>';
                                                }
                                                
    $fields_display .='</div>';
                                        }
                                        if(
    $list_field->field_type === 'checkbox') {
                                            
    $values_field explode(";;",$list_field->field_value);
                                            
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$list_field->field_label.'</label>';
                                                foreach( 
    $values_field as $value_field ) {
                                                    
    $value preg_replace("#[^a-zA-Z-0-9]#"""JText::_($value_field));
                                                    
    $fields_display .= '<input type="checkbox" value="'.$value.'" name="'.$field_id.'" class="" aria-label="'.JText::_($value_field).'" ><label for="'.$field_id.'">'.JText::_($value_field).'</label>'//TODO add required system
                                                
    }
                                                
    $fields_display .='</div>';
                                        }
                                        if(
    $list_field->field_type === 'select') {
                                            
    $values_field explode(";;",$list_field->field_value);
                                            
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$list_field->field_label.'</label><select id="'.$field_id.'" aria-label="'.JText::_($value_field).'"><option value="">'.JText::_('FLEXI_SELECT').'</option>';
                                                foreach( 
    $values_field as $value_field ) {
                                                    
    $value preg_replace("#[^a-zA-Z-0-9]#"""JText::_($value_field));
                                                    
    $fields_display .='<option value="'.$value.'" class="'.$required.'">'.JText::_($value_field).'</option>';
                                                }
                                            
    $fields_display .='</select></div>';
                                        }
                                        if(
    $list_field->field_type === 'file') {
                                            
    $fields_display .= '<h3>NOT COMPLETE FUNCTION</h3><div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$field_label.'</label><input type="file" name="'.$field_id.'" accept="'.$value.'" id="'.$field_id.'" '.$placeholder.' aria-label="'.$field_label.'" class="'.$required.'"></div>';
                                        }
                                        if(
    $list_field->field_type === 'phone') {
                                            
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$field_label.'</label><input type="phone" name="'.$field_id.'" pattern="'.$value.'" id="'.$field_id.'" '.$placeholder.' aria-label="'.$field_label.'" class="'.$required.'"></div>';
                                        }
                                        if(
    $list_field->field_type === 'hidden') {
                                            
    $fields_display .= '<input type="hidden" name="'.$field_id.'" id="'.$field_id.'">';
                                        }
                                        if(
    $list_field->field_type === 'freehtml') {
                                            
    $fields_display .= '<div class="field"><p>'.$field_label.'</p><p>'.JText::_($list_field->field_value).'</p></div>';
                                        }
                                        if(
    $list_field->field_type === 'url') {
                                            
    $fields_display .= '<div class="field"><label for="'.$field_id.'" class="'.$class.'">'.$field_label.'</label><input type="url" name="'.$field_id.'" pattern="'.$list_field->field_value.'" id="'.$field_id.'" '.$placeholder.' aria-label="'.$field_label.'" class="'.$required.'"></div>';
                                        }
                                }
                            }

        
    $html '
            <form id="contact-form-'
    .$formid.'" method="POST" class="form-validate" enctype="multipart/form-data">
            <fieldset>
                '
    .$titleformD.'
                '
    .$fields_display.'
                '
    .$consent_field.'
                '
    .$captcha_div.'
            <input type="submit" name="submit" value="'
    .JText::_('FLEXI_FIELD_EMAIL_SUBMIT_LABEL_VALUE').'" class="'.$submit_class.'">
            <input type="hidden" name="emailtask" value="plg.email.submit" />
            <input type="hidden" name="emailto" value="'
    .$addr.'" />
            <input type="hidden" name="itemid" value="'
    .$item->id.'" />
            <input type="hidden" name="itemtitle" value="'
    .$item->title.'" />
            <input type="hidden" name="itemalias" value="'
    .$item->alias.'" />
            <input type="hidden" name="catid" value="'
    .$item->catid.'" />
            <input type="hidden" name="return" value="" />
            '
    .JHtml::_("form.token").'
            </fieldset>
            </form>'

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X