Add feature to send/delete legal contracts see BT#11196

pull/2487/head
jmontoyaa 9 years ago
parent 90f1794804
commit 97dc7d9b6b
  1. 11
      app/Migrations/Schema/V111/Version111.php
  2. 4
      main/admin/configure_inscription.php
  3. 144
      main/admin/user_information.php
  4. 14
      main/auth/inscription.php
  5. 14
      main/inc/lib/legal.lib.php
  6. 1
      main/inc/lib/model.lib.php
  7. 3
      main/inc/local.inc.php
  8. 59
      src/Chamilo/CoreBundle/Entity/Legal.php

@ -273,6 +273,17 @@ class Version111 extends AbstractMigrationChamilo
$this->addSql("ALTER TABLE c_quiz_question_rel_category ADD INDEX idx_qqrc_qid (question_id)");
$this->addSql("ALTER TABLE c_quiz_answer ADD INDEX idx_cqa_q (question_id)");
$this->addSql("ALTER TABLE c_student_publication ADD INDEX idx_csp_u (user_id)");
$this->addSql('ALTER TABLE legal DROP PRIMARY KEY;');
$this->addSql('ALTER TABLE legal ADD id INT');
$this->addSql('UPDATE legal SET id = legal_id');
$this->addSql('UPDATE legal SET id = 1 WHERE id = 0');
$this->addSql('ALTER TABLE legal MODIFY COLUMN language_id INT NOT NULL');
$this->addSql('ALTER TABLE legal DROP legal_id');
$this->addSql('ALTER TABLE legal CHANGE id id INT NOT NULL;');
$this->addSql('ALTER TABLE legal ADD PRIMARY KEY (id);');
}
}

@ -303,8 +303,8 @@ if (api_get_setting('allow_terms_conditions') == 'true') {
// Version and language //password
$form->addElement('hidden', 'legal_accept_type', $term_preview['version'].':'.$term_preview['language_id']);
$form->addElement('hidden', 'legal_info', $term_preview['legal_id'].':'.$term_preview['language_id']);
$form->addElement('hidden', 'legal_info', $term_preview['id'].':'.$term_preview['language_id']);
if ($term_preview['type'] == 1) {
$form->addElement(
'checkbox',

@ -17,6 +17,7 @@ api_protect_admin_script();
$interbreadcrumb[] = array("url" => 'index.php', "name" => get_lang('PlatformAdmin'));
$interbreadcrumb[] = array("url" => 'user_list.php', "name" => get_lang('UserList'));
if (!isset($_GET['user_id'])) {
api_not_allowed();
}
@ -58,9 +59,79 @@ if (api_is_platform_admin()) {
),
api_get_path(WEB_PATH).'main/social/vcard_export.php?userId='.$userId
);
}
$studentBossList = UserManager::getStudentBossList($userId);
$studentBossListToString = '';
if ($studentBossList) {
$table = new HTML_Table(array('class' => 'data_table'));
$table->setHeaderContents(0, 0, get_lang('User'));
$csvContent[] = [get_lang('StudentBoss')];
$row = 1;
foreach ($studentBossList as $studentBossId) {
$studentBoss = api_get_user_info($studentBossId['boss_id']);
$table->setCellContents($row, 0, $studentBoss['complete_name_with_username']);
$csvContent[] = array($studentBoss['complete_name_with_username']);
$row++;
}
$studentBossListToString = $table->toHtml();
}
if (isset($_GET['action'])) {
switch ($_GET['action']) {
case 'send_legal':
$subject = get_lang('SendLegalSubject');
$content = sprintf(
get_lang('SendLegalDescriptionToUrlX'),
api_get_path(WEB_CODE_PATH).'auth/inscription.php'
);
MessageManager::send_message_simple($userId, $subject, $content);
Display::addFlash(Display::return_message(get_lang('Sent')));
break;
case 'delete_legal':
$extraFieldValue = new ExtraFieldValue('user');
$value = $extraFieldValue->get_values_by_handler_and_field_variable($userId, 'legal_accept');
$result = $extraFieldValue->delete($value['id']);
if ($result) {
Display::addFlash(Display::return_message(get_lang('Deleted')));
}
break;
case 'unsubscribe':
$courseCode = empty($_GET['course_code']) ? '' : intval($_GET['course_code']);
$sessionId = empty($_GET['id_session']) ? 0 : intval($_GET['id_session']);
if (CourseManager::get_user_in_course_status($userId, $courseCode) == STUDENT) {
CourseManager::unsubscribe_user($userId, $courseCode, $sessionId);
Display::addFlash(Display::return_message(get_lang('UserUnsubscribed')));
} else {
Display::addFlash(Display::return_message(
get_lang('CannotUnsubscribeUserFromCourse'),
'error',
false
));
}
break;
case 'unsubscribeSessionCourse':
$userId = empty($_GET['user_id']) ? 0 : intval($_GET['user_id']);
$courseCode = empty($_GET['course_code']) ? '' : intval($_GET['course_code']);
$sessionId = empty($_GET['id_session']) ? 0 : intval($_GET['id_session']);
SessionManager::removeUsersFromCourseSession(
array($userId),
$sessionId,
api_get_course_info($courseCode)
);
Display::addFlash(Display::return_message(get_lang('UserUnsubscribed')));
break;
case 'export':
Export :: arrayToCsv($csvContent, 'user_information_'.$user);
exit;
break;
}
}
// Show info about who created this user and when
$creatorId = $user['creator_id'];
$creatorInfo = api_get_user_info($creatorId);
@ -88,7 +159,7 @@ $data = array(
.$creatorId,
$creatorInfo['username'],
api_get_utc_datetime($registrationDate)
),
)
);
$row = 1;
@ -109,6 +180,29 @@ $data = array(
get_lang('FirstLogin') => Tracking :: get_first_connection_date($userId),
get_lang('LatestLogin') => Tracking :: get_last_connection_date($userId, true)
);
if (api_get_setting('allow_terms_conditions') === 'true') {
$extraFieldValue = new ExtraFieldValue('user');
$value = $extraFieldValue->get_values_by_handler_and_field_variable($userId, 'legal_accept');
$icon = Display::return_icon('accept_na.png');
if (isset($value['value'])) {
list($legalId, $legalLanguageId, $legalTime) = explode(':', $value['value']);
$icon = Display::return_icon('accept.png').' '.api_get_local_time($legalTime);
$icon .= ' '.Display::url(
get_lang('DeleteLegal'),
api_get_self().'?action=delete_legal&user_id='.$userId,
['class' => 'btn btn-danger btn-xs']
);
} else {
$icon .= ' '.Display::url(
get_lang('SendLegal'),
api_get_self().'?action=send_legal&user_id='.$userId,
['class' => 'btn btn-primary btn-xs']
);
}
$data[get_lang('LegalAccepted')] = $icon;
}
$row = 1;
foreach ($data as $label => $item) {
if (!empty($label)) {
@ -381,53 +475,8 @@ if (api_is_multiple_url_enabled()) {
}
}
$studentBossList = UserManager::getStudentBossList($userId);
$studentBossListToString = '';
if ($studentBossList) {
$table = new HTML_Table(array('class' => 'data_table'));
$table->setHeaderContents(0, 0, get_lang('User'));
$csvContent[] = [get_lang('StudentBoss')];
$row = 1;
foreach ($studentBossList as $studentBossId) {
$studentBoss = api_get_user_info($studentBossId['boss_id']);
$table->setCellContents($row, 0, $studentBoss['complete_name_with_username']);
$csvContent[] = array($studentBoss['complete_name_with_username']);
$row++;
}
$studentBossListToString = $table->toHtml();
}
$message = null;
if (isset($_GET['action'])) {
switch ($_GET['action']) {
case 'unsubscribe':
$userId = empty($_GET['user_id']) ? 0 : intval($_GET['user_id']);
$courseCode = empty($_GET['course_code']) ? '' : intval($_GET['course_code']);
$sessionId = empty($_GET['id_session']) ? 0 : intval($_GET['id_session']);
if (CourseManager::get_user_in_course_status($userId, $courseCode) == STUDENT) {
CourseManager::unsubscribe_user($userId, $courseCode, $sessionId);
$message = Display::return_message(get_lang('UserUnsubscribed'));
} else {
$message = Display::return_message(
get_lang('CannotUnsubscribeUserFromCourse'),
'error',
false
);
}
break;
case 'unsubscribeSessionCourse':
$userId = empty($_GET['user_id']) ? 0 : intval($_GET['user_id']);
$courseCode = empty($_GET['course_code']) ? '' : intval($_GET['course_code']);
$sessionId = empty($_GET['id_session']) ? 0 : intval($_GET['id_session']);
SessionManager::removeUsersFromCourseSession(
array($userId),
$sessionId,
api_get_course_info($courseCode)
);
$message = Display::return_message(get_lang('UserUnsubscribed'));
break;
case 'export':
Export :: arrayToCsv($csvContent, 'user_information_'.$user);
exit;
@ -435,6 +484,7 @@ if (isset($_GET['action'])) {
}
}
Display::display_header($tool_name);
echo '<div class="actions">
@ -461,8 +511,6 @@ $fullUrl = UserManager::getUserPicture(
echo '<div class="row">';
echo $message;
echo '<div class="col-md-2">';
echo '<a class="expand-image" href="'.$fullUrlBig.'">'
.'<img src="'.$fullUrl.'" /></a><br />';

@ -515,7 +515,7 @@ if (api_get_setting('allow_terms_conditions') == 'true') {
// Version and language
$form->addElement('hidden', 'legal_accept_type', $term_preview['version'].':'.$term_preview['language_id']);
$form->addElement('hidden', 'legal_info', $term_preview['legal_id'].':'.$term_preview['language_id']);
$form->addElement('hidden', 'legal_info', $term_preview['id'].':'.$term_preview['language_id']);
$form->addElement('hidden', 'legal_course_id', api_get_course_int_id());
if ($term_preview['type'] == 1) {
@ -800,10 +800,14 @@ if ($form->validate()) {
$form_data['action'] = api_get_path(WEB_PATH).'user_portal.php';
} else {
$courseInfo = api_get_course_info();
$form_data['action'] = $courseInfo['course_public_url'].'?id_session='.api_get_session_id();
$cidReset = true;
Session::erase('_course');
Session::erase('_cid');
if (!empty($courseInfo)) {
$form_data['action'] = $courseInfo['course_public_url'].'?id_session='.api_get_session_id();
$cidReset = true;
Session::erase('_course');
Session::erase('_cid');
} else {
$form_data['action'] = api_get_path(WEB_PATH).'user_portal.php';
}
}
} else {
if (!empty($values['email'])) {

@ -45,14 +45,14 @@ class LegalManager
return true;
} elseif($last['type'] != $type && $language == $last['language_id']) {
//update
$id = $last['legal_id'];
// Update
$id = $last['id'];
$params = [
'changes' => $changes,
'type' => $type,
'date' => $time
];
Database::update($legal_table, $params, ['legal_id => ?' => $id]);
Database::update($legal_table, $params, ['id => ?' => $id]);
return true;
} else {
@ -69,7 +69,7 @@ class LegalManager
/*
$legal_table = Database::get_main_table(TABLE_MAIN_LEGAL);
$id = intval($id);
$sql = "DELETE FROM $legal_table WHERE legal_id = '".$id."'";
$sql = "DELETE FROM $legal_table WHERE id = '".$id."'";
*/
}
@ -84,7 +84,7 @@ class LegalManager
$language= Database::escape_string($language);
$sql = "SELECT version FROM $legal_conditions_table
WHERE language_id = '".$language."'
ORDER BY legal_id DESC LIMIT 1 ";
ORDER BY id DESC LIMIT 1 ";
$result = Database::query($sql);
$row = Database::fetch_array($result);
if (Database::num_rows($result) > 0) {
@ -224,7 +224,7 @@ class LegalManager
$legal_conditions_table = Database::get_main_table(TABLE_MAIN_LEGAL);
$sql = "SELECT count(*) as count_result
FROM $legal_conditions_table
ORDER BY legal_id DESC ";
ORDER BY id DESC ";
$result = Database::query($sql);
$url = Database::fetch_array($result,'ASSOC');
$result = $url['count_result'];
@ -244,7 +244,7 @@ class LegalManager
$legal_id = intval($legal_id);
$language_id = intval($language_id);
$sql = 'SELECT type FROM '.$legal_conditions_table.'
WHERE legal_id="'.$legal_id.'" AND language_id="'.$language_id.'"';
WHERE id = "'.$legal_id.'" AND language_id="'.$language_id.'"';
$rs = Database::query($sql);
return Database::result($rs,0,'type');

@ -59,6 +59,7 @@ class Model
// Database table definition
$result = Database::delete($this->table, $params);
if ($result != 1) {
return false;
}

@ -1148,9 +1148,6 @@ if ((isset($uidReset) && $uidReset) || (isset($cidReset) && $cidReset)) {
exit;
}
}
}
if (isset($user_id) && $user_id && isset($_real_cid) && $_real_cid) {

@ -12,6 +12,15 @@ use Doctrine\ORM\Mapping as ORM;
*/
class Legal
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
private $id;
/**
* @var integer
*
@ -50,22 +59,29 @@ class Legal
/**
* @var integer
*
* @ORM\Column(name="legal_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(name="language_id", type="integer")
*/
private $legalId;
private $languageId;
/**
* @var integer
*
* @ORM\Column(name="language_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @return int
*/
private $languageId;
public function getId()
{
return $this->id;
}
/**
* @param int $id
* @return Legal
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* Set date
@ -182,29 +198,6 @@ class Legal
return $this->version;
}
/**
* Set legalId
*
* @param integer $legalId
* @return Legal
*/
public function setLegalId($legalId)
{
$this->legalId = $legalId;
return $this;
}
/**
* Get legalId
*
* @return integer
*/
public function getLegalId()
{
return $this->legalId;
}
/**
* Set languageId
*

Loading…
Cancel
Save