PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dynamischer Tagesgutschein ala Klammino



Masterphil
22.05.2011, 13:15
Huhu und erstmal schönen Sonntag euch allen.

Habe mal wieder eine Idee was es noch nicht gibt im VMS.

Es geht mir erstmal um die Machbareit, und zwar ein dynamischer Tagesgutschein wie es ihn bei Klammino gibt.

Erklärung: Zu einem zufälligen Zeitpunkt zwischen 8 und 20 Uhr ist der Gutschein für einen festgelten Zeitraum (1-3 Stunden) aktiv, ohne das ich da handanlegen muss. Dazu kommt ein zufälliger Wert zwischen 10 k und 100 k, dieser wird noch an AP oder Zinspunkte gebunden.

Also einen GS erstellen per Hand geht ja mit üblichen Addons, ihn an AP oder Zinspunkte zu binden geht auch recht einfach nach dem Prinzip der AktivGutscheine.

Wie kann man nun aber die Automatisierung machen, das er sich wie oben selbst erstellt, daran scheitert gerade mein Voerstellungvermögen.

Also lasst und doch gemeinsam versuchen etwas hinzubiegen.

MfG

EarlofMidnight
22.05.2011, 15:01
Du könntest alle Werte über einen Cron einfügen was sonst per Hand im Admin passiert.

Gültig bis - geht ja bei den meisten Gutscheinaddons ja auch

jpwfour
22.05.2011, 16:57
Ich denke, so ein "spzielles" Addon sollte jede Seite ganz individuell erstellen & gestalten.

Einmal schon deswegen, da es von anderen Addons abhängt, also Aktivpunkte & bisher verwendetes Gutscheinaddon. Es macht wenig Sinn, solche Dinge ein 2. mal einzubauen, wenn sie denn schon vorhanden sind.

Und dann wäre es sehr langweilig, wenn aufeinmal jede VMS1 Seite ein solches Addon hat, was zw. 8 und 20 Uhr einen Gutschein für 3 Stunden generiert und den auf der Unterseite xyz bekannt macht. Allein schon deshalb, weil die Faker & Gutschein-Sammler dann schnell ein Skript haben, was diese Gutsheine automatisiert einlöst etc.


Man könnte ja die Art des Bekanntsmachens des Gutscheins variieren,
bspw. nur in der Chatbox,
nur per E-Mail an User, die schon XYZ AP erreicht haben (:wink:),
über seiteninterne News,
über Massen-PN,
oder den Code um 8 Uhr veröffentlichen, aber nicht sagen, wann er gilt (User müssen es stündlich probieren, können aber dann in der Chatbox anderen bescheid sagen, gibt aber nur begrenzt Gutscheine, daher will ja jeder unter den 1. sein),
uvm....

So ein Addon kann man kaum ohne beträchtlichen & an sich unnötigen Zusatzaufwand für alle VMS1 Seiten generell schreiben.

Masterphil
22.05.2011, 18:46
Ok, einfach ist es nicht, habe aber einen Ansatz der mir reichen würde, wenn den realisierbar, zumal dieser Ansatz auch anderwertig nutzbar wäre, z.b. für die FakeKontrolle.

Ich lege einen Cron an, dieser läuft dann 2mal täglich, Zeiten lassen sich ja einstellen damit es wie Zufall erscheint.

Das entscheidende ist, was der Cron machen soll.

Der Cron müsste entweder in der Lage sein eine Datei zu erstellen/löschen oder aber den Inhalt einer Datei komplett zu ändern.

Ok, Denkansatz 2, die Lösung, der Cron macht nur in der DB eine 0 oder 1, Gutschein also aktiv oder nicht aktiv, eigentlich simpel, das kann jeder von uns selbst umsetzten und da nicht alle das gleiche haben sollen lassen wir den Code für sowas mal weg an dieser Stelle.


Also soweit könnte es doch recht einfach werden. Leider nur nicht mehr sinvoll für den Faketest, hier wäre das automatische ändern/erstellen/löschen notwendig.

MfG

jpwfour
22.05.2011, 20:14
...

Ich lege einen Cron an, dieser läuft dann 2mal täglich, Zeiten lassen sich ja einstellen damit es wie Zufall erscheint.
...

Oder ein Cron der 1x täglich läuft, bspw. 0 Uhr, und die Zeitspanne für den Tag bestimmt und in der DB speichert.

Also was mit

time()+rand()
Solche "Einzelwerte" lassen sich gut in vms_seitenkonfig speichern, die wird eh bei jedem Aufruf ausgelesen. Im Gutscheinaddon dann halt noch iwo ein
if time() <>= gespeicherter wert, sofern der Code für den Gutschein benutzt wird, den man ja evtl. "Hardcoded" festlegt (sowas wie: "Tagesgutschein").

Masterphil
01.07.2012, 23:55
So, ich hole das Thema schonmal wieder hoch da ich es nun definitiv für Autolose umsetzten will.

Habe nochmal überlegt, gehen wir davon aus es ist bereits ein Addon eingebaut

Dieses ist wiefolgt aufgebaut:
gid,empf,lose,sender,zeit,wahrscheinlichkeit,benut zbar,gname,eingel


Nun gehen wir ganz einfach vor, nur einmal den Cron ausführen, dieser speichert die zufällige Zeit (zeit) ab und den Wert (lose), beides nach Zufall, die Zeit muss dabei Tagsüber sein und natürlich für den aktuellen Tag sein.

Code für GS muss natürlich auch generiert und gespeichert werden (gid)

Der Rest ist wie im eigenen Adonn umzusetzten bzw. wegzulassen

Auser der Sender, dieser nämlich ist der Indikator, also if Sender = TGS

Ausführungen des Codes für den TGS im GutscheinAddon.

Sicherung und Ausgabe, eine Datei in dieser wird die gespeicherte Zeit geprüft und sobald 3 stunden davor (Beispiel) erreicht sind wird der Code angezeigt vom Sender TGS (Weitere Absicherung für andere GS)


So, bis hierhin denke ich haut theoretisch alles vom Prinzip her hin, oder was meint ihr ? Habe nochmal einiges krübeln müssen aber so in etwa muss es auch Klammino umgesetzt haben.


Also, denkt ihr das dies könte was werden so ?


Schönen abend euch noch.

MfG

jpwfour
02.07.2012, 17:35
Grundsätzlich gut, müsste man halt sicher sein, dass nicht ein User (der sich bspw. "TGS" nennt), iwie den Wert, den du als Indikator für das Feld Sender benutzen willst, auch erzeugen kann. :wink:

Masterphil
02.07.2012, 22:20
Grundsätzlich gut, müsste man halt sicher sein, dass nicht ein User (der sich bspw. "TGS" nennt), iwie den Wert, den du als Indikator für das Feld Sender benutzen willst, auch erzeugen kann. :wink:

Ok, da hast du natürlich Recht, habe nochmal in die DB-Struktur geschaut und das Feld Sender ist sowieso int, also nehmen wir einfach die Zahl 1 welche ja kein einziger User als ID hat. Somit ist dieses Problem auch schonmal gelöst.

MfG

Masterphil
29.08.2012, 00:15
Bin nun etwas weiter mit dem ganzen hier, habe das Gutschein Addon von Skandal besorgt welches Mindest AP schon drinhat.

Damit lassen sich manuel schon ohne Probs Tagesgutscheine machen, man muss halt nur online gehen dafür um ihn zu erstellen.

Nun also direkt weiter zur Automatierung, das erste Problem habe ich auch gelöst, wie mit CronjobAnbietern verschiedene AusfrufZeiten machen, einfach merhere Jobs einrichten sodass auf den Monat verteil sagen wir 5-10 Jobs laufen natürlich jeden Tag nur einer und dann halt jeweils zu einer definierten Zeit. In jeder Job erhält eine eigene Datei zum Aufrufen mit festem Wert, Zeit wird per Befehl aus dem GS Addon genommen, auch alle anderen wichtigen Werte.

Die Theorie steht somit, die manuellen Tests waren erfolgreich mit dem Addon von Skandal, wenn die Automatiserung halbwegs funzt schreibe ich nochmal hier, es sei denn jemand hat eine einfachere/bessere Idee.

MfG

Anika
20.12.2015, 23:40
Das ist der orginal Cron zum tageszufallgutschein von klammino... liebe grüße Anika Admin von klammino


<?

@require_once ('../functions.lib.php');

db_connect();

function gutcode () {
return (strtoupper (create_code (16)));
}

mt_srand((double)microtime()*1000000);

$stunde = date("G");

$config = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_seitenkonfig"));

// Startuhrzeit ermitteln -> Cronaufruf 1x zwischen max und min Startstunde
if($stunde > ($config['gutschein_ende']+$config['gutschein_dauer']) or $stunde < $config['gutschein_start']) {

$gutschein_stunde = round(mt_rand($config['gutschein_start'],$config['gutschein_ende']));

db_query("UPDATE ".$db_prefix."_seitenkonfig SET gutschein_code = '', gutschein_code_start = ".$gutschein_stunde." ");
}

// wenn Startstunde erreicht -> Gutschein erstellen
if($stunde == $config['gutschein_code_start']) {

$gutschein_wert = round(mt_rand($config['gutschein_min'],$config['gutschein_max']));
$min_tagespunkte = round($gutschein_wert * $config['gutschein_ap_proz'] / 100);
$code = gutcode ();

db_query("UPDATE ".$db_prefix."_seitenkonfig SET gutschein_code = '".$code."' ");
db_query("INSERT INTO `".$db_prefix."_gutscheine` (`code`,`uid`,`time`,`gueltigkeit`,`fuer`,`menge`, `uebrig`,`prouser`,`betrag`,`loseart`,`min_tagespk t`) VALUES ('".$code."','0','".time()."','".(time()+($config['gutschein_dauer']*3600))."','all','200', '200', '1', '".$gutschein_wert."', 'bonus', '".$min_tagespunkte."')");
}

db_query("UPDATE ".$db_prefix."_semicron SET laufzeit=".time().", sollzeit=".time()." WHERE datei='lib/crons/tageszufallsgutschein.php'");

db_close();
?>


functions.lib.php


// Zufallscode generieren

function create_code($code_laenge) {

srand((double)microtime()*1000000);

$created_code = '';

$zeichen="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz1234567890";

for ($i=0;$i<$code_laenge;$i++) {

$n=rand() % strlen($zeichen);

$created_code .=substr($zeichen, $n, 1);

}

return $created_code;

}


admin pageconfig


db_query("UPDATE ".$db_prefix."_seitenkonfig SET wartung='".....

// da kommt das mit rein


gutschein_start = '".$_POST['gutschein_start']."', gutschein_ende = '".$_POST['gutschein_ende']."', gutschein_dauer = '".$_POST['gutschein_dauer']."', gutschein_min = '".$_POST['gutschein_min']."', gutschein_max = '".$_POST['gutschein_max']."', gutschein_ap_proz = '".$_POST['gutschein_ap_proz']."', gutschein_code = '".$_POST['gutschein_code']."', gutschein_code_start = '".$_POST['gutschein_code_start']."'

// das wo Ihr wollt in der Datei


<tr bgcolor="#c0c0c0">
<td align="left" colspan="2"><b>Einstellungen "Tageszufallsgutschein"</b></i></td>
</td>
</tr>
<tr bgcolor="#f0f0f0">
<td align="left"><b>frühester Start</b></td>
<td align="left">&nbsp;<input type="Text" name="gutschein_start" value="<?=$interface['gutschein_start'];?>"> Stunde (Ganzahlen)</td>
</tr>
<tr bgcolor="#f0f0f0">
<td align="left"><b>spätester Start</b></td>
<td align="left">&nbsp;<input type="Text" name="gutschein_ende" value="<?=$interface['gutschein_ende'];?>"> Stunde (Ganzahlen)</td>
</tr>
<tr bgcolor="#f0f0f0">
<td align="left"><b>Gültigkeitsdauer</b></td>
<td align="left">&nbsp;<input type="Text" name="gutschein_dauer" value="<?=$interface['gutschein_dauer'];?>"> Stunden (Punkt statt Komma)</td>
</tr>
<tr bgcolor="#f0f0f0">
<td align="left"><b>min. Wert</b></td>
<td align="left">&nbsp;<input type="Text" name="gutschein_min" value="<?=$interface['gutschein_min'];?>"> Bonuslose (Punkt statt Komma)</td>
</tr>
<tr bgcolor="#f0f0f0">
<td align="left"><b>max. Wert</b></td>
<td align="left">&nbsp;<input type="Text" name="gutschein_max" value="<?=$interface['gutschein_max'];?>"> Bonuslose (Punkt statt Komma)</td>
</tr>
<tr bgcolor="#f0f0f0">
<td align="left"><b>Prozent vom Wert als Tagespkt</b></td>
<td align="left">&nbsp;<input type="Text" name="gutschein_ap_proz" value="<?=$interface['gutschein_ap_proz'];?>"> Prozent (Punkt statt Komma)</td>
</tr>
<tr bgcolor="#f0f0f0">
<td align="left"><b>aktueller Gutscheincode</b></td>
<td align="left">&nbsp;<input type="Text" name="gutschein_code" value="<?=$interface['gutschein_code'];?>"> automatisch generiert</td>
</tr>
<tr bgcolor="#f0f0f0">
<td align="left"><b>aktueller Gutschein-Start</b></td>
<td align="left">&nbsp;<input type="Text" name="gutschein_code_start" value="<?=$interface['gutschein_code_start'];?>"> automatisch generiert</td>
</tr>

eine datei erstellen in content/konto/tagesgutschein.php
// da kommt rein

<?

userstatus(); // <--- kommt auf eure vms version an kann auch raus

if($pageconfig['gutschein_code'] != "") {
$gutschein = mysql_fetch_array(db_query("SELECT gueltigkeit,code,betrag,min_tagespkt FROM ".$db_prefix."_gutscheine WHERE code = '".$pageconfig['gutschein_code']."' LIMIT 1"));
}

$zinspunkte = mysql_fetch_array(db_query("SELECT zinspunkte_heute FROM ".$db_prefix."_kontodaten WHERE uid='".$_SESSION['uid']."' LIMIT 1"));

?>
<?head("Tagesgutschein");?>
Hier findest du jeden Tag einen Zufallsgutschein.<br />
Der Gutschein startet irgendwann <b>zwischen <?=$pageconfig['gutschein_start'];?> Uhr und <?=$pageconfig['gutschein_ende'];?> Uhr</b>
mit einer <b>G&uuml;ltigkeitsdauer von <?=number_format($pageconfig['gutschein_dauer'],0,",",".");?> Stunden</b>.<br />
Um den Gutschein einl&ouml;sen zu k&ouml;nnen, brauchst du eine bestimmte Mindestanzahl an Zinspunkten.<br />
<center><b>Deine heutigen Zinspunkte</b>: <?=number_format($zinspunkte["zinspunkte_heute"],2,",",".");?></center>
<?foot();?>

<?head("");?>

<?
if($pageconfig['gutschein_code'] == "") {
echo "Heute gab es noch keinen Gutschein. Schau doch sp&auml;ter nochmal vorbei.<br><br>";
} elseif ($gutschein["gueltigkeit"] < time()) {
echo "Du hast den heutigen Gutschein leider verpasst. Schau doch morgen wieder vorbei, vielleicht hast du dann mehr Gl&uuml;ck!<br><br>";
} else {
echo '
<table align="center" border="0" width="90%" cellpadding="2" cellspacing="2">
<tr>
<td width="55%">Heutiger Zufallsgutschein<br><br></td>
<td><b>'.$gutschein["code"].'</b><br><br></td>
</tr>
<tr>
<td width="55%">Wert<br><br></td>
<td><b>'.number_format($gutschein["betrag"],2,",",".").' Bonuslose</b><br><br></td>
</tr>
<tr>
<td width="55%">mind. Zinspunkte<br>(siehe oben)</td>
<td><b>'.number_format($gutschein["min_tagespkt"],0,",",".").' Punkte</b><br><br></td>
</tr>
</table>';
}?>

<?foot();?>


// link ins menü für die user setzen


<li><a href="?content=/konto/tagesgutschein">&raquo;&nbsp;Tagesgutschein</a></li>

pripankaj
07.11.2019, 06:20
thanx for sharing.....

Parl
18.11.2019, 19:25
Ich rieche Spam... :hand: