PHP Classes

File: classes/Subscribe.php

Recommend this page to a friend!
  Classes of mohammad anzawi   Simple PHP Newsletter & Mailing System   classes/Subscribe.php   Download  
File: classes/Subscribe.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Simple PHP Newsletter & Mailing System
Send a newsletter to users stored in a database
Author: By
Last change:
Date: 2 years ago
Size: 5,947 bytes
 

Contents

Class file image Download
<?php
#---------------------------------------------------------------------------#
# this Project Created by Mohammad Anzawi #
# #
# This project is intended for beginners and learners #
# The main objective of this project is to see the way do something similar,#
# such as sending messages via e-mail, files Read the content and create #
# templates or other #
# and saved on the server within a specific folder. #
# Can anyone who want to modify or development (add some functions, styles),#
# and use it in his dite, or commercially. #
# #
# so if you have any question -> ask me on m.anzawi2013@gmail.com #
# or visit my blog on http://www.phptricks.org #
#---------------------------------------------------------------------------#

/**
 * Subscribe
 *
 * @package newsletter
 * @author Mr Mohammad Anzawi
 * @copyright 2015
 * @version 1.0.0
 * @access public
 */
class Subscribe
{

   
/**
     *
     * @var object $_db DB object
     * @var array $_errors to save any error happened
     */
   
private
           
$_db,
           
$_errors = array();

   
/**
     * __construct
     * get $_db initial value
     */
   
public function __construct() {
       
$this->_db = DB::connect();
    }

   
/**
     * exist
     * check if subscriber exist or not
     * @param mixed $param
     * @return boolean
     */
    // use query function from DB class
   
private function exist($param = null) {
       
// check if $param is number then get subscriber by id
       
if(is_numeric($param)) {
           
$user = $this->_db->query("SELECT * FROM subscribers WHERE u_id = ?",
                            array(
$param))->results();
            if(
count($user)) {
                return
true;
            }
           
// if enter this else then the $param is string so get user by email
       
} else {
           
$user = $this->_db->query("SELECT * FROM subscribers WHERE u_email = ?",
                            array(
$param))->results();
            if(
count($user)) {
                return
true;
            }
        }

        return
false;
    }

   
/**
     * Subscribe::add()
     * function to add new subscriber
     * @param array $data
     * @return boolean
     */
   
protected function add($data = array()) {
       
// if data isset
       
if(count($data)) {
           
// if subscriber have this email is not exist add new subscriber
           
if(!$this->exist($data['u_email'])) {
                if(
$this->_db->insert('subscribers', $data)) {
                    return
true;
                } else {
                   
// if unable to insert new record add this error
                   
$this->_errors[] = "Unknow Error";
                    return
false;
                }
            }
           
// if user exist add this error
           
$this->_errors[] = "this Subscriber alredy exist";
        }

        return
false;
    }

   
/**
     * Subscribe::delete()
     * delete subscriber
     * @param integer $id
     * @return boolean
     */
    // use delete method from DB class
   
public function delete($id = 0) {

       
// check if subscriber not exist add error and return false
       
if($this->exist($id)) {
           
// if $id is number
           
if(is_numeric($id)) {
               
// delete subscriber
               
if($this->_db->delete('subscribers', array('u_id', '=', $id))) {
                    return
true;
                }
            }
           
// if unable to delete record add this error
           
$this->_errors[] = "Unknow Error";
            return
false;
        }

       
$this->_errors[] = "this Subscriber is not exist ";
        return
false;
    }

   
/**
     * Subscribe::update()
     * update subscriber
     * use like this :
     * $subscriber->update(
     * array(
     * 'u_id'=>$user_id, ## u_id required
     * ....
     * )
     * );
     * @param array $data
     * @return boolean
     */
    // use update method from DB class
   
public function update($data = array()) {
        if(
count($data)) {
           
// if subscriber not exist add error and return false
           
if(!$this->exist($data['u_id'])) {
               
$this->_errors[] = "this Subscriber is not exist";
                return
false;
            }
           
// update subscriber
           
if($this->_db->update('subscribers', $data,
                            array(
'u_id', '=', $data['u_id']))) {
                return
true;
            }
        }

       
// if cant update record add this error
       
$this->_errors[] = "Unknow Error";
        return
false;
    }

   
/**
     * un subscribe users
     * @param integer $id
     * @return boolean
     */
   
public function unSubscribe($id = 0) {

       
// if not isset $id or is not number return false
       
       
if($id && is_numeric($id) && $this->exist($is)) {
           
// update active colomn to 0 for subscriber
           
            // you can delete it or save it in other table
           
if($this->_db->update('subscribers', array('active' => '0'),
                            array(
'u_id', '=', $id))) {
                return
true;
            }
        }

        return
false;
    }

   
/**
     * return errors
     * @return array
     */
   
public function errors() {
        return
$this->_errors;
    }

   
    public function
getAllSubscribers($where = '') {
        return
$this->_db->query("SELECT * FROM subscribers {$where}")->results();
    }
}