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