Back to top

Autore Topic: Creare pligin per creare cartelle  (Letto 11036 volte)

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Creare pligin per creare cartelle
« il: 11 Apr 2012, 00:02:47 »
Ciao,
ho creato un plugin che al login mi crea uan cartella con l'ID. Questa è la funzione che ho creato:
     function onLoginUser() {
        $app = &JFactory::getApplication();
        $user = JFactory::getUser();
       
        if ($user->id!=null) {
            mkdir('./images/contents/'.$user, 0744);
            return true;
        } else {
            return false;
        }
    }
solo che quando faccio il login, non succede nulla. Qualcuno sa darmi qualche suggerimento?
La mia idea è di creare un plugin che al primo accesso mi crea la cartella con nome ID dell'utente (in modo da essere sicuro che sia univoco).

Grazie 1000 per l'aiuto!!!

Salvo

Offline gargamella16

  • Appassionato
  • ***
  • Post: 201
  • Sesso: Maschio
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #1 il: 11 Apr 2012, 00:43:15 »
non capisco il senso di quello che vuoi fare puoi spiegarmi meglio?


è chiaro che l'ID utente è univoco  :o

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #2 il: 11 Apr 2012, 09:14:47 »
in pratica devo creare una cartella per ogni utente registrato. la mia idea è: quando l'utente accede, viene creata la cartella in "path/ID" (con ID che è un numero univoco). Utilizzo l'id proprio per la sua univocità.
Ho creato il plugin e installato senza problemi, ma quando faccio il login non succede nulla, la cartella non viene create e non trovo nessun codice di errore.

Grazie per la'iuto.
Salvo

mau_develop

  • Visitatore
Re:Creare pligin per creare cartelle
« Risposta #3 il: 11 Apr 2012, 09:39:59 »
...quindi io accedo mille volte e tu ti trovi 1000 cartelle... buona idea!
M

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #4 il: 11 Apr 2012, 10:09:09 »
ovviamente non è un'idea giusta...  ;)
però se funziona devo solo associarlo all'evento di registrazione di un'utente. Hai qualche suggerimento da darmi?  :)

Grazie
Salvo


Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #6 il: 11 Apr 2012, 11:35:07 »
quindi basta eliminare la riga "mkdir('./images/contents/'.$user, 0744)" e inserire "JFolder::create(./images/contents/'.$user->id, 0744)", giusto???

grazie
Salvo

Offline webbati

  • Esploratore
  • **
  • Post: 116
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #7 il: 11 Apr 2012, 11:40:39 »
assolutamente no

Citazione
...quindi io accedo mille volte e tu ti trovi 1000 cartelle... buona idea!

prima devi almeno controllare che la cartella non esista già
« Ultima modifica: 11 Apr 2012, 11:43:10 da webbati »

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #8 il: 11 Apr 2012, 11:55:43 »
bene, vedo che ho capito tutto...  ;D
allora come dovrei fare? poi a quale evento dovrei associare il plugin?

grazie
salvo

mau_develop

  • Visitatore
Re:Creare pligin per creare cartelle
« Risposta #9 il: 11 Apr 2012, 13:14:00 »
/'.$user, 0744)"
-------------------------
anche qs lo vedo male.. se l'user è:  ?*pippo?* ... come la crei una cartella così?
dovresti codificare tutto, magari md5 o creando un algoritmo.

poi è possibile fare un gioco che su alcuni sistemi crea problemi nominando la cartella .php, basta che io sia l'user pippo.php

comunque è tutto nel link sopra ciò che vuoi sapere,... per l'evento...  la registrazione o la conferma se esiste, non so se esiste il trigger, però lo puoi creare.

...poi ... mi divertirei a provare che succede se l'user fosse pippo,0777)/* ...... sai che mi stimolano i tuoi script? :):)

M.
« Ultima modifica: 11 Apr 2012, 13:17:17 da mau_develop »

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #10 il: 11 Apr 2012, 13:23:36 »
$user è un oggetto, basta fare "$user->id" per avere l'id univoco associato all'utente.
Infatti pensavo di fare: If(user!=null) then {"crea cartella"} con JFolder.
Stasera dò un'occhiata al link che mi hai passato e ti faccio sapere.

Ciao e grazie
Salvo

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #11 il: 11 Apr 2012, 23:29:11 »
Ho provato con questa funzione:
function onUserLogin() {
        $app = &JFactory::getApplication();
        $user = JFactory::getUser();
       
        $mode = 0744;
       
        if ($user->id!=null) {
            $path = JPATH_SITE . "/images/content/" . $user->id;
            JFolder::create($path);
            return true;
        } else {
            $path = JPATH_SITE . "/salvo";
            JFolder::create($path);
            return false;
        }
    }

ma non succede nulla. Qualche idea???

Grazie
Salvo

mau_develop

  • Visitatore
Re:Creare pligin per creare cartelle
« Risposta #12 il: 12 Apr 2012, 12:35:09 »
$mode = 0744;
------------------------
cosa ti serve?

M.

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #13 il: 12 Apr 2012, 13:37:39 »
un plugin che quando un utente si registra al sito, crea una cartella in un determinato path e che ha come nome l'ID dell'utente. Questo perché l'utente carica dei file (immagini, etc...) in uno spazio dedicato!

Grazie per l'aiuto
Salvo

mau_develop

  • Visitatore
Re:Creare pligin per creare cartelle
« Risposta #14 il: 12 Apr 2012, 17:12:10 »
no, cosa ti serve $mode se poi non lo usi

e app ? perchè la istanzi? se nn ci fai nulla non fa nulla da sola

M.

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #15 il: 12 Apr 2012, 17:17:36 »
qpp non mi serve, è un copia e incolla di troppo, mentre mode lo uso l'ho tolto solo per capire se il problema era quella variabile, ma mi sbagliavo!

Offline webbati

  • Esploratore
  • **
  • Post: 116
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #16 il: 12 Apr 2012, 17:40:19 »
nel file xml di installazione lo hai definito come plugin di tipo 'user' ?

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #17 il: 12 Apr 2012, 18:24:33 »
Si. E' corretto l'evento "onUserLogin" ???

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #18 il: 13 Apr 2012, 10:52:31 »
nessun suggerimento?

Offline webbati

  • Esploratore
  • **
  • Post: 116
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #19 il: 13 Apr 2012, 12:16:09 »
Prova così:

sostituisci

Codice: [Seleziona]
onUserLogin()
con

Codice: [Seleziona]
onUserLogin($user, $options = array())
e recuperi l'ID dell'utente così:

Codice: [Seleziona]

if ($uid = intval(JUserHelper::getUserId($user['username'])))


Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #20 il: 13 Apr 2012, 17:05:50 »
ok, grazie! Stasera lo provo.
Volevo anche chiederti quale è l'evento di registrazione di un nuovo utente?
Nella funzione ho messo "onLoginUser" per fare una prova, ma se volessi cambiare e associarlo all'evento di iscrizione di un nuovo utente che nome devo dare? è sempre di tipo user?

Grazie
Salvo

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #21 il: 13 Apr 2012, 19:56:05 »
Purtroppo non funziona...
Altri suggerimenti? Aiutoooooo!!!

mau_develop

  • Visitatore
Re:Creare pligin per creare cartelle
« Risposta #22 il: 13 Apr 2012, 20:03:32 »
..secondo me stai andando a caso... ma hai fatto il pacchetto... installato il plugin... attivato... usato lo standard joomla per i nomi etc?

M.

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #23 il: 13 Apr 2012, 20:14:43 »
Premesso che è il mio primo plugin, credo che sto facendo tutto quello che mi hai detto. Ti incollo il file xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<install version="2.5" type="plugin" group="user">
    <name>Creare cartelle al 1° login utente</name>
    <author>Salvo</author>
    <creationDate>April 2012</creationDate>
    <copyright>(C) 2005 Open Source Matters. All rights reserved.</copyright>
    <license></license>
    <authorEmail>XXXXXXX</authorEmail>
    <authorUrl>XXXXXXX</authorUrl>
    <version>1.0</version>
    <description>Allows searching of Categories information</description>
    <files>
        <filename plugin="contentCreateFolder">contentCreateFolder.php</filename>
    </files>
    <params>
    </params>
</install>
viene installato senza problemi e dal pannello di amministrazione riesco ad accederci senza erroro. Però, quando faccio il login, non crea nessuna cartella!!!

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #24 il: 13 Apr 2012, 20:18:23 »
Mentre il PHP completo è questo:
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
 
// Import library dependencies
jimport('joomla.plugin.plugin');
 
class plgUserCreateFolder extends JPlugin {
   
    //function plgContentCreateFolder( &$subject, $config ) {
    function plgUserCreateFolder( &$subject, $config ) {
        parent::__construct( $subject, $config );
    }

    //function onBeforeDisplayContent() {
    //function onLoginUser() {
    function onUserLogin($user, $options = array()) {
        //$user = JFactory::getUser();
       
        $mode = 0744;
        $user_id = (int)$user['id'];
        //if ($user->id!=null) {
        if ($uid = intval(JUserHelper::getUserId($user['username']))) {
            $path = JPATH_SITE . '/images/content/' . $user_id;
            JFolder::create($path);
            return true;
        } else {
            $path = JPATH_SITE . '/salvo';
            JFolder::create($path);
            return false;
        }
    }
}
?>

Grazie per l'aiuto!!!

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #25 il: 13 Apr 2012, 20:26:54 »
Ho fatto una prova inserendo questa parte di codice:
        $user = JFactory::getUser();
        $user_id = $user->id;
        if ($user_id!=null) {
            $path = JPATH_SITE . '/images/content/' . $user_id;
            JFolder::create($path);
            return true;
        } else {
            $path = JPATH_SITE . '/salvo';
            JFolder::create($path);
            return false;
        }
durante l'inserimento di un annuncio e funziona regolarmente, quindi il problema è che non viene richiamato il plugin nel modo corretto. Sai indicarmi se ho fatto qualche errore nella configurazione?

Grazie 1000!

mau_develop

  • Visitatore
Re:Creare pligin per creare cartelle
« Risposta #26 il: 14 Apr 2012, 10:09:24 »
che cos'è e cosa fa?

function plgUserCreateFolder( &$subject, $config ) {
        parent::__construct( $subject, $config );
    }

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #27 il: 14 Apr 2012, 16:06:44 »
Onestamente non lo so, ho copiato da un altro plugin trovato in rete, cosa ho sbaglioto?

grazie
Salvo

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #28 il: 15 Apr 2012, 17:42:38 »
Idee?

Grazie
Salvo

mau_develop

  • Visitatore
Re:Creare pligin per creare cartelle
« Risposta #29 il: 15 Apr 2012, 17:57:03 »
Idee?
--------
beh si, ... studia. Aiutarti a farlo o darti dritte è un conto, farlo un'altro.

M.

Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #30 il: 16 Apr 2012, 09:26:19 »
Non mi sembra di aver mai scritto, puoi farmi il plugin? Ho sempre chiesto dei suggerimenti che ho riprodotto, ma purtroppo non hanno funzionato.
Continuerò a cercare come risolvere il problema...

Ciao e grazie
Salvo

Offline webbati

  • Esploratore
  • **
  • Post: 116
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #31 il: 16 Apr 2012, 10:46:14 »
Controlla che i nomi della classe, dei file e della definizione del nome del plugin nel file xml siano tutti uguali.

qui

Codice: [Seleziona]

 if ($uid = intval(JUserHelper::getUserId($user['username']))) {
$path = JPATH_SITE . '/images/content/' . $user_id;


ovviamente dovrebbe essere così se non era un refuso del tuo copia e incolla

Codice: [Seleziona]

 if ($uid = intval(JUserHelper::getUserId($user['username']))) {
 $path = JPATH_SITE . '/images/content/' . $uid;
 
 


questo cos'è? questo ti produce un errore,

Codice: [Seleziona]

$user_id = (int)$user['id'];


e cava anche sta roba come ti ho già detto

Codice: [Seleziona]

$user = JFactory::getUser();
$user_id = $user->id;



se  avessimo già l'id in $user non servirebbe questo no?
Codice: [Seleziona]

JUserHelper::getUserId($user['username'])



controlla di aver scritto tutto bene, di aver fatto tutte le modifiche che ti abbiamo detto e vedrai che ti funziona

Offline webbati

  • Esploratore
  • **
  • Post: 116
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #32 il: 16 Apr 2012, 12:26:05 »
Citazione

Volevo anche chiederti quale è l'evento di registrazione di un nuovo utente?
Nella funzione ho messo "onLoginUser" per fare una prova, ma se volessi cambiare e associarlo all'evento di iscrizione di un nuovo utente che nome devo dare? è sempre di tipo user?


puoi fare riferimento a questa pagina:

http://docs.joomla.org/Plugin/Events

tenendo conto che alcuni eventi sono stati rinominati, qui puoi vedere quali:

http://docs.joomla.org/Adapting_a_Joomla_1.5_extension_to_Joomla_1.6#Renamed_Events


ciao


Offline playpaf

  • Esploratore
  • **
  • Post: 91
    • Mostra profilo
Re:Creare pligin per creare cartelle
« Risposta #33 il: 16 Apr 2012, 13:39:27 »
Sono riuscito a creare il plugin e a far creare la cartella sul mio PC in locale. Se metto il plugin sul sito online e provo ad accedere, la pagina del browser rimane bianca (al momento non ho verificato se crea la cartella, ora non posso controllare), dovrò fare delle verifiche.
Credo di aver dimenticato di dire che la versione di Joomla utilizzata è la 2.5!

Ciao e grazie.
Salvo

 



Web Design Bolzano Kreatif