<?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;
}
}