Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add create_course_sessions cron script. Add active column to admin qu…
…ery. Add 'getCoursesWithoutSession' function to course.lib.php - refs BT#9437
- Loading branch information
Showing
3 changed files
with
106 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
<?php | ||
/* For licensing terms, see /license.txt */ | ||
/** | ||
* Create course sessions procedure. It creates sessions for courses that haven't it yet. | ||
* If today is greater than OFFSET, it will create them also for the next month. | ||
* @package chamilo.cron | ||
* @author Imanol Losada <imanol.losada@beeznest.com> | ||
*/ | ||
|
||
/** | ||
* Initialization | ||
*/ | ||
if (php_sapi_name() != 'cli') { | ||
exit; //do not run from browser | ||
} | ||
|
||
require_once __DIR__ . "/../inc/global.inc.php"; | ||
|
||
// First day of the current month to create sessions and add courses for the next month (e.g. "07") | ||
define("OFFSET", "15"); | ||
|
||
function getMonthFirstAndLastDates($initialDate = null) { | ||
$startDate = $initialDate ? $initialDate : date("Y-m-01"); | ||
$nextMonthStartDate = date("Y-m-d", strtotime($startDate." + 1 month")); | ||
$endDate = date("Y-m-d", strtotime($nextMonthStartDate." - 1 minute")); | ||
return array('startDate' => $startDate, 'endDate' => $endDate); | ||
} | ||
|
||
function createCourseSessions($courses, $administratorId, $startDate, $endDate) { | ||
echo "\n"; | ||
echo $courses ? | ||
"Creating sessions and adding courses for the period between ".$startDate." and ".$endDate : | ||
"Every course is already in session for the period between ".$startDate." and ".$endDate; | ||
echo "\n=====================================================================================\n\n"; | ||
// Loop through courses creating one session per each and adding them | ||
foreach ($courses as $course) { | ||
$sessionName = $course['title']." (".date("M Y", strtotime($startDate)).")"; | ||
$sessionId = SessionManager::create_session( | ||
$sessionName, | ||
$startDate, | ||
$endDate, | ||
0, | ||
0, | ||
null, | ||
$administratorId, | ||
0, | ||
SESSION_INVISIBLE | ||
); | ||
SessionManager::add_courses_to_session($sessionId, array($course['code'])); | ||
echo "Session '".$sessionName."' created.\nCourse '".$course['title']."' added.\n\n"; | ||
} | ||
} | ||
|
||
// Starts the script | ||
|
||
// Get first active administrator | ||
$administrators = array_reverse(UserManager::get_all_administrators()); | ||
$lastingAdministrators = count($administrators); | ||
while (!$administrators[$lastingAdministrators - 1]['active'] && $lastingAdministrators > 0) { | ||
$lastingAdministrators--; | ||
} | ||
if (!$lastingAdministrators) { | ||
echo "There are no active administrators. Process halted.\n"; | ||
exit; | ||
} | ||
$administratorId = intval($administrators[$lastingAdministrators - 1]['user_id']); | ||
|
||
// Creates course sessions for the current month | ||
$dates = getMonthFirstAndLastDates(); | ||
// Get courses that don't have any session | ||
$courses = CourseManager::getCoursesWithoutSession(); | ||
createCourseSessions($courses, $administratorId, $dates['startDate'], $dates['endDate']); | ||
|
||
// Creates course sessions for the following month | ||
if (date("Y-m-d") >= date("Y-m-".OFFSET)) { | ||
$dates = getMonthFirstAndLastDates(date("Y-m-d", strtotime(date("Y-m-01")." + 1 month"))); | ||
// Get courses that don't have any session the next month | ||
$courses = CourseManager::getCoursesWithoutSession($dates['startDate'], $dates['endDate']); | ||
createCourseSessions($courses, $administratorId, $dates['startDate'], $dates['endDate']); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters