aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/notifications
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/notifications')
-rw-r--r--phpBB/includes/notifications/service.php14
-rw-r--r--phpBB/includes/notifications/type/base.php44
-rw-r--r--phpBB/includes/notifications/type/pm.php8
-rw-r--r--phpBB/includes/notifications/type/post.php8
-rw-r--r--phpBB/includes/notifications/type/topic.php8
5 files changed, 65 insertions, 17 deletions
diff --git a/phpBB/includes/notifications/service.php b/phpBB/includes/notifications/service.php
index 112cbae3fd..5dcfeb127b 100644
--- a/phpBB/includes/notifications/service.php
+++ b/phpBB/includes/notifications/service.php
@@ -210,6 +210,20 @@ class phpbb_notifications_service
$this->db->sql_query($sql);
}
+ public function add_subscription($item_type, $item_id, $method = '')
+ {
+ $this->get_item_type_class_name($item_type);
+
+ $sql = 'INSERT INTO ' . USER_NOTIFICATIONS_TABLE . ' ' .
+ $this->db->sql_build_array('INSERT', array(
+ 'item_type' => $item_type,
+ 'item_id' => (int) $item_id,
+ 'user_id' => $this->phpbb_container->get('user')->data['user_id'],
+ 'method' => $method,
+ ));
+ $this->db->sql_query($sql);
+ }
+
/**
* Load user helper
*
diff --git a/phpBB/includes/notifications/type/base.php b/phpBB/includes/notifications/type/base.php
index df273f9e81..e60b20c449 100644
--- a/phpBB/includes/notifications/type/base.php
+++ b/phpBB/includes/notifications/type/base.php
@@ -104,28 +104,23 @@ abstract class phpbb_notifications_type_base implements phpbb_notifications_type
}
/**
- * Output the notification to the template
- *
- * @param array $options Array of options
- * template_block Template block name to output to (Default: notifications)
+ * Prepare to output the notification to the template
*/
- public function display($options = array())
+ public function prepare_for_display()
{
- $template = $this->phpbb_container->get('template');
$user = $this->phpbb_container->get('user');
- // Merge default options
- $options = array_merge(array(
- 'template_block' => 'notifications',
- ), $options);
+ return array(
+ 'AVATAR' => $this->get_avatar(),
+
+ 'FORMATTED_TITLE' => $this->get_formatted_title(),
+ 'TITLE' => $this->get_title(),
- $template->assign_block_vars($options['template_block'], array(
- 'TITLE' => $this->get_formatted_title(),
- 'URL' => $this->get_url(),
- 'TIME' => $user->format_date($this->time),
+ 'URL' => $this->get_url(),
+ 'TIME' => $user->format_date($this->time),
- 'UNREAD' => $this->unread,
- ));
+ 'UNREAD' => $this->unread,
+ );
}
/**
@@ -206,6 +201,13 @@ abstract class phpbb_notifications_type_base implements phpbb_notifications_type
return $rowset;
}
+ protected function _get_avatar($user_id)
+ {
+ $user = $this->service->get_user($user_id);
+
+ return get_user_avatar($user['user_avatar'], $user['user_avatar_type'], $user['user_avatar_width'], $user['user_avatar_height'], $user['username'], false, 'notifications-avatar');
+ }
+
/**
* Get the formatted title of this notification (fall-back)
*
@@ -217,7 +219,7 @@ abstract class phpbb_notifications_type_base implements phpbb_notifications_type
}
/**
- * URL to unsubscribe to this notification
+ * URL to unsubscribe to this notification (fall-back)
*
* @param string|bool $method Method name to unsubscribe from (email|jabber|etc), False to unsubscribe from all notifications for this item
*/
@@ -225,4 +227,12 @@ abstract class phpbb_notifications_type_base implements phpbb_notifications_type
{
return false;
}
+
+ /**
+ * Get the user's avatar (fall-back)
+ */
+ public function get_avatar()
+ {
+ return '';
+ }
}
diff --git a/phpBB/includes/notifications/type/pm.php b/phpBB/includes/notifications/type/pm.php
index 3368b171df..c78efcdd55 100644
--- a/phpBB/includes/notifications/type/pm.php
+++ b/phpBB/includes/notifications/type/pm.php
@@ -91,6 +91,14 @@ class phpbb_notifications_type_pm extends phpbb_notifications_type_base
}
/**
+ * Get the user's avatar
+ */
+ public function get_avatar()
+ {
+ return $this->_get_avatar($this->get_data('from_user_id'));
+ }
+
+ /**
* Get the HTML formatted title of this notification
*
* @return string
diff --git a/phpBB/includes/notifications/type/post.php b/phpBB/includes/notifications/type/post.php
index efada4220e..f374114890 100644
--- a/phpBB/includes/notifications/type/post.php
+++ b/phpBB/includes/notifications/type/post.php
@@ -79,6 +79,14 @@ class phpbb_notifications_type_post extends phpbb_notifications_type_base
}
/**
+ * Get the user's avatar
+ */
+ public function get_avatar()
+ {
+ return $this->_get_avatar($this->get_data('poster_id'));
+ }
+
+ /**
* Get the HTML formatted title of this notification
*
* @return string
diff --git a/phpBB/includes/notifications/type/topic.php b/phpBB/includes/notifications/type/topic.php
index ee8c21fd9c..51a95d5e19 100644
--- a/phpBB/includes/notifications/type/topic.php
+++ b/phpBB/includes/notifications/type/topic.php
@@ -79,6 +79,14 @@ class phpbb_notifications_type_topic extends phpbb_notifications_type_base
}
/**
+ * Get the user's avatar
+ */
+ public function get_avatar()
+ {
+ return $this->_get_avatar($this->get_data('poster_id'));
+ }
+
+ /**
* Get the HTML formatted title of this notification
*
* @return string