Fehler in "xtc_expire_banners.inc.php" (GXMAIN-3523)

Thema wurde von Avenger, 9. Februar 2014 erstellt.

  1. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    In "xtc_expire_banners.inc.php" werden die Banner aufgrund einiger Bedingungen deaktiviert...

    PHP:
    // Auto expire banners
      
    function xtc_expire_banners() {
        
    $banners_query xtc_db_query("select b.banners_id, b.expires_date, b.expires_impressions, sum(bh.banners_shown) as banners_shown from " TABLE_BANNERS " b, " TABLE_BANNERS_HISTORY " bh where b.status = '1' and b.banners_id = bh.banners_id group by b.banners_id");
        if (
    xtc_db_num_rows($banners_query)) {
          while (
    $banners xtc_db_fetch_array($banners_query)) {
            if (
    xtc_not_null($banners['expires_date'])) {
              if (
    date('Y-m-d H:i:s') >= $banners['expires_date']) {
                
    xtc_set_banner_status($banners['banners_id'], '0');
              }
            } elseif (
    xtc_not_null($banners['expires_impressions'])) {
              if (
    $banners['banners_shown'] >= $banners['expires_impressions']) {
                
    xtc_set_banner_status($banners['banners_id'], '0');
              }
            }
          }
        }
      }
    Diese Bedingungen sind:

    "xtc_not_null($banners['expires_date'])" und "xtc_not_null($banners['expires_impressions'])"

    Da "$banners['expires_impressions']" nach der Banner-Erstellung ohne Angabe dieses Werts nicht NULL sondern "0" ist, werden die Banner immer deaktiviert.

    Besser:

    PHP:
      function xtc_expire_banners() {
        
    $banners_query xtc_db_query("select b.banners_id, b.expires_date, b.expires_impressions, sum(bh.banners_shown) as banners_shown from " TABLE_BANNERS " b, " TABLE_BANNERS_HISTORY " bh where b.status = '1' and b.banners_id = bh.banners_id group by b.banners_id");
        if (
    xtc_db_num_rows($banners_query)) {
          while (
    $banners xtc_db_fetch_array($banners_query)) {
            if (
    $banners['expires_date']) {
              if (
    date('Y-m-d H:i:s') >= $banners['expires_date']) {
                
    xtc_set_banner_status($banners['banners_id'], '0');
              }
            
    //} elseif (xtc_not_null($banners['expires_impressions'])) {
            
    } elseif ($banners['expires_impressions']) {
              if (
    $banners['banners_shown'] >= $banners['expires_impressions']) {
                
    xtc_set_banner_status($banners['banners_id'], '0');
              }
            }
          }
        }
      }