瀏覽代碼

Creating a way to send and manage private messages.

Adam Day 9 年之前
父節點
當前提交
bcec55132b

+ 2 - 2
application/controllers/messagesController.php

@@ -213,7 +213,7 @@ class messagesController extends Staple_Controller
     public function deleteprivate($id)
     {
         $message = new privateMessageModel();
-        $message->deletePrivate($id);
+        $message->delete($id);
         header("location:".$this->_link(array('messages'))."");
     }
 
@@ -227,7 +227,7 @@ class messagesController extends Staple_Controller
     public function expired()
     {
         $messages = new messagesModel();
-        $this->view->messages = $messages->getExpiredMessages();
+        $this->view->messages = $messages;
     }
 }
 

+ 27 - 5
application/models/messagesModel.php

@@ -70,11 +70,14 @@ class messagesModel extends Staple_Model
     {
         $this->db = Staple_DB::get();
         $this->systemMessages = $this->loadSystemMessages();
-        $this->expiredSystemMessages = $this->loadExpiredSystemMessages();
+
         $this->privateMessages = $this->loadPrivateMessages();
         $this->allPrivateMessages = $this->loadAllPrivateMessages();
         $this->totalPrivateMessages = $this->countPrivateMessages();
         $this->supervisorMessages = $this->loadSupervisorMessages();
+
+        $this->expiredSystemMessages = $this->loadExpiredSystemMessages();
+        $this->expiredPrivateMessages = $this->loadExpiredPrivateMessages();
     }
 
     private function loadSystemMessages()
@@ -102,7 +105,7 @@ class messagesModel extends Staple_Model
         $date->setTime(23,59,59);
         $timestamp = $date->format('U');
 
-        $sql = "SELECT id FROM messages WHERE expireDate <= $timestamp ORDER BY postDate ASC";
+        $sql = "SELECT id FROM messages WHERE expireDate < $timestamp ORDER BY postDate ASC";
 
         $query = $this->db->query($sql);
         $data = array();
@@ -115,6 +118,25 @@ class messagesModel extends Staple_Model
         return $data;
     }
 
+    private function loadExpiredPrivateMessages()
+    {
+        $date = new DateTime();
+        $date->setTime(23,59,59);
+        $timestamp = $date->format('U');
+
+        $sql = "SELECT id FROM privateMessages WHERE expireDate < $timestamp ORDER BY postDate ASC";
+
+        $query = $this->db->query($sql);
+        $data = array();
+        while($result = $query->fetch_assoc())
+        {
+            $message = new privateMessageModel();
+            $data[] = $message->load($result['id']);
+        }
+
+        return $data;
+    }
+
     private function loadPrivateMessages()
     {
         $user = new userModel();
@@ -123,7 +145,7 @@ class messagesModel extends Staple_Model
         $date = new DateTime();
         $date->setTime(0,0,0);
 
-        $sql = "SELECT id FROM privateMessages WHERE userId = '".$userId."' AND reviewed = '0' ORDER BY postDate ASC limit 1";
+        $sql = "SELECT id FROM privateMessages WHERE userId = '".$userId."' AND expireDate >= '".$date->format('U')."' AND reviewed = '0' ORDER BY postDate ASC limit 1";
         $query = $this->db->query($sql);
 
         $data = array();
@@ -145,7 +167,7 @@ class messagesModel extends Staple_Model
         $date = new DateTime();
         $date->setTime(0,0,0);
 
-        $sql = "SELECT id FROM privateMessages WHERE userId = '".$userId."' AND reviewed = '0' ORDER BY postDate ASC";
+        $sql = "SELECT id FROM privateMessages WHERE userId = '".$userId."' AND expireDate >= '".$date->format('U')."' ORDER BY postDate ASC";
         $query = $this->db->query($sql);
 
         $data = array();
@@ -177,7 +199,7 @@ class messagesModel extends Staple_Model
         $date = new DateTime();
         $date->setTime(0,0,0);
 
-        $sql = "SELECT id FROM privateMessages WHERE supervisorId = '".$userId."' ORDER BY postDate ASC";
+        $sql = "SELECT id FROM privateMessages WHERE supervisorId = '".$userId."' AND expireDate >= '".$date->format('U')."' ORDER BY postDate ASC";
         $query = $this->db->query($sql);
 
         $data = array();

+ 20 - 1
application/models/privateMessageModel.php

@@ -9,6 +9,7 @@ class privateMessageModel extends messagesModel
     private $expireDate;
     private $userId;
     private $supervisorId;
+    private $sentId;
     private $reviewDate;
     private $reviewed;
 
@@ -136,6 +137,22 @@ class privateMessageModel extends messagesModel
         $this->supervisorId = $supervisorId;
     }
 
+    /**
+     * @return mixed
+     */
+    public function getSentId()
+    {
+        return $this->sentId;
+    }
+
+    /**
+     * @param mixed $sentId
+     */
+    public function setSentId($sentId)
+    {
+        $this->sentId = $sentId;
+    }
+
     function __construct()
     {
         $this->db = Staple_DB::get();
@@ -186,8 +203,10 @@ class privateMessageModel extends messagesModel
             $datetime = $date->format('U');
             $user = new userModel();
             $superId = $user->getId();
+            $sentId = $user->getId();
+
+            $sql = "INSERT INTO privateMessages (message,postDate,expireDate,userId,supervisorId,sentId) VALUES ('".$this->message."','".$datetime."','".$this->expireDate."','".$this->userId."','".$superId."','".$sentId."')";
 
-            $sql = "INSERT INTO privateMessages (message,postDate,expireDate,userId,supervisorId) VALUES ('".$this->message."','".$datetime."','".$this->expireDate."','".$this->userId."','".$superId."')";
             if($this->db->query($sql))
             {
                 return true;

+ 93 - 70
application/views/index/index.phtml

@@ -1,80 +1,52 @@
 <?php
-    if(count($this->messages->systemMessages) > 0)
-    {
-        echo "
-            <div class=\"section message\">
+if(count($this->messages->systemMessages) > 0)
+{
+    echo "
+            <div class=\"message\">
                 <div class=\"row\">
-                    <div class=\"small-12 columns\">";
-                        foreach($this->messages->systemMessages as $message)
-                        {
-                            echo "<p><i class='fa fa-warning'></i> ".$message['message']."</p>";
-                        }
-                        echo "
-                    </div>
-                </div>
-            </div>
-        ";
-    }
-
-    if(count($this->messages->allPrivateMessages) > 0)
+                    <div class=\"small-12 columns\"><br>";
+    foreach($this->messages->systemMessages as $message)
     {
-
-        echo "
-        <div class=\"section\">
-            <div class=\"row\">
-                <div class=\"small-12 columns\">
-                    <div class=\"\">
-                        <h2>Messages <small> </small></h2>
-        ";
-        echo "<ul>";
-        foreach($this->messages->allPrivateMessages as $message)
-        {
-            $date = new DateTime();
-            $date->setTimestamp($message['postDate']);
-            echo "<li><b>".$date->format('l, F jS Y')."</b><br>".$message['message']."</li>";
-        }
-        echo "</ul>";
-
-        echo "
+        echo "<p><i class='fa fa-warning'></i> ".$message['message']."</p>";
+    }
+    echo "
+                    </div>
                 </div>
             </div>
-        </div>
-    </div>
         ";
-    }
+}
 ?>
+
 <div class="section">
     <div class="row">
         <div class="small-6 columns">
-            <div class="panel info">
             <?php
             echo "
-                <div class=\"row\">
-                    <div class='small-12 columns'>
-                        <h2>Time submitted this week</h2>
-                    </div>
-                    <div class='small-12 columns text-center'>
-                        <p>".$this->week['start']['month']." ".$this->week['start']['day']." ".$this->week['year']." to ".$this->week['end']['month']." ".$this->week['end']['day']." ".$this->week['year']."</p>
-                    </div>
-                    <div class='small-12 columns text-center'>
-                        <h2>".$this->week['total']."</h2>
-                    </div>
-                    ";
+            <div class=\"row\">
+                <div class='small-12 columns text-center'>
+                    <h2><i class='fa fa-clock-o'></i> Time this week
+                    <br>
+                    <small>".$this->week['start']['month']." ".$this->week['start']['day']." ".$this->week['year']." - ".$this->week['end']['month']." ".$this->week['end']['day']." ".$this->week['year']."</small>
+                    </h2>
+                </div>
+                <div class='small-12 columns text-center'>
+                    <h2>".$this->week['total']."</h2>
+                </div>
+                ";
             echo "</div>";
             ?>
-            </div>
         </div>
-        <div class="small-6 columns">
-            <div class="panel">
-            <h2><?php echo $this->month." ".$this->year ?> <small> Hours Breakout</small></h2>
+        <div class="small-6 columns text-center">
+            <div class="">
+                <h2><i class="fa fa-calendar"></i> <?php echo $this->month." ".$this->year ?></h2>
 
-            <?php
+                <?php
 
-             foreach($this->timesheet->totals as $key=>$value)
-             {
-                 if($value > 0)
-                 {
-                     echo "
+                foreach($this->timesheet->totals as $key=>$value)
+                {
+                    if($value > 0)
+                    {
+                        echo "
                     <div class='row'>
                         <div class='small-6 columns'>
                             <h4>$key</h4>
@@ -84,24 +56,75 @@
                         </div>
                     </div>
                 ";
-                 }
-             }
+                    }
+                }
 
-             if($this->timesheet->totals['Total Time'] == 0)
-             {
-                 echo "
+                if($this->timesheet->totals['Total Time'] == 0)
+                {
+                    echo "
                     <div class=\"row\">
                         <div class=\"small-12 columns text-center\">
-                            <h4 class='subheader'>No time submitted</h4>
+                            - No time submitted -
                         </div>
                     </div>
                 ";
-             }
-             ?>
+                }
+                ?>
             </div>
         </div>
-        <div class='small-12 columns text-center'>
-            <a class='button round' href="<?php echo $this->link(array('timesheet')) ?>"><i class='fa fa-clock-o'></i> Your Time Sheet</a>
+    </div>
+</div>
+
+<div class="section">
+    <div class="row">
+        <div class="small-12 columns">
+            <div class="text-center">
+                <h2><i class='fa fa-envelope'></i> Messages <small> </small></h2>
+                <?php
+                if(count($this->messages->allPrivateMessages) > 0)
+                {
+                    echo "<div class=\"text-left\">";
+                    foreach($this->messages->allPrivateMessages as $message)
+                    {
+                        $user = new userModel();
+                        $account = $user->userInfo($message['sentId']);
+                        $sentBy = $account['firstName']." ".$account['lastName'];
+
+                        $date = new DateTime();
+                        $expireDate = $date->setTimestamp($message['expireDate'])->format("F jS Y");
+                        $postDate = $date->setTimestamp($message['postDate'])->format("l, F jS Y");
+
+                        echo "<div class='row'>";
+                            echo "<div class='small-8 columns'>";
+                                echo "<h4>$postDate <small>Expires ($expireDate)</small></h4>";
+                                echo "From: $sentBy";
+                            echo "</div>";
+                            echo "<div class='small-4 columns text-right'>";
+                                if($message['reviewed'] == 0)
+                                {
+                                    echo "<a class=\"radius button tiny right\" href=\"".$this->link(array("index","read",$message['id']))."\">Mark as read</a>";
+                                }
+                                else
+                                {
+                                    echo "<b>Marked as read:</b> ".$message['reviewDate'];
+                                }
+                            echo "</div>";
+                        echo "</div>";
+                        echo "<div class='row'>";
+                            echo "<div class='small-12 columns'>";
+                                echo "<p>".$message['message']."</p>";
+                            echo "</div>";
+                        echo "</div>";
+                        echo "<hr>";
+                    }
+                    echo "</div>";
+                }
+                else
+                {
+                    echo "<div class='text-center'>- No messages -</div>";
+                }
+                ?>
+            </div>
         </div>
     </div>
 </div>

+ 3 - 1
application/views/messages/account.phtml

@@ -24,6 +24,7 @@
                                     <th>Sent to</th>
                                     <th>Message</th>
                                     <th>Expiration Date (EOD)</th>
+                                    <th>Read on</th>
                                     <th>Options</th>
                                 </tr>
                             </thead>
@@ -46,7 +47,8 @@
                                 <td>".$account['lastName'].", ".$account['firstName']."</td>
                                 <td>".$message['message']."</td>
                                 <td>$expireDate</td>
-                                <td><a href='".$this->link(array('messages','editprivate',$message['id']))."'>Edit</a></td>
+                                <td>".$message['reviewDate']."</td>
+                                <td><a href='".$this->link(array('messages','deleteprivate',$message['id']))."'><i class='fa fa-trash'></i> Delete</a></td>
                             </tr>
 
                         ";

+ 50 - 7
application/views/messages/expired.phtml

@@ -1,9 +1,9 @@
 <div class="section">
     <div class="row">
-        <div class="small-6 columns">
-            <h1><i class="fa fa-history"></i> Expired Messages</h1>
+        <div class="small-8 columns">
+            <h1><i class="fa fa-history"></i> Expired System Messages</h1>
         </div>
-        <div class="small-6 columns right">
+        <div class="small-4 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>
             </ul>
@@ -13,7 +13,7 @@
         <div class="small-12 columns">
             <?php
 
-            if(count($this->messages) > 0)
+            if(count($this->messages->expiredSystemMessages) > 0)
             {
                 echo "
                         <table width='100%'>
@@ -22,12 +22,56 @@
                                     <th>Post Date</th>
                                     <th>Message</th>
                                     <th>Expiration Date (EOD)</th>
-                                    <th>Options</th>
                                 </tr>
                             </thead>
                             <tbody>
                     ";
-                foreach($this->messages as $message)
+                foreach($this->messages->expiredSystemMessages as $message)
+                {
+                    $date = new DateTime();
+                    $date->setTimestamp($message['expireDate']);
+
+                    echo "
+
+                            <tr>
+                                <td>".$message['postDate']."</td>
+                                <td>".$message['message']."</td>
+                                <td>".$date->format('l, F jS Y')."</td>
+                            </tr>
+
+                        ";
+                }
+                echo "</tbody></table>";
+            }
+            else
+            {
+                echo "<div class='small-12 columns text-center'>- No expired messages -</div>";
+            }
+
+            ?>
+        </div>
+    </div>
+    <div class="row">
+        <div class="small-12 columns">
+            <h1><i class="fa fa-history"></i> Expired Private Messages</h1>
+        </div>
+        <div class="small-12 columns">
+            <?php
+
+            if(count($this->messages->expiredPrivateMessages) > 0)
+            {
+                echo "
+                        <table width='100%'>
+                            <thead>
+                                <tr>
+                                    <th>Post Date</th>
+                                    <th>Message</th>
+                                    <th>Expiration Date (EOD)</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                    ";
+                foreach($this->messages->expiredPrivateMessages as $message)
                 {
                     $date = new DateTime();
                     $date->setTimestamp($message['expireDate']);
@@ -38,7 +82,6 @@
                                 <td>".$message['postDate']."</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>
                             </tr>
 
                         ";

+ 4 - 2
application/views/messages/index.phtml

@@ -6,7 +6,7 @@
         <div class="small-6 columns right">
             <ul class="button-group radius right">
                 <li><a href="#" data-reveal-id="newMessage" class="button success"><i class="fa fa-plus"></i> New Message</a></li>
-                <li><a href="<?php echo $this->link(array('messages','expired')) ?>" class="button secondary"><i class="fa fa-history"></i> Expired</a></li>
+                <li><a href="<?php echo $this->link(array('messages','expired')) ?>" class="button secondary"><i class="fa fa-history"></i> History</a></li>
             </ul>
         </div>
     </div>
@@ -74,6 +74,7 @@
                                     <th>Sent to</th>
                                     <th>Message</th>
                                     <th>Expiration Date (EOD)</th>
+                                    <th>Read on</th>
                                     <th>Options</th>
                                 </tr>
                             </thead>
@@ -95,7 +96,8 @@
                                 <td>".$account['lastName'].", ".$account['firstName']."</td>
                                 <td>".$message['message']."</td>
                                 <td>$expireDate</td>
-                                <td><a href='".$this->link(array('messages','editprivate',$message['id']))."'>Edit</a></td>
+                                <td>".$message['reviewDate']."</td>
+                                <td><a href='".$this->link(array('messages','deleteprivate',$message['id']))."'>Delete</a></td>
                             </tr>
 
                         ";