Cronjob mit DB-Zugriff ohne das Oxid-Framwork

Dieses kleine PHP-Script wird per cronjob einmal in der Stunde aufgerufen. Es greift dabei auf die Oxid-DB zu ohne jedoch das komplette OXID-Framwork zu laden.

Hier wird der Bonitätsindex der Kunden, die auf Rechnung bestellt haben auf 500 zurückgesetzt und damit eine weitere Bestellung per Rechnung ausgeschlossen. Wenn die Rechnung dann bezahlt wurde, wird der Index auf 1000 zurückgesetzt (min Index um auf Rechnung zu bestellen).

<?php
// dieses Script setzt den BoniIndex von Kunden, die per Rechnung bezahlen wollen
// auf $sMinBoniIndex und nachdem die Rechnung bezahlt wurde wieder auf $sDefBoniIndex
// aufgerufen über cronjob alle 10 Minuten

// Defaults
$sMinBoni = '500';
$sDefBoni = '1000';

// OXID der Rechnung in Tabelle oxpayment
$sInvoiceOxid = 'oxidinvoice';

// welches Zeitfenster soll der Job verwenden? (in Minuten)
$iJobRun = 60;

// sollen Statusmeldungen ausgegeben werden?
$bMessages = true;

// keine Änderungen ab hier erforderlich!
// *****************************************************************************
$starttime = date("Y-m-d H:i:s", time() - ($activetime * 60));

// db connection
$myConfig = new dbconfig;
$myConfig->init();
$mydb = @mysql_connect( $myConfig->dbHost, $myConfig->dbUser, $myConfig->dbPwd );
mysql_select_db( $myConfig->dbName, $mydb) OR die('error selecting db');

$iFound = SetCustMinBoni();
if ($bMessages) {
 if ($iFound == 0) {
  echo "keine neuen Bestellungen<br />";
 } else {
  echo "Bonitätsindex $sMinBoni bei $iFound Kunden eingetragen<br />";
 }
}
$iFound = SetCustDefBoni();
if ($bMessages) {
 if ($iFound == 0) {
  echo "keine neuen Zahlungseingänge<br />";
 } else {
  echo "Bonitätsindex $sMinBoni bei $iFound Kunden eingetragen<br />";
 }
}
return;

// *****************************************************************************
function SetCustMinBoni() {
 $iFound = 0;
 global $sInvoiceOxid;
 global $starttime;
 global $sMinBoni;
 $sqlStr = "Select OXUSERID from oxorder ";
 $sqlStr .= "where OXPAYMENTTYPE = '$sInvoiceOxid' ";
 $sqlStr .= "and OXORDERDATE >= '$starttime' ";
 if ($result = mysql_query($sqlStr)) {
  while ($row = mysql_fetch_assoc($result)) {
   $sqlStr = "update oxuser ";
   $sqlStr .= "set OXBONI = '$sMinBoni' ";
   $sqlStr .= "where OXID = '" . $row['OXUSERID'] . "'";
   mysql_query($sqlStr);
   $iFound += 1;
  }
 } 
 return $iFound;
 }

function SetCustDefBoni() {
 $iFound = 0;
 global $sInvoiceOxid;
 global $starttime;
 global $sDefBoni;
 $sqlStr = "Select OXUSERID from oxorder ";
 $sqlStr .= "where OXPAYMENTTYPE = '$sInvoiceOxid' ";
 $sqlStr .= "and OXPAID >= '$starttime' ";
 if ($result = mysql_query($sqlStr)) {
  while ($row = mysql_fetch_assoc($result)) {
   $sqlStr = "update oxuser ";
   $sqlStr .= "set OXBONI = '$sDefBoni' ";
   $sqlStr .= "where OXID = '" . $row['OXUSERID'] . "'";
   mysql_query($sqlStr);
   $iFound += 1;
  }
 } 
 return $iFound;
}

class dbconfig {
 function init() {
  require dirname(__FILE__) . "/../config.inc.php";
 }
}

Hinweis: das script ist in einem Unterverzeichnis zum Shop installiert. Falls es in einerm anderen Verzeichnis-Ebene installiert ist muss der Aufruf der config.inc.php entsprechend angepasst werden.


Danke an @patchwork.de fürs Teilen – Thread im Forum: http://forum.oxid-esales.com/showthread.php?t=20326#post130322



0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.