skala
Julio Montoya 13 years ago
commit f0aca4e6fc
  1. 292
      main/admin/event_type.php
  2. 6
      main/admin/index.php
  3. 3
      main/auth/inscription.php
  4. 53
      main/inc/ajax/events.ajax.php
  5. 8
      main/inc/lib/database.constants.inc.php
  6. 770
      main/inc/lib/events.lib.inc.php
  7. 48
      main/inc/lib/events_dispatcher.lib.php
  8. 252
      main/inc/lib/events_email.lib.php
  9. 24
      main/inc/lib/usermanager.lib.php
  10. 28
      main/lang/english/events.inc.php
  11. 10
      main/lang/french/events.inc.php

@ -4,17 +4,21 @@
$language_file = array('admin','events');
$cidReset = true;
require_once '../inc/global.inc.php';
require_once '../inc/conf/events.conf.php';
$this_section = SECTION_PLATFORM_ADMIN;
api_protect_admin_script();
$interbreadcrumb[] = array ('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
$tool_name = get_lang('EventsTitle');
$tool_name = get_lang('events_title');
$action = isset($_POST['action'])?$_POST['action']:null;
$eventId = isset($_POST['eventId'])?$_POST['eventId']:null;
//$eventId = isset($_POST['eventId'])?$_POST['eventId']:null;
$eventName = isset($_POST['eventList'])?$_POST['eventList']:null;
$eventUsers = isset($_POST['eventUsers'])?$_POST['eventUsers']:null;
$eventMessage = isset($_POST['eventMessage'])?$_POST['eventMessage']:null;
$eventSubject = isset($_POST['eventSubject'])?$_POST['eventSubject']:null;
$eventMessageLanguage = isset($_POST['languages'])?$_POST['languages']:null;
$activated = isset($_POST['activated'])?$_POST['activated']:0;
if($action == 'modEventType') {
if($eventUsers) {
@ -23,39 +27,39 @@ if($action == 'modEventType') {
else {
$users = array();
}
eventType_mod($eventId,$users,$eventMessage,$eventSubject);
save_event_type_message($eventName,$users,$eventMessage,$eventSubject, $eventMessageLanguage, $activated);
// echo mysql_error();
header('location: event_type.php');
exit;
}
$ets = eventType_getAll();
$ets = get_all_event_types();
$languages = api_get_languages();
$ajaxPath = api_get_path(WEB_CODE_PATH).'inc/ajax/events.ajax.php';
$htmlHeadXtra[] = '<script src="../inc/lib/javascript/jquery.js" type="text/javascript" language="javascript"></script>';
Display::display_header($tool_name);
$key_lang = get_lang('unsaved_changes');
$users = UserManager::get_user_list();
?>
<script language="javascript">
var usersList;
var usersList = <?php print json_encode($users) ?>;
var eventTypes = <?php print json_encode($ets) ?>;
var eventsConfig = <?php print json_encode($event_config) ?>;
var currentLanguage = <?php print json_encode(api_get_interface_language()) ?>;
var flagContentHasChanged = false;
var key_lang = "<?php print $key_lang ?>";
$(document).ready(function(){
ajax({action:"getUsers"},function(data) {
usersList = data;
}
);
// ajax({action:"getEventTypes"},function(data) {
// eventTypes = data;
// showEventTypes(data);
// }
// );
});
function ajax(params,func) {
$.ajax({
@ -75,18 +79,11 @@ Display::display_header($tool_name);
);
}
// function showEventTypes(data) {
// $.each(data,function(ind,item) {
// addOption($('#eventList'),item.id,item.name);
// }
// );
// }
function getCurrentEventTypeInd() {
var ind=false;
$.each(eventTypes,function(i,item)
{
if(item.id == $('#eventList option:selected').first().attr('value')) {
if(item.event_type_name == $('#eventList option:selected').first().attr('value')) {
ind=i;
return false;
}
@ -95,33 +92,92 @@ Display::display_header($tool_name);
return ind;
}
function getCurrentEventTypeName()
{
var name = false;
return $('#eventList option:selected').first().attr('value');
}
function showEventType() {
cleanInput();
eInd = getCurrentEventTypeInd();
currentEventName = getCurrentEventTypeName();
$("span#activated_checkbox").css("display", "inline"); // make checkbox visible
$('input[name=activated]').attr('checked', false);
if(typeof(eventsConfig[currentEventName])!='undefined')
{
if(eventsConfig[currentEventName].self_sent == true) // if registration, only sent to self_user
{
$(".registration_case").css("display", "none");
}
else
{
$(".registration_case").css("display", "block");
}
}
else
{
$(".registration_case").css("display", "block");
}
// List of events configuration
$('#eventName').attr('value', currentEventName);
// $('#descLangVar').text(eventsConfig[currentEventName].desc_lang_var);
// set message and subject accoding to the current interface language
$.each(eventTypes,function(key,value)
{
if(eventTypes[key]["event_type_name"] == currentEventName)
{
$('#eventNameTitle').text(eventTypes[key]["nameLangVar"]);
}
if(eventTypes[key]["event_type_name"] == currentEventName && eventTypes[key]["activated"] == 1)
{
$('input[name=activated]').attr('checked', true);
}
if(eventTypes[key]["event_type_name"] == currentEventName && eventTypes[key]["dokeos_folder"] == currentLanguage)
{
$('#eventMessage').val(eventTypes[key]["message"]);
$('#eventSubject').val(eventTypes[key]["subject"]);
}
});
// displays the available keys for the mail template (related to an event name)
$('#keys').find('li').remove();
if(typeof(eventsConfig[currentEventName]["available_keyvars"])!='undefined')
{
$.each(eventsConfig[currentEventName]["available_keyvars"],function(key,value)
{
$('#keys').append('<li>'+key+'</li>');
});
}
$('#eventId').attr('value',eventTypes[eInd].id);
$('#eventName').attr('value',eventTypes[eInd].name);
$('#eventNameTitle').text(eventTypes[eInd].nameLangVar);
$('#eventMessage').text(eventTypes[eInd].message);
$('#eventSubject').attr('value',eventTypes[eInd].subject);
$('#descLangVar').text(eventTypes[eInd].descLangVar);
ajax({action:"getEventTypeUsers","id":eventTypes[eInd].id},function(data) {
removeAllOption($('#usersSubList'));
refreshUsersList();
usersIds = new Array();
$.each(data,function(ind,item) {
addOption($('#usersSubList'),item.user_id,item.firstname + ' '+item.lastname);
usersIds[ind] = item.value;
removeOption($('#usersList'),item.user_id);
});
$('#eventUsers').attr('value',usersIds.join(';'));
}
);
ajax({action:"get_event_users", eventName:currentEventName},function(data) {
removeAllOption($('#usersSubList'));
refreshUsersList();
//
usersIds = new Array();
$.each(data,function(ind,item) {
addOption($('#usersSubList'),item.user_id,item.firstname + ' '+item.lastname);
usersIds[ind] = item.value;
removeOption($('#usersList'),item.user_id);
});
$('#eventUsers').attr('value',usersIds.join(';'));
}
);
}
function submitForm() {
@ -145,7 +201,7 @@ Display::display_header($tool_name);
function addOption(select,value,text) {
select.append('<option value="'+value+'">'+text+'</option>');
}
function removeOption(select,value) {
select.find('option[value='+value+']').remove();
}
@ -163,56 +219,132 @@ Display::display_header($tool_name);
removeOption(src,val);
});
}
/**
* Change the message of the mail according to the selected language
*/
function changeLanguage()
{
cleanInput();
currentEventName = getCurrentEventTypeName();
$.each(eventTypes,function(key,value)
{
if(eventTypes[key]["event_type_name"] == currentEventName && eventTypes[key]["dokeos_folder"] == $('#languages option:selected').first().attr('value'))
{
$('#eventSubject').val(eventTypes[key]["subject"]);
$('#eventMessage').val(eventTypes[key]["message"]);
}
});
}
/**
* Set flag at true if message and/or content was changed
*/
function contentChanged()
{
flagContentHasChanged = true;
}
/**
* Asks if user want to abandon the changes he's done
*/
function confirmMessage(sender)
{
if(flagContentHasChanged == true)
{
if(confirm(key_lang))
{
flagContentHasChanged = false;
if(sender == "eventList")
{
cleanInput();
showEventType();
}
else if(sender == "languages")
{
cleanInput();
changeLanguage();
}
}
}
else
{
if(sender == "eventList")
showEventType();
else if(sender == "languages")
changeLanguage();
}
}
/**
* Empty the input and the textarea
*/
function cleanInput()
{
$('#eventMessage').val("");
$('#eventSubject').val("");
}
</script>
<h3><?php print get_lang('EventsTitle') ?></h3>
<h3><?php print get_lang('events_title') ?></h3>
<form method="POST" onSubmit="return submitForm(); ">
<table id="" width="90%">
<tr>
<td width="5%">
<h4><?php print get_lang('EventsListTitle'); ?></h4>
<h4><?php print get_lang('events_listTitle'); ?></h4>
</td>
<td width="5%">
<h4><?php print get_lang('EventsUserListTile'); ?></h4>
<h4><?php print get_lang('events_userListTile'); ?></h4>
</td>
<td width="5%">
&nbsp;
</td>
<td width="5%">
<h4><?php print get_lang('EventsUserSubListTile'); ?></h4>
<h4><?php print get_lang('events_userSubListTile'); ?></h4>
</td>
</tr>
<tr>
<td>
<select multiple="1" id="eventList" onChange="showEventType()">
<select multiple="1" id="eventList" onchange="confirmMessage(this.name); return false;" name="eventList">
<?php
foreach($ets as $et) {
print '<option value="'.$et['id'].'">'.$et['nameLangVar'].'</option>';
}
foreach($event_config as $key => $config) {
print '<option value="'.$key.'">'.get_lang($config['name_lang_var']).'</option>';
}
?>
</select>
</td>
<td>
<select multiple="1" id="usersList"></select>
<select multiple="1" id="usersList" class="registration_case"></select>
</td>
<td valign="middle">
<td valign="middle" class="registration_case">
<button class="arrowr" onclick='moveUsers($("#usersList"),$("#usersSubList")); return false;'></button>
<br />
<button class="arrowl" onclick='moveUsers($("#usersSubList"),$("#usersList")); return false;'></button>
</td>
<td>
<select multiple="1" id="usersSubList"></select>
<select multiple="1" id="usersSubList" class="registration_case"></select>
</td>
</tr>
</table>
<br />
<span id="activated_checkbox"><label for="activated" style="display:inline;"><?php print get_lang('checkbox_activated'); ?></label><input type="checkbox" name="activated" value="1" /></span>
<br />
<h2 id="eventNameTitle"></h2>
<form method="POST" onSubmit="return submitForm(); ">
<select id="languages" name="languages" style="margin-top:20px;" onclick='confirmMessage(this.name); return false;'>
<?php foreach($languages["name"] as $key => $value){ $english_name = $languages['folder'][$key]; ?>
<option value="<?php echo $english_name; ?>" <?php echo ($english_name == api_get_interface_language()) ? "selected=selected" : ""; ?>><?php echo $value; ?></option>
<?php } ?>
</select>
<input type="hidden" name="action" value="modEventType" />
<input type="hidden" name="eventId" id="eventId" />
<input type="hidden" name="eventUsers" id="eventUsers" />
@ -220,21 +352,35 @@ Display::display_header($tool_name);
<br />
<div id="descLangVar">
</div>
<!-- <div id="descLangVar">
</div>-->
<br />
<label for="eventSubject"><h4><?php print get_lang('EventsLabelSubject'); ?></h4></label>
<input type="text" id="eventSubject" name="eventSubject" />
<label for="eventSubject"><h4><?php print get_lang('events_labelSubject'); ?></h4></label>
<input type="text" id="eventSubject" name="eventSubject" onchange="contentChanged(); return false;" />
<br /><br />
<label for="eventMessage"><h4><?php print get_lang('EventsLabelMessage'); ?></h4></label>
<textarea cols="100" rows="10" name="eventMessage" id="eventMessage">
</textarea>
<table>
<tr>
<td>
<label for="eventMessage"><h4><?php print get_lang('events_labelMessage'); ?></h4></label>
</td>
<td class="available_keys" style="padding-left: 30px;">
<h4><?php print get_lang('availables_keys'); ?></h4>
</td>
</tr>
<tr>
<td>
<textarea cols="100" rows="10" name="eventMessage" id="eventMessage" onchange="contentChanged(); return false;"></textarea>
</td>
<td class="available_keys">
<div id="keys" style="padding-left: 50px;"><ul></ul></div>
</td>
</tr>
</table>
<br /><br />
<input type="submit" value="<?php print get_lang('EventsButtonMod'); ?>" />
<input type="submit" value="<?php print get_lang('events_btnMod'); ?>" />
</form>

@ -7,7 +7,7 @@
*/
// Language files that need to be included.
$language_file = array('admin', 'tracking','coursebackup');
$language_file = array('admin', 'tracking','coursebackup', 'events');
// Resetting the course id.
$cidReset = true;
@ -151,6 +151,10 @@ if (api_is_platform_admin()) {
$items[] = array('url'=>'configure_homepage.php', 'label' => get_lang('ConfigureHomePage'));
$items[] = array('url'=>'configure_inscription.php', 'label' => get_lang('ConfigureInscription'));
$items[] = array('url'=>'statistics/index.php', 'label' => get_lang('Statistics'));
/* event settings */
$items[] = array('url'=>'event_type.php', 'label' => get_lang('events_title'));
if (!empty($_configuration['multiple_access_urls'])) {
if (api_is_global_platform_admin()) {

@ -15,6 +15,7 @@ if (!empty($_POST['language'])) { //quick hack to adapt the registration form re
require_once '../inc/global.inc.php';
require_once api_get_path(CONFIGURATION_PATH).'profile.conf.php';
require_once api_get_path(LIBRARY_PATH).'mail.lib.inc.php';
require_once api_get_path(LIBRARY_PATH).'events_dispatcher.lib.php';
if (!empty($_SESSION['user_language_choice'])) {
$user_selected_language = $_SESSION['user_language_choice'];
@ -504,4 +505,4 @@ if ($form->validate()) {
$form->display();
}
}
Display :: display_footer();
Display :: display_footer();

@ -1,34 +1,35 @@
<?php
error_reporting(E_ERROR);
ob_start();
error_reporting(E_ERROR);
require_once '../global.inc.php';
ob_start();
require_once '../global.inc.php';
require_once '../lib/usermanager.lib.php';
$id = isset($_REQUEST['id'])?$_REQUEST['id']:null;
$action = isset($_REQUEST['action'])?$_REQUEST['action']:null;
api_protect_admin_script();
ob_end_clean();
header('content-type: text/json');
$id = isset($_REQUEST['id'])?$_REQUEST['id']:null;
$action = isset($_REQUEST['action'])?$_REQUEST['action']:null;
$actionEventName = isset($_REQUEST['eventName'])?$_REQUEST['eventName']:null;
api_protect_admin_script();
ob_end_clean();
header('content-type: text/json');
if($action == 'getEventTypes') {
$events = eventType_getAll();
$events = get_all_event_types();
print json_encode($events);
}
}
elseif($action == 'getUsers') {
$users = UserManager::get_user_list();
$users = UserManager::get_user_list();
print json_encode($users);
}
elseif($action == 'getEventTypeUsers') {
$users = eventType_getUsers($id);
}
elseif($action == 'get_event_users') {
$users = get_event_users($actionEventName);
print json_encode($users);
}
}

@ -316,9 +316,9 @@ define('TABLE_MAIN_STORED_VALUES_STACK', 'stored_values_stack');
//Event tables
define('TABLE_MAIN_EVENT_TYPE', 'event_type');
define('TABLE_MAIN_EVENT_TYPE_MESSAGE', 'event_type_email_template');
define('TABLE_MAIN_EVENT_TYPE_REL_USER', 'user_rel_event_type');
define('TABLE_MAIN_EVENT_EMAIL_TEMPLATE','event_email_template');
define('TABLE_MAIN_EVENT_TYPE_REL_USER','user_rel_event_type');
define('TABLE_EVENT_SENT','event_sent');
define('TABLE_MAIN_SKILL', 'skill');
define('TABLE_MAIN_SKILL_REL_SKILL', 'skill_rel_skill');
@ -333,4 +333,4 @@ define('TABLE_TIMELINE', 'timeline');
//Gradebook model
define('TABLE_GRADE_MODEL', 'grade_model');
define('TABLE_GRADE_MODEL_COMPONENTS', 'grade_components');
define('TABLE_GRADE_MODEL_COMPONENTS', 'grade_components');

File diff suppressed because it is too large Load Diff

@ -0,0 +1,48 @@
<?php
require_once api_get_path(CONFIGURATION_PATH).'events.conf.php';
require_once api_get_path(LIBRARY_PATH).'events_email.lib.php';
/**
*
* Entry point for every event in the application.
* Fires the functions linked to the events according to the event's conf.
* Every function got its own filter, it's fired inside the functiones fired
* by this class. The filter config is next to the event config, in conf/events.conf.php
*
*/
class EventsDispatcher
{
public static function events($event_name, $event_data)
{
global $event_config;
// get the config for the event passed in parameter ($event_name)
// and execute every actions with the values
foreach ($event_config[$event_name]["actions"] as $func)
{
if(!function_exists($func)) // if the function doesn't exist, we log
{
error_log("EventsDispatcher warning : ".$func." does not exist.");
}
if (function_exists($event_name."_".$func."_filter_func")) // check if the event's got a filter
{
$filter = $event_name."_".$func."_filter_func";
$execute = $filter($event_data); // if it does, we execute the filter
}
else // if there's no filter
{
error_log("EventsDispatcher warning : ".$event_name."_".$func."_filter_func does not exist.");
}
if(!$execute) // if the filter says we cannot send the mail, we get out of here
{
return false;
}
// finally, if the filter says yes, we execute the in-between function that will call the needed function
$func($event_name, $event_data);
}
}
}
?>

@ -0,0 +1,252 @@
<?php
class EventsMail
{
/**
* Manages and sends email according to an event
*
* @param type $event_name the name of the event that was triggered
* @param type $values what to put in the mail
* @param array
*
* Keys needed :
* - $event_data["about_user"] (= $user_id)
*
* Possible key :
* - $event_data["prior_lang"]
*
* Warning :
* - $event_data["send_to"] MUST BE an array
*/
public static function send_mail($event_name, $event_data)
{
/**
* Global explanation :
* 1. we get information about the user that fired the event (in $event_data["about_user"])
* 2. we send mail to people that are in the $event_data["send_to"]
* 2b. if a language was specified, we use that one to send the mail, else we get the user's language, if there isn't any, we get the english one
* 3. we do the same with the people associated to the event through the admin panel
*/
global $event_config;
// common variable for every mail sent
$sender_name = api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, PERSON_NAME_EMAIL_ADDRESS);
$email_admin = api_get_setting('emailAdministrator');
// basic keys
$event_data["sitename"] = api_get_setting('siteName');
$event_data["administrator_name"] = api_get_person_name(api_get_setting('administratorName'));
$event_data["administrator_surname"] = api_get_person_name(api_get_setting('administratorSurname'));
$event_data["administrator_phone"] = api_get_setting('administratorTelephone');
$event_data["administrator_email"] = api_get_setting('emailAdministrator');
// Fill the array's cells with info regarding the user that fired the event
// (for the keys in the template)
if(isset($event_data["about_user"]))
{
$about_user = api_get_user_info($event_data["about_user"]);
$event_data["firstname"] = $about_user["firstname"];
$event_data["lastname"] = $about_user["lastname"];
$event_data["username"] = $about_user["username"];
$event_data["usermail"] = $about_user["mail"];
$event_data["language"] = $about_user["language"];
$event_data["user_id"] = $about_user["user_id"];
}
// First, we send the mail to people we put in the $event_data["send_to"] ========================================================
if ($event_data["send_to"] != null) // the users we precised need to receive the mail
{
foreach ($event_data["send_to"] as $id) // for every member put in the array
{
// get user's info (to know where to send)
$user_info = api_get_user_info($id);
// get the language the email will be in
if ($event_data["prior_lang"] != null) // if $lang is not null, we use that lang
{
$language = $event_data["prior_lang"];
}
else // else we use the user's language
{
$sql = 'SELECT language FROM ' . Database::get_main_table(TABLE_MAIN_USER) . ' u
WHERE u.user_id = "' . $id . '"
';
$language = Database::store_result(Database::query($sql), 'ASSOC');
$language = $language[0]["language"];
}
// we get the message in the correct language (or in english if doesn't exist)
$result = self::getMessage($event_name, $language);
$message = "";
$subject = "";
self::getCorrectMessage($message, $subject, $language, $result);
// replace the keycodes used in the message
self::formatMessage($message, $subject, $event_config, $event_name, $event_data);
// sending email
$recipient_name = api_get_person_name($user_info['firstname'], $user_info['lastname']);
// checks if there's a file we need to join to the mail
if(isset($values["certificate_pdf_file"]))
{
$message = str_replace("\n", "<br />", $message);
@api_mail_html($recipient_name, $user_info["mail"], $subject, $message, $sender_name, $email_admin, null, array($values['certificate_pdf_file']));
}
else
{
@api_mail($recipient_name, $user_info["mail"], $subject, $message, $sender_name, $email_admin);
}
// If the mail only need to be send once (we know that thanks to the events.conf, we log it in the table
if($event_config[$event_name]["sending_mail_once"])
{
$sql = 'INSERT INTO ' . Database::get_main_table(TABLE_EVENT_SENT) . '
(user_from, user_to, event_type_name)
VALUES ('.$event_data["user_id"].', '.$id.' ,"'.Database::escape_string($event_name).'");
';
Database::query($sql);
}
}
}
// Second, we send to people linked to the event ========================================================
// So, we get everyone
$sql = 'SELECT u.user_id, u.language, u.email, u.firstname, u.lastname FROM ' . Database::get_main_table(TABLE_MAIN_EVENT_TYPE_REL_USER) . ' ue
INNER JOIN '.Database::get_main_table(TABLE_MAIN_USER).' u ON u.user_id = ue.user_id
WHERE event_type_name = "' . $event_name . '"';
$result = Database::store_result(Database::query($sql), 'ASSOC');
foreach ($result as $key => $value) // for each of the linked users
{
// we get the language
if ($event_data["prior_lang"] != null) // if $lang is not null, we use that lang
{
$language = $event_data["prior_lang"];
}
else // else we get the user's lang
{
$sql = 'SELECT language FROM '.Database::get_main_table(TABLE_MAIN_USER).'
where user_id = '.$value["user_id"].' ';
$result = Database::store_result(Database::query($sql), 'ASSOC');
$language = $result[0]["language"];
}
// we get the message in the correct language (or in english if doesn't exist)
$result = self::getMessage($event_name, $language);
$message = "";
$subject = "";
self::getCorrectMessage($message, $subject, $language, $result);
// replace the keycodes used in the message
self::formatMessage($message, $subject, $event_config, $event_name, $event_data);
// we send the mail
$recipient_name = api_get_person_name($value['firstname'], $value['lastname']);
@api_mail($recipient_name, $value["email"], $subject, $message, $sender_name, $email_admin);
// If the mail only need to be send once (we know that thanks to the events.conf, we log it in the table
if($event_config[$event_name]["sending_mail_once"])
{
$sql = 'INSERT INTO ' . Database::get_main_table(TABLE_EVENT_SENT) . '
(user_from, user_to, event_type_name)
VALUES ('.$event_data["user_id"].', '.$value["user_id"].' , "'.Database::escape_string($event_name).'");
';
Database::query($sql);
}
}
}
/**
* Checks if a message in a language exists, if the event is activated
* and if "manage event" is checked in admin panel.
* If yes to three, we can use this class, else we still use api_mail.
*/
public static function check_if_using_class($event_name)
{
if(api_get_setting('activate_email_template') === 'false')
{
return false;
}
$sql = 'SELECT COUNT(*) as total FROM ' . Database::get_main_table(TABLE_MAIN_EVENT_EMAIL_TEMPLATE) . ' em
INNER JOIN ' . Database::get_main_table(TABLE_MAIN_LANGUAGE) . ' l on em.language_id = l.id
WHERE em.event_type_name = "' . $event_name . '" and l.dokeos_folder = "english" and em.activated = 1
';
$exists = Database::store_result(Database::query($sql), 'ASSOC');
if ($exists[0]["total"])
{
return true;
}
else
{
return false;
}
}
/**
* Get the record containing the good message and subject
*
* @param type $event_name
* @param type $language
* @return type
*/
private static function getMessage($event_name, $language)
{
$sql = 'SELECT message, subject, l.dokeos_folder FROM ' . Database::get_main_table(TABLE_MAIN_EVENT_EMAIL_TEMPLATE) . ' em
INNER JOIN ' . Database::get_main_table(TABLE_MAIN_LANGUAGE) . ' l on em.language_id = l.id
WHERE em.event_type_name = "' . $event_name . '" and (l.dokeos_folder = "' . $language . '" OR l.dokeos_folder = "english") and em.message <> ""
';
return Database::store_result(Database::query($sql), 'ASSOC');
}
/**
* Get the correct message, meaning in the specified language or in english if previous one doesn't exist
*
* @param type $message
* @param type $subject
* @param type $language
* @param type $result
*/
private static function getCorrectMessage(&$message, &$subject, $language, $result)
{
foreach ($result as $msg)
{
if ($msg["dokeos_folder"] == $language)
{
$message = $msg["message"];
$subject = $msg["subject"];
break;
}
else if ($msg["dokeos_folder"] == "english")
{
$message = $msg["message"];
$subject = $msg["subject"];
}
}
}
/**
* Replaces the %key% by the good values
*
* @param type $message
* @param type $subject
* @param type $event_config
* @param type $event_name
*/
private static function formatMessage(&$message, &$subject, $event_config, $event_name, &$event_data)
{
foreach ($event_config[$event_name]["available_keyvars"] as $key => $word)
{
$message = str_replace('((' . $key . '))', $event_data[$word], $message);
$subject = str_replace('((' . $key . '))', $event_data[$word], $subject);
}
}
}
?>

@ -164,8 +164,28 @@ class UserManager {
} else {
$emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstName, $lastName)).",\n\n".get_lang('YouAreReg')." ".api_get_setting('siteName') ." ".get_lang('WithTheFollowingSettings')."\n\n".get_lang('Username')." : ". $loginName ."\n". get_lang('Pass')." : ".stripslashes($original_password)."\n\n" .get_lang('Address') ." ". api_get_setting('siteName') ." ". get_lang('Is') ." : ". $_configuration['root_web'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('Formula').",\n\n".api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'))."\n". get_lang('Manager'). " ".api_get_setting('siteName')."\nT. ".api_get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".api_get_setting('emailAdministrator');
}
@api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
}
/* MANAGE EVENT WITH MAIL */
if(EventsMail::check_if_using_class('user_registration'))
{
$values["about_user"] = $return;
$values["portal"] = $_configuration['root_web'];
$values["password"] = $original_password;
$values["send_to"] = array($return);
$values["prior_lang"] = null;
EventsDispatcher::events('user_registration', $values);
}
else
{
@api_mail_html($recipient_name, $email, $emailsubject, $emailbody, $sender_name, $email_admin);
}
}
/* ENDS MANAGE EVENT WITH MAIL */
// Add event to system log
$user_id_manager = api_get_user_id();

@ -0,0 +1,28 @@
<?php
$events_title = 'Event message management';
$events_listTitle = 'Events';
$events_userListTile = 'Platform users';
$events_userSubListTile = 'To-be-warned users\' list';
$events_labelSubject = 'Message\'s topic';
$events_labelMessage = 'Message';
$events_btnMod = 'Edit event message';
$courseDeletedTitle = 'Delete a training';
$courseCreatedTitle = 'Create a training';
$userDeletedTitle = 'Delete a user';
$userCreatedTitle = 'Create a user';
$sessionCreatedTitle = 'Create a session';
$sessionDeletedTitle ='Delete a session';
$sessionCategoryCreatedTitle = 'Create a session category';
$sessionCategoryDeletedTitle = 'Delete a session category';
$settingsChangedTitle = 'Change a configuration parameter';
$userRegistrationTitle = 'Register a user';
$userUnsubscribedTitle = 'Unregister a user';
$allCoursesPassedTitle = 'Eight succeeded courses';
$notifManagerTitle = 'Sending mail to n+1';
$subscribeUserToCourseTitle = 'Subscribe a user to a course';
$availables_keys = 'Available keys. Use them between (( )).';
$checkbox_activated = 'Activated ?';
$unsaved_changes = 'You have some unsaved changes. Do you want to abandon them ?';
?>

@ -16,7 +16,15 @@ $sessionDeletedTitle ='Suppression d\'une session';
$sessionCategoryCreatedTitle = 'Création d\'une catégorie de session';
$sessionCategoryDeletedTitle = 'Suppression d\'une catégorie de session';
$settingsChangedTitle = 'Changement d\'un paramètre de configuration';
$userSubscribedTitle = 'Inscription d\'un utilisateur';
$userRegistrationTitle = 'Inscription d\'un utilisateur';
$userUnsubscribedTitle = 'Désinscription d\'un utilisateur';
$allCoursesPassedTitle = 'Huit cours réussis';
$notifManagerTitle = 'Envoi du mail au n+1';
$subscribeUserToCourseTitle = 'Inscription de l\'utilisateur à un cours';
$availables_keys = 'Clés disponibles. Utilisez-les entre (( )).';
$checkbox_activated = 'Activé ?';
$unsaved_changes = 'Voulez-vous abandonner les changements que vous avez faits ?';
?>

Loading…
Cancel
Save