63 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
|     defined('BASEPATH') OR exit('No direct script access allowed');
 | |
| 
 | |
|     require_once 'NotificationGroup.php';
 | |
| 
 | |
|     abstract class Notification
 | |
|     {
 | |
|         public $recipient;
 | |
|         public $sender;
 | |
|         public $unread;
 | |
|         public $type;
 | |
|         public $parameters;
 | |
|         public $referenceID;
 | |
|         public $createdAt;
 | |
| 
 | |
|         public function __construct(array $data)
 | |
|         {
 | |
|             $this->recipient = new NotificationUser($data['recipientID'],
 | |
|                 isset($data['recipientName']) ? $data['recipientName'] : '',
 | |
|                 isset($data['recipientDisplayname']) ? $data['recipientDisplayname'] : ($data['recipientID'] == -1 ? 'Anonym' : ($data['recipientID'] == -2 ? 'System' : 'Unbekannt')));
 | |
| 
 | |
|             $this->sender = new NotificationUser($data['senderID'],
 | |
|                 isset($data['senderName']) ? $data['senderName'] : '',
 | |
|                 isset($data['senderDisplayname']) ? $data['senderDisplayname'] : ($data['senderID'] == -1 ? 'Anonym' : ($data['senderID'] == -2 ? 'System' : 'Unbekannt')));
 | |
|             $this->sender->setProfilePicture(isset($data['senderPicture']) ? $data['senderPicture'] : '');
 | |
| 
 | |
|             $this->unread = isset($data['unread']) ? $data['unread'] : 1;
 | |
|             $this->type = $data['type'];
 | |
|             $this->parameters = isset($data['parameters']) ? $data['parameters'] : '';
 | |
|             $this->referenceID = $data['referenceID'];
 | |
|             $this->createdAt = isset($data['createdAt']) ? $data['createdAt'] : time();
 | |
|         }
 | |
| 
 | |
|         public abstract function getNotificationLink();
 | |
| 
 | |
|         public abstract function getNotificationImage();
 | |
| 
 | |
|         public abstract function messageForNotification(Notification $notification);
 | |
| 
 | |
|         public abstract function messageForNotifications(array $notifications);
 | |
| 
 | |
|         public function message()
 | |
|         {
 | |
|             return $this->messageForNotification($this);
 | |
|         }
 | |
| 
 | |
|         protected function manyNames(array $names) {
 | |
|             $last = array_pop($names);
 | |
| 
 | |
|             $finalNames = '';
 | |
|             foreach ($names as $name) {
 | |
|                 $finalNames .= $name->sender->getName() . ', ';
 | |
|             }
 | |
| 
 | |
|             return sprintf(lang('notification.multiple'), substr($finalNames, 0, -2), $last->sender->getName());
 | |
|         }
 | |
| 
 | |
|         protected function manyNamesCutoff(array $names, $realCount) {
 | |
|             list($first, $second) = array_slice($names, 0, 2);
 | |
| 
 | |
|             return sprintf(lang('notification.many'), $first->sender->getName(), $second->sender->getName(), $realCount);
 | |
|         }
 | |
|     } |