Вход Регистрация
Файл: oc-includes/osclass/model/Alerts.php
Строк: 296
<?php if ( !defined('ABS_PATH') ) exit('ABS_PATH is not loaded. Direct access is not allowed.');

/*
 * Copyright 2014 Osclass
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

    /**
     * Alerts DAO
     */
    
class Alerts extends DAO
    
{
        
/**
         *
         * @var type
         */
        
private static $instance;

        public static function 
newInstance()
        {
            if( !
self::$instance instanceof self ) {
                
self::$instance = new self;
            }
            return 
self::$instance;
        }

        
/**
         *
         */
        
function __construct()
        {
            
parent::__construct();
            
$this->setTableName('t_alerts');
            
$this->setPrimaryKey('pk_i_id');
            
$array_fields = array(
                
'pk_i_id'
                
,'s_email'
                
,'fk_i_user_id'
                
,'s_search'
                
,'s_secret'
                
,'b_active'
                
,'e_type'
                
,'dt_date'
                
,'dt_unsub_date'
            
);
            
$this->setFields($array_fields);
        }

        
/**
         * Searches for user alerts, given an user id.
         * If user id not exist return empty array.
         *
         * @access public
         * @since unknown
         * @param string $userId
         * @return array
         */
        
function findByUser($userId$unsub false)
        {
            
$this->dao->select();
            
$this->dao->from($this->getTableName());
            
$this->dao->where('fk_i_user_id'$userId);
            if(!
$unsub) {
                
$this->dao->where('dt_unsub_date IS NULL');
            }
            
$result $this->dao->get();

            if(
$result == false) {
                return array();
            }
            return 
$result->result();
        }

        
/**
         * Searches for user alerts, given an user id.
         * If user id not exist return empty array.
         *
         * @access public
         * @since unknown
         * @param string $email
         * @return array
         */
        
function findByEmail($email$unsub false)
        {
            
$this->dao->select();
            
$this->dao->from($this->getTableName());
            
$this->dao->where('s_email'$email);
            if(!
$unsub) {
                
$this->dao->where('dt_unsub_date IS NULL');
            }
            
$result $this->dao->get();

            if(
$result == false) {
                return array();
            }
            return 
$result->result();
        }

        
/**
         * Searches for alerts, given a type.
         * If type don't match return empty array.
         *
         * @access public
         * @since unknown
         * @param string $type
         * @return array
         */
        
function findByType($type$active false$unsub false)
        {
            
$this->dao->select();
            
$this->dao->from($this->getTableName());
            
$this->dao->where('e_type'$type);
            if(!
$unsub) {
                
$this->dao->where('dt_unsub_date IS NULL');
            }
            if( 
$active ) {
                
$this->dao->where('b_active'1);
            }
            
$result $this->dao->get();

            if(
$result == false) {
                return array();
            }
            return 
$result->result();
        }

        
/**
         * Searches for alerts, given a type group by s_search.
         * If type don't match return empty array.
         *
         * @access public
         * @since unknown
         * @param string $type
         * @param bool $active
         * @return array
         */
        
function findByTypeGroup($type$active FALSE$unsub false)
        {
            
$this->dao->select();
            
$this->dao->from($this->getTableName());
            
$this->dao->where('e_type'$type);
            if(!
$unsub) {
                
$this->dao->where('dt_unsub_date IS NULL');
            }
            if(
$active){
                
$this->dao->where('b_active'1);
            }
            
$this->dao->groupBy('s_search');
            
$result $this->dao->get();

            if(
$result == false) {
                return array();
            }
            return 
$result->result();
        }

        
/**
         * Searches for alerts, given a type group and a s_search.
         * If type don't match return empty array.
         *
         * @access public
         * @since unknown
         * @param string $search
         * @param string $type
         * @return array
         *
         * WARNIGN doble where!
         */
        
function findBySearchAndType($search$type$unsub false)
        {
            
$this->dao->select();
            
$this->dao->from($this->getTableName());
            
$this->dao->where('e_type'$type);
            
$this->dao->where('s_search'$search);
            if(!
$unsub) {
                
$this->dao->where('dt_unsub_date IS NULL');
            }
            
$result $this->dao->get();

            if(
$result == false) {
                return array();
            }
            return 
$result->result();
        }

        
// a.s_email, a.fk_i_user_id @TODO
        /**
         * Searches for users, given a type group and a s_search.
         * If type don't match return empty array.
         *
         * @access public
         * @since unknown
         * @param string $search
         * @param string $type
         * @param bool $active
         * @return array
         */
        
function findUsersBySearchAndType($search$type$active FALSE$unsub false)
        {
            
$this->dao->select();
            
$this->dao->from($this->getTableName());
            
$this->dao->where('e_type'$type);
            
$this->dao->where('s_search'$search);
            if(!
$unsub) {
                
$this->dao->where('dt_unsub_date IS NULL');
            }
            if(
$active){
                
$this->dao->where('b_active'1);
            }
            
            
$result $this->dao->get();

            if(
$result == false) {
                return array();
            }
            return 
$result->result();
        }

        
/**
         * Searches for alerts, given a type group and an user id
         * If type don't match return empty array.
         *
         * @access public
         * @since unknown
         * @param int $userId
         * @param string $type
         * @return array
         */
        
function findByUserByType($userId$type$unsub false)
        {
            
$this->dao->select();
            
$this->dao->from($this->getTableName());
            
$conditions = array('e_type'        => $type,
                                
'fk_i_user_id'  => $userId);
            
$this->dao->where($conditions);
            if(!
$unsub) {
                
$this->dao->where('dt_unsub_date IS NULL');
            }
            
$result $this->dao->get();

            if(
$result == false) {
                return array();
            }
            return 
$result->result();
        }

        
/**
         * Searches for alerts, given a type group and an email
         * If type don't match return empty array.
         *
         * @access public
         * @since unknown
         * @param string $email
         * @param string $type
         * @return array
         */
        
function findByEmailByType($email$type$unsub false)
        {
            
$this->dao->select();
            
$this->dao->from($this->getTableName());
            
$conditions = array('e_type'   => $type,
                                
's_email'  => $email);
            if(!
$unsub) {
                
$this->dao->where('dt_unsub_date IS NULL');
            }
            
$this->dao->where($conditions);
            
$result $this->dao->get();

            if(
$result == false) {
                return array();
            }
            return 
$result->result();
        }

        
/**
         * Create a new alert
         *
         * @access public
         * @since unknown
         * @param int $userid
         * @param string $email
         * @param string $alert
         * @param string $secret
         * @param string $type
         * @return bool on success
         */
        
function createAlert($userid$email$alert$secret$type 'DAILY')
        {
            
$results 0;
            
$this->dao->select();
            
$this->dao->from($this->getTableName());
            
$this->dao->where('s_search'$alert);
            
            
$this->dao->where('dt_unsub_date IS NULL');
            
            if(
$userid == || $userid == null){
                
$this->dao->where('fk_i_user_id'0);
                
$this->dao->where('s_email'$email);
            } else {
                
$this->dao->where('fk_i_user_id'$userid);
            }
            
$results $this->dao->get();

            if(
$results->numRows() == 0) {
                
$this->dao->insert($this->getTableName(), array(
                    
'fk_i_user_id' => $userid
                    
,'s_email' => $email
                    
,'s_search' => $alert
                    
,'e_type' => $type
                    
,'s_secret' => $secret
                    
,'dt_date' => date('Y-m-d H:i:s')));
                return 
$this->dao->insertedId();
            }
            return 
false;
        }

        
/**
         * Activate an alert
         *
         * @access public
         * @since unknown
         * @param string $id
         * @return mixed false on fail, int of num. of affected rows
         */
        
function activate($id)
        {
            return 
$this->dao->update($this->getTableName(), array('b_active' => 1), array('pk_i_id' => $id));
        }

        
/**
         * Dectivate an alert
         *
         * @access public
         * @since 3.1
         * @param string $id
         * @return mixed false on fail, int of num. of affected rows
         */
        
function deactivate($id)
        {
            return 
$this->dao->update($this->getTableName(), array('b_active' => 0), array('pk_i_id' => $id));
        }

        
/**
         * Unsub from an alert
         *
         * @access public
         * @since 3.1
         * @param string $id
         * @return mixed false on fail, int of num. of affected rows
         */
        
function unsub($id)
        {
            return 
$this->dao->update($this->getTableName(), array('dt_unsub_date' => date("Y-m-d H:i:s")), array('pk_i_id' => $id));
        }


        
/**
         * Search alerts
         *
         * @access public
         * @since 3.1
         * @param string $start
         * @param string $limit
         * @param string $order_by_column_name
         * @param string $order_by_type
         * @param string $search
         * @return array
         */
        
public function search($start 0$end 10$order_column 'dt_date'$order_direction 'DESC'$name '')
        {
            
// SET data, so we always return a valid object
            
$alerts = array();
            
$alerts['rows']             = 0;
            
$alerts['total_results']    = 0;
            
$alerts['alerts']           = array();

            
$this->dao->select('SQL_CALC_FOUND_ROWS *');
            
$this->dao->from($this->getTableName());
            
$this->dao->orderBy($order_column$order_direction);
            
$this->dao->limit($start$end);
            if( 
$name != '' ) {
                
$this->dao->like('s_email'$name);
            }
            
$rs $this->dao->get();

            if( !
$rs ) {
                return 
$alerts;
            }

            
$alerts['alerts'] = $rs->result();

            
$rsRows $this->dao->query('SELECT FOUND_ROWS() as total');
            
$data   $rsRows->row();
            if( 
$data['total'] ) {
                
$alerts['total_results'] = $data['total'];
            }

            
$rsTotal $this->dao->query('SELECT COUNT(*) as total FROM '.$this->getTableName());
            
$data   $rsTotal->row();
            if( 
$data['total'] ) {
                
$alerts['rows'] = $data['total'];
            }

            return 
$alerts;

        }




    }

    
/* file end: ./oc-includes/osclass/model/Alerts.php */
?>
Онлайн: 1
Реклама