Ver Fonte

Merge pull request #34 from advation/privateMessages

Private messages
Adam há 9 anos atrás
pai
commit
fb8ca049d3

+ 20 - 1
application/controllers/indexController.php

@@ -16,7 +16,12 @@ class indexController extends Staple_Controller
 		$this->view->authLevel = $this->authLevel;
 
 		$messages = new messagesModel();
-		$this->view->messages = $messages->getMessages();
+		$this->view->messages = $messages;
+
+		if(count($messages->getPrivateMessages()) > 0)
+		{
+			$this->layout->addScriptBlock('$(document).ready(function() { $("#privateMessages").foundation("reveal", "open"); }); ');
+		}
 
 		$date = new DateTime();
 		$date->setTime(0,0,0);
@@ -42,5 +47,19 @@ class indexController extends Staple_Controller
 
 		$this->view->week = $report->getWeekWorked($this->userId, $week, $year);
 	}
+
+	public function read($id = null)
+	{
+		if($id != null)
+		{
+			$message = new privateMessageModel();
+			$message->markRead($id);
+			header("location: ".$this->_link(array("index"))."");
+		}
+		else
+		{
+			header("location: ".$this->_link(array("index"))."");
+		}
+	}
 }
 ?>

+ 153 - 22
application/controllers/messagesController.php

@@ -6,7 +6,7 @@ class messagesController extends Staple_Controller
     {
         $auth = Staple_Auth::get();
         $this->authLevel = $auth->getAuthLevel();
-        if($this->authLevel < 900)
+        if($this->authLevel < 500)
         {
             header("location:".$this->_link(array('index','index'))."");
         }
@@ -14,37 +14,110 @@ class messagesController extends Staple_Controller
 
     public function index()
     {
-        $form = new newMessageForm();
-
-        if($form->wasSubmitted())
+        $user = new userModel();
+        if($user->getAuthLevel() >= 900)
         {
-            $form->addData($_POST);
-            if($form->validate())
-            {
-                $data = $form->exportFormData();
+            $form = new newMessageForm();
 
-                $message = new messagesModel();
-                $message->setMessage($data['message']);
-                $message->setExpireDate($data['expireDate']);
-                $message->save();
+            if($form->wasSubmitted())
+            {
+                $form->addData($_POST);
+                if($form->validate())
+                {
+                    $data = $form->exportFormData();
 
-                $form = new newMessageForm();
+                    if($data['account'] == 'all')
+                    {
+                        $message = new messageModel();
+                        $message->setMessage($data['message']);
+                        $message->setExpireDate($data['expireDate']);
+                        $message->save();
+                    }
+                    else
+                    {
+                        $message = new privateMessageModel();
+                        $message->setMessage($data['message']);
+                        $message->setExpireDate($data['expireDate']);
+                        $message->setUserId($data['account']);
+                        $message->save();
+                    }
+
+                    $form = new newMessageForm();
+                    $this->view->form = $form;
+                }
+                else
+                {
+                    $this->view->form = $form;
+                    $this->layout->addScriptBlock('$(document).ready(function() { $("#newMessage").foundation("reveal", "open"); }); ');
+                }
+            }
+            else
+            {
                 $this->view->form = $form;
+            }
+
+            $messages = new messagesModel();
+            $this->view->messages = $messages;
+        }
+        else
+        {
+            header("location: ".$this->_link(array("messages","account"))."");
+        }
+    }
+
+    public function account()
+    {
+        $user = new userModel();
+        if($user->getAuthLevel() >= 500)
+        {
+            $form = new newMessageForm();
+            $form->setAction($this->_link(array("messages","account")));
+
+            if($form->wasSubmitted())
+            {
+                $form->addData($_POST);
+                if($form->validate())
+                {
+                    $data = $form->exportFormData();
 
+                    if($data['account'] == 'all')
+                    {
+                        $message = new messageModel();
+                        $message->setMessage($data['message']);
+                        $message->setExpireDate($data['expireDate']);
+                        $message->save();
+                    }
+                    else
+                    {
+                        $message = new privateMessageModel();
+                        $message->setMessage($data['message']);
+                        $message->setExpireDate($data['expireDate']);
+                        $message->setUserId($data['account']);
+                        $message->save();
+                    }
+
+                    $form = new newMessageForm();
+                    $form->setAction($this->_link(array("messages","account")));
+                    $this->view->form = $form;
+                }
+                else
+                {
+                    $this->view->form = $form;
+                    $this->layout->addScriptBlock('$(document).ready(function() { $("#newMessage").foundation("reveal", "open"); }); ');
+                }
             }
             else
             {
                 $this->view->form = $form;
-                $this->layout->addScriptBlock('$(document).ready(function() { $("#newMessage").foundation("reveal", "open"); }); ');
             }
+
+            $messages = new messagesModel();
+            $this->view->messages = $messages;
         }
         else
         {
-            $this->view->form = $form;
+            header("location: ".$this->_link(array("messages","account"))."");
         }
-
-        $messages = new messagesModel();
-        $this->view->messages = $messages->getMessages();
     }
 
     public function edit($id = null)
@@ -52,7 +125,7 @@ class messagesController extends Staple_Controller
         if($id != null)
         {
             $form = new editMessageForm();
-            $message = new messagesModel();
+            $message = new messageModel();
 
             $message->load($id);
 
@@ -72,7 +145,7 @@ class messagesController extends Staple_Controller
                 {
                     $data = $form->exportFormData();
 
-                    $message = new messagesModel();
+                    $message = new messageModel();
                     $message->setId($id);
                     $message->setMessage($data['message']);
                     $message->setExpireDate($data['expireDate']);
@@ -95,9 +168,58 @@ class messagesController extends Staple_Controller
         }
     }
 
+    public function editPrivate($id = null)
+    {
+        if($id != null)
+        {
+            $form = new editPrivateMessageForm();
+            $message = new privateMessageModel();
+
+            $data = $message->supervisorLoad($id);
+
+            $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 privateMessageModel();
+                    $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 deleteprivate($id)
+    {
+        $message = new privateMessageModel();
+        $message->delete($id);
+        header("location:".$this->_link(array('messages'))."");
+    }
+
     public function delete($id)
     {
-        $message = new messagesModel();
+        $message = new messageModel();
         $message->delete($id);
         header("location:".$this->_link(array('messages'))."");
     }
@@ -105,7 +227,16 @@ class messagesController extends Staple_Controller
     public function expired()
     {
         $messages = new messagesModel();
-        $this->view->messages = $messages->getExpiredMessages();
+        $this->view->messages = $messages;
+    }
+
+    public function accountexpired()
+    {
+        $messages = new messagesModel();
+        //$this->view->messages = $messages;
+
+        $this->view->messages = $messages->getExpiredPrivateMessages();
+
     }
 }
 

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

+ 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>

+ 46 - 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,46 @@ 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)
+        {
+            if($user->getAuthLevel() >= 900)
+            {
+                $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;
     }
 }
 

+ 9 - 1
application/layouts/main.phtml

@@ -65,7 +65,6 @@
                             <li class=\"has-dropdown\">
                                 <a href=\"#\"><i class='fa fa-gear'></i> Tools</a>
                                 <ul class=\"dropdown\">
-                                    <li><a href=\"".$this->link(array('messages','index'))."\" ><i class=\"fa fa-envelope\" ></i > System Messages </a ></li>
                                     <li><a href=\"".$this->link(array('timesheet','admininsert'))."\" ><i class=\"fa fa-plus\" ></i > Time Insert </a ></li >
                                     <li><a href=\"".$this->link(array('reports','unlock'))."\"><i class=\"fa fa-unlock\"></i> Time Unlock</a></li>
                                 </ul>
@@ -91,6 +90,15 @@
                         ";
                     }
 
+                    if($user->getAuthLevel() >= 900)
+                    {
+                        echo "<li><a href=\"".$this->link(array('messages','index'))."\" ><i class=\"fa fa-envelope\" ></i > Messaging </a ></li>";
+                    }
+                    elseif($user->getAuthLevel() >= 500)
+                    {
+                        echo "<li><a href=\"".$this->link(array('messages','account'))."\" ><i class=\"fa fa-envelope\" ></i > Messaging </a ></li>";
+                    }
+
                     ?>
 
                     <li><a href="<?php echo $this->link(array('account','logout')) ?>"><i class="fa fa-close"></i> Logout</a></li>

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

+ 122 - 73
application/models/messagesModel.php

@@ -3,164 +3,213 @@
 class messagesModel extends Staple_Model
 {
     private $db;
-    private $id;
-    private $message;
-    private $postDate;
-    private $expireDate;
+    private $systemMessages;
+    private $expiredSystemMessages;
+    private $privateMessages;
+    private $expiredPrivateMessages;
+    private $allPrivateMessages;
+    private $totalPrivateMessages;
+    private $supervisorMessages;
 
     /**
      * @return mixed
      */
-    public function getId()
+    public function getSystemMessages()
     {
-        return $this->id;
+        return $this->systemMessages;
     }
 
     /**
-     * @param mixed $id
+     * @return mixed
      */
-    public function setId($id)
+    public function getPrivateMessages()
     {
-        $this->id = $id;
+        return $this->privateMessages;
     }
 
     /**
      * @return mixed
      */
-    public function getMessage()
+    public function getExpiredSystemMessages()
     {
-        return $this->message;
+        return $this->expiredSystemMessages;
     }
 
     /**
-     * @param mixed $message
+     * @return mixed
      */
-    public function setMessage($message)
+    public function getExpiredPrivateMessages()
     {
-        $this->message = $message;
+        return $this->expiredPrivateMessages;
     }
 
     /**
-     * @return mixed
+     * @return int
      */
-    public function getExpireDate()
+    public function getTotalPrivateMessages()
     {
-        $date = new DateTime();
-
-        $date->setTimestamp($this->expireDate);
+        return $this->totalPrivateMessages;
+    }/**
 
-        return $date->format('m/d/Y');
-    }
-
-    /**
-     * @param mixed $expireDate
+     * @return mixed
      */
-    public function setExpireDate($expireDate)
+    public function getAllPrivateMessages()
     {
-        $this->expireDate = strtotime($expireDate);
+        return $this->allPrivateMessages;
     }
 
     /**
      * @return mixed
      */
-    public function getPostDate()
+    public function getSupervisorMessages()
     {
-        return $this->postDate;
+        return $this->supervisorMessages;
     }
 
     function __construct()
     {
         $this->db = Staple_DB::get();
+        $this->systemMessages = $this->loadSystemMessages();
+
+        $this->privateMessages = $this->loadPrivateMessages();
+        $this->allPrivateMessages = $this->loadAllPrivateMessages();
+        $this->totalPrivateMessages = $this->countPrivateMessages();
+        $this->supervisorMessages = $this->loadSupervisorMessages();
+
+        $this->expiredSystemMessages = $this->loadExpiredSystemMessages();
+        $this->expiredPrivateMessages = $this->loadExpiredPrivateMessages();
     }
 
-    function load($id)
+    private function loadSystemMessages()
     {
-        $sql = "SELECT * FROM messages WHERE id = '".$this->db->real_escape_string($id)."' ";
+        $date = new DateTime();
+        $date->setTime(0,0,0);
+        $timestamp = $date->format('U');
+
+        $sql = "SELECT id FROM messages WHERE expireDate >= $timestamp ORDER BY postDate ASC";
 
         $query = $this->db->query($sql);
-        $result = $query->fetch_assoc();
+        $data = array();
+        while($result = $query->fetch_assoc())
+        {
+            $message = new messageModel();
+            $data[] = $message->load($result['id']);
+        }
 
-        $this->id = $result['id'];
-        $this->expireDate = $result['expireDate'];
-        $this->message = $result['message'];
-        $this->postDate = $result['postDate'];
+        return $data;
     }
 
-    function getMessages()
+    private function loadExpiredSystemMessages()
     {
         $date = new DateTime();
-        $date->setTime(0,0,0);
+        $date->setTime(23,59,59);
+        $timestamp = $date->format('U');
 
-        $sql = "
-        SELECT * FROM messages WHERE expireDate >= '".$this->db->real_escape_string($date->format('U'))."' ORDER BY postDate DESC;
-        ";
+        $sql = "SELECT id FROM messages WHERE expireDate < '$timestamp' ORDER BY postDate ASC";
 
+        $query = $this->db->query($sql);
         $data = array();
+        while($result = $query->fetch_assoc())
+        {
+            $message = new messageModel();
+            $data[] = $message->load($result['id']);
+        }
 
-        $query = $this->db->query($sql);
+        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())
         {
-            $data[] = $result;
+            $id = $result['id'];
+            $message = new privateMessageModel();
+            $data[] = $message->load($id);
         }
-
         return $data;
     }
 
-    function getExpiredMessages()
+    private function loadPrivateMessages()
     {
+        $user = new userModel();
+        $userId = $user->getId();
+
         $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 WHERE userId = '".$userId."' AND expireDate >= '".$date->format('U')."' AND reviewed = '0' ORDER BY postDate ASC limit 1";
+        $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()
+    private function loadAllPrivateMessages()
     {
-        if(isset($this->id))
-        {
-            //Edit
-            $sql = "UPDATE messages SET expireDate = '".$this->expireDate."', message = '".$this->message."' WHERE id = '".$this->id."';";
+        $user = new userModel();
+        $userId = $user->getId();
 
-            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)."')";
+        $date = new DateTime();
+        $date->setTime(0,0,0);
 
-            if($this->db->query($sql))
-            {
-                return true;
-            }
+        $sql = "SELECT id FROM privateMessages WHERE userId = '".$userId."' AND expireDate >= '".$date->format('U')."' 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;
     }
 
-    function delete($id)
+    private function countPrivateMessages()
     {
-        $sql = "DELETE FROM messages WHERE id = '".$this->db->real_escape_string($id)."';";
+        $user = new userModel();
+        $userId = $user->getId();
 
-        if($this->db->query($sql))
-        {
-            return true;
-        }
+        $sql = "SELECT id FROM privateMessages WHERE userId = '".$userId."' AND reviewed = '0'";
+        $query = $this->db->query($sql);
+        return $query->num_rows;
     }
 
+    private function loadSupervisorMessages()
+    {
+        $user = new userModel();
+        $userId = $user->getId();
+
+        $date = new DateTime();
+        $date->setTime(0,0,0);
+
+        $sql = "SELECT id FROM privateMessages WHERE supervisorId = '".$userId."' AND expireDate >= '".$date->format('U')."' ORDER BY postDate ASC";
+        $query = $this->db->query($sql);
+
+        $data = array();
 
+        while($result = $query->fetch_assoc())
+        {
+            $message = new privateMessageModel();
+            $data[] = $message->supervisorLoad($result['id']);
+        }
 
+        return $data;
+    }
 }

+ 246 - 0
application/models/privateMessageModel.php

@@ -0,0 +1,246 @@
+<?php
+
+class privateMessageModel extends messagesModel
+{
+    private $db;
+    private $id;
+    private $message;
+    private $postDate;
+    private $expireDate;
+    private $userId;
+    private $supervisorId;
+    private $sentId;
+    private $reviewDate;
+    private $reviewed;
+
+    /**
+     * @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;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getReviewed()
+    {
+        return $this->reviewed;
+    }
+
+    /**
+     * @param mixed $reviewed
+     */
+    public function setReviewed($reviewed)
+    {
+        $this->reviewed = $reviewed;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getSupervisorId()
+    {
+        return $this->supervisorId;
+    }
+
+    /**
+     * @param mixed $supervisorId
+     */
+    public function setSupervisorId($supervisorId)
+    {
+        $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();
+    }
+
+    function load($id)
+    {
+        $user = new userModel();
+        $uid = $user->getId();
+
+        $sql = "SELECT * FROM privateMessages WHERE id = '".$this->db->real_escape_string($id)."' AND userId = '".$this->db->real_escape_string($uid)."'";
+
+        $query = $this->db->query($sql);
+        $result = $query->fetch_assoc();
+
+        return $result;
+    }
+
+    function loadexpired($id)
+    {
+        $sql = "SELECT * FROM privateMessages WHERE id = '".$this->db->real_escape_string($id)."'";
+
+        $query = $this->db->query($sql);
+        $result = $query->fetch_assoc();
+
+        return $result;
+    }
+
+    function supervisorLoad($id)
+    {
+        $user = new userModel();
+        $uid = $user->getId();
+
+        $sql = "SELECT * FROM privateMessages WHERE id = '".$this->db->real_escape_string($id)."' AND supervisorId = '".$this->db->real_escape_string($uid)."'";
+
+        $query = $this->db->query($sql);
+        $result = $query->fetch_assoc();
+
+        return $result;
+    }
+
+    function save()
+    {
+        if(isset($this->id))
+        {
+            //update
+            $sql = "UPDATE privateMessages SET message = '".$this->message."', expireDate ='".$this->expireDate."' WHERE id = '".$this->id."' ";
+
+            if($this->db->query($sql))
+            {
+                return true;
+            }
+        }
+        else
+        {
+            //save
+            $date = new DateTime();
+            $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."')";
+
+            if($this->db->query($sql))
+            {
+                return true;
+            }
+        }
+    }
+
+    function delete($id)
+    {
+        $sql = "DELETE FROM privateMessages WHERE id = '".$this->db->real_escape_string($id)."'";
+
+        if($this->db->query($sql))
+        {
+            return true;
+        }
+    }
+
+    function markRead($id)
+    {
+        $sql = "UPDATE privateMessages SET reviewed = '".$this->db->real_escape_string(1)."' WHERE id = '".$this->db->real_escape_string($id)."' ";
+
+        if($this->db->query($sql))
+        {
+            return true;
+        }
+    }
+}

+ 118 - 44
application/views/index/index.phtml

@@ -1,54 +1,52 @@
 <?php
-    if(count($this->messages) > 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 as $item)
-                        {
-                            echo "<p><i class='fa fa-warning'></i> ".$item['message']."</p>";
-                        }
-                        echo "
+                    <div class=\"small-12 columns\"><br>";
+    foreach($this->messages->systemMessages as $message)
+    {
+        echo "<p><i class='fa fa-warning'></i> ".$message['message']."</p>";
+    }
+    echo "
                     </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>
@@ -58,24 +56,100 @@
                         </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>
+</div>
+
+<div id="privateMessages" class="reveal-modal medium" data-reveal aria-labelledby="privateMessages" aria-hidden="true" role="dialog">
+
+    <?php
+    if(count($this->messages->privateMessages) > 0)
+    {
+        $total = $this->messages->totalPrivateMessages;
+        $i = 1;
+
+        echo "<h2 id=\"modalTitle\"><i class=\"fa fa-envelope\"></i> New Message <small></small></h2>";
+        foreach ($this->messages->privateMessages as $message)
+        {
+            echo "
+            <p>" . $message['message'] . "</p>
+            <ul class=\"button-group radius text-center\">
+                <li><a class=\"button\" href=\"".$this->link(array("index","read",$message['id']))."\"><i class=\"fa fa-check-square\"></i> Mark as read</a></li>
+            </ul>";
+            $i++;
+        }
+
+    }
+    ?>
+    <a class="close-reveal-modal" aria-label="Close">&#215;</a>
+</div>
+

+ 71 - 0
application/views/messages/account.phtml

@@ -0,0 +1,71 @@
+<div class="section">
+    <div class="row">
+        <div class="small-6 columns">
+            <h2><i class="fa fa-envelope"></i> Messaging</h2>
+        </div>
+        <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>
+            </ul>
+        </div>
+    </div>
+    <div class="row">
+        <div class="small-12 columns">
+            <?php
+
+            if(count($this->messages->supervisorMessages) > 0)
+            {
+                echo "
+                        <table width='100%'>
+                            <thead>
+                                <tr>
+                                    <th>Post Date</th>
+                                    <th>Sent to</th>
+                                    <th>Message</th>
+                                    <th>Expiration Date (EOD)</th>
+                                    <th>Read on</th>
+                                    <th>Options</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                    ";
+
+                foreach($this->messages->supervisorMessages as $message)
+                {
+                    $date = new DateTime();
+                    $expireDate = $date->setTimestamp($message['expireDate'])->format('l, F jS Y');
+                    $postDate = $date->setTimestamp($message['postDate'])->format('l, F jS Y');
+
+                    $user = new userModel();
+                    $account = $user->userInfo($message['userId']);
+
+                    echo "
+
+                            <tr>
+                                <td>$postDate</td>
+                                <td>".$account['lastName'].", ".$account['firstName']."</td>
+                                <td>".$message['message']."</td>
+                                <td>$expireDate</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>
+
+                        ";
+                }
+                echo "</tbody></table>";
+            }
+            else
+            {
+                echo "<div class='small-12 columns text-center'>- No system messages -</div>";
+            }
+
+            ?>
+        </div>
+    </div>
+</div>
+
+<div id="newMessage" class="reveal-modal small" data-reveal aria-labelledby="New Message" aria-hidden="true" role="dialog">
+    <h2 id="modalTitle"><i class="fa fa-plus"></i> New Message</h2>
+    <?php echo $this->form; ?>
+    <a class="close-reveal-modal" aria-label="Close">&#215;</a>
+</div>

+ 53 - 0
application/views/messages/accountexpired.phtml

@@ -0,0 +1,53 @@
+<div class="section">
+    <div class="row">
+        <div class="small-12 columns">
+            <h1><i class="fa fa-history"></i> Expired 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']);
+
+                    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>
+
+<div id="newMessage" class="reveal-modal small" data-reveal aria-labelledby="New Message" aria-hidden="true" role="dialog">
+    <h2 id="modalTitle"><i class="fa fa-plus"></i> New Message</h2>
+    <?php echo $this->form; ?>
+    <a class="close-reveal-modal" aria-label="Close">&#215;</a>
+</div>

+ 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>

+ 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>
 
                         ";

+ 62 - 5
application/views/messages/index.phtml

@@ -1,20 +1,18 @@
 <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> Messaging</h2>
         </div>
         <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>
             </ul>
         </div>
     </div>
     <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 +26,10 @@
                             </thead>
                             <tbody>
                     ";
-                    foreach($this->messages as $message)
+
+                    foreach($this->messages->systemMessages as $message)
                     {
+
                         $date = new DateTime();
                         $date->setTimestamp($message['expireDate']);
 
@@ -43,6 +43,7 @@
                             </tr>
 
                         ";
+
                     }
                     echo "</tbody></table>";
                 }
@@ -50,6 +51,62 @@
                 {
                     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> Account Messaging</h2>
+        </div>
+    </div>
+    <div class="row">
+        <div class="small-12 columns">
+            <?php
+
+            if(count($this->messages->supervisorMessages) > 0)
+            {
+                echo "
+                        <table width='100%'>
+                            <thead>
+                                <tr>
+                                    <th>Post Date</th>
+                                    <th>Sent to</th>
+                                    <th>Message</th>
+                                    <th>Expiration Date (EOD)</th>
+                                    <th>Read on</th>
+                                    <th>Options</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                    ";
+                foreach($this->messages->supervisorMessages as $message)
+                {
+                    $date = new DateTime();
+                    $expireDate = $date->setTimestamp($message['expireDate'])->format('l, F jS Y');
+                    $postDate = $date->setTimestamp($message['postDate'])->format('l, F jS Y');
+
+                    $user = new userModel();
+                    $account = $user->userInfo($message['userId']);
+
+                    echo "
+
+                            <tr>
+                                <td>$postDate</td>
+                                <td>".$account['lastName'].", ".$account['firstName']."</td>
+                                <td>".$message['message']."</td>
+                                <td>$expireDate</td>
+                                <td>".$message['reviewDate']."</td>
+                                <td><a href='".$this->link(array('messages','deleteprivate',$message['id']))."'>Delete</a></td>
+                            </tr>
+
+                        ";
+                }
+                echo "</tbody></table>";
+            }
+            else
+            {
+                echo "<div class='small-12 columns text-center'>- No system messages -</div>";
+            }
 
             ?>
         </div>

+ 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');
         }
         ?>