Forum CMS Made Simple FR

Version complète : Udt Gallery et Uploads
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.11.2
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~


Bonsoir,

Voila je revient avec ce même besoin et question

Quand un membres uploads coté frontend un fichiers avec le module Uploads il y a le nom de l'image, le titre et la description.

Je souhaiterai que c 'est informations soit remplie en même temps dans ça galerie qui est a sont nom avec titre et description qu'il a remplie dans la page uploads du module uploads.

Voila mon premier udt qui fonctionne bien.

Code :
[== PHP ==]
$gCms = cmsms();

$propname="email";
#The name of an existing FrontEndUser property to assign to the new group.
#Could be a dummy property.
#If no property is assigned to the group there will be an error when trying to edit the group.

if (!cms_utils::get_module('Gallery')) {return 'Erreur Module';}
if (!cms_utils::get_module('Uploads')) {return 'Erreur Module';}
$feu = cms_utils::get_module('FrontEndUsers');


if (!$feu) {return;}

$uname = $params['name'] ? $params['name'] : $params['username'];
$uid = $params['id'];
if (!$uname || !$uid) {return '2';}

$result=$feu->AddGroup( "Groupe_" . $uname, "Groupe personnel de " . $uname);
if (!$result[0]) {return '3';}
$gid=$result[1];

if (!$feu->AssignUserToGroup( $uid, $gid)) {return '3';}

if (!$feu->AddGroupPropertyRelation( $gid, $propname, 1, -1, 1)) {return '4';}

$db =& $gCms->GetDb();
$category_id= $db->GenID( cms_db_prefix () . "module_uploads_categories_seq");
$category_name = "Album photos de" . $uname;
$category_desc = "Les photos de " . $uname;
$category_path = "images/Gallery/membres/album_" . $uname;
$category_listable = 1;
$category_deletable = 1;
$category_expires_hrs = 0;
$category_scannable = 1;

$query = "INSERT INTO " . cms_db_prefix() . "module_uploads_categories
              (upload_category_id, upload_category_name, upload_category_description,
              upload_category_path, upload_category_listable, upload_category_deletable,
              upload_category_expires_hrs, upload_category_scannable, upload_category_groups)
              VALUES (?,?,?,?,?,?,?,?,?)";

$dbresult = $db->Execute( $query, array (
                                     $category_id,
                                     $category_name,
                                     $category_desc,
                                     $category_path,
                                     $category_listable,
                                     $category_deletable,
                                     $category_expires_hrs,
                                     $category_scannable,
                                     $gid));

if (!$dbresult) {return '5';}

$conf =& $gCms->GetConfig();
if (!mkdir( $conf['uploads_path'] . "/" . $category_path, 0755)) {return '6';}

( Si il peu être optimisé ou autre je ne suis pas contre )
Il créer un dossier et tout ce qui faut pour que mes nouveaux membres est sont dossier privée.


Ensuite voila un autre udt que j'avais trouvé sur .org mais il faudrait l'adapté pour que lorsque que un membre upload une photos avec un titre et une description celle-ci soit aussi enregistré dans gallery.

Code :
[== PHP ==]
$gCms = cmsms();
if (!$gCms->modules['FrontEndUsers']['object']) {return;}
if (!$gCms->modules['Uploads']['object']) {return;}
if (!$gCms->modules['Gallery']['object']) {return;}
$db =& $gCms->GetDb();

$gallery= $params['category'];
$filename = $params['name'];
$title = $params['summary'];
$comment = $params['description'];

if ( !ereg( "^membres/(.+)", $gallery, $capture) ) {return;}
$uname = $capture[1];

$query = "SELECT fileid FROM " . cms_db_prefix() . "module_gallery WHERE filepath='membres' AND filename='" . $uname . "/' LIMIT 1";
$parent_id = $db->getOne( $query );
if (!$parent_id) {return;}

$query = "INSERT INTO " . cms_db_prefix() . "module_gallery
              (fileid, filename, filepath, filedate, fileorder,
               active, defaultfile, galleryid, title, comment)
              VALUES (0, ?, ?, NOW(), ?, ?, ?, ?, ?, ?)";

$dbresult = $db->Execute( $query, array (
                                     $filename,
                                      $gallery,
                                      0,1,0,
                                      $parent_id,
                                      $title,
                                      $comment));


Alors oui je demande beaucoup ou pas mais cette ensemble d'udt sur mon projet actuelle me serait d'un grand utile.

Donc je peu faire des testé et j'ai déjà essaye plusieurs modifie sur cette udt en fonction du premier est rien n'y fait dans gallery l'image est bien la mais aucun titre ni description dans les champs concerner.

Merci d'avance de l'aide pour la mise au point et propre de l'udt.
Salut,

Avant d'aller plus loin, as-tu été regarder les différentes méthodes du module Gallery ?

C'est un peu chaud d'attaquer directement en SQL. S'il y a des fonctions pour gérer ces différents éléments, il faut passer par elles car elles contiennent toute la logique nécessaires.

J'ai regardé en diagonale : dans le module Gallery, il y a un dossier lib dans lequel tu trouveras un fichier class.Gallery_utils.php.

Il y a là dedans une fonction AddFileToDB.

Cherche peut-être de ce côté-là ou en tout cas dans le module pour voir comment on fait pour ajouter "proprement" ton image.

Autre chose :
Code :
[== PHP ==]
$gCms->GetDb();

ne peut plus être écrit comme ca. Remplace "$gCms" par "cmsms()"
Pour t'aider à voir pourquoi le titre et la description n'apparaissent pas, vérifie que tes variables sont bien remplies en affichant leur contenu quelque part.
Bonjour,

Oui j'ai déjà repérer la fonction, je vais essayé dans la journée de revoir l'udt.

Je vais remplacer ce que tu ma dit aussi et normal que les udt soit chargé il date un peu quand je les ai trouvé sur le .org pour ça j'aimerai les faire fonctionne ensemble.

ça peu toujours servir Wink
Le deuxième UDT c'est lui qui me pose beaucoup souci car il ne fonctionne pas du tout.

La suis complétement perdu et j'avance même plus.
Avant d'aller plus loin, est-ce que la seconde UDT est exécutée au moment de l'upload d'une photo ?

Elle fait une erreur/pas ce que tu veux ou ne se lance carrément pas du tout ?
Donc le premier udt est accroché a l événement lorsque que un nouveau membre s'inscrit:
Création d'un groupe,
Mise en place de du propname commun qui est email,
Creation de la catégorie dans uploads avec le groupe personnel créer,
Création du dossier.

Donc en temps normal ensuite chaque membre a sont dossier et peu uploader des fichier dans sont propre dossier et chacun ne vois que sont dossier et sont contenu.


Pour le second udt j'ai tenté plein modification mais rien ne fonctionne.

Ce que je souhaite c 'est lorsque un membre upload une photo il peu mettre un titre et une description sur la formulaire upload.

J'aimerai que cela soit insérer dans table gallery dans le champs de l'image uploader.

J'ai aucune erreur mais j'ai mis des chiffre au niveau return est dés le premier return ça bloque.

Pour ça je fait appel a la communauté car me suis souvent débrouiller mais la je bloque totalement.
est-ce que tu as vérifié que tes variables étaient remplies au moment ou tu les utilises dans l'UDT ?

C'est difficile de "debugger" en regardant le code.

Si tu veux, tu peux me passer un accès temporaire (un utilisateur admin "heriquet") le temps de regarder d'ou ca coince. On gagnera du temps tous les 2.
Alors oui j'ai vérifier a première vue elle reste vide.

Je sais que la debbugage est assez lourd j'en suis bien désoler.

Je t'envoie les informations necessaires Wink
Bonsoir ou nuit,

Après longue journée a vouloir quand même trouver la réponse a cette udt qui peu être assez utile dans certaine utilisation.

Avec beaucoup aide et de piste lancé par Heriquet que je remercie.


J'ai trouvé est réussie a faire faire ce que je voulais de l'udt Smile

Je vais remettre au propre et optimisé au mieux.
Le posterai ici Wink

Bonne nuit.
Bravo pour ta persévérance !
Donc voila après un certain temps passé l'udt qui fonctionne:

Code :
[== PHP ==]
$gCms = cmsms();

$modops = cmsms()->GetModuleOperations();
$uploads = $modops->get_module_instance('Uploads');
$gallery = $modops->get_module_instance('Gallery');
$feu = $modops->get_module_instance('FrontEndUsers');
$feu_user = $feu->LoggedInID();

$db = cmsms()->GetDB();

$filepath = "membres/". $feu_user ."/";
$filename = $params['name'];
$title = $params['summary'];
$comment = $params['description'];


$query = "SELECT fileid FROM " . cms_db_prefix() . "module_gallery WHERE filepath='membres/' AND filename='" . $feu_user . "/' LIMIT 1";
$galleryid = $db->getOne( $query );

if (!$galleryid) {return 'Erreur galerie parent';}

$query = "INSERT INTO " . cms_db_prefix() . "module_gallery
            (fileid, filename, filepath, filedate, fileorder,
             active, defaultfile, galleryid, title, comment)
             VALUES (0, ?, ?, NOW(), ?, ?, ?, ?, ?, ?)";

$dbresult = $db->Execute( $query, array (
                                    $filename,
                                    $filepath,
                                    0,1,0,
                                    $galleryid,
                                    $title,
                                    $comment));

Donc maintenant je voudrais juste savoir ce que je peu optimisé ou pas.

Je voulais utilisé la function que offre le module gallery mais alors c'est une autre histoire pas réussi a faire fonctionner.
Vraiment pour chicaner...

Tu ne testes pas le résultat de $feu->LoggedInID();

=> s'il est vide, ca coince

Mais c'est vraiment pour chicaner hein Wink.
Pour chicaner... suis d'accord avec toi vais rajouté cela car ça peu ce produire.

Vue le temps passé a faire fonctionné et ben je peu bien optimisé cela Smile
ça me permet d'apprendre car chaque chose que j'apprends sera moins de chose que je viendrai demandé ici ^^
Salut,
j'ai suivi de loin, mais pour chicaner, tu peux enlever la toute première ligne :
$gCms = cmsms();
et tout ce que tu apprends pourra te servir à aider les autres ensuite Smile
Salut,

D'accord c'est par rapport a quoi que je peu le retirer $gCms = cmsms();

Par rapport a cela je pense: $modops = cmsms()->GetModuleOperations();
ouioui, puisque tu n'utilises plus $gCms et c'est pour pinailler Smile
Chicaner et pinailler seront ressorti de ce poste Smile

Suis toujours entrain voir comment améliorer et en tirer un maximum ^^

Merci.
Bonjour,

Donc après plusieurs teste tout fonctionne comme je souhaité.
Me reste plus que a mettre encore au propre tout par rapport a mes debug et teste.


Je posterai surement dimanche l'ensemble au propre car cela peu servir et c'est simple a mettre en place. ( aura peu être encore des optimisations a faire )


Si possible le proposerai en parti développement et astuces.

Bonne journée.