| Current Path : /var/www/html/components/com_community/libraries/ |
| Current File : /var/www/html/components/com_community/libraries/emailtypes.php |
<?php
/**
* @copyright (C) 2013 iJoomla, Inc. - All rights reserved.
* @license GNU General Public License, version 2 (http://www.gnu.org/licenses/gpl-2.0.html)
* @author iJoomla.com <webmaster@ijoomla.com>
* @url https://www.jomsocial.com/license-agreement
* The PHP code portions are distributed under the GPL license. If not otherwise stated, all images, manuals, cascading style sheets, and included JavaScript *are NOT GPL, and are released under the IJOOMLA Proprietary Use License v1.0
* More info at https://www.jomsocial.com/license-agreement
*/
defined('_JEXEC') or die('Restricted access');
require_once( JPATH_ROOT .'/components/com_community/libraries/core.php' );
class CEmailTypes {
var $_emailtypes = array();
var $_adminonlygroups = array();
public function CEmailTypes()
{
$this->_emailtypes = array();
//load default email types
$this->loadDefault();
}
public function isAdminOnlyGroup($group){
return (isset($this->_adminonlygroups[$group])) ? TRUE : FALSE;
}
public function getEmailTypes(){
return $this->_emailtypes;
}
public function loadDefault(){
$config = CConfig::getInstance();
//add default group
$groups = array();
$groups['ADMIN'] = array('COM_COMMUNITY_EMAILGROUP_ADMIN', TRUE);
$groups['PROFILE'] = array('COM_COMMUNITY_EMAILGROUP_PROFILE', FALSE);
if($config->get('enablegroups')){
$groups['GROUPS'] = array('COM_COMMUNITY_EMAILGROUP_GROUPS', FALSE);
}
if($config->get('enableevents')){
$groups['EVENTS'] = array('COM_COMMUNITY_EMAILGROUP_EVENTS', FALSE);
}
if($config->get('enablevideos')){
$groups['VIDEOS'] = array('COM_COMMUNITY_EMAILGROUP_VIDEOS', FALSE);
}
if($config->get('enablephotos')){
$groups['PHOTOS'] = array('COM_COMMUNITY_EMAILGROUP_PHOTOS', FALSE);
}
$groups['OTHERS'] = array('COM_COMMUNITY_EMAILGROUP_OTHERS', FALSE);
foreach ($groups as $key => $desc){
$this->addGroup($key,$desc[0], $desc[1]);
}
$types = array();
//Admin
$types[] = array('ADMIN','etype_groups_notify_admin','COM_COMMUNITY_EMAILTYPE_GROUPS_CREATION_MODERATION_REQUIRED','COM_COMMUNITY_EMAILTYPE_GROUPS_CREATION_MODERATION_REQUIRED_TIPS', TRUE);
$types[] = array('ADMIN','etype_user_profile_delete','COM_COMMUNITY_EMAILTYPE_PROFILE_DELETE','COM_COMMUNITY_EMAILTYPE_PROFILE_DELETE_TIPS', TRUE);
$types[] = array('ADMIN','etype_system_reports_threshold','COM_COMMUNITY_EMAILTYPE_REPORTS_THRESHOLD','COM_COMMUNITY_EMAILTYPE_REPORTS_THRESHOLD_TIPS', TRUE);
//Profile
//$types[] = array('PROFILE','etype_profile_submit_wall_comment','COM_COMMUNITY_EMAILTYPE_PROFILE_WALLCOMMENT','COM_COMMUNITY_EMAILTYPE_PROFILE_WALLCOMMENT_TIPS');
$types[] = array('PROFILE','etype_profile_status_update','COM_COMMUNITY_EMAILTYPE_PROFILE_STATUSUPDATE','COM_COMMUNITY_EMAILTYPE_PROFILE_STATUSUPDATE_TIPS');
//Friends
$types[] = array('PROFILE','etype_friends_request_connection','COM_COMMUNITY_EMAILTYPE_FRIENDS_INVITE','COM_COMMUNITY_EMAILTYPE_FRIENDS_INVITE_TIPS');
$types[] = array('PROFILE','etype_friends_create_connection','COM_COMMUNITY_EMAILTYPE_FRIENDS_CONNECTION','COM_COMMUNITY_EMAILTYPE_FRIENDS_CONNECTION_TIPS');
$types[] = array('PROFILE','etype_inbox_create_message','COM_COMMUNITY_EMAILTYPE_OTHERS_INBOXMSG','COM_COMMUNITY_EMAILTYPE_OTHERS_INBOXMSG_TIPS');
$types[] = array('PROFILE',' etype_users_tagged','COM_COMMUNITY_EMAILTYPE_USER_TAGGED','COM_COMMUNITY_EMAILTYPE_USER_TAGGED_TIPS');
if($config->get('enablegroups')){
//Groups
// $types[] = array('GROUPS','etype_groups_submit_wall_comment','COM_COMMUNITY_EMAILTYPE_GROUPS_WALLCOMMENT','COM_COMMUNITY_EMAILTYPE_GROUPS_WALLCOMMENT_TIPS');
$types[] = array('GROUPS','etype_groups_invite','COM_COMMUNITY_EMAILTYPE_GROUPS_INVITE','COM_COMMUNITY_EMAILTYPE_GROUPS_INVITE_TIPS');
$types[] = array('GROUPS','etype_groups_discussion_reply','COM_COMMUNITY_EMAILTYPE_GROUPS_DISCUSSIONREPLY','COM_COMMUNITY_EMAILTYPE_GROUPS_DISCUSSIONREPLY_TIPS');
$types[] = array('GROUPS','etype_groups_wall_create','COM_COMMUNITY_EMAILTYPE_GROUPS_WALLUPDATE','COM_COMMUNITY_EMAILTYPE_GROUPS_WALLUPDATE_TIPS');
$types[] = array('GROUPS','etype_groups_create_discussion','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWDISCUSSION','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWDISCUSSION_TIPS');
$types[] = array('GROUPS','etype_groups_create_news','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWBULLETIN','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWBULLETIN_TIPS');
$types[] = array('GROUPS','etype_groups_create_album','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWALBUM','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWALBUM_TIPS');
$types[] = array('GROUPS','etype_groups_create_video','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWVIDEO','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWVIDEO_TIPS');
$types[] = array('GROUPS','etype_groups_create_event','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWEVENT','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWEVENT_TIPS');
$types[] = array('GROUPS','etype_groups_sendmail','COM_COMMUNITY_EMAILTYPE_GROUPS_MASSEMAIL','COM_COMMUNITY_EMAILTYPE_GROUPS_MASSEMAIL_TIPS');
$types[] = array('GROUPS','etype_groups_member_approved','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWMEMBER','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWMEMBER_TIPS');
$types[] = array('GROUPS','etype_groups_member_join','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWMEMBER_REQUEST','COM_COMMUNITY_EMAILTYPE_GROUPS_NEWMEMBER_REQUEST_TIPS');
$types[] = array('GROUPS','etype_groups_notify_creator','COM_COMMUNITY_EMAILTYPE_GROUPS_CREATION_APPROVED','COM_COMMUNITY_EMAILTYPE_GROUPS_CREATION_APPROVED_TIPS');
}
if($config->get('enableevents')){
//Events
// $types[] = array('EVENTS','etype_events_submit_wall_comment','COM_COMMUNITY_EMAILTYPE_EVENTS_WALLCOMMENT','COM_COMMUNITY_EMAILTYPE_EVENTS_WALLCOMMENT_TIPS');
$types[] = array('EVENTS','etype_events_invite','COM_COMMUNITY_EMAILTYPE_EVENTS_INVITATION','COM_COMMUNITY_EMAILTYPE_EVENTS_INVITATION_TIPS');
$types[] = array('EVENTS','etype_events_invitation_approved','COM_COMMUNITY_EMAILTYPE_EVENTS_INVITATION_APPROVED','COM_COMMUNITY_EMAILTYPE_EVENTS_INVITATION_APPROVED_TIPS');
$types[] = array('EVENTS','etype_events_sendmail','COM_COMMUNITY_EMAILTYPE_EVENTS_MASSEMAIL','COM_COMMUNITY_EMAILTYPE_EVENTS_MASSEMAIL_TIPS');
$types[] = array('EVENTS','etype_events_notify_admin','COM_COMMUNITY_EMAILTYPE_EVENTS_CREATION_MODERATION_REQUIRED','COM_COMMUNITY_EMAILTYPE_EVENTS_CREATION_MODERATION_REQUIRED_TIPS');
$types[] = array('EVENTS','etype_events_wall_create','COM_COMMUNITY_EMAILTYPE_EVENTS_WALLUPDATE','COM_COMMUNITY_EMAILTYPE_EVENTS_WALLUPDATE_TIPS');
}
if($config->get('enablevideos')){
//Videos
$types[] = array('VIDEOS','etype_videos_submit_wall','COM_COMMUNITY_EMAILTYPE_VIDEOS_WALLCOMMENT','COM_COMMUNITY_EMAILTYPE_VIDEOS_WALLCOMMENT_TIPS');
}
if($config->get('enablephotos')){
//Photos
$types[] = array('PHOTOS','etype_photos_submit_wall','COM_COMMUNITY_EMAILTYPE_PHOTOS_WALLCOMMENT','COM_COMMUNITY_EMAILTYPE_PHOTOS_WALLCOMMENT_TIPS');
$types[] = array('PHOTOS','etype_photos_tagging','COM_COMMUNITY_EMAILTYPE_PHOTOS_TAG','COM_COMMUNITY_EMAILTYPE_PHOTOS_TAG_TIPS');
}
//Others
$types[] = array('OTHERS','etype_system_bookmarks_email','COM_COMMUNITY_EMAILTYPE_OTHERS_BOOKMARKS','COM_COMMUNITY_EMAILTYPE_OTHERS_BOOKMARKS_TIPS');
$types[] = array('OTHERS','etype_system_messaging','COM_COMMUNITY_EMAILTYPE_OTHERS_SYSTEMMSG','COM_COMMUNITY_EMAILTYPE_OTHERS_SYSTEMMSG_TIPS');
foreach ($types as $type){
$adminOnly=(isset($type[4])) ? $type[4] : FALSE;
$this->addEmailType($type[0],$type[1],$type[2],$config->get($type[1],0),$type[3], $adminOnly);
}
}
/**
* Function to add new email type.
* param - groupKey : string - the key of the group
* - EmailTypeID : string - the unique key of the email type
* - description : string - the label of the email type
* - value : int - the configured value (enable/disable) of the email type
* - tips : string - the tips of the email type
*/
public function addEmailType($groupKey, $EmailTypeID, $description='', $value=0, $tips='', $adminOnly=FALSE){
if(array_key_exists($groupKey, $this->_emailtypes))
{
$tbGroup = $this->_emailtypes[strtoupper($groupKey)];
$child = new stdClass();
$child->description = $description;
$child->value = $value;
$child->tips = $tips;
$child->adminOnly = $adminOnly;
$tbGroup->child[$EmailTypeID] = $child;
}
}
/**
* Function to add new email group.
* param - key : string - the key of the group
* - description : string - the label of the group name
*/
public function addGroup($key, $description='', $adminOnly=FALSE)
{
if(! array_key_exists($key, $this->_emailtypes))
{
$newGroup = new stdClass();
$newGroup->description = $description;
$newGroup->child = array();
if($adminOnly) {
$this->_adminonlygroups[$description] = $description;
}
$this->_emailtypes[strtoupper($key)] = $newGroup;
}
}
/**
* Function used to remove email group and its associated email types.
* param - key : string - the key of the group
*/
public function removeGroup($key)
{
if(array_key_exists($key, $this->_emailtypes))
{
unset($this->_emailtypes[strtoupper($key)]);
}
}
/**
* Function used to remove an email type
* param - groupKey : string - the key of the group
* - EmailTypeID : string - the unique key of the email type
*/
public function removeEmailType($groupKey, $EmailTypeID)
{
if(array_key_exists($groupKey, $this->_emailtypes))
{
$tbGroup = $this->_emailtypes[strtoupper($groupKey)];
$childItem = $tbGroup->child;
if (is_array($EmailTypeID)){
if(array_key_exists($EmailTypeID, $childItem))
{
unset($childItem[$EmailTypeID]);
}
}
}
}
/**
* Function used to convert email types to params string
*/
public function convertToParamsString(){
$ret = "";
foreach($this->_emailtypes as $group){
foreach($group->child as $id => $type){
$ret .= $id . "=" . $type->value . "\n";
}
}
return $ret;
}
}