Nun, aus Zeitmangel zunächst nur die Formel zum Berechnen des aktuellen Jahres:
Code: Alles auswählen
$jahresende = mktime(23, 59, 59, 12, 31, create_date('Y', time(), $board_config['board_timezone']), date('I'));
$jetzt = time();
$differenz = $jahresende - $jetzt;
$restliche_tage = ciel($differenz / 86400);
Damit stünden die Tage für das aktuelle Jahr fest.
Eleganter wäre dieses hier:
Code: Alles auswählen
$tage_insgesamt = (date('L')) ? 366 : 365;
$aktueller_tag = date('z');
$restliche_tage = $tage_insgesamt - $aktueller_tag + 1;
Auf jeden Fall hätte man mit $restliche_tage * 0.015 den Wert für user_sales.
Also z. B.
Dann noch den Betrag für die freien Tage bestimmen:
und abziehen
Somit wärst Du dann in der Lage, diesen Wert in die User-Tabelle zu schreiben, sobald sich ein User angemeldet hat.
Code-Ausschnitt hierfür:
Code: Alles auswählen
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
$sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("\'", "''", $yim) . "', '" . str_replace("\'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popuppm, $user_timezone, '" . str_replace("\'", "''", $user_dateformat) . "', '" . str_replace("\'", "''", $user_lang) . "', $user_style, 0, 1, ";
#
#-----[ IN-LINE FIND ]------------------------------------------
#
user_interests
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, user_sales
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$interests) . "'
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, $user_sales
und o. g. Codes einfach vor diese SQl-Anweisung gestellt, würde unverrückbar den richtigen Preis für den User einstellen.
Über die Folgejahre müsste man sich dann nochmal unterhalten, aber für mehr habe ich aktuell nicht wirklich Zeit.
BTW:
Am elegantesten wäre auch, die 0,015 Euro / Tag durch eine Board-Variable zu ersetzen, die dann in den allgemeinen Board-Einstellungen (ACP > Allgemein) verwaltbar wäre.
Dann könnte der gesamte Code so aussehen:
Code: Alles auswählen
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
$user_id = $row['total'] + 1;
#
#-----[ AFTER, ADD ]------------------------------------------
#
$tage_insgesamt = (date('L')) ? 366 : 365;
$aktueller_tag = date('z');
$restliche_tage = $tage_insgesamt - $aktueller_tag + 1;
$user_sales = $restliche_tage * $board_config['sale_per_day'];
$freibetrag = 30 * $board_config['sale_per_day'];
$user_sales -= $freibetrag;
#
#-----[ FIND ]------------------------------------------
#
$sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("\'", "''", $yim) . "', '" . str_replace("\'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popuppm, $user_timezone, '" . str_replace("\'", "''", $user_dateformat) . "', '" . str_replace("\'", "''", $user_lang) . "', $user_style, 0, 1, ";
#
#-----[ IN-LINE FIND ]------------------------------------------
#
user_interests
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, user_sales
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$interests) . "'
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, $user_sales
wobei der Wert (hier 0,015 Euro) in "sale_per_day" verwaltet würde, sofern man dieses in die Board-Konfig packt...
Und wenn Du Aktionen machen willst mit längeren Freibeträgen (für mehr Tage), könnte man auch die "30" bei $freibetrag auch in eine verwaltbare Board-Einstellung packen, um aus 30 gschwind mal 60 machen zu können, oder so...