forum.coppermine-gallery.net

Support => Deutsch (German) => Language Specific Support => cpg1.4.x Deutsch (German) => Topic started by: IrrerIvan on June 16, 2007, 08:19:44 am

Title: Tagesupload Beschränkung
Post by: IrrerIvan on June 16, 2007, 08:19:44 am
Hallo,
folgende Frage, ich würde gerene den Useren eine Limit für den Upload zuweisen.
Also jeder User " ausser Admins" kann nur max. 5 Fotos pro Tag hochladen, und das ganze halt solange bis sein
Speicherplatz der als Gruppen Quota festgelegt ist verbraucht ist.

Ich habe dazu auch die Posts von Stramm gelesen und versucht den HAck den er angegeben hat umzusetzen nur kommt da keinerlei veränderung dabei rum.
Auch nach dem Einbau des HAck kann jeder nicht Admin mehr als ein Bild  hochladen " 1 Foto war die Vorgabe in dem Hack"

auch die Unix-Timestamp erweiterung brachte kein resultat, es wäre nett um eine hilfreiche Antwort.

Folgende Modifikaton habe ich ausprobiert;

Quote
   // Test if disk quota exceeded
    if (!GALLERY_ADMIN_MODE) {
        $result = cpg_db_query("SELECT pid FROM {$CONFIG['TABLE_PICTURES']} WHERE owner_name = '" . (USER_NAME) . "'");
        $record = mysql_fetch_array($result);
        $total_space_used = count($record);
        mysql_free_result($result);

        if ($total_space_used > 1 ) {

Gruß
Title: Re: Tagesupload Beschränkung
Post by: IrrerIvan on June 16, 2007, 02:29:33 pm
PS .
ich verwende jetzt diesen code jetzt
Quote
    // Test if disk quota exceeded
    if (!GALLERY_ADMIN_MODE) {
        $result = cpg_db_query("SELECT pid FROM {$CONFIG['TABLE_PICTURES']} WHERE owner_id = " . USER_ID . " AND ctime > UNIX_TIMESTAMP() - 86400");
        $record = mysql_fetch_array($result);
        $total_space_used = count($record);
        mysql_free_result($result);

        if ($total_space_used > 5 ) {
            @unlink($image);
            if (is_image($image)) {
                @unlink($normal);
                @unlink($thumb);
            }
            $msg = strtr($lang_errors['quota_exceeded'], array('[quota]' => ($USER_DATA['group_quota']),
                '[space]' => ($total_space_used >> 10)));
            cpg_die(ERROR, $msg, __FILE__, __LINE__);
        }
    }
Mit dem Wert 1 funzt es einwandfrei jedoch möchte ich geren das die User max. 5 Bilder pro Tag uploaden können und das klappt nicht denn
wenn ich den Wert von 1 auf 5 ändere können die hochladen bis der Speicherplatz quota erschöpft ist.

Wo mache ich einen Denkfehler.

Bitte um Hilfe
Title: Re: Tagesupload Beschränkung
Post by: IrrerIvan on June 18, 2007, 09:52:21 pm
hat kener einen Hinweis für mich??
Title: Re: Tagesupload Beschränkung
Post by: IrrerIvan on June 22, 2007, 07:31:57 am
Tja wäre wenigstens Nett wenn Ihr mir irgendwas sagen würdet auch wenn es nur
ist das Ihr derzeit keine Zeit habt, aber garkeine Antwort.

Gruß
Title: Re: Tagesupload Beschränkung
Post by: Stramm on June 24, 2007, 01:22:53 am
ha, Zeit ist immer knapp... aber ich kann Dir mal meine 'auf den ersten Blick' Meinung sagen...

statt
Code: [Select]
AND ctime > UNIX_TIMESTAMP() - 86400mal
Code: [Select]
AND ctime > UNIX_TIMESTAMP(ctime) > NOW()-86400
Ob das nun richtig ist??? Keine Ahnung. Ich benutze die obigen MySQL Funktionen nicht besonders oft. Dein Ansatz scheint aber nicht das gewünschte Ergebnis zu produzieren. Dann wäre es doch das einfachste, auf leicht Überprüfbares auszuweichen, z.B. der PHP time() Funktion
Code: [Select]
AND ctime > ".time() - 86400."oder so ähnlich
Title: Re: Tagesupload Beschränkung
Post by: IrrerIvan on June 24, 2007, 10:25:06 pm
Hi Stramm,
also dertimestamp funzt was nicht funktioniert ist,
das ich die max. Uploadzahl der täglichen Fotos von 1 auf 5 erhöhen kann.

Solange
Quote
if ($total_space_used > 1 ) {
eingetragen ist funzt alles prima jedoch wenn ich das auf
Quote
if ($total_space_used > 5 ) {
verändere dann funzt die Beschränkung nicht mehr und die User können auch mehr als 5 fotos pro Tag uploaden.

Gruß
Title: Re: Tagesupload Beschränkung
Post by: Stramm on June 25, 2007, 07:30:47 am
Lass Dir mal $total_space_used anzeigen und dann weisst Du, ob Dein Query funktioniert

Scheinbar geht's ja gerade eben nicht
Title: Re: Tagesupload Beschränkung
Post by: IrrerIvan on June 25, 2007, 01:34:36 pm
okay also wenn ich
Quote
$total_space_used
versuche anzeigen zu lassen dann kommt nichts, was aber nicht bedeuten muss
das was falsch läuft.
evtl. habe ich nur die Abfrage falsch gestartet, ich habe das mit $display...
getan.
Sollte die
Quote
$total_space_used
nicht funzen, was wäre dann der Ansatz
um auf das gewünschte Ergebniss zu kommen?.
Title: Re: Tagesupload Beschränkung
Post by: Stramm on June 29, 2007, 03:57:13 pm
Versteh ich nicht! Was hast Du mit '$display' gemacht, woher kommt denn das jetzt auf einmal.

Wenn Dein Query nicht die richtigen Daten in die var $total_space_used packt, dann änderst Du das Query. Das wäre ein vernünftiger Ansatz, wie schon oben geschrieben.

Zum Verständnis nochmals... Dein Query durchsucht die Datenbank. Du holst Einträge raus, die dem Kriterium entsprechen user=x, Zeit/ Datum= letzte 24h
Nun zählst Du die gefundenen Einträge und speicherst diese Zahl in $total_space_used
Wenn user x heute schon 6 Bilder hochgeladen hat und
Code: [Select]
if ($total_space_used > 5 ) {keinen Trigger auslöst, dann ist nichts mit $total_space_used falsch (so., da steht nur die Anzahl Ergebniszeilen Deiner Abfrage), sondern Dein Query hat irgendwas schräges abgefragt, aber nicht, was Du eigentlich willst.

Title: Re: Tagesupload Beschränkung
Post by: IrrerIvan on June 29, 2007, 09:34:31 pm
ah okay
was dann logisch erscheint weil
ja dein Orginal Hardlimit funzt.

Nur dann verstehe ich nicht ganz wenn ich deinen Abfrage zu Grunde lege und dem ganzen nur eine Time Variante hinzufüge
dann sollte das doch eigentlich klappen.
Tut es nur leider nicht, denn wenn ich deinen Code im Orginal belasse wird nach 1 Upload gesagt Limit ereicht
wenn ich dann die Time variante hinzufüge und das Limit trozdem auf 1 stehen lasse dann funzt das auch. Was heisst jeder User könnt innerhalb von 24 Std. nur ein Foto hochladen und dann erst wiedr in 24 Std. das nächste.

So wenn ich nun das Limit von 1 auf 5 verändere ansonsten nichts an dem Code ändere dann funt das nicht mehr und die User können solange Bilder hochladen bis der vorgegebene Speicherplatz " Gruppen Quota" erreicht ist.

Und genau das ist es was mich so stuzig macht.

Gruß
Title: Re: Tagesupload Beschränkung
Post by: Stramm on June 30, 2007, 09:23:01 am
Funktioniert denn Deine Time Abfrage?? Wie oben schon mal geschrieben, kommt mir Deine Syntax falsch vor. Deswegen solltest Du das Ergebnis des Queries anzeigen lassen. Ohne es zu überprüfen sind alle veränderungen am nachfolgenden Code sinnlos. Trotzdem gehst Du immer davon aus, dass Dein Query ein Ergebnis liefert, das Deinen Vorstellungen entspricht. Tut es aber nicht (jetzt drehen wir uns wieder im Kreis), da ja der Restcode nicht so klappt wie Du das meinst. Den Rest basierst Du aber auf ein Ergebnis, welches Du nicht kennst und nicht überprüft hast.

Mehr kann ich da echt nicht sagen. Du musst Deine Queries testen und nicht darauf vertrauen, dass sie schon das richtige Ergebnis liefern werden.

Hast Du meine Vorschläge von oben versucht und die Ergebnisse verglichen?
Title: Re: Tagesupload Beschränkung
Post by: Stramm on June 30, 2007, 12:47:32 pm
um Dich nicht weiter zu verwirren... hier mein Ansatz

In picmgmnt.inc.php ersetze man
Code: [Select]
        $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);

        if ((($total_space_used + $total_filesize)>>10) > $USER_DATA['group_quota'] ) {
durch
Code: [Select]
$temp_time = time() - 86400;
        $result = cpg_db_query("SELECT COUNT(*) FROM {$CONFIG['TABLE_PICTURES']} WHERE owner_id = " . USER_ID . " AND ctime >= {$temp_time}");
        $record = mysql_fetch_row($result);
        $uploaded_last24h = $record[0];
        mysql_free_result($result);

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


im group control panel kann man ab fortan nicht mehr kb einstellen sondern Stück (Beschriftung ist nicht geändert). Gibt man 0 ein, erfolgt keine Beschränkung. Limitiert man nun z.B. die Quota be der Group 'Registered' auf 5 'KB', dann kann ein Angehöriger der Registered Group innerhalb eines 24 Stunden Zeitraumes nur 5 Bildchen hochladen. Fehlermeldungen wären noch anzupassen (limit exceeded etc.)

Evtl. ändert man den 24h Zeitraum auf Tage, sprich am 1.7.2007 kann der user 5 Bilder hochladen, am 2.7 auch. Ganz egal, ob er am 1.7 um 5min vor 12 und am 2.7. um 5min nach 12 hochlädt.

So, dann mal viel Spaß.
Title: Re: Tagesupload Beschränkung
Post by: IrrerIvan on June 30, 2007, 05:08:56 pm
vielen Danke das war es