Browse Source

Creating a way to send and manage private messages.

Adam Day 9 years ago
parent
commit
abacac6c9f

+ 1 - 1
application/controllers/indexController.php

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

+ 11 - 1
application/controllers/messagesController.php

@@ -26,7 +26,16 @@ class messagesController extends Staple_Controller
                 $message = new messagesModel();
                 $message->setMessage($data['message']);
                 $message->setExpireDate($data['expireDate']);
-                $message->save();
+
+                if($data['account'] == 'all')
+                {
+                    $message->save();
+                }
+                else
+                {
+                    $message->setUserId($data['account']);
+                    $message->savePrivate();
+                }
 
                 $form = new newMessageForm();
                 $this->view->form = $form;
@@ -45,6 +54,7 @@ class messagesController extends Staple_Controller
 
         $messages = new messagesModel();
         $this->view->messages = $messages->getMessages();
+        $this->view->privateMessages = $messages->getAllPrivateMessages();
     }
 
     public function edit($id = null)

+ 3 - 0
application/forms/layouts/newMessageFormLayout.phtml

@@ -1,5 +1,8 @@
 <?php echo $this->formstart(); ?>
     <div class="row">
+        <div class="small-12 columns">
+            <?php echo $this->fields['account'] ?>
+        </div>
         <div class="small-12 columns">
             <?php echo $this->fields['expireDate'] ?>
         </div>

+ 43 - 1
application/forms/newMessageForm.php

@@ -15,6 +15,12 @@ class newMessageForm extends Staple_Form
             ->addValidator(new Staple_Form_Validate_Length(1,1000))
             ->addAttrib("style","height:200px;");
 
+        $account = new Staple_Form_FoundationSelectElement('account','Send To');
+        $account->setRequired()
+            ->addOption('','Select an account')
+            ->addOptionsArray($this->accounts())
+            ->addValidator(new Staple_Form_Validate_InArray($this->accounts(1)));
+
         $expireDate = new Staple_Form_FoundationTextElement('expireDate','Expiration Date');
         $expireDate->setRequired()
             ->addValidator(new Staple_Form_Validate_Date())
@@ -23,7 +29,43 @@ class newMessageForm extends Staple_Form
         $submit = new Staple_Form_FoundationSubmitElement('submit','Submit');
         $submit->addClass('button expand radius');
 
-        $this->addField($expireDate, $message, $submit);
+        $this->addField($account, $expireDate, $message, $submit);
+    }
+
+    public function accounts($ids = null)
+    {
+        $user = new userModel();
+        $id = $user->getId();
+        $authLevel = $user->getAuthLevel();
+
+        $accounts = new userModel();
+        $users = $accounts->listAll();
+        $data = array();
+        if($ids == null)
+        {
+            $data['all'] = "All Accounts";
+            foreach($users as $user)
+            {
+                if($user['supervisorId'] == $id)
+                {
+                    $data[$user['id']] = $user['lastName'].", ".$user['firstName']." (". $user['type'] .")";
+                }
+                elseif($authLevel >= 900)
+                {
+                    $data[$user['id']] = $user['lastName'].", ".$user['firstName']." (". $user['type'] .")";
+                }
+            }
+        }
+        else
+        {
+            $data[] = "all";
+            foreach($users as $user)
+            {
+                $data[] = $user['id'];
+            }
+        }
+
+        return $data;
     }
 }
 

+ 117 - 0
application/models/messagesModel.php

@@ -8,6 +8,9 @@ class messagesModel extends Staple_Model
     private $postDate;
     private $expireDate;
 
+    private $userId;
+    private $reviewDate;
+
     /**
      * @return mixed
      */
@@ -68,6 +71,38 @@ class messagesModel extends Staple_Model
         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();
@@ -107,6 +142,54 @@ class messagesModel extends Staple_Model
         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;
+        }
+
+        return $data;
+    }
+
+    function getAllPrivateMessages()
+    {
+        $user = new userModel();
+        $userId = $user->getId();
+
+        $date = new DateTime();
+        $date->setTime(0,0,0);
+
+        $sql = "
+        SELECT * FROM privateMessages WHERE 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;
+        }
+
+        return $data;
+    }
+
     function getExpiredMessages()
     {
         $date = new DateTime();
@@ -151,6 +234,30 @@ class messagesModel extends Staple_Model
         }
     }
 
+    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)."';";
@@ -161,6 +268,16 @@ class messagesModel extends Staple_Model
         }
     }
 
+    function deletePrivate($id)
+    {
+        $sql = "DELETE FROM privateMessages WHERE id = '".$this->db->real_escape_string($id)."';";
+
+        if($this->db->query($sql))
+        {
+            return true;
+        }
+    }
+
 
 
 }

+ 55 - 1
application/views/messages/index.phtml

@@ -1,7 +1,7 @@
 <div class="section">
     <div class="row">
         <div class="small-6 columns">
-            <h1><i class="fa fa-envelope"></i> System Messages</h1>
+            <h2><i class="fa fa-envelope"></i> System Messages</h2>
         </div>
         <div class="small-6 columns right">
             <ul class="button-group radius right">
@@ -51,6 +51,60 @@
                     echo "<div class='small-12 columns text-center'>- No system messages -</div>";
                 }
 
+            ?>
+        </div>
+    </div>
+    <div class="row">
+        <div class="small-12 columns">
+            <h2><i class="fa fa-envelope-square"></i> Private Messages</h2>
+        </div>
+    </div>
+    <div class="row">
+        <div class="small-12 columns">
+            <?php
+
+            if(count($this->privateMessages) > 0)
+            {
+                echo "
+                        <table width='100%'>
+                            <thead>
+                                <tr>
+                                    <th>Post Date</th>
+                                    <th>Account</th>
+                                    <th>Message</th>
+                                    <th>Expiration Date (EOD)</th>
+                                    <th>Options</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                    ";
+                foreach($this->privateMessages as $message)
+                {
+                    $date = new DateTime();
+                    $date->setTimestamp($message['expireDate']);
+
+                    $user = new userModel();
+                    $account = $user->userInfo($message['userId']);
+
+                    echo "
+
+                            <tr>
+                                <td>".$message['postDate']."</td>
+                                <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>
+                            </tr>
+
+                        ";
+                }
+                echo "</tbody></table>";
+            }
+            else
+            {
+                echo "<div class='small-12 columns text-center'>- No system messages -</div>";
+            }
+
             ?>
         </div>
     </div>