Results 1 to 9 of 9

Thread: Se si cancella un Documento il file non viene cancellato.

  1. #1
    fulvio is offline Sugar Community Member
    Join Date
    Sep 2007
    Location
    Lesmo - MB
    Posts
    124

    Post Se si cancella un Documento il file non viene cancellato.

    Ciao,
    mi succede questo: aggiungo uno o più Documents a SugarCRM 5.1. Tutto ok.
    Faccio qualche indagine e vedo che questi file vengono salvati in <sugardir>/cache/upload ma vengono rinominati con dei nomi del tipo c40ee878-.... f12fdba .... 69b82-.... ecc.
    Dall'interfaccia di Sugar cancello questi Documents, questi vengono tolti dalla lista dei Documents, e in Sugar non c'è più traccia di loro, ma se si guarda in <sugardir>/cache/upload i file fisici ci sono ancora tutti.
    E` un bug o secondo Voi è giusto che sia così ?
    fulvio

  2. #2
    DragonflyMaster is offline Sugar Community Member
    Join Date
    Dec 2007
    Location
    Rimini, Italy
    Posts
    1,421

    Default Re: Se si cancella un Documento il file non viene cancellato.

    Quote Originally Posted by fulvio View Post
    Ciao,
    mi succede questo: aggiungo uno o più Documents a SugarCRM 5.1. Tutto ok.
    Faccio qualche indagine e vedo che questi file vengono salvati in <sugardir>/cache/upload ma vengono rinominati con dei nomi del tipo c40ee878-.... f12fdba .... 69b82-.... ecc.
    Dall'interfaccia di Sugar cancello questi Documents, questi vengono tolti dalla lista dei Documents, e in Sugar non c'è più traccia di loro, ma se si guarda in <sugardir>/cache/upload i file fisici ci sono ancora tutti.
    E` un bug o secondo Voi è giusto che sia così ?
    fulvio
    I nomi strani che sugar dà ai file sono gli id che vengono memorizzati nel database per recuperare i documenti. Quando un documento/file viene cancellato, Sugar marca l'id corrispondente come deleted e in tal modo il documento non compare più nell'elenco. Il file fisicamente non viene cancellato perchè qualcuno lo potrebbe voler ripristinare, impostando nuovamente il flag deleted = 0.
    Perciò, per cancellare un file fisicamente, bisogna entrare nella cache e rimuoverlo a mano.
    Vero è che potrebbero anche mettere un pulsante per eliminare fisicamente il file...
    What do you think the cookie monster eats ?

  3. #3
    fulvio is offline Sugar Community Member
    Join Date
    Sep 2007
    Location
    Lesmo - MB
    Posts
    124

    Post Re: Se si cancella un Documento il file non viene cancellato.

    Quote Originally Posted by DragonflyMaster View Post
    I nomi strani che sugar dà ai file sono gli id che vengono memorizzati nel database per recuperare i documenti. Quando un documento/file viene cancellato, Sugar marca l'id corrispondente come deleted e in tal modo il documento non compare più nell'elenco. Il file fisicamente non viene cancellato perchè qualcuno lo potrebbe voler ripristinare, impostando nuovamente il flag deleted = 0.
    Perciò, per cancellare un file fisicamente, bisogna entrare nella cache e rimuoverlo a mano.
    Vero è che potrebbero anche mettere un pulsante per eliminare fisicamente il file...
    Mi sa che modificherò il codice in modo che venga fatta la cancellazione del file fisico.
    Anche perchè, quando nella cache saranno presenti decine e decine di file, se non addirittura centinaia, ti voglio vedere a trovare quelli cancellati solo "logicamente" e
    quindi fare una pulizia manuale, senza cancellare quelli buoni......

    grazie della risposta
    fulvio

  4. #4
    matrav is offline Junior Member
    Join Date
    Dec 2008
    Posts
    1

    Default Re: Se si cancella un Documento il file non viene cancellato.

    Quando avrai fatto la modifica potresti mandarla anche a me o comunque renderla pubblica, credo possa interessare anche altri che magari non sono tecnicamente in grado di "arrangiarsi" come te.
    Grazie e buone feste

  5. #5
    DragonflyMaster is offline Sugar Community Member
    Join Date
    Dec 2007
    Location
    Rimini, Italy
    Posts
    1,421

    Default Re: Se si cancella un Documento il file non viene cancellato.

    Quote Originally Posted by fulvio View Post
    Anche perchè, quando nella cache saranno presenti decine e decine di file, se non addirittura centinaia, ti voglio vedere a trovare quelli cancellati solo "logicamente" e
    quindi fare una pulizia manuale, senza cancellare quelli buoni......
    Hai proprio ragione!
    Se fosse disponibile una funzione che rimuove i file non più utilizzati la si potrebbe schedulare per farla girare una volta a settimana e fare pulizia...
    What do you think the cookie monster eats ?

  6. #6
    marco.disco's Avatar
    marco.disco is offline Sugar Community Member
    Join Date
    Nov 2007
    Location
    Perugia
    Posts
    217

    Default Re: Se si cancella un Documento il file non viene cancellato.

    Quote Originally Posted by DragonflyMaster View Post
    Hai proprio ragione!
    Se fosse disponibile una funzione che rimuove i file non più utilizzati la si potrebbe schedulare per farla girare una volta a settimana e fare pulizia...
    Nella sezione Admin->Schedulers trovate una voce che per default è inattiva (Prune Database on 1st of Month) che esegue tutto quello che vi occorre, è sufficiente abilitarla.

    maggiori info: http://www.sugarcrm.com/wiki/index.p...Data_and_Files

    Marco
    Marco Disco
    Triweb S.r.l.
    www.triweb.it
    SugarCRM Partner
    SugarCRM Certified Sales Specialist

  7. #7
    fulvio is offline Sugar Community Member
    Join Date
    Sep 2007
    Location
    Lesmo - MB
    Posts
    124

    Thumbs down Re: Se si cancella un Documento il file non viene cancellato.

    Quote Originally Posted by marco.disco View Post
    Nella sezione Admin->Schedulers trovate una voce che per default è inattiva (Prune Database on 1st of Month) che esegue tutto quello che vi occorre, è sufficiente abilitarla.

    maggiori info: http://www.sugarcrm.com/wiki/index.p...Data_and_Files

    Marco

    Purtroppo NON è così:
    quella funzione esegue una manutenzione SOLO sulle tabelle del database NON
    cancella i file fisici "orfani" presenti in /cache/upload
    Se qualcuno ha voglia di guardarsi il file _AddJobsHere.php presente in
    /modules/Schedulers può accorgersi che la funzione pruneDatabase( ) esegue SOLO
    quella "pulizia" delle tabelle e nient'altro.
    Ho approfondito la questione e trovato una soluzione per il modulo Documents, entro
    sera penso di riuscire ad aggiungerla a questo thread.

    fulvio
    Last edited by fulvio; 2009-01-07 at 10:27 AM.

  8. #8
    fulvio is offline Sugar Community Member
    Join Date
    Sep 2007
    Location
    Lesmo - MB
    Posts
    124

    Post Re: Se si cancella un Documento il file non viene cancellato.

    Quote Originally Posted by matrav View Post
    Quando avrai fatto la modifica potresti mandarla anche a me o comunque renderla pubblica, credo possa interessare anche altri che magari non sono tecnicamente in grado di "arrangiarsi" come te.
    Grazie e buone feste

    Premessa:
    1) non conosco a fondo l'architettura di Sugar, ci sto studiando,
    quindi prendete con le molle quello che dico qua sotto
    2) non sono un programmatore esperto, ma mi arrangio
    3) la versione sulla quale ho fatto queste prove è la 5.2,
    ma guardando il codice della 5.1 mi sembra del tutto uguale
    (almeno per il modulo Documents che qui viene trattato)
    4) mi scuso sin da ora per la lunghezza del post, non sono
    riuscito a spiegarmi con meno parole.

    Allora, dalle prove e dalle ricerche che ho fatto sul modulo
    Documents, Sugar si comporta così (almeno mi sembra...):
    supponiamo di voler aggiungere un documento, e in tempi successivi
    delle revisions dello stesso.
    Con Create Document inserisco i miei dati e quindi salvo.
    Sugar esegue:
    - l'upload di quel file, lo mette in cache/upload rinominandolo
    con un suo nome interno (id)
    - aggiunge un record nella tabella documents
    - aggiunge un record ANCHE nella tabella document_revisions.
    Consideriamo questo document come "padre" di una "famiglia" di
    documents.
    Ora creiamo un Document Revisions dal subpanel di quel documento "padre"
    Inserisco i dati richiesti, salvo. Qui Sugar esegue:
    - l'upload di quel file, lo mette in cache/upload rinominandolo
    con un suo nome interno (id)
    - aggiunge un record SOLO nella tabella document_revisions.
    Questo document è "figlio" di quel "padre" di prima.

    Ora voglio cancellare questo document, Sugar cancella TUTTA la "famiglia"
    non mi permette di cancellare solo il "figlio" o solo il "padre" e questo
    potrebbe essere corretto, o comunque è una scelta progettuale.

    Ma come detto nei precedenti post, Sugar esegue solo una cancellazione logica
    ovvero cambia il campo deleted (impostandolo = 1) nel record opportuno
    nella tabella documents, NON ESEGUE la cancellazione del file fisico in
    cache/upload, inoltre NON ESEGUE nemmeno la modifica al campo deleted dei
    record corrispondenti nella tabella document_revisions. Questo secondo me
    è un bug (secondo Voi ?) poichè in questo modo la tabella document_revisions
    cresce all'infinito, nemmeno il pruneDatabase presente nello Scheduler riesce
    a fare manutenzione su questa tabella.

    Nella cartella modules/Documents esiste un file chiamato Delete.php; se si va a
    leggere il codice presente in quel file ci si accorge che dovrebbe effettivamente
    eseguire anche la cancellazione del file fisico in cache/upload, ma di fatto
    questo codice NON VIENE ESEGUITO. Potete cancellare o rinominare il file
    Delete.php presente in modules/Documents e Sugar non si lamenta.
    Quindi, il codice che esegue l'update della tabella documents (e solo
    quell'operazione), è presente da qualche altra parte, ma non ho trovato dove.
    Per mettere una "pezza" al problema ho cercato qualcosa di utile nei Forums ed
    ho trovato una possibile strada, che ho seguito.

    In pratica ho creato un hook sulla after_delete del modulo Documents, in questo
    modo:

    1) Creare un file chiamato logic_hooks.php (esattamente con quel nome) in
    custom/modules/Documents (se non esiste il path, createlo). Questo file deve
    contenere queste righe:

    PHP Code:
    <?php
    $hook_version 
    1;
    $hook_array = Array();
    $hook_array['after_detele'] = Array();
    $hook_array['after_delete'][] = Array(2'DocDelete'
    'custom/modules/Documents/LogicHook.php','DocLogicHook''DocDelete');
    ?>
    2) Create un file in custom/modules/Documents chiamato LogicHook.php o con
    un altro nome, ma in accordo con il riferimento presente nel primo file.
    Questo file deve contenere queste righe:

    PHP Code:
    <?php
    if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

    require_once(
    'config.php');
    require_once (
    'include/upload_file.php');

    class 
    DocLogicHook {

        function 
    DocDelete(&$focus$event$arguments) {

            global 
    $sugar_config;
            
    // le due righe seguenti correggono quello che per me è un bug
            
    $query "UPDATE document_revisions SET deleted = 1 WHERE document_id = '{$focus->id}'";
            
    $result $focus->db->query($querytrue);
            
    //
            
    $query "SELECT id FROM document_revisions WHERE document_id = '{$focus->id}'";
            
    $result $focus->db->query($querytrue);
            if (
    $focus->db->getRowCount($result) >= 1) {
                    while(
    $row $focus->db->fetchByAssoc($result))
                       
    UploadFile::unlink_file('',$row['id']);
            }
            else
             
    sugar_die("Error #1 File custom/modules/Documents/LogicHook, contact the system 
    administrator."
    ); 
        }
    }
    ?>
    In questo modo mi sembra di aver risolto:
    1) Quello che, per me, è un bug ovvero la NON cancellazione logica dei records nella
    tabella document_revisions
    2) La cancellazione dei file fisici "orfani" in cache/upload
    Inoltre questa procedura è upgrade-safe.

    Probabilmente il problema poteva essere risolto in altro modo, in particolare mi
    riferisco alle funzioni che si possono aggiungere allo Scheduler, ma qualche
    problemino in più sarebbe nato dal fatto che la tabella document_revisions
    attualmente non viene aggiornata correttamente. Inoltre non so se fare delle
    modifiche/aggiunte al file _AddJobsHere.php presente in modules/Schedulers
    sia un'operazione upgrade-safe.

    Se avete letto sino a qui complimenti, avete una bella resistenza, quindi
    aggiungo altra benzina sul fuoco. I problemi dei file "orfani" in
    cache/upload purtroppo non riguardano solo il modulo Documents, ma credo
    proprio che coinvolgano anche il modulo Emails, e forse qualche altro;
    se avete voglia provate a leggere qui:

    http://www.sugarcrm.com/forums/showthread.php?t=39667

    Questo povero jjwdesign si è ritrovato con più di 41.500 file "orfani" in
    cache/upload (per parecchi Gb di spazio disco) lasciati lì dal modulo Emails.
    Io da San Tommaso ho voluto provare:
    - importo un'email con allegato in Sugar
    - Sugar crea un record nella tabella dedicata
    - mette l'allegato in cache/upload (rinominato con un suo id)
    Se poi cancello quella email, Sugar cancella logicamente quel record, ma
    il file fisico (che rappresenta l'allegato) se ne resta indisturbato in
    cache/upload per sempre.
    Speriamo che il team di sviluppatori Sugar dedichino un po' del loro tempo
    alla risoluzione di questi problemi, che suppongo siano a loro già noti.

    fulvio

  9. #9
    DragonflyMaster is offline Sugar Community Member
    Join Date
    Dec 2007
    Location
    Rimini, Italy
    Posts
    1,421

    Default Re: Se si cancella un Documento il file non viene cancellato.

    Quote Originally Posted by fulvio View Post
    Premessa:
    1) non conosco a fondo l'architettura di Sugar, ci sto studiando,
    quindi prendete con le molle quello che dico qua sotto
    2) non sono un programmatore esperto, ma mi arrangio
    ...
    Per fortuna che non sei esperto e non conosci bene Sugar!!

    Complimenti Fulvio, bel post!
    What do you think the cookie monster eats ?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Documento allegato a Nota
    By Setter in forum Italiano
    Replies: 3
    Last Post: 2008-05-12, 08:50 AM
  2. Salvando Documento
    By mcallves in forum Portugese
    Replies: 0
    Last Post: 2006-09-23, 03:47 PM
  3. Replies: 3
    Last Post: 2006-02-07, 03:49 PM
  4. Replies: 1
    Last Post: 2006-01-03, 04:45 PM
  5. Not Atach Documento in Email
    By rfrancoa in forum Help
    Replies: 1
    Last Post: 2005-06-27, 03:30 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •