Skip to content
Snippets Groups Projects
campaigns.php 6.68 KiB
Newer Older
<?php

class Campaigns
{

    private $database;

    const FIELDS_gebuchte_werbung = ' `t1`.`id`, `t1`.`uid`, `t1`.`tan`, `t1`.`kid`, `t1`.`ziel`, `t1`.`banner`,
                                      `t1`.`verdienst`, `t1`.`preis`, `t1`.`aufendhalt`, `t1`.`menge`, `t1`.`reload`,
                                      `t1`.`sponsor`, `t1`.`werbeart`, `t1`.`status` ';
    public function __construct( $database )
    {
        $this->database = $database;
    }

Christoph Zysik's avatar
Christoph Zysik committed
    public function decreaseAvailCountById( $id, $value = 1 )
        $sql = 'UPDATE `'. DB_PREFIX . '_gebuchte_werbung` SET `menge` = GREATEST(0, `menge` - :value ) WHERE `id`= :id';
        $sql_params = array(
                           ':id' => $id,
                           ':value' => $value
                      );
        return $this->database->sqlUpdate($sql, $sql_params);
    }

    public function getIsClickableByTanAndType( $tan, $type, $ip, $uid, $zeit )
    {
        $sql = self::FIELDS_gebuchte_werbung .'
               FROM `'. DB_PREFIX .'_gebuchte_werbung` AS `t1`
               LEFT JOIN `'. DB_PREFIX .'_reloads` AS `t2` ON 
                   (
                     `t1`.`tan` = `t2`.`tan`  AND
                     (
                        `t2`.`uid` = :t2uid OR
                        `t2`.`ip` = :t2ip
                     ) AND
                     `t2`.`bis` > :t2bis
                   )
               WHERE
              `t1`.`tan` = :t1tan AND
              `t2`.`tan` IS NULL AND
              `t1`.`werbeart` = :t1type AND
              `t1`.`menge` >= 1 AND
              `t1`.`status` = 1 AND
              `t1`.`sponsor` != :t1uid
              LIMIT 1';

        $sql_params = array(
                           ':t2uid'  => $uid,
                           ':t2ip'   => $ip,
                           ':t2bis'  => $zeit,
                           ':t1tan'  => $tan,
                           ':t1type' => $type,
                           ':t1uid'  => $uid,
                     );
        $result = $this->database->select( $sql, $sql_params );
        return ( isset($result[0]) ) ? $result[0] : false;

    }
    public function getByTanAndType( $tan, $type, $status = false )
    {
        $where_status = ( false !== $status ) ? ' AND `status` = :status ' : '';

        $sql = self::FIELDS_gebuchte_werbung .' FROM `'.DB_PREFIX.'_gebuchte_werbung` AS `t1` WHERE `tan` = :tan AND `werbeart` = :type '.$where_status.' LIMIT 1';
        $sql_params = array(
                           ':tan'     => $tan,
                           ':type'    => $type,
                      );
        if( false !== $status )
        {
            $sql_params[':status'] = $status;
        }

        $result = $this->database->select($sql, $sql_params);
        return ( isset($result[0]) ) ? $result[0] : false;
    public function getNewAdData( $art, $uid, $ip, $limit = 3 )
    {
        $zeit = time();
        $result = array('count' => 0, 'data' => array() );
        $num_limit = (int)$limit;

        $sql = self::FIELDS_gebuchte_werbung .' 
                    FROM `' . DB_PREFIX . '_gebuchte_werbung` AS `t1`
                    LEFT JOIN `' . DB_PREFIX . '_reloads` AS `t2` ON (`t1`.`tan` = `t2`.`tan` AND ( `t2`.`uid` = :ruid OR `t2`.`ip` = :ip ) AND t2.bis >= :zeit)
                    LEFT JOIN `' . DB_PREFIX . '_fb_blacklist` AS `t3` ON `t3`.`kid` = `t1`.`kid` AND `t3`.`werbeart`=`t1`.`werbeart`
                    LEFT JOIN `' . DB_PREFIX . '_userblacklist` AS `t4` ON `t4`.`uid` = :ubuid
                    WHERE
                    (`t3`.`kid` IS NULL OR LOCATE(`t3`.`sponsor`, `t1`.`ziel`) = 0) AND 
                    `t2`.`tan` IS NULL AND
                    `t1`.`werbeart` = :wart AND
                    `t1`.`menge` > 0 AND
                    `t1`.`status` = 1 AND
                    `t1`.`verdienst` > 0 AND
                    `t1`.`sponsor` != :spuid
                    ORDER BY `t1`.`verdienst` DESC LIMIT '.$num_limit;

        $sql_params = array(
                            ':ruid' => $uid,
                            ':ip'   => $ip,
                            ':zeit' => $zeit,
                            ':ubuid'=> $uid,
                            ':wart' => $art,
                            ':spuid'=> $uid,
                     );

        $result['data']  = $this->database->select($sql, $sql_params);
        $result['count'] = count($result['data']);

        return $result;
    }

    public function getAll( $art, $status = false, $sponsor = false, $limit = false, $start = false)
    {
        $result = array('count' => 0, 'data' => array() );
        $sql_params = array();

        $sql = self::FIELDS_gebuchte_werbung .' FROM `' . DB_PREFIX . '_gebuchte_werbung` AS `t1`
                WHERE';

        if( false !== $sponsor )
        {
            $sql .= '`t1`.`sponsor` = :sponsor AND ';
            $sql_params[':sponsor'] = $sponsor;
        }

        if( false !== $status )
        {
            $sql .= '`t1`.`status` = :status AND ';
            $sql_params[':status'] = $status;
        }

        $sql .= '`t1`.`werbeart` = :wart
                  ORDER BY kid ASC ';

        $sql_params[':wart']  = $art;

        $result['data']  = $this->database->select($sql, $sql_params);
        $result['count'] = count($result['data']);

        return $result;
    }

    public function delete( $where )
    {
        return $this->database->delete( '`' . DB_PREFIX . '_gebuchte_werbung`' , $where );
    }

    public function update( $data, $where )
    {
        return $this->database->update( '`' . DB_PREFIX . '_gebuchte_werbung`' , $data, $where );
    }

    public function insert( $data )
    {
        return $this->database->insert( '`' . DB_PREFIX . '_gebuchte_werbung`' , $data );
    }

    public function getTimeToFirstOffReloadAd( $art, $uid )
    {
        $zeit = time();
        $retval = NULL;

        $sql = ' `r`.`bis` FROM `'.DB_PREFIX.'_reloads` AS `r`
                         LEFT JOIN `'.DB_PREFIX.'_gebuchte_werbung` AS `ad` ON (`ad`.`tan` = `r`.`tan` AND `ad`.`status` = 1 AND `ad`.`werbeart` = :wart AND `ad`.`sponsor` != :spuid)
                         WHERE
                         `r`.`uid` = :ruid  AND `ad`.`tan` IS NOT NULL  AND `r`.`bis` > :zeit
                         ORDER BY `r`.`bis` ASC LIMIT 1';
        $sql_params = array(
                            ':wart'  => $art,
                            ':spuid' => $uid,
                            ':ruid'  => $uid,
                            ':zeit'  => $zeit,
                      );
        $result = $this->database->select($sql, $sql_params);
        if( isset($result[0]) )
        {
            $res    = $result[0];
            $retval = (($res->bis - $zeit ) >= 0)  ?  ($res->bis - $zeit) : NULL;
        }

        return $retval;

    }