parent
daca8f0f4a
commit
5455a67fef
@ -0,0 +1,158 @@ |
||||
<?php |
||||
/* For license terms, see /license.txt */ |
||||
/** |
||||
* This script generates four session categories. |
||||
* @package chamilo.plugin.advanced_subscription |
||||
*/ |
||||
|
||||
/** |
||||
* Init |
||||
*/ |
||||
|
||||
require_once __DIR__ . '/../config.php'; |
||||
$plugin = AdvancedSubscriptionPlugin::create(); |
||||
$now = api_get_utc_datetime(); |
||||
$weekAgo = api_get_utc_datetime('-1 week'); |
||||
$sessionExtraField = new ExtraField('session'); |
||||
$sessionExtraFieldValue = new ExtraFieldValue('session'); |
||||
/** |
||||
* Get session list |
||||
*/ |
||||
$joinTables = Database::get_main_table(TABLE_MAIN_SESSION) . ' s INNER JOIN ' . |
||||
Database::get_main_table(TABLE_MAIN_SESSION_USER) . ' su ON s.id = su.id_session INNER JOIN ' . |
||||
Database::get_main_table(TABLE_MAIN_USER_REL_USER) . ' uu ON su.id_user = uu.user_id INNER JOIN ' . |
||||
Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE) . ' asq ON su.id_session = asq.session_id AND su.id_user = asq.user_id'; |
||||
$columns = 's.id AS session_id, uu.friend_user_id AS superior_id, uu.user_id AS student_id, asq.id AS queue_id, asq.status AS status'; |
||||
$conditions = array( |
||||
'where' => array( |
||||
//'s.date_start >= ? |
||||
'uu.relation_type = ? AND asq.updated_at <= ?' => array( |
||||
//api_get_utc_datetime(), |
||||
USER_RELATION_TYPE_BOSS, |
||||
$weekAgo |
||||
) |
||||
), |
||||
'order' => 's.id', |
||||
); |
||||
|
||||
$queueList = Database::select($columns, $joinTables, $conditions); |
||||
|
||||
/** |
||||
* Remind students |
||||
*/ |
||||
$sessionInfoList = array(); |
||||
foreach ($queueList as $queueItem) { |
||||
if (!isset($sessionInfoList[$queueItem['session_id']])) { |
||||
$sessionInfoList[$queueItem['session_id']] = api_get_session_info($queueItem['session_id']); |
||||
} |
||||
} |
||||
|
||||
foreach ($queueList as $queueItem) { |
||||
switch ($queueItem['status']) { |
||||
case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_START: |
||||
// No break |
||||
case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_APPROVED: |
||||
$data = array('sessionId' => $queueItem['session_id']); |
||||
$data['session'] = api_get_session_info($queueItem['session_id']); |
||||
$data['student'] = api_get_user_info($queueItem['student_id']); |
||||
$plugin->sendMail($data, ADVANCED_SUBSCRIPTION_ACTION_REMINDER_STUDENT); |
||||
break; |
||||
default: |
||||
break; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Remind superiors |
||||
*/ |
||||
// Get recommended number of participants |
||||
$sessionRecommendedNumber = array(); |
||||
foreach ($queueList as $queueItem) { |
||||
$row = |
||||
$sessionExtraFieldValue->get_values_by_handler_and_field_variable( |
||||
$queueItem['session_id'], |
||||
'recommended_number_of_participants' |
||||
); |
||||
$sessionRecommendedNumber[$queueItem['session_id']] = $row['field_value']; |
||||
} |
||||
// Group student by superior and session |
||||
$queueBySuperior = array(); |
||||
foreach ($queueList as $queueItem) { |
||||
$queueBySuperior[$queueItem['session_id']][$queueItem['superior_id']][$queueItem['student_id']]['status'] = $queueItem['status']; |
||||
} |
||||
|
||||
foreach ($queueBySuperior as $sessionId => $superiorStudents) { |
||||
$data = array( |
||||
'sessionId' => $sessionId, |
||||
'session' => $sessionInfoList[$sessionId], |
||||
'students' => array(), |
||||
|
||||
); |
||||
$dataUrl = array( |
||||
'action' => 'confirm', |
||||
'sessionId' => $sessionId, |
||||
'currentUserId' => 0, |
||||
'newStatus' => ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_APPROVED, |
||||
'studentUserId' => 0, |
||||
'is_connected' => 0, |
||||
'profile_completed' => 0, |
||||
); |
||||
foreach ($superiorStudents as $superiorId => $students) { |
||||
$data['superior'] = api_get_user_info($superiorId); |
||||
// Check if superior has at least one student |
||||
if (count($students) > 0) { |
||||
foreach ($students as $studentId => $studentInfo) { |
||||
if ($studentInfo['status'] != ADVANCED_SUBSCRIPTION_QUEUE_STATUS_START) { |
||||
$data['students'][$studentId] = api_get_user_info($studentId); |
||||
$dataUrl['studentUserId'] = $studentId; |
||||
$dataUrl['newStatus'] = ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_APPROVED; |
||||
$data['students'][$studentId]['acceptUrl'] = $plugin->getQueueUrl($dataUrl); |
||||
$dataUrl['newStatus'] = ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_DISAPPROVED; |
||||
$data['students'][$studentId]['rejectUrl'] = $plugin->getQueueUrl($dataUrl); |
||||
} |
||||
} |
||||
|
||||
if (is_array($data['students']) && count($data['students']) > 0) { |
||||
// Check if superior have more than recommended |
||||
if ($sessionRecommendedNumber[$sessionId] >= count($students)) { |
||||
// Is greater or equal than recommended |
||||
$plugin->sendMail($data, ADVANCED_SUBSCRIPTION_ACTION_REMINDER_SUPERIOR); |
||||
} else { |
||||
// Is less than recommended |
||||
$plugin->sendMail($data, ADVANCED_SUBSCRIPTION_ACTION_REMINDER_SUPERIOR_MAX); |
||||
} |
||||
} |
||||
|
||||
} |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Remind admins |
||||
*/ |
||||
$admins = UserManager::get_all_administrators(); |
||||
$isWesternNameOrder = api_is_western_name_order(); |
||||
foreach ($admins as &$admin) { |
||||
$admin['complete_name'] = $isWesternNameOrder ? |
||||
$admin['firstname'] . ', ' . $admin['lastname'] : |
||||
$admin['lastname'] . ', ' . $admin['firstname'] |
||||
; |
||||
} |
||||
unset($admin); |
||||
$queueByAdmin = array(); |
||||
foreach ($queueList as $queueItem) { |
||||
if ($queueItem['status'] != ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_APPROVED) { |
||||
$queueByAdmin[$queueItem['session_id']]['students'][$queueItem['student_id']]['user_id'] = $queueItem['student_id']; |
||||
} |
||||
} |
||||
$data = array( |
||||
'admins' => $admins, |
||||
); |
||||
foreach ($queueByAdmin as $sessionId => $studentInfo) { |
||||
$data['sessionId'] = $sessionId; |
||||
$data['admin_view_url'] = api_get_path(WEB_PLUGIN_PATH) . |
||||
'advanced_subscription/src/admin_view.php?s=' . $data['sessionId']; |
||||
$data['session'] = $sessionInfoList[$sessionId]; |
||||
$data['students'] = $studentInfo['students']; |
||||
$plugin->sendMail($data, ADVANCED_SUBSCRIPTION_ACTION_REMINDER_ADMIN); |
||||
} |
||||
@ -0,0 +1,203 @@ |
||||
<?php |
||||
/* For license terms, see /license.txt */ |
||||
/** |
||||
* This script generates session fields needed for this plugin |
||||
* @package chamilo.plugin.advanced_subscription |
||||
*/ |
||||
|
||||
//exit; |
||||
|
||||
require_once __DIR__ . '/../../config.php'; |
||||
|
||||
api_protect_admin_script(); |
||||
|
||||
$teachingHours = new ExtraField('session'); |
||||
$teachingHours->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_INTEGER, |
||||
'field_variable' => 'teaching_hours', |
||||
'field_display_text' => get_lang('TeachingHours'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$cost = new ExtraField('session'); |
||||
$cost->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_FLOAT, |
||||
'field_variable' => 'cost', |
||||
'field_display_text' => get_lang('Cost'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$vacancies = new ExtraField('session'); |
||||
$vacancies->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_INTEGER, |
||||
'field_variable' => 'vacancies', |
||||
'field_display_text' => get_lang('Vacancies'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$recommendedNumberOfParticipants = new ExtraField('session'); |
||||
$recommendedNumberOfParticipants->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_INTEGER, |
||||
'field_variable' => 'recommended_number_of_participants', |
||||
'field_display_text' => get_lang('RecommendedNumberOfParticipants'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$place = new ExtraField('session'); |
||||
$place->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_TEXT, |
||||
'field_variable' => 'place', |
||||
'field_display_text' => get_lang('Place'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$schedule = new ExtraField('session'); |
||||
$schedule->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_TEXT, |
||||
'field_variable' => 'schedule', |
||||
'field_display_text' => get_lang('Schedule'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$allowVisitors = new ExtraField('session'); |
||||
$allowVisitors->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_CHECKBOX, |
||||
'field_variable' => 'allow_visitors', |
||||
'field_display_text' => get_lang('AllowVisitors'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$modeOptions = array( |
||||
get_lang('Online'), |
||||
get_lang('Presencial'), |
||||
get_lang('B-Learning') |
||||
); |
||||
|
||||
$mode = new ExtraField('session'); |
||||
$mode->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_SELECT, |
||||
'field_variable' => 'mode', |
||||
'field_display_text' => get_lang('Mode'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1, |
||||
'field_options' => implode('; ', $modeOptions) |
||||
)); |
||||
|
||||
$isInductionSession = new ExtraField('session'); |
||||
$isInductionSession->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_CHECKBOX, |
||||
'field_variable' => 'is_induccion_session', |
||||
'field_display_text' => get_lang('IsInductionSession'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$isOpenSession = new ExtraField('session'); |
||||
$isOpenSession->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_CHECKBOX, |
||||
'field_variable' => 'is_open_session', |
||||
'field_display_text' => get_lang('IsOpenSession'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$duration = new ExtraField('session'); |
||||
$duration->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_TEXT, |
||||
'field_variable' => 'human_text_duration', |
||||
'field_display_text' => get_lang('DurationInWords'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$showStatusOptions = array( |
||||
get_lang('Open'), |
||||
get_lang('InProcess'), |
||||
get_lang('Closed') |
||||
); |
||||
|
||||
$showStatus = new ExtraField('session'); |
||||
$showStatus->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_SELECT, |
||||
'field_variable' => 'show_status', |
||||
'field_display_text' => get_lang('ShowStatus'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1, |
||||
'field_options' => implode('; ', $showStatusOptions) |
||||
)); |
||||
|
||||
$publicationStartDate = new ExtraField('session'); |
||||
$publicationStartDate->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_DATE, |
||||
'field_variable' => 'publication_start_date', |
||||
'field_display_text' => get_lang('PublicationStartDate'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$publicationEndDate = new ExtraField('session'); |
||||
$publicationEndDate->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_DATE, |
||||
'field_variable' => 'publication_end_date', |
||||
'field_display_text' => get_lang('PublicationEndDate'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$banner = new ExtraField('session'); |
||||
$banner->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_FILE_IMAGE, |
||||
'field_variable' => 'banner', |
||||
'field_display_text' => get_lang('SessionBanner'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$brochure = new ExtraField('session'); |
||||
$brochure->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_FILE, |
||||
'field_variable' => 'brochure', |
||||
'field_display_text' => get_lang('Brochure'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$targetOptions = array( |
||||
get_lang('Minedu'), |
||||
get_lang('Regiones') |
||||
); |
||||
|
||||
$target = new ExtraField('session'); |
||||
$target->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_SELECT, |
||||
'field_variable' => 'target', |
||||
'field_display_text' => get_lang('Target'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1, |
||||
'field_options' => implode('; ', $targetOptions) |
||||
)); |
||||
|
||||
$shortDescription = new ExtraField('session'); |
||||
$shortDescription->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_TEXT, |
||||
'field_variable' => 'short_description', |
||||
'field_display_text' => get_lang('ShortSescription'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
|
||||
$id = new ExtraField('session'); |
||||
$id->save(array( |
||||
'field_type' => ExtraField::FIELD_TYPE_TEXT, |
||||
'field_variable' => 'id', |
||||
'field_display_text' => get_lang('Id'), |
||||
'field_visible' => 1, |
||||
'field_changeable' => 1 |
||||
)); |
||||
@ -0,0 +1,20 @@ |
||||
<?php |
||||
/* For license terms, see /license.txt */ |
||||
/** |
||||
* This script generates four session categories. |
||||
* @package chamilo.plugin.advanced_subscription |
||||
*/ |
||||
require_once __DIR__ . '/../../config.php'; |
||||
|
||||
api_protect_admin_script(); |
||||
|
||||
$categories = array( |
||||
'capacitaciones', |
||||
'programas', |
||||
'especializaciones', |
||||
'cursos prácticos' |
||||
); |
||||
$tableSessionCategory = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY); |
||||
foreach ($categories as $category) { |
||||
Database::query("INSERT INTO $tableSessionCategory (name) VALUES ('$category')"); |
||||
} |
||||
Loading…
Reference in new issue