Bonjour,
Continuant dans ma lancée de gestion d'un aéroclub sur Galette 0.7, j'ai
ajouté la liste des avions de l'aéroclub.
J'ai voulu copier sur le plugin Auto pour avoir des images
personnalisées pour chaque avion et je n'arrive pas à le faire tomber en
marche.
Tout d'abord, dans la classe de base picture.class.php il y a un oubli
dans la fonction delete() (ligne 316) :
$del = $zdb->db->delete(
PREFIX_DB . $this->tbl_prefix . $class::TABLE,
$zdb->db->quoteInto($class::PK . ' = ?', $this->db_id)
);
Il manque le "$this->tbl_prefix" ce qui fait qu'une classe héritée ne
pourra pas se supprimer, il essayera de supprimer l'image d'un adhérent
et non de la classe héritée.
Hors donc, j'ai créé une classe PiloteAvionPicture qui contient
exactement ceci :
-- début piloteAvionPicture.class.php --
require_once WEB_ROOT . 'classes/picture.class.php';
class PiloteAvionPicture extends Picture {
protected $tbl_prefix = PILOTE_PREFIX;
const PK = PiloteAvion::PK;
//path is relative to Picture class, not to PilotePicture
protected $store_path = '../plugins/Pilote/avions_photos/';
/**
* Gets the default picture to show, anyways
*
* @see Logo::getDefaultPicture()
*
* @return void
*/
protected function getDefaultPicture() {
global $plugins;
$this->file_path = $plugins->getTemplatesPath('Pilote') .
'/picts/avion.png';
$this->format = 'png';
$this->mime = 'image/png';
$this->has_picture = false;
}
}
-- fin piloteAvionPicture.class.php --
J'arrive bien à ajouter une ligne dans la bonne table associée quand je
fais un upload via :
$res = $avion->picture->store($_FILES['photo']);
Mais j’obtiens un $res = -4, et le fichier n'est pas copié dans le
répertoire qui existe.
Plus tard à l'affichage, en debug, je vois qu'il essaye d'afficher
l'image depuis le bon endroit, et il considère qu'il existe
(hasPicture() = true) mais comme l'image n'existe pas, il n'affiche rien.
Actuellement, en test, je suis sous WinXP + EasyPHP, à priori pas de
problèmes de droits d'écriture.
Une idée ou une piste ?
Merci,
Mélissa