En visitant ce site, vous acceptez l'utilisation de cookies afin de vous proposer les meilleurs services possibles.

Supprimer les caractères spéciaux des media produit

Plus d'informations
il y a 7 ans 10 mois #1 par jrm.marquis
Bonjour,

J'ai déjà pas mal recherché sur Google, sans trouver de solution à mon problème.

Un certain nombre utilisateurs peuvent mettre à jour leurs produits (et donc insérer des images) sur mon site.
Bien que je leur ai déjà dit de ne pas envoyer des image contenant des caractères accentués, il y en as toujours qui envoie un fichier contenant des accents ou des espaces. Ce qui fait planter l'interface d'administration de virtuemart.

J'aimerais que l'envoi d'image depuis l'interface d'administration de virtuemart "nettoie" les fichiers pour que ceux-ci ne soient plus avec des accents ou des espaces.
(Ceci se fait correctement si j'envoie un fichier depuis l'onglet media de Joomla)

D'après les différents tests que j'ai pu faire , je vois que c'est le fichier suivant qui s'occupe de traiter l'envoie de fichier: /administrator/components/com_virtuemart/models/media.php

J'ai réussi à supprimer les caractères dans le nom de fichiers, mais pas pour l'URL complet en modifiant un peu la fonction store:
public function store(&$data) {

		$data['virtuemart_media_id'] = $this->getId();
		if(!vmAccess::manager('media.edit')){
			vmWarn('Insufficient permission to store media');
			return false;
		} else if( empty($data['virtuemart_media_id']) and !vmAccess::manager('media.create')){
			vmWarn('Insufficient permission to create media');
			return false;
		}

		vmLanguage::loadJLang('com_virtuemart_media');
		if (!class_exists('VmMediaHandler')) require(VMPATH_ADMIN.DS.'helpers'.DS.'mediahandler.php');

		$table = $this->getTable('medias');

		$table->bind($data);
		$data = VmMediaHandler::prepareStoreMedia($table,$data,$data['file_type']); //this does not store the media, it process the actions and prepares data
        
       //Renomme le nom du fichier
       // Ici j'arrive à renommer le nom du fichier
        $data['file_title'] = JFile::makeSafe($data['file_title']);
        $data['file_title'] = str_replace(' ', '_', $data['file_title']);
        
        //Mais il me reste à modifier également les URL sans pour autant supprimer les slash
        $data['file_url'] = ????
        $data-['file_url_thumb'] = ????
      
		
        if($data===false) return $table->virtuemart_media_id;
		// workarround for media published and product published two fields in one form.
		$tmpPublished = false;
		if (isset($data['media_published'])){
			$tmpPublished = $data['published'];
			$data['published'] = $data['media_published'];
		}

		$table->bindChecknStore($data);

		if($tmpPublished){
			$data['published'] = $tmpPublished;
		}
		return $table->virtuemart_media_id;
	}

J'utilise VirtueMart 3.2.14

Merci d'avance à ceux qui pourrons me donner un coup de main.

Connexion ou Créer un compte pour participer à la conversation.