Adding logs for careers and promotions implements #3689

skala
Julio Montoya 14 years ago
parent 4a30b92b9f
commit 795423182c
  1. 26
      main/inc/lib/career.lib.php
  2. 36
      main/inc/lib/main_api.lib.php
  3. 140
      main/inc/lib/promotion.lib.php

@ -80,7 +80,7 @@ class Career extends Model {
$form = new FormValidator('career', 'post', $url);
// Settting the form elements
$header = get_lang('Add');
$header = get_lang('Add');
if ($action == 'edit') {
$header = get_lang('Modify');
}
@ -96,9 +96,13 @@ class Career extends Model {
if ($action == 'edit') {
$form->addElement('text', 'created_at', get_lang('CreatedAt'));
$form->freeze('created_at');
}
$form->addElement('style_submit_button', 'submit', get_lang('Modify'), 'class="save"');
}
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);
@ -156,4 +160,18 @@ class Career extends Model {
}
return $cid;
}
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());
}
}
public function delete($id) {
parent::delete($id);
event_system(LOG_CAREER_DELETE, LOG_CAREER_ID, $id, api_get_utc_datetime(), api_get_user_id());
}
}

@ -121,24 +121,32 @@ define('PLATFORM_AUTH_SOURCE', 'platform');
define('DIR_HOTPOTATOES','/HotPotatoes_files');
// event logs types
define('LOG_COURSE_DELETE', 'course_deleted');
define('LOG_COURSE_CREATE', 'course_created');
define('LOG_USER_DELETE', 'user_deleted');
define('LOG_USER_CREATE', 'user_created');
define('LOG_SESSION_CREATE', 'session_created');
define('LOG_SESSION_DELETE', 'session_deleted');
define('LOG_SESSION_CATEGORY_CREATE', 'session_category_created');
define('LOG_SESSION_CATEGORY_DELETE', 'session_category_deleted');
define('LOG_COURSE_DELETE', 'course_deleted');
define('LOG_COURSE_CREATE', 'course_created');
define('LOG_USER_DELETE', 'user_deleted');
define('LOG_USER_CREATE', 'user_created');
define('LOG_SESSION_CREATE', 'session_created');
define('LOG_SESSION_DELETE', 'session_deleted');
define('LOG_SESSION_CATEGORY_CREATE', 'session_category_created');
define('LOG_SESSION_CATEGORY_DELETE', 'session_category_deleted');
define('LOG_CONFIGURATION_SETTINGS_CHANGE', 'settings_changed');
define('LOG_SUBSCRIBE_USER_TO_COURSE', 'user_subscribed');
define('LOG_UNSUBSCRIBE_USER_FROM_COURSE', 'user_unsubscribed');
define('LOG_SUBSCRIBE_USER_TO_COURSE', 'user_subscribed');
define('LOG_UNSUBSCRIBE_USER_FROM_COURSE', 'user_unsubscribed');
define('LOG_PROMOTION_CREATE', 'promotion_created');
define('LOG_PROMOTION_DELETE', 'promotion_deleted');
define('LOG_CAREER_CREATE', 'career_created');
define('LOG_CAREER_DELETE', 'career_deleted');
// event logs data types
define('LOG_COURSE_CODE', 'course_code');
define('LOG_USER_ID', 'user_id');
define('LOG_SESSION_ID', 'session_id');
define('LOG_SESSION_CATEGORY_ID', 'session_category_id');
define('LOG_COURSE_CODE', 'course_code');
define('LOG_USER_ID', 'user_id');
define('LOG_SESSION_ID', 'session_id');
define('LOG_SESSION_CATEGORY_ID', 'session_category_id');
define('LOG_CONFIGURATION_SETTINGS_CATEGORY', 'settings_category');
define('LOG_CONFIGURATION_SETTINGS_VARIABLE', 'settings_variable');
define('LOG_CAREER_ID', 'career_id');
define('LOG_PROMOTION_ID', 'promotion_id');
// Specification for usernames:
// 1. ASCII-letters, digits, "." (dot), "_" (underscore) are acceptable, 40 characters maximum length.

@ -23,6 +23,68 @@ class Promotion extends Model {
$this->table = Database::get_main_table(TABLE_PROMOTION);
}
/**
* Copies the promotion to a new one
* @param integer Promotion ID
* @param integer Career ID, in case we want to change it
* @param boolean Whether or not to copy the sessions inside
* @return integer New promotion ID on success, false on failure
*/
public function copy($id, $career_id = null, $copy_sessions = false) {
$promotion = $this->get($id);
$new = array();
foreach ($promotion as $key => $val) {
switch ($key) {
case 'id':
case 'updated_at':
break;
case 'name':
$val .= ' '.get_lang('Copy');
$new[$key] = $val;
break;
case 'created_at':
$val = api_get_utc_datetime();
$new[$key] = $val;
break;
case 'career_id':
if (!empty($career_id)) {
$val = (int)$career_id;
}
$new[$key] = $val;
default:
$new[$key] = $val;
break;
}
}
$pid = false;
if ($copy_sessions) {
/**
* When copying a session we do:
* 1. Copy a new session from the source
* 2. Copy all courses from the session (no user data, no user list)
* 3. Create the promotion
*/
require_once api_get_path(LIBRARY_PATH).'sessionmanager.lib.php';
$session_list = SessionManager::get_all_sessions_by_promotion($id);
if (!empty($session_list)) {
$pid = $this->save($new);
if (!empty($pid)) {
foreach($session_list as $item) {
$sid = SessionManager::copy_session($item['id'], true, false, true, true);
if ($sid != 0) {
SessionManager::suscribe_sessions_to_promotion($pid, array($sid));
}
}
}
}
} else {
$pid = $this->save($new);
}
return $pid;
}
/**
* Gets all promotions by career id
* @param int career id
@ -109,7 +171,11 @@ class Promotion extends Model {
$form->addElement('text', 'created_at', get_lang('CreatedAt'));
$form->freeze('created_at');
}
$form->addElement('style_submit_button', 'submit', get_lang('Modify'), 'class="save"');
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);
@ -126,64 +192,18 @@ class Promotion extends Model {
return $form;
}
/**
* Copies the promotion to a new one
* @param integer Promotion ID
* @param integer Career ID, in case we want to change it
* @param boolean Whether or not to copy the sessions inside
* @return integer New promotion ID on success, false on failure
*/
public function copy($id, $career_id = null, $copy_sessions = false) {
$promotion = $this->get($id);
$new = array();
foreach ($promotion as $key => $val) {
switch ($key) {
case 'id':
case 'updated_at':
break;
case 'name':
$val .= ' '.get_lang('Copy');
$new[$key] = $val;
break;
case 'created_at':
$val = api_get_utc_datetime();
$new[$key] = $val;
break;
case 'career_id':
if (!empty($career_id)) {
$val = (int)$career_id;
}
$new[$key] = $val;
default:
$new[$key] = $val;
break;
}
}
$pid = false;
if ($copy_sessions) {
/**
* When copying a session we do:
* 1. Copy a new session from the source
* 2. Copy all courses from the session (no user data, no user list)
* 3. Create the promotion
*/
require_once api_get_path(LIBRARY_PATH).'sessionmanager.lib.php';
$session_list = SessionManager::get_all_sessions_by_promotion($id);
if (!empty($session_list)) {
$pid = $this->save($new);
if (!empty($pid)) {
foreach($session_list as $item) {
$sid = SessionManager::copy_session($item['id'], true, false, true, true);
if ($sid != 0) {
SessionManager::suscribe_sessions_to_promotion($pid, array($sid));
}
}
}
}
} else {
$pid = $this->save($new);
}
return $pid;
public function save($params) {
$id = parent::save($params);
if (!empty($id)) {
event_system(LOG_PROMOTION_CREATE, LOG_PROMOTION_ID, $id, api_get_utc_datetime(), api_get_user_id());
}
}
public function delete($id) {
parent::delete($id);
event_system(LOG_PROMOTION_DELETE, LOG_PROMOTION_ID, $id, api_get_utc_datetime(), api_get_user_id());
}
}
Loading…
Cancel
Save