https://t.me/RX1948
Server : Apache/2.4.18 (Ubuntu)
System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64
User : oppastar ( 1041)
PHP Version : 7.0.33-0ubuntu0.16.04.15
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
Directory :  /var/www/laciasmara.com/public_html/shop/application/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //var/www/laciasmara.com/public_html/shop/application/models/Subscriber_m.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Subscriber_m extends MY_Model
{
    protected $table = 'subscribers';

    function __construct()
    {
        parent::__construct();
    }

    /**
     * Get All Subscribers
     */

    public function get_all($filters = [], $limit = null, $offset = null, $order_by = 'id', $order_dir = 'DESC')
    {
        $this->db->select('*')
            ->from($this->table);

        // Filtering
        if (!empty($filters)) {
            foreach ($filters as $field => $value) {
                if (is_array($value)) {
                    $this->db->where_in($field, $value);
                } else {
                    $this->db->where($field, $value);
                }
            }
        }

        // Order
        $this->db->order_by($order_by, $order_dir);

        // Limit & Offset
        if ($limit !== null) {
            $this->db->limit($limit, $offset ?? 0);
        }

        return $this->db->get()->result_array();
    }


    /**
     * Get subscribers by group
     */
    public function get_by_group($group_id, $status = 'active')
    {
        $this->db->select('s.*');
        $this->db->from($this->table . ' s');
        $this->db->join('subscriber_group_members sgm', 's.id = sgm.subscriber_id');
        $this->db->where('sgm.group_id', $group_id);
        $this->db->where('s.status', $status);

        $query = $this->db->get();
        return $query->result_array();
    }

    /**
     * Add subscriber to group
     */
    public function add_to_group($subscriber_id, $group_id)
    {
        $data = array(
            'subscriber_id' => $subscriber_id,
            'group_id' => $group_id,
            'joined_at' => date('Y-m-d H:i:s')
        );

        return $this->db->insert('subscriber_group_members', $data);
    }

    /**
     * Remove subscriber from group
     */
    public function remove_from_group($subscriber_id, $group_id)
    {
        $this->db->where('subscriber_id', $subscriber_id);
        $this->db->where('group_id', $group_id);
        return $this->db->delete('subscriber_group_members');
    }

    /**
     * Get subscriber groups
     */
    public function get_subscriber_groups($subscriber_id)
    {
        $this->db->select('sg.*');
        $this->db->from('subscriber_groups sg');
        $this->db->join('subscriber_group_members sgm', 'sg.id = sgm.group_id');
        $this->db->where('sgm.subscriber_id', $subscriber_id);

        $query = $this->db->get();
        return $query->result_array();
    }

    /**
     * Check if email exists
     */
    public function email_exists($email, $exclude_id = null)
    {
        $this->db->where('email', $email);
        if ($exclude_id) {
            $this->db->where('id !=', $exclude_id);
        }

        $query = $this->db->get($this->table);
        return $query->num_rows() > 0;
    }

    /**
     * Generate unsubscribe token
     */
    public function generate_unsubscribe_token($subscriber_id)
    {
        $token = md5($subscriber_id . time() . rand());
        $this->update($subscriber_id, array('unsubscribe_token' => $token));
        return $token;
    }

    /**
     * Unsubscribe by token
     */
    public function unsubscribe_by_token($token)
    {
        $subscriber = $this->_get_by(array('unsubscribe_token' => $token));
        if ($subscriber) {
            $this->update($subscriber['id'], array(
                'status' => 'unsubscribed',
                'unsubscribed_at' => date('Y-m-d H:i:s')
            ));
            return $subscriber;
        }
        return false;
    }

    /**
     * Bulk import subscribers
     */
    public function bulk_import($subscribers_data)
    {
        $success = 0;
        $errors = array();

        foreach ($subscribers_data as $index => $data) {
            if (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
                $errors[] = "Row " . ($index + 1) . ": Invalid email format";
                continue;
            }

            if ($this->email_exists($data['email'])) {
                $errors[] = "Row " . ($index + 1) . ": Email already exists";
                continue;
            }

            if ($this->insert($data)) {
                $success++;
            } else {
                $errors[] = "Row " . ($index + 1) . ": Failed to insert";
            }
        }

        return array('success' => $success, 'errors' => $errors);
    }
}

https://t.me/RX1948 - 2025