Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/05/2012, 12:20
shamaka
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 13 años, 5 meses
Puntos: 7
Identificar problema

Hola amigos, ya tenia un tiempo que no visitaba el foro.

Bueno, hoy les quiero solicitar un gran favor, pues no he logrado identificar el error en este archivo. es un archivo que ejecuto en cronjob cada media noche el cual debe realizar una determinada tarea en el sitio, el error de este esta en que no establece de manera correcta la fecha de vencimiento, este es el resultado que me llega al email cuando se ejecuta el archivo.

Set-Cookie: ln=English
Set-Cookie: PHPSESSID=0d627c390fdc9b71a01f1290ad4b1fb7; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Cache-control: private
Content-type: text/html

Done.

Como ven, la fecha esta dislocada, por lo que no puede llevar acabo la tarea, aqui les dejo el codigo a ver si alguien me puede ayudar a identificar el posible error.

Código PHP:
<?
###############################################################################
@set_time_limit(0);
include(
'../config.php');
###############################################################################
function out($str=''){
    print 
"$str\r\n";
    
flush();
}
###############################################################################
function SendEmailNotification($UserId$ProductId$SubscriptActive){
    global 
$sitename$data;
    
$name="";
    
$email="";
    
$productname="";
    
$sql="SELECT email, fname, lname FROM {$data['DbPrefix']}members WHERE id=$UserId";
  
$res=mysql_query($sql);
  if (
$res) if (mysql_num_rows($res) > 0) {
    
$row=mysql_fetch_array($res);
    
$email=$row['email'];
    
$name=$row['fname'] . " " $row['lname'];
  }
  
$sql="SELECT name FROM {$data['DbPrefix']}products WHERE id=$ProductId";
  
$res=mysql_query($sql);
  if (
$res) if (mysql_num_rows($res) > 0) {
    
$row=mysql_fetch_array($res);
    
$productname=$row['name'];
  }
  if (
$SubscriptActive) {
    
$key="SUBSCRIPTION-RESUMED";
  }
  else {
    
$key="SUBSCRIPTION-STOPPED";
  }
  if (!empty(
$email)) {
    
$post['username']=$name;
    
$post['product']=$productname;
    
$post['email']=$email;
    
send_email($key$post);
  }
  else 
out("Can not send e-mail notification to user $name, email field is empty.");
}
###############################################################################
function Main(){
    global 
$data;
    
$sql="SELECT 
      subs.*, subs.id as subscriptionid, (TO_DAYS(NOW()) - TO_DAYS(subs.sdate)) as daystopay, subs.member as payerid,
      prod.type, prod.type, prod.price, prod.period, prod.trial, prod.tax, prod.shipping, prod.name as productname, prod.owner as payeeid,
      memb.fname as userfname, memb.lname as userlname
    FROM 
      {$data['DbPrefix']}subscriptions subs LEFT JOIN {$data['DbPrefix']}products prod ON subs.product=prod.id,
      {$data['DbPrefix']}subscriptions subs2 LEFT JOIN {$data['DbPrefix']}members memb ON subs.owner=memb.id
    WHERE subs2.id=subs.id AND subs.sdate < NOW()"
;
    
$res=mysql_query($sql);
    if (
$res) if (mysql_num_rows($res) > 0){
        
out("Subscriptions to process: " mysql_num_rows($res));
        
out("Working...");
        while (
$row=mysql_fetch_array($res)){
            
$amount=$row['shipping'] + $row['tax'] + $row['price'];
      
$payrounds=floor ($row['daystopay'] / $row['period']);
      
$unpaiddays=$row['daystopay'] - (floor($row['daystopay'] / $row['period']) * $row['period']);
      
$amount=$amount $payrounds;
      if (
$payrounds 0){
        if (
select_balance($row['payerid']) >= $amount){
          
$sql="UPDATE {$data['DbPrefix']}subscriptions SET ";
          if (
$row['holded'] == 1){
            
$paydate=date("Y-m-d"mktime (000date("m"), date("d") - $unpaiddaysdate("Y")));
            
$sql .= " sdate='$paydate',holded=0";
            
SendEmailNotification($row['payerid'], $row['product'], true);
          }else{
            
$paydate=date("Y-m-d"mktime (000date("m"), date("d") - $unpaiddaysdate("Y")));
            
$sql .= " sdate='$paydate'";
          }
          
$sql .= " WHERE id={$row['subscriptionid']}";
          
$rslt=mysql_query($sql);
          if (
$rslt) {
            
$fees=($amount $data['PaymentPercent']/100) + $data['PaymentFees'];
            
transaction($row['payerid'], $row['payeeid'], $amount$fees01'Payment for subscription ' $row['productname'] . ' for ' $row['userfname'] . " " $row['userlname'] . ", " . ($payrounds*$row['period']) . ' days''');
          }
        } else {
          
$sql="UPDATE {$data['DbPrefix']}subscriptions SET holded=1 WHERE id={$row['subscriptionid']}";
          
mysql_query($sql);
          
SendEmailNotification($row['payerid'], $row['product'], false);
        }
      }
        }
    }
    
out("Done.");
}
###############################################################################
Main();
###############################################################################
?>
Este archivo pertenece a una pagina de suscripción, lo que hace es ver cuales cuentas no han pagado su membresia diaria, semanal, mensual o anual.

Gracias de antemano