diff --git a/main/admin/event_controller.php b/main/admin/event_controller.php
new file mode 100644
index 0000000000..09c01b1881
--- /dev/null
+++ b/main/admin/event_controller.php
@@ -0,0 +1,91 @@
+display();
+ }
+
+ public function deleteAction($id) {
+ $event_email_template = new EventEmailTemplate();
+ return $event_email_template->delete($id);
+ }
+}
+
+$event_controller = new eventController();
+$action = isset($_GET['action']) ? $_GET['action'] : null;
+
+switch ($action) {
+ case 'show':
+ $event_controller->showAction();
+ break;
+ case 'add':
+ $event_controller->addAction();
+ break;
+ case 'new':
+ $event_controller->newAction();
+ break;
+ case 'listing':
+ $content = $event_controller->listingAction();
+ break;
+ case 'delete' :
+ $event_controller->deleteAction($_GET['id']);
+ $content = $event_controller->listingAction();
+ break;
+}
+
+//jqgrid will use this URL to do the selects
+$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_event_email_template';
+
+
+//The order is important you need to check the the $column variable in the model.ajax.php file
+$columns = array(get_lang('Subject'), get_lang('Message'), get_lang('EventTypeName'), get_lang('Language'), get_lang('Status'), get_lang('Actions'));
+
+//Column config
+$column_model = array(
+ array('name'=>'subject', 'index'=>'subject', 'width'=>'80', 'align'=>'left'),
+ array('name'=>'message', 'index'=>'message', 'width'=>'500', 'align'=>'left','sortable'=>'false'),
+ array('name'=>'event_type_name', 'index'=>'event_type_name', 'width'=>'80', 'align'=>'left'),
+ array('name'=>'language_id', 'index'=>'language_id', 'width'=>'80', 'align'=>'left'),
+ array('name'=>'activated', 'index'=>'activated', 'width'=>'80', 'align'=>'left'),
+ array('name'=>'actions', 'index'=>'actions', 'width'=>'100')
+ );
+//Autowidth
+$extra_params['autowidth'] = 'true';
+//height auto
+$extra_params['height'] = 'auto';
+
+$htmlHeadXtra[] = api_get_jqgrid_js();
+$htmlHeadXtra[] = '';
+
+$tpl = new Template($tool_name);
+$tpl->assign('actions', $actions);
+$tpl->assign('message', $message);
+$tpl->assign('content', $content);
+$tpl->display_one_col_template();
\ No newline at end of file
diff --git a/main/admin/event_type.php b/main/admin/event_type.php
index ff57dc04f7..7a931942eb 100644
--- a/main/admin/event_type.php
+++ b/main/admin/event_type.php
@@ -1,390 +1,362 @@
'index.php', 'name' => get_lang('PlatformAdmin'));
+$interbreadcrumb[] = array('url' => 'index.php', 'name' => get_lang('PlatformAdmin'));
$tool_name = get_lang('events_title');
-$action = isset($_POST['action'])?$_POST['action']:null;
+$action = isset($_POST['action']) ? $_POST['action'] : 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) {
- $users = explode(';',$eventUsers);
- }
- else {
- $users = array();
- }
-
- save_event_type_message($eventName,$users,$eventMessage,$eventSubject, $eventMessageLanguage, $activated);
-
- // echo mysql_error();
- header('location: event_type.php');
- exit;
+$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) {
+ $users = explode(';', $eventUsers);
+ } else {
+ $users = array();
+ }
+ save_event_type_message($eventName, $users, $eventMessage, $eventSubject, $eventMessageLanguage, $activated);
+
+ header('location: event_type.php');
+ exit;
}
$ets = get_all_event_types();
$languages = api_get_languages();
-$ajaxPath = api_get_path(WEB_CODE_PATH).'inc/ajax/events.ajax.php';
+$ajaxPath = api_get_path(WEB_CODE_PATH) . 'inc/ajax/events.ajax.php';
Display::display_header($tool_name);
-$key_lang = get_lang('unsaved_changes');
+$action_array = array(array('url' =>'event_controller.php?action=listing' , 'content' => get_lang('List')));
+echo Display::actions($action_array);
+$key_lang = get_lang('unsaved_changes');
$users = UserManager::get_user_list();
-
?>
-
-
-
-
+
-
-
+Display :: display_footer();
\ No newline at end of file
diff --git a/main/inc/ajax/events.ajax.php b/main/inc/ajax/events.ajax.php
index 62c09269b5..b7e95d2764 100644
--- a/main/inc/ajax/events.ajax.php
+++ b/main/inc/ajax/events.ajax.php
@@ -4,7 +4,7 @@ require_once '../global.inc.php';
$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : null;
-$actionEventName = isset($_REQUEST['eventName']) ? $_REQUEST['eventName'] : null;
+$event_name = isset($_REQUEST['eventName']) ? $_REQUEST['eventName'] : null;
api_protect_admin_script();
@@ -18,7 +18,7 @@ switch ($action) {
print json_encode($users);
break;
case 'get_event_users' :
- $users = get_event_users($actionEventName);
+ $users = get_event_users($event_name);
print json_encode($users);
break;
}
diff --git a/main/inc/ajax/model.ajax.php b/main/inc/ajax/model.ajax.php
index c5dca35e4a..23606e2a80 100644
--- a/main/inc/ajax/model.ajax.php
+++ b/main/inc/ajax/model.ajax.php
@@ -120,7 +120,11 @@ switch ($action) {
$obj = new Gradebook();
$count = $obj->get_count();
break;
- case 'get_careers':
+ case 'get_event_email_template':
+ $obj = new EventEmailTemplate();
+ $count = $obj->get_count();
+ break;
+ case 'get_careers':
$obj = new Career();
$count = $obj->get_count();
break;
@@ -253,6 +257,23 @@ switch ($action) {
}
$result = $new_result;
break;
+ case 'get_event_email_template':
+ $columns = array('subject', 'message', 'event_type_name', 'language_id', 'activated', 'actions');
+ if(!in_array($sidx, $columns)) {
+ $sidx = 'subject';
+ }
+ $result = Database::select('*', $obj->table, array('order'=>"$sidx $sord", 'LIMIT'=> "$start , $limit"));
+ $new_result = array();
+ foreach ($result as $item) {
+ $item['actions'] .= Display::url(Display::return_icon('delete.png', get_lang('Delete')), api_get_path(WEB_CODE_PATH).'admin/event_controller.php?action=delete&id='.$item['id']);
+
+ /*if (!$item['status']) {
+ $item['name'] = ''.$item['subject'].'';
+ }*/
+ $new_result[] = $item;
+ }
+ $result = $new_result;
+ break;
case 'get_careers':
$columns = array('name', 'description', 'actions');
if(!in_array($sidx, $columns)) {
@@ -321,7 +342,7 @@ switch ($action) {
//var_dump($result);
$allowed_actions = array('get_careers', 'get_promotions', 'get_usergroups', 'get_gradebooks',
- 'get_sessions', 'get_exercise_results', 'get_work_user_list', 'get_timelines', 'get_grade_models');
+ 'get_sessions', 'get_exercise_results', 'get_work_user_list', 'get_timelines', 'get_grade_models', 'get_event_email_template');
//5. Creating an obj to return a json
if (in_array($action, $allowed_actions)) {
$response = new stdClass();
diff --git a/main/inc/conf/events.conf.dist.php b/main/inc/conf/events.conf.dist.php
index 3b3ba5b3b7..995ce86ad5 100644
--- a/main/inc/conf/events.conf.dist.php
+++ b/main/inc/conf/events.conf.dist.php
@@ -14,27 +14,50 @@
*
*/
global $event_config;
+
$event_config = array(
+ 'portal_homepage_edited' => array( // key for "user registration" event
+ 'actions' => array( // we link this event to a bunch of functions that will be triggered when the event is fired
+ 'portal_homepage_edited_send_email' // don't forget to actually write this function at the end of this file
+ ),
+ 'self_sent' => false, // this key states that we can't add user to this event through the admin panel
+ 'name_lang_var' => get_lang('portal_homepage_edited'),
+ 'desc_lang_var' => get_lang('portal_homepage_edited'),
+ 'available_keyvars' => array (// keys used for the mail template
+ 'url' => 'portal',
+ 'sitename' => 'sitename',
+ 'firstname' => 'firstname',
+ 'lastname' => 'lastname',
+ 'username' => 'username',
+ 'usermail' => 'usermail',
+ 'password' => 'password',
+ 'user_lang' => 'language',
+ 'admin_name' => 'administrator_name',
+ 'admin_surname' => 'administrator_surname',
+ 'admin_phone' => 'administrator_phone',
+ 'admin_email' => 'administrator_email',
+ )
+ ),
'user_registration' => array( // key for "user registration" event
- 'actions' => array( // we link this event to a bunch of functions that will be triggered when the event is fired
+ 'actions' => array( // we link this event to a bunch of functions that will be triggered when the event is fired
'event_send_mail' // don't forget to actually write this function at the end of this file
),
'self_sent' => true, // this key states that we can't add user to this event through the admin panel
'name_lang_var' => get_lang('userRegistrationTitle'),
'desc_lang_var' => get_lang('userRegistrationComment'),
- 'available_keyvars' => array( // keys used for the mail template
- 'url' => 'portal',
- 'sitename' => 'sitename',
- 'firstname' => 'firstname',
- 'lastname' => 'lastname',
- 'username' => 'username',
- 'usermail' => 'usermail',
- 'password' => 'password',
- 'user_lang' => 'language',
- 'admin_name' => 'administrator_name',
+ 'available_keyvars' => array (// keys used for the mail template
+ 'url' => 'portal',
+ 'sitename' => 'sitename',
+ 'firstname' => 'firstname',
+ 'lastname' => 'lastname',
+ 'username' => 'username',
+ 'usermail' => 'usermail',
+ 'password' => 'password',
+ 'user_lang' => 'language',
+ 'admin_name' => 'administrator_name',
'admin_surname' => 'administrator_surname',
- 'admin_phone' => 'administrator_phone',
- 'admin_email' => 'administrator_email',
+ 'admin_phone' => 'administrator_phone',
+ 'admin_email' => 'administrator_email',
)
),
);
diff --git a/main/inc/lib/autoload.class.php b/main/inc/lib/autoload.class.php
index 594a87c9e0..55d55daf83 100644
--- a/main/inc/lib/autoload.class.php
+++ b/main/inc/lib/autoload.class.php
@@ -145,6 +145,7 @@ class Autoload
$result['Event'] = '/main/coursecopy/classes/Event.class.php';
$result['EventsMail'] = '/main/inc/lib/events_email.class.php';
$result['EventsDispatcher'] = '/main/inc/lib/events_dispatcher.class.php';
+ $result['EventEmailTemplate'] = '/main/inc/lib/event_email_template.class.php';
$result['Exercise'] = '/main/exercice/exercise.class.php';
$result['ExerciseLink'] = '/main/gradebook/lib/be/exerciselink.class.php';
$result['ExerciseResult'] = '/main/exercice/exercise_result.class.php';
diff --git a/main/inc/lib/event_email_template.class.php b/main/inc/lib/event_email_template.class.php
new file mode 100644
index 0000000000..25f708eefc
--- /dev/null
+++ b/main/inc/lib/event_email_template.class.php
@@ -0,0 +1,121 @@
+table = Database::get_main_table(TABLE_EVENT_EMAIL_TEMPLATE);
+ }
+
+ public function get_all($where_conditions = array()) {
+ return Database::select('*',$this->table, array('where'=>$where_conditions,'order' =>'name ASC'));
+ }
+
+
+ /**
+ * Displays the title + grid
+ */
+ public function display() {
+ // action links
+ $content = Display::actions(array(array('url' => 'event_type.php' , 'content' => get_lang('Add'))));
+ $content .= Display::grid_html('event_email_template');
+ return $content;
+ }
+
+ public function get_status_list() {
+ return array(EVENT_EMAIL_TEMPLATE_ACTIVE => get_lang('Enable'), EVENT_EMAIL_TEMPLATE_INACTIVE=> get_lang('Disable'));
+ }
+
+ /**
+ * Returns a Form validator Obj
+ * @todo the form should be auto generated
+ * @param string url
+ * @param string action add, edit
+ * @return obj form validator obj
+ */
+ public function return_form($url, $action) {
+
+ $oFCKeditor = new FCKeditor('description') ;
+ $oFCKeditor->ToolbarSet = 'careers';
+ $oFCKeditor->Width = '100%';
+ $oFCKeditor->Height = '200';
+ $oFCKeditor->Value = '';
+ $oFCKeditor->CreateHtml();
+
+ $form = new FormValidator('career', 'post', $url);
+ // Settting the form elements
+ $header = get_lang('Add');
+ if ($action == 'edit') {
+ $header = get_lang('Modify');
+ }
+
+ $form->addElement('header', $header);
+ $id = isset($_GET['id']) ? intval($_GET['id']) : '';
+ $form->addElement('hidden', 'id', $id);
+
+ $form->addElement('text', 'name', get_lang('Name'), array('size' => '70'));
+ $form->add_html_editor('description', get_lang('Description'), false, false, array('ToolbarSet' => 'careers','Width' => '100%', 'Height' => '250'));
+ $status_list = $this->get_status_list();
+ $form->addElement('select', 'status', get_lang('Status'), $status_list);
+ if ($action == 'edit') {
+ $form->addElement('text', 'created_at', get_lang('CreatedAt'));
+ $form->freeze('created_at');
+ }
+
+ if ($action == 'edit') {
+ $form->addElement('style_submit_button', 'submit', get_lang('Modify'), 'class="save"');
+ } else {
+ $form->addElement('style_submit_button', 'submit', get_lang('Add'), 'class="save"');
+ }
+
+ // Setting the defaults
+ $defaults = $this->get($id);
+
+ if (!empty($defaults['created_at'])) {
+ $defaults['created_at'] = api_convert_and_format_date($defaults['created_at']);
+ }
+ if (!empty($defaults['updated_at'])) {
+ $defaults['updated_at'] = api_convert_and_format_date($defaults['updated_at']);
+ }
+ $form->setDefaults($defaults);
+
+ // Setting the rules
+ $form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
+ return $form;
+ }
+
+ public function get_count() {
+ $row = Database::select('count(*) as count', $this->table, array(),'first');
+ return $row['count'];
+ }
+
+ /*
+ public function save($params) {
+ $id = parent::save($params);
+ if (!empty($id)) {
+ event_system(LOG_CAREER_CREATE, LOG_CAREER_ID, $id, api_get_utc_datetime(), api_get_user_id());
+ }
+ return $id;
+ }
+
+ public function delete($id) {
+ parent::delete($id);
+ event_system(LOG_CAREER_DELETE, LOG_CAREER_ID, $id, api_get_utc_datetime(), api_get_user_id());
+ } */
+}
\ No newline at end of file
diff --git a/main/inc/lib/events.lib.inc.php b/main/inc/lib/events.lib.inc.php
index 13e054760e..9bc95f79d6 100644
--- a/main/inc/lib/events.lib.inc.php
+++ b/main/inc/lib/events.lib.inc.php
@@ -666,7 +666,8 @@ function get_users_subscribed_to_event($event_name) {
WHERE ue.user_id = u.user_id
AND e.name = "'.$event_name.'"
AND e.id = ue.event_type_id';
- return Database::store_result(Database::query($sql),'ASSOC');
+ $return = Database::store_result(Database::query($sql),'ASSOC');
+ return json_encode($return);
}
/**
@@ -676,11 +677,16 @@ function get_users_subscribed_to_event($event_name) {
*/
function get_event_users($event_name) {
$event_name = Database::escape_string($event_name);
- $sql = 'SELECT user.* FROM '.Database::get_main_table(TABLE_MAIN_USER).' user JOIN '.Database::get_main_table(TABLE_EVENT_TYPE_REL_USER).' relUser
+ $sql = 'SELECT user.user_id, user.firstname, user.lastname FROM '.Database::get_main_table(TABLE_MAIN_USER).' user JOIN '.Database::get_main_table(TABLE_EVENT_TYPE_REL_USER).' relUser
ON relUser.user_id = user.user_id
WHERE relUser.event_type_name = "'.$event_name.'"';
- $events_types = Database::store_result(Database::query($sql),'ASSOC');
- return $events_types;
+
+ //For tests
+ //$sql = 'SELECT user.user_id, user.firstname, user.lastname FROM '.Database::get_main_table(TABLE_MAIN_USER);
+
+ $user_list = Database::store_result(Database::query($sql), 'ASSOC');
+ return json_encode($user_list);
+
}
/**