Limitare l'upload ad un massimo numero di files Limitare l'upload ad un massimo numero di files
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

Limitare l'upload ad un massimo numero di files

Started by sancho81, November 03, 2007, 07:41:52 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

sancho81

Salve ragazzi,
ho una domanda da porvi.
Necessito di impostare un numero massimo di upload di foto per utente,
dal basso della mia niubbezza, ho visto che è possibile impostare una quota in spazio occupato, non è possibile impostare una cosa simile ma sul numero di upload che un utente può compiere? e se è possibile..come posso fare?

grazie :)

twist

No non e' possibile, si puo' usare solo la quota su disco.

Puoi al massimo fare 2 calcoli e vedere quanto spazio e' necessario per immagazzinare il numero di foto che vuoi offrire alla massima risoluzione possibile (definita nella sezione di configurazione).

Sempre meglio di nulla

sancho81

dopo una non facile ricerca ho trovato questo 3d
http://forum.coppermine-gallery.net/index.php?topic=32016.20

Però non mi funziona, stramm parla di un bug che però non sono riuscito a comprendere, incollo il suo quote qua di seguito, sperando che qualcuno mi possa aiutare a comprendere :)

Quote from: Stramm on August 04, 2006, 08:20:23 AM
cause someone else on the german support board asked this question too and had similar problems...
Coppermine (standard behaviour) checks limitations only for the user galleries and not pics of a user in the public galleries. So does this hack. To change the behaviour and allow users only to upload a certain number of pics to public and user galleries you'll have to change the query eg. to

        $result = cpg_db_query("SELECT pid FROM {$CONFIG['TABLE_PICTURES']} WHERE owner_name = '" . (USER_NAME) . "'");

sancho81

Cioè.. io in pratica ho inseito questo:

Quote from: Stramm on November 01, 2007, 11:06:23 AM
use that instead... it uses the limits from the group control panel as number of files instead of kb

    // Test if disk quota exceeded
    if (!GALLERY_ADMIN_MODE && $USER_DATA['group_quota'] && $category == FIRST_USER_CAT + USER_ID) {
        $result = cpg_db_query("SELECT 1 FROM {$CONFIG['TABLE_PICTURES']}, {$CONFIG['TABLE_ALBUMS']} WHERE  {$CONFIG['TABLE_PICTURES']}.aid = {$CONFIG['TABLE_ALBUMS']}.aid AND category = '" . (FIRST_USER_CAT + USER_ID) . "'");
        $total_space_used = mysql_num_rows($result);
        mysql_free_result($result);

        if (($total_space_used) >= $USER_DATA['group_quota'] ) {


però non mi funziona, forse per quello che scrive stramm sopra, cosa vuol dire? =)

sancho81

ok ora funziona :)

posto il code, qualora possa servire a qualcuno, ciaociao
    // Test if disk quota exceeded
    if (!GALLERY_ADMIN_MODE) {
         $result = cpg_db_query("SELECT 1 FROM {$CONFIG['TABLE_PICTURES']} WHERE owner_name = '" . (USER_NAME) . "'");
        $total_space_used = mysql_num_rows($result);
        mysql_free_result($result);

        if (($total_space_used) >= $USER_DATA['group_quota'] ) {


Davide Renda

Ottimo. Un consiglio: quando applichi modifiche ai file del core di Coppermine, premunisciti di farne una copia di backup prima e dopo l'hack. La copia originale ti servirà nel caso la modifica non funzionasse e la copia moddata ti verrà utile quando ci sarà da aggiornare la galleria con una prossima nuova versione.

twist

Come dice stramm la funzione delle quote utenti, funziona solo nelle gallerie utenti :
   if (!GALLERY_ADMIN_MODE && $USER_DATA['group_quota'] && $category == FIRST_USER_CAT + USER_ID) {
!GALLERY_ADMIN_MODE = utente non e' admin +
$USER_DATA['group_quota'] = appartiene al gruppo quota +
$category == FIRST_USER_CAT + USER_ID = galleria personale


Se tu la provi inserendo foto in gallerie pubbliche, non funzionerà.
Premesso che non ho provato questa modifica, ma dubito sia una castroneria visto chi l'ha proposta, la soluzione che puoi adottare e' di usare questo hack, e permettere agli utenti di non poter caricare foto in gallerie pubbliche ma solo nella loro personale.
Cosi' dovresti ottenere il risultato che ti aspetti, sempre che non sia troppo restrittiva.

twist

#7
Ok, ho fatto una prova e funziona perfettamente come descritto, se vuoi il codice e' questo:
file: include/picmgmt.inc.php
Sostituisci questo blocco:

    if (!GALLERY_ADMIN_MODE && $USER_DATA['group_quota'] && $category == FIRST_USER_CAT + USER_ID) {
        $result = cpg_db_query("SELECT sum(total_filesize) FROM {$CONFIG['TABLE_PICTURES']}, {$CONFIG['TABLE_ALBUMS']} WHERE  {$CONFIG['TABLE_PICTURES']}.aid = {$CONFIG['TABLE_ALBUMS']}.aid AND category = '" . (FIRST_USER_CAT + USER_ID) . "'");
        $record = mysql_fetch_array($result);
        $total_space_used = $record[0];
        mysql_free_result($result);


Con questo:

    // NEW QUERY
    if (!GALLERY_ADMIN_MODE && $USER_DATA['group_quota'] && $category == FIRST_USER_CAT + USER_ID) {
        $result = cpg_db_query("SELECT 1 FROM {$CONFIG['TABLE_PICTURES']}, {$CONFIG['TABLE_ALBUMS']} WHERE  {$CONFIG['TABLE_PICTURES']}.aid = {$CONFIG['TABLE_ALBUMS']}.aid AND category = '" . (FIRST_USER_CAT + USER_ID) . "'");
        $total_space_used = mysql_num_rows($result);
        mysql_free_result($result);




Ovviamente, devi definire la quota per gli utenti registrati, di default e' 1024 (kb), questo numero diventerà il n° max di file, quindi cambialo in 10 se vuoi che gli utenti possano caricare al massimo 10 file.

nota: dovrai cambiare il messaggio di errore nel theme, perché sparerà il messaggio di errore relativo allo spazio (kb) e non al numero di files:
lang/italian.php


  'quota_exceeded' => 'Quota Disco superata<br /><br />Hai una quota disco pari a [quota]K, i tuoi files occupano attualmente [space]K, aggiungere questo file significa superare il limite.',


-Davide