Jelajahi Sumber

Creating a way to send and manage private messages.

Adam Day 9 tahun lalu
induk
melakukan
a2d16db210

+ 2 - 2
application/controllers/indexController.php

@@ -15,8 +15,8 @@ class indexController extends Staple_Controller
 	{
 		$this->view->authLevel = $this->authLevel;
 
-		$messages = new messagesModel();
-		$this->view->messages = array_merge($messages->getPrivateMessages(),$messages->getMessages());
+		//$messages = new messagesModel();
+		//$this->view->messages = array_merge($messages->getPrivateMessages(),$messages->getMessages());
 
 		$date = new DateTime();
 		$date->setTime(0,0,0);

+ 58 - 5
application/controllers/messagesController.php

@@ -23,7 +23,7 @@ class messagesController extends Staple_Controller
             {
                 $data = $form->exportFormData();
 
-                $message = new messagesModel();
+                $message = new messageModel();
                 $message->setMessage($data['message']);
                 $message->setExpireDate($data['expireDate']);
 
@@ -39,7 +39,6 @@ class messagesController extends Staple_Controller
 
                 $form = new newMessageForm();
                 $this->view->form = $form;
-
             }
             else
             {
@@ -53,8 +52,7 @@ class messagesController extends Staple_Controller
         }
 
         $messages = new messagesModel();
-        $this->view->messages = $messages->getMessages();
-        $this->view->privateMessages = $messages->getAllPrivateMessages();
+        $this->view->messages = $messages;
     }
 
     public function edit($id = null)
@@ -62,6 +60,54 @@ class messagesController extends Staple_Controller
         if($id != null)
         {
             $form = new editMessageForm();
+            $message = new messageModel();
+
+            $message->load($id);
+
+            $this->view->id = $message->getId();
+
+            $data['id'] = $message->getId();
+            $data['message'] = $message->getMessage();
+            $data['expireDate'] = $message->getExpireDate();
+
+            $form->setAction($this->_link(array('messages','edit',$message->getId())));
+            $form->addData($data);
+
+            if($form->wasSubmitted())
+            {
+                $form->addData($_POST);
+                if($form->validate())
+                {
+                    $data = $form->exportFormData();
+
+                    $message = new messageModel();
+                    $message->setId($id);
+                    $message->setMessage($data['message']);
+                    $message->setExpireDate($data['expireDate']);
+                    $message->save();
+                    header("location:".$this->_link(array('messages'))."");
+                }
+                else
+                {
+                    $this->view->form = $form;
+                }
+            }
+            else
+            {
+                $this->view->form = $form;
+            }
+        }
+        else
+        {
+            header("location: ".$this->_link(array('messages'))."");
+        }
+    }
+
+    public function editPrivate($id = null)
+    {
+        if($id != null)
+        {
+            $form = new editPrivateMessageForm();
             $message = new messagesModel();
 
             $message->load($id);
@@ -105,9 +151,16 @@ class messagesController extends Staple_Controller
         }
     }
 
-    public function delete($id)
+    public function deleteprivate($id)
     {
         $message = new messagesModel();
+        $message->deletePrivate($id);
+        header("location:".$this->_link(array('messages'))."");
+    }
+
+    public function delete($id)
+    {
+        $message = new messageModel();
         $message->delete($id);
         header("location:".$this->_link(array('messages'))."");
     }

+ 51 - 25
application/controllers/reportsController.php

@@ -288,39 +288,65 @@ class reportsController extends Staple_Controller
         $this->view->report = $reports->payPeriodTotals($year, $month);
     }
 
-    public function payperiodprint($year, $month)
+    public function payperiodprint($year,$month)
     {
-        if($year != null || $month != null)
-        {
-            $this->_setLayout('print');
-            $this->view->year = $year;
+        $this->_setLayout('print');
+        $date = new DateTime();
+        $date->setDate($year,$month,26);
+        $date->setTime(0,0,0);
 
-            $date = new DateTime();
-            $date->setDate($year,$month,26);
-            $date->setTime(0,0,0);
-            $this->view->month = $date->format('m');
-            $date->modify('-1 month');
-            $this->view->previousMonth = $date->format('m');
+        $year = $date->format('Y');
 
-            $date2 = new DateTime();
-            $date2->setDate($year,$month,25);
-            $date2->setTime(24,0,0);
+        $this->view->year = $year;
 
-            $interval = date_diff($date,$date2);
+        $nextYear = $date->modify('+1 year')->format('Y');
+        $this->view->nextYear = $nextYear;
 
-            $this->view->span = $interval->days;
+        $previousYear = $date->modify('-2 year')->format('Y');
+        $this->view->previousYear = $previousYear;
 
-            $reports = new reportModel($year, $month);
-            $this->view->report = $reports->payPeriodTotals($year, $month);
-            $this->view->startDate = $date->format("F jS Y");
-            $days = $interval->days - 1;
-            $date->modify("+$days days");
-            $this->view->endDate = $date->format("F jS Y");
-        }
-        else
+        $month = $date->format('m');
+        $this->view->month = $month;
+
+        $nextMonth = $date->modify('+1 month')->format('m');
+        $this->view->nextMonth = $nextMonth;
+
+        $previousMonth = $date->modify('-2 month')->format('m');
+        $this->view->previousMonth = $previousMonth;
+
+        $date->setDate($year,$month,26);
+        $date->setTime(0,0,0);
+
+        $newDate = new DateTime();
+        switch($month)
         {
-            header("location:".$this->_link(array('reports','payperiod'))."");
+            case 1:
+                $newDate->setDate($previousYear,$previousMonth,26);
+                break;
+            default:
+                $newDate->setDate($year,$previousMonth,26);
         }
+
+        $newDate->setTime(0,0,0);
+
+        $date2 = new DateTime();
+        $date2->setDate($year,$month,25);
+        $date2->setTime(24,00,00);
+
+        $interval = date_diff($newDate,$date2);
+
+        $span = $interval->days;
+        $this->view->span = $span;
+
+        $this->view->date = $date->format("F Y");
+
+        $date = new dateTime();
+        $date->setDate($year, $month, 25);
+        $this->view->currentDate = $date->format('Y-m-d');
+        $this->view->previousDate = $date->modify('-1 month +1 day')->format('Y-m-d');
+
+        $reports = new reportModel($year, $month);
+        $this->view->report = $reports->payPeriodTotals($year, $month);
     }
 
     public function payroll($year = null, $month =  null)

+ 29 - 0
application/forms/editPrivateMessageForm.php

@@ -0,0 +1,29 @@
+<?php
+
+class editPrivateMessageForm extends Staple_Form
+{
+    public function _start()
+    {
+        $this->setLayout('editMessageFormLayout');
+
+        $this->setName('editPrivateMessageForm');
+
+        $message = new Staple_Form_FoundationTextareaElement('message','Message');
+        $message->setRequired()
+            ->addAttrib("placeholder","1000 character limit")
+            ->addValidator(new Staple_Form_Validate_Length(1,1000))
+            ->addAttrib("style","height:200px;");
+
+        $expireDate = new Staple_Form_FoundationTextElement('expireDate','Expiration Date');
+        $expireDate->setRequired()
+            ->addValidator(new Staple_Form_Validate_Date())
+            ->addAttrib('placeholder','mm/dd/yyyy');
+
+        $submit = new Staple_Form_FoundationSubmitElement('submit','Submit');
+        $submit->addClass('button expand radius');
+
+        $this->addField($expireDate, $message, $submit);
+    }
+}
+
+?>

+ 124 - 0
application/models/messageModel.php

@@ -0,0 +1,124 @@
+<?php
+
+class messageModel extends messagesModel
+{
+    private $db;
+    private $id;
+    private $message;
+    private $postDate;
+    private $expireDate;
+
+    /**
+     * @return mixed
+     */
+    public function getId()
+    {
+        return $this->id;
+    }
+
+    /**
+     * @param mixed $id
+     */
+    public function setId($id)
+    {
+        $this->id = $id;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getMessage()
+    {
+        return $this->message;
+    }
+
+    /**
+     * @param mixed $message
+     */
+    public function setMessage($message)
+    {
+        $this->message = $message;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getExpireDate()
+    {
+        $date = new DateTime();
+
+        $date->setTimestamp($this->expireDate);
+
+        return $date->format('m/d/Y');
+    }
+
+    /**
+     * @param mixed $expireDate
+     */
+    public function setExpireDate($expireDate)
+    {
+        $this->expireDate = strtotime($expireDate);
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getPostDate()
+    {
+        return $this->postDate;
+    }
+
+    function __construct()
+    {
+        $this->db = Staple_DB::get();
+    }
+
+    function load($id)
+    {
+        $sql = "SELECT * FROM messages WHERE id = '".$this->db->real_escape_string($id)."' ";
+
+        $query = $this->db->query($sql);
+        $result = $query->fetch_assoc();
+
+        $this->id = $result['id'];
+        $this->message = $result['message'];
+        $this->postDate = $result['postDate'];
+        $this->expireDate = $result['expireDate'];
+
+        return $result;
+    }
+
+    function save()
+    {
+        if(isset($this->id))
+        {
+            //update
+            $sql = "UPDATE messages SET message = '".$this->message."', expireDate ='".$this->expireDate."' WHERE id = '".$this->id."' ";
+
+            if($this->db->query($sql))
+            {
+                return true;
+            }
+        }
+        else
+        {
+            //save
+            $sql = "INSERT INTO messages (message,expireDate) VALUES ('".$this->message."','".$this->expireDate."')";
+            if($this->db->query($sql))
+            {
+                return true;
+            }
+        }
+    }
+
+    function delete($id)
+    {
+        $sql = "DELETE FROM messages WHERE id = '".$this->db->real_escape_string($id)."'";
+
+        if($this->db->query($sql))
+        {
+            return true;
+        }
+    }
+
+}

+ 32 - 208
application/models/messagesModel.php

@@ -3,281 +3,105 @@
 class messagesModel extends Staple_Model
 {
     private $db;
-    private $id;
-    private $message;
-    private $postDate;
-    private $expireDate;
-
-    private $userId;
-    private $reviewDate;
-
-    /**
-     * @return mixed
-     */
-    public function getId()
-    {
-        return $this->id;
-    }
-
-    /**
-     * @param mixed $id
-     */
-    public function setId($id)
-    {
-        $this->id = $id;
-    }
+    private $systemMessages;
+    private $expiredSystemMessages;
+    private $privateMessages;
+    private $expiredPrivateMessages;
 
     /**
      * @return mixed
      */
-    public function getMessage()
-    {
-        return $this->message;
-    }
-
-    /**
-     * @param mixed $message
-     */
-    public function setMessage($message)
-    {
-        $this->message = $message;
-    }
-
-    /**
-     * @return mixed
-     */
-    public function getExpireDate()
-    {
-        $date = new DateTime();
-
-        $date->setTimestamp($this->expireDate);
-
-        return $date->format('m/d/Y');
-    }
-
-    /**
-     * @param mixed $expireDate
-     */
-    public function setExpireDate($expireDate)
+    public function getSystemMessages()
     {
-        $this->expireDate = strtotime($expireDate);
+        return $this->systemMessages;
     }
 
     /**
      * @return mixed
      */
-    public function getPostDate()
+    public function getPrivateMessages()
     {
-        return $this->postDate;
+        return $this->privateMessages;
     }
 
     /**
      * @return mixed
      */
-    public function getUserId()
-    {
-        return $this->userId;
-    }
-
-    /**
-     * @param mixed $userId
-     */
-    public function setUserId($userId)
+    public function getExpiredSystemMessages()
     {
-        $this->userId = $userId;
+        return $this->expiredSystemMessages;
     }
 
     /**
      * @return mixed
      */
-    public function getReviewDate()
-    {
-        return $this->reviewDate;
-    }
-
-    /**
-     * @param mixed $reviewDate
-     */
-    public function setReviewDate($reviewDate)
+    public function getExpiredPrivateMessages()
     {
-        $this->reviewDate = $reviewDate;
+        return $this->expiredPrivateMessages;
     }
 
     function __construct()
     {
         $this->db = Staple_DB::get();
+        $this->systemMessages = $this->loadSystemMessages();
+        $this->expiredSystemMessages = $this->loadExpiredSystemMessages();
+        $this->privateMessages = $this->loadPrivateMessages();
     }
 
-    function load($id)
-    {
-        $sql = "SELECT * FROM messages WHERE id = '".$this->db->real_escape_string($id)."' ";
-
-        $query = $this->db->query($sql);
-        $result = $query->fetch_assoc();
-
-        $this->id = $result['id'];
-        $this->expireDate = $result['expireDate'];
-        $this->message = $result['message'];
-        $this->postDate = $result['postDate'];
-    }
-
-    function getMessages()
+    private function loadSystemMessages()
     {
         $date = new DateTime();
         $date->setTime(0,0,0);
+        $timestamp = $date->format('U');
 
-        $sql = "
-        SELECT * FROM messages WHERE expireDate >= '".$this->db->real_escape_string($date->format('U'))."' ORDER BY postDate DESC;
-        ";
-
-        $data = array();
+        $sql = "SELECT id FROM messages WHERE expireDate >= $timestamp ORDER BY postDate DESC";
 
         $query = $this->db->query($sql);
-
-        while($result = $query->fetch_assoc())
-        {
-            $data[] = $result;
-        }
-
-        return $data;
-    }
-
-    function getPrivateMessages()
-    {
-        $user = new userModel();
-        $userId = $user->getId();
-
-        $date = new DateTime();
-        $date->setTime(0,0,0);
-
-        $sql = "
-        SELECT * FROM privateMessages WHERE userId = '".$this->db->real_escape_string($userId)."' AND expireDate >= '".$this->db->real_escape_string($date->format('U'))."' ORDER BY postDate DESC;
-        ";
-
         $data = array();
-
-        $query = $this->db->query($sql);
-
         while($result = $query->fetch_assoc())
         {
-            $data[] = $result;
+            $message = new messageModel();
+            $data[] = $message->load($result['id']);
         }
 
         return $data;
     }
 
-    function getAllPrivateMessages()
+    private function loadExpiredSystemMessages()
     {
-        $user = new userModel();
-        $userId = $user->getId();
-
         $date = new DateTime();
-        $date->setTime(0,0,0);
+        $date->setTime(23,59,59);
+        $timestamp = $date->format('U');
 
-        $sql = "
-        SELECT * FROM privateMessages WHERE expireDate >= '".$this->db->real_escape_string($date->format('U'))."' ORDER BY postDate DESC;
-        ";
-
-        $data = array();
+        $sql = "SELECT id FROM messages WHERE expireDate <= $timestamp ORDER BY postDate DESC";
 
         $query = $this->db->query($sql);
-
+        $data = array();
         while($result = $query->fetch_assoc())
         {
-            $data[] = $result;
+            $message = new messageModel();
+            $data[] = $message->load($result['id']);
         }
 
         return $data;
     }
 
-    function getExpiredMessages()
+    private function loadPrivateMessages()
     {
         $date = new DateTime();
         $date->setTime(0,0,0);
 
-        $sql = "
-            SELECT * FROM messages WHERE expireDate < '".$this->db->real_escape_string($date->format('U'))."' ORDER BY postDate DESC;
-        ";
+        $sql = "SELECT id FROM privateMessages ORDER BY postDate DESC";
+        $query = $this->db->query($sql);
 
         $data = array();
 
-        $query = $this->db->query($sql);
         while($result = $query->fetch_assoc())
         {
-        $data[] = $result;
+            $message = new privateMessageModel();
+            $data[] = $message->load($result['id']);
         }
 
         return $data;
     }
-
-    function save()
-    {
-        if(isset($this->id))
-        {
-            //Edit
-            $sql = "UPDATE messages SET expireDate = '".$this->expireDate."', message = '".$this->message."' WHERE id = '".$this->id."';";
-
-            if($this->db->query($sql))
-            {
-                return true;
-            }
-        }
-        else
-        {
-            //Save
-            $sql = "INSERT INTO messages (message,expireDate) VALUES ('".$this->db->real_escape_string($this->message)."','".$this->db->real_escape_string($this->expireDate)."')";
-
-            if($this->db->query($sql))
-            {
-                return true;
-            }
-        }
-    }
-
-    function savePrivate()
-    {
-        if(isset($this->id))
-        {
-            //Edit
-            $sql = "UPDATE privateMessages SET expireDate = '".$this->expireDate."', message = '".$this->message."' WHERE id = '".$this->id."';";
-
-            if($this->db->query($sql))
-            {
-                return true;
-            }
-        }
-        else
-        {
-            //Save
-            $sql = "INSERT INTO privateMessages (message,expireDate,userId) VALUES ('".$this->db->real_escape_string($this->message)."','".$this->db->real_escape_string($this->expireDate)."','".$this->db->real_escape_string($this->userId)."')";
-
-            if($this->db->query($sql))
-            {
-                return true;
-            }
-        }
-    }
-
-    function delete($id)
-    {
-        $sql = "DELETE FROM messages WHERE id = '".$this->db->real_escape_string($id)."';";
-
-        if($this->db->query($sql))
-        {
-            return true;
-        }
-    }
-
-    function deletePrivate($id)
-    {
-        $sql = "DELETE FROM privateMessages WHERE id = '".$this->db->real_escape_string($id)."';";
-
-        if($this->db->query($sql))
-        {
-            return true;
-        }
-    }
-
-
-
 }

+ 119 - 0
application/models/privateMessageModel.php

@@ -0,0 +1,119 @@
+<?php
+
+class privateMessageModel extends messagesModel
+{
+    private $db;
+    private $id;
+    private $message;
+    private $postDate;
+    private $expireDate;
+    private $userId;
+    private $reviewDate;
+
+    /**
+     * @return mixed
+     */
+    public function getId()
+    {
+        return $this->id;
+    }
+
+    /**
+     * @param mixed $id
+     */
+    public function setId($id)
+    {
+        $this->id = $id;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getMessage()
+    {
+        return $this->message;
+    }
+
+    /**
+     * @param mixed $message
+     */
+    public function setMessage($message)
+    {
+        $this->message = $message;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getExpireDate()
+    {
+        $date = new DateTime();
+
+        $date->setTimestamp($this->expireDate);
+
+        return $date->format('m/d/Y');
+    }
+
+    /**
+     * @param mixed $expireDate
+     */
+    public function setExpireDate($expireDate)
+    {
+        $this->expireDate = strtotime($expireDate);
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getPostDate()
+    {
+        return $this->postDate;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getUserId()
+    {
+        return $this->userId;
+    }
+
+    /**
+     * @param mixed $userId
+     */
+    public function setUserId($userId)
+    {
+        $this->userId = $userId;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getReviewDate()
+    {
+        return $this->reviewDate;
+    }
+
+    /**
+     * @param mixed $reviewDate
+     */
+    public function setReviewDate($reviewDate)
+    {
+        $this->reviewDate = $reviewDate;
+    }
+
+    function __construct()
+    {
+        $this->db = Staple_DB::get();
+    }
+
+    function load($id)
+    {
+        $sql = "SELECT * FROM privateMessages WHERE id = '".$this->db->real_escape_string($id)."' ";
+
+        $query = $this->db->query($sql);
+        $result = $query->fetch_assoc();
+
+        return $result;
+    }
+}

+ 26 - 0
application/views/messages/editprivate.phtml

@@ -0,0 +1,26 @@
+<div class="section">
+    <div class="row">
+        <div class="small-6 columns">
+            <h1><i class="fa fa-pencil"></i> Edit Message</h1>
+        </div>
+        <div class="small-6 columns right">
+            <ul class="button-group radius right">
+                <li><a href="<?php echo $this->link(array('messages'))?>" class="button secondary"><i class="fa fa-arrow-left"></i> Back</a></li>
+                <li><a href="#" data-reveal-id="delete" class="button alert"><i class="fa fa-trash"></i> Delete</a></li>
+            </ul>
+        </div>
+    </div>
+    <div class="row">
+        <div class="small-12 columns">
+            <?php echo $this->form ?>
+        </div>
+    </div>
+</div>
+
+<div id="delete" class="reveal-modal small text-center" data-reveal aria-labelledby="New Message" aria-hidden="true" role="dialog">
+    <h2 id="modalTitle"><i class="fa fa-alert"></i> Delete Message?</h2>
+    <ul class="button-group radius">
+        <li><a href="<?php echo $this->link(array('messages','deleteprivate',$this->id)) ?>" class="button alert"><i class="fa fa-trash"></i> Confirm & Delete</a></li>
+    </ul>
+    <a class="close-reveal-modal" aria-label="Close">&#215;</a>
+</div>

+ 9 - 8
application/views/messages/index.phtml

@@ -13,8 +13,7 @@
     <div class="row">
         <div class="small-12 columns">
             <?php
-
-                if(count($this->messages) > 0)
+                if(count($this->messages->systemMessages) > 0)
                 {
                     echo "
                         <table width='100%'>
@@ -28,8 +27,10 @@
                             </thead>
                             <tbody>
                     ";
-                    foreach($this->messages as $message)
+
+                    foreach($this->messages->systemMessages as $message)
                     {
+
                         $date = new DateTime();
                         $date->setTimestamp($message['expireDate']);
 
@@ -43,6 +44,7 @@
                             </tr>
 
                         ";
+
                     }
                     echo "</tbody></table>";
                 }
@@ -50,7 +52,6 @@
                 {
                     echo "<div class='small-12 columns text-center'>- No system messages -</div>";
                 }
-
             ?>
         </div>
     </div>
@@ -63,14 +64,14 @@
         <div class="small-12 columns">
             <?php
 
-            if(count($this->privateMessages) > 0)
+            if(count($this->messages->privateMessages) > 0)
             {
                 echo "
                         <table width='100%'>
                             <thead>
                                 <tr>
                                     <th>Post Date</th>
-                                    <th>Account</th>
+                                    <th>Sent to</th>
                                     <th>Message</th>
                                     <th>Expiration Date (EOD)</th>
                                     <th>Options</th>
@@ -78,7 +79,7 @@
                             </thead>
                             <tbody>
                     ";
-                foreach($this->privateMessages as $message)
+                foreach($this->messages->privateMessages as $message)
                 {
                     $date = new DateTime();
                     $date->setTimestamp($message['expireDate']);
@@ -93,7 +94,7 @@
                                 <td>".$account['lastName'].", ".$account['firstName']."</td>
                                 <td>".$message['message']."</td>
                                 <td>".$date->format('l, F jS Y')."</td>
-                                <td><a href='".$this->link(array('messages','edit',$message['id']))."'>Edit</a></td>
+                                <td><a href='".$this->link(array('messages','editprivate',$message['id']))."'>Edit</a></td>
                             </tr>
 
                         ";

+ 7 - 2
application/views/reports/payperiodprint.phtml

@@ -19,7 +19,7 @@
 </style>
 <table width="100%" style="border:0px; padding:0px; margin:0px;">
     <tr>
-        <td style="border:0px;"><h3><i class="fa fa-clock-o"></i> Total Hours: <?php echo date("F",$this->month) ?> <?php echo $this->year ?></h3></td>
+        <td style="border:0px;"><h3><i class="fa fa-clock-o"></i> Total Hours: <?php echo $this->date ?></h3></td>
         <td style="border:0px;" class="text-right"><?php echo $this->startDate ?> - <?php echo $this->endDate ?></td>
     </tr>
 </table>
@@ -29,8 +29,12 @@
         <th></th>
         <?php
 
+        $previousDate = explode("-",$this->previousDate);
+
         $date = new DateTime();
-        $date->setDate($this->year,$this->previousMonth,26);
+        $date->setDate($previousDate[0],$previousDate[1],$previousDate[2]);
+
+        $date->setTime(0,0,0);
 
         for($i=1;$i<=$this->span;$i++)
         {
@@ -42,6 +46,7 @@
             {
                 echo "<th style='border-bottom:1px solid #ccc;'>".$date->format('D')."<br>".$date->format('n')."/".$date->format('j')."</th>";
             }
+
             $date->modify('+1 day');
         }
         ?>