commit
a0e1d3cddf
Binary file not shown.
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 135 KiB |
@ -0,0 +1,9 @@
|
|||||||
|
FILE(GLOB SRC *.cpp)
|
||||||
|
|
||||||
|
ADD_EXECUTABLE(shape2obj ${SRC})
|
||||||
|
|
||||||
|
TARGET_LINK_LIBRARIES(shape2obj nelmisc nel3d)
|
||||||
|
NL_DEFAULT_PROPS(shape2obj "NeL, Tools, 3D: shape2obj")
|
||||||
|
NL_ADD_RUNTIME_FLAGS(shape2obj)
|
||||||
|
|
||||||
|
INSTALL(TARGETS shape2obj RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools3d)
|
@ -1,28 +1,34 @@
|
|||||||
ADD_SUBDIRECTORY(misc)
|
|
||||||
ADD_SUBDIRECTORY(memory)
|
|
||||||
|
|
||||||
|
# Don't add other subdirectories if only max plugins are selected.
|
||||||
|
IF(WITH_NEL_TOOLS)
|
||||||
|
ADD_SUBDIRECTORY(misc)
|
||||||
|
ADD_SUBDIRECTORY(memory)
|
||||||
|
ENDIF(WITH_NEL_TOOLS)
|
||||||
|
|
||||||
|
# Max plugins are under the 3d directory as well.
|
||||||
IF(WITH_3D)
|
IF(WITH_3D)
|
||||||
ADD_SUBDIRECTORY(3d)
|
ADD_SUBDIRECTORY(3d)
|
||||||
ENDIF(WITH_3D)
|
ENDIF(WITH_3D)
|
||||||
|
|
||||||
IF(WITH_PACS)
|
# Don't add other subdirectories if only max plugins are selected.
|
||||||
ADD_SUBDIRECTORY(pacs)
|
IF(WITH_NEL_TOOLS)
|
||||||
ENDIF(WITH_PACS)
|
IF(WITH_PACS)
|
||||||
|
ADD_SUBDIRECTORY(pacs)
|
||||||
IF(WITH_LOGIC)
|
ENDIF(WITH_PACS)
|
||||||
ADD_SUBDIRECTORY(logic)
|
|
||||||
ENDIF(WITH_LOGIC)
|
|
||||||
|
|
||||||
IF(WITH_GEORGES)
|
IF(WITH_LOGIC)
|
||||||
ADD_SUBDIRECTORY(georges)
|
ADD_SUBDIRECTORY(logic)
|
||||||
ENDIF(WITH_GEORGES)
|
ENDIF(WITH_LOGIC)
|
||||||
|
|
||||||
IF(WITH_SOUND)
|
IF(WITH_GEORGES)
|
||||||
ADD_SUBDIRECTORY(sound)
|
ADD_SUBDIRECTORY(georges)
|
||||||
ENDIF(WITH_SOUND)
|
ENDIF(WITH_GEORGES)
|
||||||
|
|
||||||
IF(WITH_NEL_TESTS)
|
IF(WITH_SOUND)
|
||||||
ADD_SUBDIRECTORY(nel_unit_test)
|
ADD_SUBDIRECTORY(sound)
|
||||||
ENDIF(WITH_NEL_TESTS)
|
ENDIF(WITH_SOUND)
|
||||||
|
|
||||||
#build_gamedata
|
IF(WITH_NEL_TESTS)
|
||||||
|
ADD_SUBDIRECTORY(nel_unit_test)
|
||||||
|
ENDIF(WITH_NEL_TESTS)
|
||||||
|
ENDIF(WITH_NEL_TOOLS)
|
||||||
|
@ -0,0 +1,120 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Assigned{
|
||||||
|
|
||||||
|
private $user;
|
||||||
|
private $ticket;
|
||||||
|
|
||||||
|
////////////////////////////////////////////Functions////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
//Assigns a ticket to a user or returns error message
|
||||||
|
public static function assignTicket( $user_id, $ticket_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
//check if ticket is already assigned, if so return "ALREADY ASSIGNED"
|
||||||
|
if(! Assigned::isAssigned($ticket_id)){
|
||||||
|
$assignation = new Assigned();
|
||||||
|
$assignation->set(array('User' => $user_id, 'Ticket' => $ticket_id));
|
||||||
|
$assignation->create();
|
||||||
|
return "SUCCESS_ASSIGNED";
|
||||||
|
}else{
|
||||||
|
return "ALREADY_ASSIGNED";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Unsign a ticket to a user or returns error message
|
||||||
|
public static function unAssignTicket( $user_id, $ticket_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
//check if ticket is really assigned to that user
|
||||||
|
if( Assigned::isAssigned($ticket_id, $user_id)){
|
||||||
|
$assignation = new Assigned();
|
||||||
|
$assignation->set(array('User' => $user_id, 'Ticket' => $ticket_id));
|
||||||
|
$assignation->delete();
|
||||||
|
return "SUCCESS_UNASSIGNED";
|
||||||
|
}else{
|
||||||
|
return "NOT_ASSIGNED";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the id of the user assigned to a ticket
|
||||||
|
public static function getUserAssignedToTicket($ticket_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->execute("SELECT ticket_user.ExternId FROM `assigned` JOIN `ticket_user` ON assigned.User = ticket_user.TUserId WHERE `Ticket` = :ticket_id", Array('ticket_id' => $ticket_id));
|
||||||
|
$user_id = $statement->fetch();
|
||||||
|
return $user_id['ExternId'];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function isAssigned( $ticket_id, $user_id = 0) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
//check if ticket is already assigned
|
||||||
|
|
||||||
|
if($user_id == 0 && $dbl->execute(" SELECT * FROM `assigned` WHERE `Ticket` = :ticket_id", array('ticket_id' => $ticket_id) )->rowCount() ){
|
||||||
|
return true;
|
||||||
|
}else if( $dbl->execute(" SELECT * FROM `assigned` WHERE `Ticket` = :ticket_id and `User` = :user_id", array('ticket_id' => $ticket_id, 'user_id' => $user_id) )->rowCount()){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Methods////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
}
|
||||||
|
|
||||||
|
//set values
|
||||||
|
public function set($values) {
|
||||||
|
$this->setUser($values['User']);
|
||||||
|
$this->setTicket($values['Ticket']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create() {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "INSERT INTO `assigned` (`User`,`Ticket`) VALUES (:user, :ticket)";
|
||||||
|
$values = Array('user' => $this->getUser(), 'ticket' => $this->getTicket());
|
||||||
|
$dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
//delete entry
|
||||||
|
public function delete() {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "DELETE FROM `assigned` WHERE `User` = :user_id and `Ticket` = :ticket_id";
|
||||||
|
$values = array('user_id' => $this->getUser() ,'ticket_id' => $this->getTicket());
|
||||||
|
$dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Load with sGroupId
|
||||||
|
public function load( $user_id, $user_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->execute("SELECT * FROM `assigned` WHERE `Ticket` = :ticket_id AND `User` = :user_id", Array('ticket_id' => $ticket_id, 'user_id' => $user_id));
|
||||||
|
$row = $statement->fetch();
|
||||||
|
$this->set($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////Getters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function getUser(){
|
||||||
|
return $this->user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTicket(){
|
||||||
|
return $this->ticket;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Setters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function setUser($u){
|
||||||
|
$this->user = $u;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTicket($g){
|
||||||
|
$this->ticket = $g;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Forwarded{
|
||||||
|
|
||||||
|
private $group;
|
||||||
|
private $ticket;
|
||||||
|
|
||||||
|
////////////////////////////////////////////Functions////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
//AForward a ticket to a group, also removes the previous group where it was assigned to.
|
||||||
|
public static function forwardTicket( $group_id, $ticket_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
if (forwarded::isForwarded($ticket_id)){
|
||||||
|
$forw = new Forwarded();
|
||||||
|
$forw->load($ticket_id);
|
||||||
|
$forw->delete();
|
||||||
|
}
|
||||||
|
$forward = new Forwarded();
|
||||||
|
$forward->set(array('Group' => $group_id, 'Ticket' => $ticket_id));
|
||||||
|
$forward->create();
|
||||||
|
return "SUCCESS_FORWARDED";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getSGroupOfTicket($ticket_id) {
|
||||||
|
$forw = new self();
|
||||||
|
$forw->load($ticket_id);
|
||||||
|
return $forw->getGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function isForwarded( $ticket_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
if( $dbl->execute(" SELECT * FROM `forwarded` WHERE `Ticket` = :ticket_id", array('ticket_id' => $ticket_id))->rowCount()){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Methods////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
}
|
||||||
|
|
||||||
|
//set values
|
||||||
|
public function set($values) {
|
||||||
|
$this->setGroup($values['Group']);
|
||||||
|
$this->setTicket($values['Ticket']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create() {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "INSERT INTO `forwarded` (`Group`,`Ticket`) VALUES (:group, :ticket)";
|
||||||
|
$values = Array('group' => $this->getGroup(), 'ticket' => $this->getTicket());
|
||||||
|
$dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
//delete entry
|
||||||
|
public function delete() {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "DELETE FROM `forwarded` WHERE `Group` = :group_id and `Ticket` = :ticket_id";
|
||||||
|
$values = array('group_id' => $this->getGroup() ,'ticket_id' => $this->getTicket());
|
||||||
|
$dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Load with sGroupId
|
||||||
|
public function load( $ticket_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->execute("SELECT * FROM `forwarded` WHERE `Ticket` = :ticket_id", Array('ticket_id' => $ticket_id));
|
||||||
|
$row = $statement->fetch();
|
||||||
|
$this->set($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////Getters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function getGroup(){
|
||||||
|
return $this->group;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTicket(){
|
||||||
|
return $this->ticket;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Setters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function setGroup($g){
|
||||||
|
$this->group = $g;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTicket($t){
|
||||||
|
$this->ticket = $t;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Gui_Elements{
|
||||||
|
|
||||||
|
public static function make_table( $inputList, $funcArray ,$fieldArray){
|
||||||
|
$i = 0;
|
||||||
|
$result = Array();
|
||||||
|
foreach($inputList as $element){
|
||||||
|
$j = 0;
|
||||||
|
foreach($funcArray as $function){
|
||||||
|
$fnames = explode('->', $function);
|
||||||
|
$intermediate_result = NULL;
|
||||||
|
foreach($fnames as $fname) {
|
||||||
|
if(substr($fname, -2) == "()") {
|
||||||
|
$fname = substr($fname, 0, strlen($fname)-2);
|
||||||
|
if($intermediate_result == NULL) {
|
||||||
|
$intermediate_result = $element->$fname();
|
||||||
|
} else {
|
||||||
|
$intermediate_result = $intermediate_result->$fname();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if($intermediate_result == NULL) {
|
||||||
|
$intermediate_result = $element->$fname();
|
||||||
|
} else {
|
||||||
|
$intermediate_result = $intermediate_result->$fname();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$result[$i][$fieldArray[$j]] = $intermediate_result;
|
||||||
|
$j++;
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function make_table_with_key_is_id( $inputList, $funcArray, $idFunction){
|
||||||
|
$result = Array();
|
||||||
|
foreach($inputList as $element){
|
||||||
|
foreach($funcArray as $function){
|
||||||
|
$result[$element->$idFunction()] = $element->$function();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function time_elapsed_string($ptime){
|
||||||
|
global $TIME_FORMAT;
|
||||||
|
$ptime = DateTime::createFromFormat($TIME_FORMAT, $ptime)->getTimestamp();
|
||||||
|
|
||||||
|
$etime = time() - $ptime;
|
||||||
|
|
||||||
|
if ($etime < 1)
|
||||||
|
{
|
||||||
|
return '0 seconds';
|
||||||
|
}
|
||||||
|
|
||||||
|
$a = array( 12 * 30 * 24 * 60 * 60 => 'year',
|
||||||
|
30 * 24 * 60 * 60 => 'month',
|
||||||
|
24 * 60 * 60 => 'day',
|
||||||
|
60 * 60 => 'hour',
|
||||||
|
60 => 'minute',
|
||||||
|
1 => 'second'
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($a as $secs => $str)
|
||||||
|
{
|
||||||
|
$d = $etime / $secs;
|
||||||
|
if ($d >= 1)
|
||||||
|
{
|
||||||
|
$r = round($d);
|
||||||
|
return $r . ' ' . $str . ($r > 1 ? 's' : '') . ' ago';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,77 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class In_Support_Group{
|
||||||
|
|
||||||
|
private $user;
|
||||||
|
private $group;
|
||||||
|
|
||||||
|
////////////////////////////////////////////Functions////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
//check if user is in in_support_group
|
||||||
|
public static function userExistsInSGroup( $user_id, $group_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
//check if name is already used
|
||||||
|
if( $dbl->execute(" SELECT * FROM `in_support_group` WHERE `User` = :user_id and `Group` = :group_id ", array('user_id' => $user_id, 'group_id' => $group_id) )->rowCount() ){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Methods////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
}
|
||||||
|
|
||||||
|
//set values
|
||||||
|
public function set($values) {
|
||||||
|
$this->setUser($values['User']);
|
||||||
|
$this->setGroup($values['Group']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create() {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "INSERT INTO `in_support_group` (`User`,`Group`) VALUES (:user, :group)";
|
||||||
|
$values = Array('user' => $this->user, 'group' => $this->group);
|
||||||
|
$dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
//delete entry
|
||||||
|
public function delete() {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "DELETE FROM `in_support_group` WHERE `User` = :user_id and `Group` = :group_id";
|
||||||
|
$values = array('user_id' => $this->getUser() ,'group_id' => $this->getGroup());
|
||||||
|
$dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Load with sGroupId
|
||||||
|
public function load( $user_id, $group_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->execute("SELECT * FROM `in_support_group` WHERE `Group` = :group_id", Array('group_id' => $group_id));
|
||||||
|
$row = $statement->fetch();
|
||||||
|
$this->set($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////Getters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function getUser(){
|
||||||
|
return $this->user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getGroup(){
|
||||||
|
return $this->group;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Setters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function setUser($u){
|
||||||
|
$this->user = $u;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setGroup($g){
|
||||||
|
$this->group = $g;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,378 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Mail_Handler{
|
||||||
|
|
||||||
|
private $db;
|
||||||
|
|
||||||
|
public function mail_fork() {
|
||||||
|
//Start a new child process and return the process id!
|
||||||
|
$pid = pcntl_fork();
|
||||||
|
return $pid;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function send_ticketing_mail($ticketObj, $content, $type, $author) {
|
||||||
|
global $TICKET_MAILING_SUPPORT;
|
||||||
|
if($TICKET_MAILING_SUPPORT){
|
||||||
|
$txt = "";
|
||||||
|
$subject = "";
|
||||||
|
if($type == "REPLY"){
|
||||||
|
$txt = "---------- Ticket #". $ticketObj->getTId() . " ----------\n You received a new reply on your ticket: " . $ticketObj->getTitle() .
|
||||||
|
"\n --------------------\n\n";
|
||||||
|
$subject = "New reply on [Ticket #" . $ticketObj->getTId() ."]";
|
||||||
|
$endTxt = "\n\n----------\nYou can reply on this message to answer directly on the ticket!";
|
||||||
|
$txt = $txt . $content . $endTxt;
|
||||||
|
self::send_mail($ticketObj->getAuthor(),$subject,$txt, $ticketObj->getTId(),$author);
|
||||||
|
}else if($type == "NEW"){
|
||||||
|
$txt = "---------- Ticket #". $ticketObj->getTId() . " ----------\n Your ticket: " . $ticketObj->getTitle() . " is newly created";
|
||||||
|
if($ticketObj->getAuthor() != $author){
|
||||||
|
$txt = $txt . " by " . Ticket_User::get_username_from_id($author);
|
||||||
|
}else{
|
||||||
|
$author = $ticketObj->getAuthor();
|
||||||
|
}
|
||||||
|
$txt = $txt . "\n --------------------\n\n";
|
||||||
|
$subject = "New ticket created [Ticket #" . $ticketObj->getTId() ."]";
|
||||||
|
$endTxt = "\n\n----------\nYou can reply on this message to answer directly on the ticket!";
|
||||||
|
$txt = $txt . $content . $endTxt;
|
||||||
|
self::send_mail($ticketObj->getAuthor(),$subject,$txt, $ticketObj->getTId());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function send_mail($recipient, $subject, $body, $ticket_id = 0, $from = 1) {
|
||||||
|
if(is_numeric($recipient)) {
|
||||||
|
$id_user = $recipient;
|
||||||
|
$recipient = NULL;
|
||||||
|
}
|
||||||
|
$query = "INSERT INTO email (Recipient,Subject,Body,Status,Attempts,Sender,UserId,MessageId,TicketId) VALUES (:recipient, :subject, :body, :status, :attempts, :sender, :id_user, :messageId, :ticketId)";
|
||||||
|
$values = array('recipient' => $recipient, 'subject' => $subject, 'body' => $body, 'status' => 'NEW', 'attempts'=> 0, 'sender' => $from,'id_user' => $id_user, 'messageId' => 0, 'ticketId'=> $ticket_id);
|
||||||
|
$db = new DBLayer("lib");
|
||||||
|
$db->execute($query, $values);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//the main function
|
||||||
|
function cron() {
|
||||||
|
global $cfg;
|
||||||
|
$inbox_username = $cfg['mail']['username'];
|
||||||
|
$inbox_password = $cfg['mail']['password'];
|
||||||
|
$inbox_host = $cfg['mail']['host'];
|
||||||
|
$oms_reply_to = "Ryzom Ticketing Support <ticketing@".$inbox_host.">";
|
||||||
|
global $MAIL_DIR;
|
||||||
|
|
||||||
|
// Deliver new mail
|
||||||
|
echo("mail cron\n");
|
||||||
|
|
||||||
|
//creates child process
|
||||||
|
$pid = self::mail_fork();
|
||||||
|
$pidfile = '/tmp/ams_cron_email_pid';
|
||||||
|
|
||||||
|
//INFO: if $pid =
|
||||||
|
//-1: "Could not fork!\n";
|
||||||
|
// 0: "In child!\n";
|
||||||
|
//>0: "In parent!\n";
|
||||||
|
|
||||||
|
if($pid) {
|
||||||
|
|
||||||
|
// We're the parent process, do nothing!
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//make db connection here because the children have to make the connection.
|
||||||
|
$this->db = new DBLayer("lib");
|
||||||
|
|
||||||
|
//if $pidfile doesn't exist yet, then start sending the mails that are in the db.
|
||||||
|
if(!file_exists($pidfile)) {
|
||||||
|
//create the file and write the child processes id in it!
|
||||||
|
$pid = getmypid();
|
||||||
|
$file = fopen($pidfile, 'w');
|
||||||
|
fwrite($file, $pid);
|
||||||
|
fclose($file);
|
||||||
|
|
||||||
|
//select all new & failed emails & try to send them
|
||||||
|
//$emails = db_query("select * from email where status = 'NEW' or status = 'FAILED'");
|
||||||
|
$statement = $this->db->executeWithoutParams("select * from email where Status = 'NEW' or Status = 'FAILED'");
|
||||||
|
$emails = $statement->fetchAll();
|
||||||
|
|
||||||
|
foreach($emails as $email) {
|
||||||
|
$message_id = self::new_message_id($email['TicketId']);
|
||||||
|
|
||||||
|
//if recipient isn't given, then use the email of the id_user instead!
|
||||||
|
echo("Emailing {$email['Recipient']}\n");
|
||||||
|
if(!$email['Recipient']) {
|
||||||
|
$email['Recipient'] = Ticket_User::get_email_by_user_id($email['UserId']);
|
||||||
|
}
|
||||||
|
|
||||||
|
//create sending email adres based on the $sender id
|
||||||
|
if($email['Sender'] != 0) {
|
||||||
|
$username = Ticket_User::get_username_from_id($email['Sender']);
|
||||||
|
$from = "$username <$username@$inbox_host>";
|
||||||
|
} else {
|
||||||
|
$from = $oms_reply_to;
|
||||||
|
}
|
||||||
|
$headers = "From: $from\r\n" . "Message-ID: " . $message_id ;
|
||||||
|
print("recip: " . $email['Recipient']);
|
||||||
|
print("subj: " .$email['Subject']);
|
||||||
|
print("body: " . $email['Body']);
|
||||||
|
print("headers: " . $headers);
|
||||||
|
if(mail($email['Recipient'], $email['Subject'], $email['Body'], $headers)) {
|
||||||
|
$status = "DELIVERED";
|
||||||
|
echo("Emailed {$email['Recipient']}\n");
|
||||||
|
} else {
|
||||||
|
$status = "FAILED";
|
||||||
|
echo("Email to {$email['Recipient']} failed\n");
|
||||||
|
}
|
||||||
|
//change the status of the emails.
|
||||||
|
$this->db->execute('update email set Status = ?, MessageId = ?, Attempts = Attempts + 1 where MailId = ?', array($status, $message_id, $email['MailId']));
|
||||||
|
//db_exec('update email set status = ?, message_id = ?, attempts = attempts + 1 where id_email = ?', array($status, $message_id, $email['id_email']));
|
||||||
|
}
|
||||||
|
unlink($pidfile);
|
||||||
|
}
|
||||||
|
// Check mail
|
||||||
|
|
||||||
|
//$mailbox = imap_open("{localhost:110/pop3/novalidate-cert}INBOX", $inbox_username, $inbox_password);
|
||||||
|
$mbox = imap_open($cfg['mail']['server'], $inbox_username, $inbox_password) or die('Cannot connect to mail server: ' . imap_last_error());
|
||||||
|
$message_count = imap_num_msg($mbox);
|
||||||
|
|
||||||
|
for ($i = 1; $i <= $message_count; ++$i) {
|
||||||
|
|
||||||
|
//return task ID
|
||||||
|
self::incoming_mail_handler($mbox, $i);
|
||||||
|
$tid = 1; //self::ams_create_email($from, $subject, $txt, $html, $to, $from);
|
||||||
|
|
||||||
|
if($tid) {
|
||||||
|
//TODO: base file on Ticket + reply id
|
||||||
|
/* $file = fopen($MAIL_DIR."/mail/".$tid, 'w');
|
||||||
|
fwrite($file, $entire_email);
|
||||||
|
fclose($file); */
|
||||||
|
}
|
||||||
|
//mark message $i of $mbox for deletion!
|
||||||
|
imap_delete($mbox, $i);
|
||||||
|
}
|
||||||
|
//delete marked messages
|
||||||
|
imap_expunge($mbox);
|
||||||
|
imap_close($mbox);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function new_message_id($ticketId) {
|
||||||
|
$time = time();
|
||||||
|
$pid = getmypid();
|
||||||
|
global $cfg;
|
||||||
|
global $ams_mail_count;
|
||||||
|
$ams_mail_count = ($ams_mail_count == '') ? 1 : $ams_mail_count + 1;
|
||||||
|
return "<ams.message".".".$ticketId.".".$pid.$ams_mail_count.".".$time."@".$cfg['mail']['host'].">";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_ticket_id_from_subject($subject){
|
||||||
|
$startpos = strpos($subject, "[Ticket #");
|
||||||
|
$tempString = substr($subject, $startpos+9);
|
||||||
|
$endpos = strpos($tempString, "]");
|
||||||
|
$ticket_id = substr($tempString, 0, $endpos);
|
||||||
|
return $ticket_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function incoming_mail_handler($mbox,$i){
|
||||||
|
|
||||||
|
$header = imap_header($mbox, $i);
|
||||||
|
$subject = self::decode_utf8($header->subject);
|
||||||
|
|
||||||
|
print_r($header);
|
||||||
|
|
||||||
|
//get ticket_id out of the message-id or else out of the subject line
|
||||||
|
$ticket_id = 0;
|
||||||
|
if(isset($header->references)){
|
||||||
|
$pieces = explode(".", $header->references);
|
||||||
|
if($pieces[0] == "<ams"){
|
||||||
|
$ticket_id = $pieces[2];
|
||||||
|
}else{
|
||||||
|
$ticket_id = self::get_ticket_id_from_subject($subject);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$ticket_id = self::get_ticket_id_from_subject($subject);
|
||||||
|
}
|
||||||
|
|
||||||
|
//if ticket id is found
|
||||||
|
if($ticket_id){
|
||||||
|
|
||||||
|
$entire_email = imap_fetchheader($mbox, $i) . imap_body($mbox, $i);
|
||||||
|
$subject = self::decode_utf8($header->subject);
|
||||||
|
$to = $header->to[0]->mailbox;
|
||||||
|
$from = $header->from[0]->mailbox . '@' . $header->from[0]->host;
|
||||||
|
$txt = self::get_part($mbox, $i, "TEXT/PLAIN");
|
||||||
|
//$html = self::get_part($mbox, $i, "TEXT/HTML");
|
||||||
|
|
||||||
|
//use the line ---------- Ticket # to make a distincton between the old message and the reply
|
||||||
|
$endpos = strpos($txt, ">---------- Ticket #");
|
||||||
|
if($endpos){
|
||||||
|
$txt = substr($txt, 0, $endpos);
|
||||||
|
}else{
|
||||||
|
$endpos = strpos($txt, "---------- Ticket #");
|
||||||
|
if($endpos){
|
||||||
|
$txt = substr($txt, 0, $endpos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//get the id out of the email address of the person sending the email.
|
||||||
|
if($from !== NULL && !is_numeric($from)) $from = Ticket_User::get_id_from_email($from);
|
||||||
|
|
||||||
|
$user = new Ticket_User();
|
||||||
|
$user->load_With_TUserId($from);
|
||||||
|
$ticket = new Ticket();
|
||||||
|
$ticket->load_With_TId($ticket_id);
|
||||||
|
|
||||||
|
//if user has access to it!
|
||||||
|
if((Ticket_User::isMod($user) or ($ticket->getAuthor() == $user->getTUserId())) and $txt != ""){
|
||||||
|
Ticket::createReply($txt, $user->getTUserId(), $ticket->getTId(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*function ams_create_email($from, $subject, $body, $html, $recipient = 0, $sender = NULL) {
|
||||||
|
|
||||||
|
//TODO:
|
||||||
|
if($recipient == 0 && !is_string($recipient)) {
|
||||||
|
global $user;
|
||||||
|
$recipient = $user->uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($sender !== NULL && !is_numeric($sender)) $sender = self::get_id_from_username($sender);
|
||||||
|
if(!is_numeric($recipient)) $recipient = self::get_id_from_username($recipient);
|
||||||
|
|
||||||
|
$message = array(
|
||||||
|
'creator' => $sender,
|
||||||
|
'owner' => $recipient,
|
||||||
|
'type' => 'email',
|
||||||
|
'summary' => $subject,
|
||||||
|
'data' => array (
|
||||||
|
'subject' => $subject,
|
||||||
|
'body' => $body,
|
||||||
|
'html' => $html,
|
||||||
|
'sender' => oms_get_username_from_id($sender),
|
||||||
|
'from' => $from,
|
||||||
|
'recipient' => oms_get_username_from_id($recipient),
|
||||||
|
'time' => time(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
//TO ASK:
|
||||||
|
oms_task_create($message);
|
||||||
|
oms_task_index($message, array('subject', 'body', 'sender', 'recipient'));
|
||||||
|
//---------------------------
|
||||||
|
return $message['id_task'];
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*function oms_get_email($id) {
|
||||||
|
|
||||||
|
$message = oms_task_load($id);
|
||||||
|
if($message) {
|
||||||
|
oms_prepare_email($message);
|
||||||
|
return $message;
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*function oms_prepare_email(&$message) {
|
||||||
|
|
||||||
|
$data = $message['data'];
|
||||||
|
$data['id_message'] = $message['id_task'];
|
||||||
|
$data['read'] = ($message['status'] != 'NEW' && $message['status'] != 'UNREAD');
|
||||||
|
$message = $data;
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*function oms_email_mark_read($mid) {
|
||||||
|
|
||||||
|
db_exec("update task set status = 'READ' where id_task = ? and type = 'email' and module = 'email'", array($mid));
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function decode_utf8($str) {
|
||||||
|
|
||||||
|
preg_match_all("/=\?UTF-8\?B\?([^\?]+)\?=/i",$str, $arr);
|
||||||
|
for ($i=0;$i<count($arr[1]);$i++){
|
||||||
|
$str=ereg_replace(ereg_replace("\?","\?",
|
||||||
|
$arr[0][$i]),base64_decode($arr[1][$i]),$str);
|
||||||
|
}
|
||||||
|
return $str;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function get_mime_type(&$structure) {
|
||||||
|
|
||||||
|
$primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO","IMAGE", "VIDEO", "OTHER");
|
||||||
|
if($structure->subtype) {
|
||||||
|
return $primary_mime_type[(int) $structure->type] . '/' .$structure->subtype;
|
||||||
|
}
|
||||||
|
return "TEXT/PLAIN";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function get_part($stream, $msg_number, $mime_type, $structure = false, $part_number = false) {
|
||||||
|
|
||||||
|
if(!$structure) {
|
||||||
|
$structure = imap_fetchstructure($stream, $msg_number);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($structure) {
|
||||||
|
if($mime_type == self::get_mime_type($structure)) {
|
||||||
|
if(!$part_number) {
|
||||||
|
$part_number = "1";
|
||||||
|
}
|
||||||
|
$text = imap_fetchbody($stream, $msg_number, $part_number);
|
||||||
|
if($structure->encoding == 3) {
|
||||||
|
return imap_base64($text);
|
||||||
|
} else if($structure->encoding == 4) {
|
||||||
|
return imap_qprint($text);
|
||||||
|
} else {
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($structure->type == 1) /* multipart */ {
|
||||||
|
while(list($index, $sub_structure) = each($structure->parts)) {
|
||||||
|
if($part_number) {
|
||||||
|
$prefix = $part_number . '.';
|
||||||
|
} else {
|
||||||
|
$prefix = '';
|
||||||
|
}
|
||||||
|
$data = self::get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1));
|
||||||
|
if($data) {
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
} // END OF WHILE
|
||||||
|
} // END OF MULTIPART
|
||||||
|
} // END OF STRUTURE
|
||||||
|
return false;
|
||||||
|
|
||||||
|
} // END OF FUNCTION
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,97 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Pagination{
|
||||||
|
|
||||||
|
private $element_array;
|
||||||
|
private $last;
|
||||||
|
private $current;
|
||||||
|
private $amountOfRows;
|
||||||
|
|
||||||
|
function __construct($query, $db, $nrDisplayed, $resultClass, $params = array()) {
|
||||||
|
if (!(isset($_GET['pagenum']))){
|
||||||
|
$this->current= 1;
|
||||||
|
}else{
|
||||||
|
$this->current= $_GET['pagenum'];
|
||||||
|
}
|
||||||
|
|
||||||
|
//Here we count the number of results
|
||||||
|
$db = new DBLayer($db);
|
||||||
|
$rows = $db->execute($query, $params)->rowCount();
|
||||||
|
$this->amountOfRows = $rows;
|
||||||
|
//the array hat will contain all users
|
||||||
|
|
||||||
|
if($rows > 0){
|
||||||
|
//This is the number of results displayed per page
|
||||||
|
$page_rows = $nrDisplayed;
|
||||||
|
|
||||||
|
//This tells us the page number of our last page
|
||||||
|
$this->last = ceil($rows/$page_rows);
|
||||||
|
|
||||||
|
//this makes sure the page number isn't below one, or more than our maximum pages
|
||||||
|
if ($this->current< 1)
|
||||||
|
{
|
||||||
|
$this->current= 1;
|
||||||
|
}else if ($this->current> $this->last) {
|
||||||
|
$this->current= $this->last;
|
||||||
|
}
|
||||||
|
|
||||||
|
//This sets the range to display in our query
|
||||||
|
$max = 'limit ' .($this->current- 1) * $page_rows .',' .$page_rows;
|
||||||
|
|
||||||
|
//This is your query again, the same one... the only difference is we add $max into it
|
||||||
|
$data = $db->execute($query . " " . $max, $params);
|
||||||
|
|
||||||
|
$this->element_array = Array();
|
||||||
|
//This is where we put the results in a resultArray to be sent to smarty
|
||||||
|
while($row = $data->fetch(PDO::FETCH_ASSOC)){
|
||||||
|
$element = new $resultClass();
|
||||||
|
$element->set($row);
|
||||||
|
$this->element_array[] = $element;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getLast(){
|
||||||
|
return $this->last;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCurrent(){
|
||||||
|
return $this->current;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getElements(){
|
||||||
|
return $this->element_array;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAmountOfRows(){
|
||||||
|
return $this->amountOfRows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLinks($nrOfLinks){
|
||||||
|
$pageLinks = Array();
|
||||||
|
//if amount of showable links is greater than the amount of pages: show all!
|
||||||
|
if ($this->last <= $nrOfLinks){
|
||||||
|
for($var = 1; $var <= $this->last; $var++){
|
||||||
|
$pageLinks[] = $var;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$offset = ($nrOfLinks-1)/2 ;
|
||||||
|
$startpoint = $this->current - $offset;
|
||||||
|
$endpoint = $this->current + $offset;
|
||||||
|
|
||||||
|
if($startpoint < 1){
|
||||||
|
$startpoint = 1;
|
||||||
|
$endpoint = $startpoint + $nrOfLinks - 1;
|
||||||
|
}else if($endpoint > $this->last){
|
||||||
|
$endpoint = $this->last;
|
||||||
|
$startpoint = $endpoint - ($nrOfLinks -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
for($var = $startpoint; $var <= $endpoint; $var++){
|
||||||
|
$pageLinks[] = $var;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $pageLinks;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Querycache{
|
||||||
|
|
||||||
|
private $SID;
|
||||||
|
private $type;
|
||||||
|
private $query;
|
||||||
|
private $db;
|
||||||
|
|
||||||
|
////////////////////////////////////////////Functions////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////Methods////////////////////////////////////////////////////
|
||||||
|
public function __construct() {
|
||||||
|
}
|
||||||
|
|
||||||
|
//set values
|
||||||
|
public function set($values) {
|
||||||
|
$this->setSID($values['SID']);
|
||||||
|
$this->setType($values['type']);
|
||||||
|
$this->setQuery($values['query']);
|
||||||
|
$this->setDb($values['db']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//return constructed element based on SID
|
||||||
|
public function load_With_SID( $id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->execute("SELECT * FROM ams_querycache WHERE SID=:id", array('id' => $id));
|
||||||
|
$row = $statement->fetch();
|
||||||
|
$this->set($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//update private data to DB.
|
||||||
|
public function update(){
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "UPDATE ams_querycache SET type= :t, query = :q, db = :d WHERE SID=:id";
|
||||||
|
$values = Array('id' => $this->getSID(), 't' => $this->getType(), 'q' => $this->getQuery(), 'd' => $this->getDb());
|
||||||
|
$statement = $dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Getters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function getSID(){
|
||||||
|
return $this->SID;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getType(){
|
||||||
|
return $this->type;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getQuery(){
|
||||||
|
return $this->query;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDb(){
|
||||||
|
return $this->db;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Setters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function setSID($s){
|
||||||
|
$this->SID = $s;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function setType($t){
|
||||||
|
$this->type = $t;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setQuery($q){
|
||||||
|
$this->query= $q;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDb($d){
|
||||||
|
$this->db= $d;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,10 +0,0 @@
|
|||||||
<?php
|
|
||||||
class Sql{
|
|
||||||
|
|
||||||
public function db_query( $query, $values = array() )
|
|
||||||
{
|
|
||||||
echo "tst";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,265 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class Support_Group{
|
||||||
|
|
||||||
|
private $sGroupId;
|
||||||
|
private $name;
|
||||||
|
private $tag;
|
||||||
|
|
||||||
|
////////////////////////////////////////////Functions////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
//return all groups
|
||||||
|
public static function getGroup($id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->execute("SELECT * FROM support_group WHERE SGroupId = :id", array('id' => $id));
|
||||||
|
$row = $statement->fetch();
|
||||||
|
$instanceGroup = new self();
|
||||||
|
$instanceGroup->set($row);
|
||||||
|
return $instanceGroup;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//return all groups
|
||||||
|
public static function getGroups() {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->executeWithoutParams("SELECT * FROM support_group ORDER BY Name ASC");
|
||||||
|
$rows = $statement->fetchAll();
|
||||||
|
$result = Array();
|
||||||
|
foreach($rows as $group){
|
||||||
|
|
||||||
|
$instanceGroup = new self();
|
||||||
|
$instanceGroup->set($group);
|
||||||
|
$result[] = $instanceGroup;
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//wrapper for creating a support group
|
||||||
|
public static function createSupportGroup( $name, $tag) {
|
||||||
|
|
||||||
|
if(strlen($name) < 21 && strlen($name) > 4 &&strlen($tag) < 8 && strlen($tag) > 1 ){
|
||||||
|
$notExists = self::supportGroup_EntryNotExists($name, $tag);
|
||||||
|
if ( $notExists == "SUCCESS" ){
|
||||||
|
$sGroup = new self();
|
||||||
|
$sGroup->setName($name);
|
||||||
|
$sGroup->setTag($tag);
|
||||||
|
$sGroup->create();
|
||||||
|
return "SUCCESS";
|
||||||
|
}else{
|
||||||
|
//return NAME_TAKEN or TAG_TAKEN
|
||||||
|
return $notExists;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
//RETURN ERROR that indicates SIZE
|
||||||
|
return "SIZE_ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//check if group exists
|
||||||
|
public static function supportGroup_EntryNotExists( $name, $tag) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
//check if name is already used
|
||||||
|
if( $dbl->execute("SELECT * FROM support_group WHERE Name = :name",array('name' => $name))->rowCount() ){
|
||||||
|
return "NAME_TAKEN";
|
||||||
|
}
|
||||||
|
else if( $dbl->execute("SELECT * FROM support_group WHERE Tag = :tag",array('tag' => $tag))->rowCount() ){
|
||||||
|
return "TAG_TAKEN";
|
||||||
|
}else{
|
||||||
|
return "SUCCESS";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//check if group exists
|
||||||
|
public static function supportGroup_Exists( $id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
//check if supportgroup id exist
|
||||||
|
if( $dbl->execute("SELECT * FROM support_group WHERE SGroupId = :id",array('id' => $id ))->rowCount() ){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//return constructed element based on SGroupId
|
||||||
|
public static function constr_SGroupId( $id) {
|
||||||
|
$instance = new self();
|
||||||
|
$instance->setSGroup($id);
|
||||||
|
return $instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
//returns list of all users that are enlisted to a support group
|
||||||
|
public static function getAllUsersOfSupportGroup($group_id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->execute("SELECT * FROM `in_support_group` INNER JOIN `ticket_user` ON ticket_user.TUserId = in_support_group.User WHERE in_support_group.Group=:id", array('id' => $group_id));
|
||||||
|
$rows = $statement->fetchAll();
|
||||||
|
$result = Array();
|
||||||
|
foreach($rows as $row){
|
||||||
|
$userInstance = new Ticket_User();
|
||||||
|
$userInstance->setTUserId($row['TUserId']);
|
||||||
|
$userInstance->setPermission($row['Permission']);
|
||||||
|
$userInstance->setExternId($row['ExternId']);
|
||||||
|
$result[] = $userInstance;
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//wrapper for adding user to a support group
|
||||||
|
public static function deleteSupportGroup($group_id) {
|
||||||
|
|
||||||
|
//check if group id exists
|
||||||
|
if (self::supportGroup_Exists($group_id)){
|
||||||
|
$sGroup = new self();
|
||||||
|
$sGroup->setSGroupId($group_id);
|
||||||
|
$sGroup->delete();
|
||||||
|
}else{
|
||||||
|
//return that group doesn't exist
|
||||||
|
return "GROUP_NOT_EXISTING";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//wrapper for adding user to a support group
|
||||||
|
public static function deleteUserOfSupportGroup( $user_id, $group_id) {
|
||||||
|
|
||||||
|
//check if group id exists
|
||||||
|
if (self::supportGroup_Exists($group_id)){
|
||||||
|
|
||||||
|
//check if user is in supportgroup
|
||||||
|
//if so, delete entry and return SUCCESS
|
||||||
|
if(In_Support_Group::userExistsInSGroup($user_id, $group_id) ){
|
||||||
|
//delete entry
|
||||||
|
$inSGroup = new In_Support_Group();
|
||||||
|
$inSGroup->setUser($user_id);
|
||||||
|
$inSGroup->setGroup($group_id);
|
||||||
|
$inSGroup->delete();
|
||||||
|
return "SUCCESS";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
//else return USER_NOT_IN_GROUP
|
||||||
|
return "USER_NOT_IN_GROUP";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}else{
|
||||||
|
//return that group doesn't exist
|
||||||
|
return "GROUP_NOT_EXISTING";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//wrapper for adding user to a support group
|
||||||
|
public static function addUserToSupportGroup( $user_id, $group_id) {
|
||||||
|
//check if group id exists
|
||||||
|
if (self::supportGroup_Exists($group_id)){
|
||||||
|
//check if user isn't in supportgroup yet
|
||||||
|
//if not, create entry and return SUCCESS
|
||||||
|
if(! In_Support_Group::userExistsInSGroup($user_id, $group_id) ){
|
||||||
|
//create entry
|
||||||
|
$inSGroup = new In_Support_Group();
|
||||||
|
$inSGroup->setUser($user_id);
|
||||||
|
$inSGroup->setGroup($group_id);
|
||||||
|
$inSGroup->create();
|
||||||
|
return "SUCCESS";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
//else return ALREADY_ADDED
|
||||||
|
return "ALREADY_ADDED";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}else{
|
||||||
|
//return that group doesn't exist
|
||||||
|
return "GROUP_NOT_EXISTING";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//returns list of all category objects
|
||||||
|
public static function getAllSupportGroups() {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->executeWithoutParams("SELECT * FROM `support_group`");
|
||||||
|
$row = $statement->fetchAll();
|
||||||
|
$result = Array();
|
||||||
|
foreach($row as $group){
|
||||||
|
$instance = new self();
|
||||||
|
$instance->set($group);
|
||||||
|
$result[] = $instance;
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
////////////////////////////////////////////Methods////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
}
|
||||||
|
|
||||||
|
//set values
|
||||||
|
public function set($values) {
|
||||||
|
$this->setSGroupId($values['SGroupId']);
|
||||||
|
$this->setName($values['Name']);
|
||||||
|
$this->setTag($values['Tag']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create() {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "INSERT INTO support_group (Name, Tag) VALUES (:name, :tag)";
|
||||||
|
$values = Array('name' => $this->name, 'tag' => $this->tag);
|
||||||
|
$dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Load with sGroupId
|
||||||
|
public function load_With_SGroupId( $id) {
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$statement = $dbl->execute("SELECT * FROM `support_group` WHERE `SGroupId` = :id", array('id' => $id));
|
||||||
|
$row = $statement->fetch();
|
||||||
|
$this->set($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//update private data to DB.
|
||||||
|
public function update(){
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "UPDATE `support_group` SET `Name` = :name, `Tag` = :tag WHERE `SGroupId` = :id";
|
||||||
|
$values = Array('id' => $this->getSGroupId(), 'name' => $this->getName(), 'tag' => $this->getTag() );
|
||||||
|
$statement = $dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
//delete entry
|
||||||
|
public function delete(){
|
||||||
|
$dbl = new DBLayer("lib");
|
||||||
|
$query = "DELETE FROM `support_group` WHERE `SGroupId` = :id";
|
||||||
|
$values = Array('id' => $this->getSGroupId());
|
||||||
|
$statement = $dbl->execute($query, $values);
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Getters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function getSGroupId(){
|
||||||
|
return $this->sGroupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName(){
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTag(){
|
||||||
|
return $this->tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////Setters////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public function setSGroupId($id){
|
||||||
|
$this->sGroupId = $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setName($n){
|
||||||
|
$this->name = $n;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTag($t){
|
||||||
|
$this->tag = $t;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue