robguy21
1/14/2016 - 7:04 PM

sms.class.php

<?php
defined('_SM') or die('No Access!');
class SmsClass {
    /**
     * Global variables
     * @global /DatabaseConnection $db      A global database variable
     * @global int $expire                  The time for a session to expire
     */
    private $db, $session, $errorMsg;
    /**
     * Default constructor sets the global database variable 
     * and deletes expired session variables
     */
    public function __construct($database, $session) {
        $this->db = $database;
        $this->session = $session;
    }
    public function getErrorMsg() {
        return $this->errorMsg;
    }
    public function getUser() {
        return $this->session->get("user");
    }
    public function getContacts($page, $limit, $filter = "") {
        if ($filter != "") {
            return false;
        }
        $sql = sprintf("SELECT C.`contactName`, C.`contactSurname`, C.`contactNumber`, CG.`groupName`, C.`id`
                            FROM `sm_usercontacts`  UC
                            INNER JOIN `sm_contacts` C ON C.`id` = UC.`contactId`
                            LEFT JOIN `sm_groupcontacts` GC ON GC.`contactId` = UC.`contactId`
                            LEFT JOIN `sm_contactgroups` CG ON CG.`id` = GC.`groupId`
                            WHERE UC.`userId` = %u AND UC.`active` = 1", $this->getUser()->userId);
        return $this->db->getObjectList($sql, $page * $limit, $limit);
    }
    /**
     * Get the total amount of contacts linked to the user
     * @return int
     */
    public function getTotalContacts() {
        $sql = sprintf("SELECT COUNT(*) as 'count'
                            FROM `sm_usercontacts`  UC
                            INNER JOIN `sm_contacts` C ON C.`id` = UC.`contactId`
                            LEFT JOIN `sm_groupcontacts` GC ON GC.`contactId` = UC.`contactId`
                            LEFT JOIN `sm_contactgroups` CG ON CG.`id` = GC.`groupId`
                            WHERE UC.userId = %u AND `active` = 1", $this->getUser()->userId);
        return $this->db->getResult($sql);
    }
    /**
     * Add contact to database
     * @param array $data
     * @return boolean
     */
//Gets a list of templates from sm_contactgroups
    public function getTemplates($page, $limit, $filter = "") {
        if ($filter != "") {
            return false;
        }
        $sql = sprintf("SELECT T.`id`, T.`templateName`, T.`templateContent`, UT.`userId`
                            FROM sm_templates T
                            INNER JOIN sm_usertemplates UT ON T.id = UT.templateId
                            WHERE UT.active = 1 AND T.active = 1 AND UT.userId = %u GROUP BY UT.templateId", $this->getUser()->userId);
        return $this->db->getObjectList($sql, $page * $limit, $limit);
    }
//Gets the total amount of contacts for current user
    public function getTotalTemplates() {
        $sql = sprintf("SELECT COUNT(*) as 'count' FROM `sm_usertemplates` WHERE `userId` = %u AND `active` = 1 GROUP BY `sm_usertemplates`.templateId", $this->getUser()->userId);
        return $this->db->getResult($sql);
    }
//returns object list of all templates belonging to the user.
    public function getAllTemplates() {
        $sql = sprintf("SELECT *
                            FROM `sm_usertemplates` UT
                            INNER JOIN `sm_templates` T ON T.`id` = UT.`templateId`
                            WHERE UT.`userId` = %u AND UT.`active` = 1", $this->getUser()->userId);
        return $this->db->getObjectList($sql);
    }
//Adds a group
    public function addTemplate($tempName, $tempContent) {
        $sql = sprintf("INSERT INTO `sm_templates` (`templateName`,`templateContent`) VALUES ('%s', '%s')", $tempName, $tempContent);
        $this->db->setQuery($sql);
        $this->db->executeQuery();
        $sql = sprintf("SELECT `id` FROM `sm_templates` ORDER BY `id` DESC");
        $tempInfo = $this->db->getResult($sql);
        $sql = sprintf("INSERT INTO `sm_usertemplates` (`userId`,`templateId`) VALUES (%u, %u)", $this->getUser()->userId, $tempInfo);
        $this->db->setQuery($sql);
        $this->db->executeQuery();
        return true;
    }
    public function delTemplate($id) {
        return $this->db->deleteTableRow("sm_templates", "id", $id);
    }
    public function getContent($id) {
        $sql = sprintf("SELECT * FROM `sm_templates` WHERE `active`=1 AND `id` = %u", $id);
        return $this->db->getObject($sql);
    }
    public function updateTemplate($id, $title, $content) {
        $sql = sprintf("UPDATE `sm_templates` SET `templateName` = '%s', `templateContent` = '%s' WHERE `id` = %u", $title, $content, $id);
        $this->db->setQuery($sql);
        return $this->db->executeQuery();
    }
    public function getAllSmss() {
        $sql = sprintf("SELECT * FROM `sm_smslog` WHERE `userId` = %u", $this->getUser()->userId);
        return $this->db->getObjectList($sql);
    }
    public function getTotalSmss() {
        $sql = sprintf("SELECT COUNT(*) as 'count' FROM `sm_smslog` SL WHERE SL.userId = %u", $this->getUser()->userId);
        return $this->db->getResult($sql);
    }
    public function getSmss($page, $limit, $filter = "") {
        $sql = sprintf("SELECT * FROM `sm_smslog` WHERE `userId` = %u", $this->getUser()->userId);
        return $this->db->getObjectList($sql, $page * $limit, $limit);
    }
    
    public function getGroupContacts(){
        $sql = sprintf("SELECT `id` AS 'groupId', `groupName` FROM `sm_contactgroups` CG
                WHERE CG.`userId` = 26
                ORDER BY CG.`groupName`", $this->getUser()->userId);
        $groups = $this->db->getObjectList($sql);
        foreach($groups as $group){
            $sql = sprintf("SELECT `contactName`, `contactSurname`, `groupName` FROM `sm_contacts` C 
            INNER JOIN `sm_groupcontacts` GC ON GC.contactId = C.id
            INNER JOIN `sm_contactgroups` CG ON CG.id = GC.id
            WHERE CG.`userId` = %u AND `groupId` = %u
            ORDER BY CG.`groupName`", $this->getUser()->userId, $group->groupId);
            $group->contacts = $this->db->getObjectList($sql);
        }
        return $groups;
    }
}