19/11/2011, 01:45:07
Bon voilà, c'est réglé en modifiant FEU.
la solution trouvée:
FEU crée une image en la nommant de la sorte: $uid_image.jpg
la chose à faire était qu'à chaque modif elle soit nommé: $uid_image$1.jpg
$1 étant incrémenté de 1 à chaque changement.
si l'image était vidé, on réinitialise le tout et au prochain upload, on recommence à $uid_image.jpg... puis $uid_image1.jpg...$uid_image2.jpg...etc
il fallait aussi que ça fonctionne si l'admin changeait l'image ou l'effacer depuis la partie admin.
donc les changement de script:
3 pages sont concernées:
FrontEndUsers.module.php
on récupère l'ancien nom de l'image
ligne 1239 (environ)
si ce nom existe on l'incrémente de 1
ligne 1286 (environ)
on efface l'ancienne image du serveur si elle existe
ligne 11299 (environ)
action.do_userchangesettings.php
on envoie le nom de l'image précédemment utilisé à la fonction ManageImageUpload()
ligne 289 (environ)
action.do_edituser3.php
on récupère le nom de l'image précédemment utilisé et on l'envoie à la fonction ManageImageUpload()
ligne 309 (environ)
voilà, comme ça à chaque nouvel upload d'image le nom change et s'incrémente de 1 aussi bien coté frontend que coté admin et du coup l'image est bien régénéré à chaque changement.
Pour CGSI l'utilisation du paramètre nobchache=1 marchait aussi mais obligeait à recrée une miniature à chaque affichage dont plus d'utilisation du cache du navigateur.
avec ces changement les images restent en cache tant qu'il n'y a pas de nouvel upload.
si quelqu'un voit des améliorations aux changements que j'ai fait, allez-y, je suis tout ouie!
la solution trouvée:
FEU crée une image en la nommant de la sorte: $uid_image.jpg
la chose à faire était qu'à chaque modif elle soit nommé: $uid_image$1.jpg
$1 étant incrémenté de 1 à chaque changement.
si l'image était vidé, on réinitialise le tout et au prochain upload, on recommence à $uid_image.jpg... puis $uid_image1.jpg...$uid_image2.jpg...etc
il fallait aussi que ça fonctionne si l'admin changeait l'image ou l'effacer depuis la partie admin.
donc les changement de script:
3 pages sont concernées:
- FrontEndUsers.module.php
- action.do_userchangesettings.php
- action.do_edituser3.php
FrontEndUsers.module.php
on récupère l'ancien nom de l'image
ligne 1239 (environ)
Code :
// avant changement
function ManageImageUpload($id, $fldprefix, $fldname, $uid)
//après changement
function ManageImageUpload($id, $fldprefix, $fldname, $uid, $oldval)
si ce nom existe on l'incrémente de 1
ligne 1286 (environ)
Code :
[== Indéfini ==]
// avant changement
$ext = strchr($file['name'],'.');
$destname = $uid.'_'.$fldname.$ext;
// après changement
if(isset($oldval)&& !empty($oldval)){
function ajouteun($masque){
return $masque[1].($masque[2]+1).$masque[3];
}
$destname = preg_replace_callback('`([0-9]_image)(\d+)?(\.[a-z])`','ajouteun',$oldval);
}
else{
$ext = strchr($file['name'],'.');
$destname = $uid.'_'.$fldname.$ext;
}
on efface l'ancienne image du serveur si elle existe
ligne 11299 (environ)
Code :
[== Indéfini ==]
// avant changement
// Create the destination directory if necessary
$destDir = $this->get_upload_dirname($uid);
@mkdir($destDir);
if( !is_writable( $destDir ) )
{
return array(false,$this->Lang('error_destinationnotwritable'));
}
@cms_move_uploaded_file($file['tmp_name'], cms_join_path($destDir,$destname));
return array(true,$destname);
}
// après changement
// Create the destination directory if necessary
$destDir = $this->get_upload_dirname($uid);
@mkdir($destDir);
if( !is_writable( $destDir ) )
{
return array(false,$this->Lang('error_destinationnotwritable'));
}
@cms_move_uploaded_file($file['tmp_name'], cms_join_path($destDir,$destname));
if(isset($oldval)&& !empty($oldval)){
@unlink(cms_join_path($destDir,$oldval));
}
return array(true,$destname);
}
action.do_userchangesettings.php
on envoie le nom de l'image précédemment utilisé à la fonction ManageImageUpload()
ligne 289 (environ)
Code :
[== Indéfini ==]
// avant changement
$result = $this->ManageImageUpload($id, 'feu_input_', $propname, $uid);
// après changement
$result = $this->ManageImageUpload($id, 'feu_input_', $propname, $uid, $val );
action.do_edituser3.php
on récupère le nom de l'image précédemment utilisé et on l'envoie à la fonction ManageImageUpload()
ligne 309 (environ)
Code :
[== Indéfini ==]
// avant changement
// it's an uploaded file type
$result = $this->ManageImageUpload($id,'input_', $k, $user_id);
// après changement
// it's an uploaded file type
$oldval = trim($params['hidden_'.$k]);
$result = $this->ManageImageUpload($id,'input_', $k, $user_id, $oldval );
voilà, comme ça à chaque nouvel upload d'image le nom change et s'incrémente de 1 aussi bien coté frontend que coté admin et du coup l'image est bien régénéré à chaque changement.
Pour CGSI l'utilisation du paramètre nobchache=1 marchait aussi mais obligeait à recrée une miniature à chaque affichage dont plus d'utilisation du cache du navigateur.
avec ces changement les images restent en cache tant qu'il n'y a pas de nouvel upload.
si quelqu'un voit des améliorations aux changements que j'ai fait, allez-y, je suis tout ouie!