AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Mailing Class** @package mod_custommailing* @author olivier@cblue.be* @copyright 2021 CBlue SPRL* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/namespace mod_custommailing;use dml_exception;use stdClass;defined('MOODLE_INTERNAL') || die();global $CFG;require_once $CFG->dirroot . '/mod/custommailing/lib.php';/*** Class Mailing* @package mod_custommailing** @property int id* @property int custommailingid* @property string mailingname* @property string mailinglang* @property string mailingsubject* @property string mailingcontent* @property int mailingcontentformat* @property int mailingmodle* @property int mailingdelay* @property int mailingstatus* @property int targetmoduleid* @property int customcertmoduleid* @property int starttime* @property int timecreated* @property int timemodified*/class Mailing {/*** @param stdClass $record* @return bool|int* @throws dml_exception*/public static function create(stdClass $record) {global $DB;$record->timecreated = $record->timemodified = time();return $DB->insert_record('custommailing_mailing', $record);}/*** @param int $id* @return stdClass* @throws dml_exception*/public static function get(int $id) {global $DB;$record = $DB->get_record('custommailing_mailing', ['id' => $id], '*', MUST_EXIST);$record = Mailing::format($record);return $record;}/*** @param int $id* @return stdClass* @throws dml_exception*/public static function getWithCourse(int $id) {global $DB;$sql = "SELECT cm.*, c.course as courseidFROM {custommailing_mailing} cmJOIN {custommailing} c ON c.id = cm.custommailingid";$record = $DB->get_record_sql($sql, ['id' => $id]);$record = Mailing::format($record);return $record;}/*** @param int $custommailing_id* @return stdClass[]* @throws dml_exception*/public static function getAll(int $custommailing_id) {global $DB;$records = [];$rs = $DB->get_recordset('custommailing_mailing', ['custommailingid' => $custommailing_id], 'id ASC');foreach ($rs as $record) {$record = Mailing::format($record);$records[$record->id] = $record;}$rs->close();return $records;}/*** @param stdClass $record* @return bool* @throws dml_exception*/public static function update(stdClass $record) {global $DB;$record->timemodified = time();return $DB->update_record('custommailing_mailing', $record);}/*** @param int $id* @throws dml_exception*/public static function delete(int $id) {global $DB;$DB->delete_records('custommailing_logs', ['custommailingmailingid' => $id]);$DB->delete_records('custommailing_mailing', ['id' => $id]);}/*** @param int $custommailing_id* @throws dml_exception*/public static function deleteAll(int $custommailing_id) {foreach (Mailing::getAll($custommailing_id) as $mailing) {Mailing::delete($mailing->id);}}/*** @return array* @throws dml_exception*/public static function getAllToSend() {global $DB;$records = [];$sql = "SELECT cm.*, c.course as courseidFROM {custommailing_mailing} cmJOIN {custommailing} c ON c.id = cm.custommailingid";$rs = $DB->get_recordset_sql($sql, ['mailingstatus' => MAILING_STATUS_ENABLED]);foreach ($rs as $record) {$record = Mailing::format($record);$records[$record->id] = $record;}$rs->close();return $records;}/*** @param stdClass $record* @return stdClass*/protected static function format(stdClass $record) {$record->id = (int) $record->id;$record->custommailingid = (int) $record->custommailingid;$record->mailingcontentformat = (int) $record->mailingcontentformat;$record->mailingmode = (int) $record->mailingmode;$record->mailingdelay = (int) $record->mailingdelay;$record->mailingstatus = (bool) $record->mailingstatus;$record->retroactive = (bool) $record->retroactive;$record->targetmoduleid = (int) $record->targetmoduleid;$record->targetmodulestatus = (int) $record->targetmodulestatus;$record->customcertmoduleid = empty($record->customcertmoduleid) ? null : (int) $record->customcertmoduleid;$record->starttime = (int) $record->starttime;$record->timecreated = (int) $record->timecreated;$record->timemodified = (int) $record->timemodified;return $record;}}