snowcat
05.05.2009, 16:55
Eine Userin meiner Seite fragte mich mal, ob ich nicht den Versand an ihre eMail-Adresse beschränken könne, da ihr manchmal das Postfach zu voll werde.
Da habe ich mir Gedanken gemacht, wie man das Umsetzen kann, ausser natürlich weniger Paidmails zu versenden.
Und das ist dabei rausgekommen!
Ausprobieren konnte ich es bisher noch nicht. Arbeite auch gerade noch an einer einfacheren Variante.
Es gibt keine Garantie auf die korrekte Funktion und es ist sicherer diese Schnippsel auf einem Testsystem auszuprobieren, bevor es in ein laufendes eingebunden wird.
Für Fehlerhinweise oder Tipps bin ich sehr dankbar.
Lieben Gruß
Ralf
--------------------------
--------------------------
Eine Neue Spalte in der Tabelle anlegen für die Maximalanzahl an Paidmails.
1. SQL ausführen:
ALTER TABLE `vms_userdaten`
ADD `max_pm` INT( 2 ) NOT NULL
DEFAULT '50' AFTER `max_forcedt` ;
Auswahlmöglichkeit für die User schaffen, wie viele Mails sie haben wollen.
2. in der content/konto/userprofil.php nach
---
db_query("UPDATE ".$db_prefix."_emaildaten SET freigabe_fuer = ".$mailstatus.", emailadresse = '".$_POST['emailadresse']."', qmails='".$_POST['qmails']."' WHERE uid=".$_SESSION['uid']."");
Folgendes einfügen:
db_query("UPDATE ".$db_prefix."_userdaten SET max_pm = '".$_POST['max_pm']."' WHERE uid=".$_SESSION['uid']."");
3. und nach
---
<td>Paidmails*:</td>
<td>
<select name="paidmails">
<option value="1" <? if ($paidmails == 1) echo 'selected';?>>Ja</option>
<option value="0" <? if ($paidmails == 0) echo 'selected';?>>Nein</option>
</select>
</td>
</tr>
Folgendes einfügen:
<?
@$maxpm = mysql_fetch_array(db_query("SELECT max_pm FROM ".$db_prefix."_userdaten WHERE uid=".$_SESSION['uid']." LIMIT 1"));
@$max_pm = $maxpm['max_pm'];
?>
<td>max. Paidmails*:</td>
<td>
<select name="max_pm">
<option value="0" <? if ($max_pm == 0) echo 'selected';?>>0</option>
<option value="5" <? if ($max_pm == 5) echo 'selected';?>>5</option>
<option value="10" <? if ($max_pm == 10) echo 'selected';?>>10</option>
<option value="15" <? if ($max_pm == 15) echo 'selected';?>>15</option>
<option value="20" <? if ($max_pm == 20) echo 'selected';?>>20</option>
<option value="25" <? if ($max_pm == 25) echo 'selected';?>>25</option>
<option value="50" <? if ($max_pm == 50) echo 'selected';?>>50</option>
<option value="100" <? if ($max_pm == 100) echo 'selected';?>>100</option>
</select>
</td>
</tr>Die Maximalpaidmailanzahl (tolles Wort :) ) runterrechnen und wieder rauf.
4. Suche in der Datei adminforce/content/werbesystem/paidmail_versenden.php:
---
$empfaenger = db_query("SELECT * FROM ".$db_prefix."_emaildaten WHERE freigabe_fuer = '3' or freigabe_fuer = '2'");
und ersetze es durch:
$empfaenger = db_query("SELECT e. * FROM ".$db_prefix."_emaildaten AS e LEFT JOIN ".$db_prefix."_userdaten AS u ON e.uid = u.uid WHERE ( e.freigabe_fuer = '3' OR e.freigabe_fuer = '2' ) AND u.max_pm > 0");
5. Suche in der Datei pcheck.php;
---
buchungsliste (create_code(14),$mail['verdienst'],'Paidmailverdienst',$mail['uid']);
füge danach folgendes ein:
db_query("UPDATE ".$db_prefix."_userdaten where uid=".$versendet['uid']." SET max_pm=max_pm+1 LIMIT 1");
6. In der adminforce/content/werbesystem/paidmail_versenden.php nach:
---
db_query("INSERT INTO ".$db_prefix."_paidmails_empfaenger (uid,gueltig,tan,status,aufendhalt) VALUES ('".$versendet['uid']."','".$bis."','".$_GET['tan']."','0','".$daten['aufendhalt']."')");
folgendes einsetzen:
db_query("UPDATE ".$db_prefix."_userdaten where uid=".$versendet['uid']." SET max_pm=max_pm-1 LIMIT 1");
Nicht geklickte Mails müssen ja auch wieder rückgerechnet werden.
7. Suche in der Datei adminforce/content/werbesystem/paidmail_hist.php:
---
db_query("INSERT INTO ".$db_prefix."_stats (menge,bestaedigt) VALUES ($abschluss[menge], $abschluss[bestaedigt])");
füge danach folgendes ein:
$pm_korrigieren = db_query("SELECT uid FROM ".$db_prefix."_paidmails_empfaenger WHERE tan='".$_GET['tan']."'");
while ($genug = mysql_fetch_array($pm_korrigieren)) {
db_query("UPDATE ".$db_prefix."_userdaten where uid=".$genug['uid']." SET max_pm=max_pm+1 LIMIT 1");
}
Da habe ich mir Gedanken gemacht, wie man das Umsetzen kann, ausser natürlich weniger Paidmails zu versenden.
Und das ist dabei rausgekommen!
Ausprobieren konnte ich es bisher noch nicht. Arbeite auch gerade noch an einer einfacheren Variante.
Es gibt keine Garantie auf die korrekte Funktion und es ist sicherer diese Schnippsel auf einem Testsystem auszuprobieren, bevor es in ein laufendes eingebunden wird.
Für Fehlerhinweise oder Tipps bin ich sehr dankbar.
Lieben Gruß
Ralf
--------------------------
--------------------------
Eine Neue Spalte in der Tabelle anlegen für die Maximalanzahl an Paidmails.
1. SQL ausführen:
ALTER TABLE `vms_userdaten`
ADD `max_pm` INT( 2 ) NOT NULL
DEFAULT '50' AFTER `max_forcedt` ;
Auswahlmöglichkeit für die User schaffen, wie viele Mails sie haben wollen.
2. in der content/konto/userprofil.php nach
---
db_query("UPDATE ".$db_prefix."_emaildaten SET freigabe_fuer = ".$mailstatus.", emailadresse = '".$_POST['emailadresse']."', qmails='".$_POST['qmails']."' WHERE uid=".$_SESSION['uid']."");
Folgendes einfügen:
db_query("UPDATE ".$db_prefix."_userdaten SET max_pm = '".$_POST['max_pm']."' WHERE uid=".$_SESSION['uid']."");
3. und nach
---
<td>Paidmails*:</td>
<td>
<select name="paidmails">
<option value="1" <? if ($paidmails == 1) echo 'selected';?>>Ja</option>
<option value="0" <? if ($paidmails == 0) echo 'selected';?>>Nein</option>
</select>
</td>
</tr>
Folgendes einfügen:
<?
@$maxpm = mysql_fetch_array(db_query("SELECT max_pm FROM ".$db_prefix."_userdaten WHERE uid=".$_SESSION['uid']." LIMIT 1"));
@$max_pm = $maxpm['max_pm'];
?>
<td>max. Paidmails*:</td>
<td>
<select name="max_pm">
<option value="0" <? if ($max_pm == 0) echo 'selected';?>>0</option>
<option value="5" <? if ($max_pm == 5) echo 'selected';?>>5</option>
<option value="10" <? if ($max_pm == 10) echo 'selected';?>>10</option>
<option value="15" <? if ($max_pm == 15) echo 'selected';?>>15</option>
<option value="20" <? if ($max_pm == 20) echo 'selected';?>>20</option>
<option value="25" <? if ($max_pm == 25) echo 'selected';?>>25</option>
<option value="50" <? if ($max_pm == 50) echo 'selected';?>>50</option>
<option value="100" <? if ($max_pm == 100) echo 'selected';?>>100</option>
</select>
</td>
</tr>Die Maximalpaidmailanzahl (tolles Wort :) ) runterrechnen und wieder rauf.
4. Suche in der Datei adminforce/content/werbesystem/paidmail_versenden.php:
---
$empfaenger = db_query("SELECT * FROM ".$db_prefix."_emaildaten WHERE freigabe_fuer = '3' or freigabe_fuer = '2'");
und ersetze es durch:
$empfaenger = db_query("SELECT e. * FROM ".$db_prefix."_emaildaten AS e LEFT JOIN ".$db_prefix."_userdaten AS u ON e.uid = u.uid WHERE ( e.freigabe_fuer = '3' OR e.freigabe_fuer = '2' ) AND u.max_pm > 0");
5. Suche in der Datei pcheck.php;
---
buchungsliste (create_code(14),$mail['verdienst'],'Paidmailverdienst',$mail['uid']);
füge danach folgendes ein:
db_query("UPDATE ".$db_prefix."_userdaten where uid=".$versendet['uid']." SET max_pm=max_pm+1 LIMIT 1");
6. In der adminforce/content/werbesystem/paidmail_versenden.php nach:
---
db_query("INSERT INTO ".$db_prefix."_paidmails_empfaenger (uid,gueltig,tan,status,aufendhalt) VALUES ('".$versendet['uid']."','".$bis."','".$_GET['tan']."','0','".$daten['aufendhalt']."')");
folgendes einsetzen:
db_query("UPDATE ".$db_prefix."_userdaten where uid=".$versendet['uid']." SET max_pm=max_pm-1 LIMIT 1");
Nicht geklickte Mails müssen ja auch wieder rückgerechnet werden.
7. Suche in der Datei adminforce/content/werbesystem/paidmail_hist.php:
---
db_query("INSERT INTO ".$db_prefix."_stats (menge,bestaedigt) VALUES ($abschluss[menge], $abschluss[bestaedigt])");
füge danach folgendes ein:
$pm_korrigieren = db_query("SELECT uid FROM ".$db_prefix."_paidmails_empfaenger WHERE tan='".$_GET['tan']."'");
while ($genug = mysql_fetch_array($pm_korrigieren)) {
db_query("UPDATE ".$db_prefix."_userdaten where uid=".$genug['uid']." SET max_pm=max_pm+1 LIMIT 1");
}