MOODLE JSON 文件将电子邮件定向到特定区域
MOODLE JSON file to direct email to specific region
我有 5 个区域:Region1、Region2、Region3、Region4、Region5。
每个区域内有许多监考人员(用于测试):对于区域 1 -- Mary、Jack 和 Mark
当学生参加考试时,生成的电子邮件将发送给该地区的所有监考人员。这目前由 JSON 文件处理。我希望它由数据库中的 table 处理。以下是与从 JSON 文件收集信息相关的代码:
function get_region_proctors($region) {
global $CFG;
$rval = array();
$json_raw = file_get_contents($CFG->dirroot . DIRECTORY_SEPARATOR . 'jca' . DIRECTORY_SEPARATOR . 'data.json');
if (empty($json_raw)) {
throw new Exception("Unable to get json from data.json");
}
$json_data = json_decode($json_raw);
foreach($json_data->proctors as $p) {
if ($p->region == $region) {
$rval[] = $p;
}
}
return $rval;
}
JSON 文件如下所示:
{
"proctors" : [
{
"region" : "Region1",
"name" : "Mary Edwards",
"email" : "medwards@example.com"
},
{
"region" : "Region1",
"name" : "Jack Phillips",
"email" : "jphillips@example.com"
},
{
"region" : "Region1",
"name" : "Mark Jensen",
"email" : "mjensen@example.com"
}
]
}
问题是:如何让代码查看数据库(数组)而不是 DATA.JSON 文件?
编辑:
在我使用下面建议的代码后,我发现当我去查看或编辑 Proctor 列表时,有一个 javascript 文件似乎执行以下操作:
选择监考人员后,javascript 会自动设置区域。这是脚本(我不是 javascript 专业人士):
var proctors = [];
$(function () {
//disable region sel as proctor sel will control
$('#id_profile_field_Region').attr('disabled', 'disabled');
$('#mform1').submit(function () {
//need to reenable so php will note changes
$('#id_profile_field_Region').attr('disabled', false);
})
$.getJSON('../jca/data.json', function(json) {
proctors = json.proctors;
}).error(function() { alert("There was an error loading json. "); });
$('#id_profile_field_Proctor').change(function () {
newProctorSelected($(this).find("option:selected").text());
})
});
function newProctorSelected(pName) {
//find proctor object from json
var p = null;
for (var i = 0; i < proctors.length; i++) {
if (proctors[i].name === pName) {
p = proctors[i];
break;
}
}
if (p) {
//set the value of region based on region name of proctor
$('#id_profile_field_Region option').each(function() {
if($(this).text() === p.region) {
this.selected = true;
return;
}
});
}
else {
alert("proctor not found");
}
}
我不断收到错误消息 "There was an error loading JSON"。有没有办法在 PHP 中复制此功能?
如果您有一个名为 mdl_local_proctors 的 table,具有 ID、地区、姓名、电子邮件
那就用
function get_region_proctors($region) {
global $DB;
return $DB->get_records('local_proctors', array('region' => $region));
}
我有 5 个区域:Region1、Region2、Region3、Region4、Region5。 每个区域内有许多监考人员(用于测试):对于区域 1 -- Mary、Jack 和 Mark
当学生参加考试时,生成的电子邮件将发送给该地区的所有监考人员。这目前由 JSON 文件处理。我希望它由数据库中的 table 处理。以下是与从 JSON 文件收集信息相关的代码:
function get_region_proctors($region) {
global $CFG;
$rval = array();
$json_raw = file_get_contents($CFG->dirroot . DIRECTORY_SEPARATOR . 'jca' . DIRECTORY_SEPARATOR . 'data.json');
if (empty($json_raw)) {
throw new Exception("Unable to get json from data.json");
}
$json_data = json_decode($json_raw);
foreach($json_data->proctors as $p) {
if ($p->region == $region) {
$rval[] = $p;
}
}
return $rval;
}
JSON 文件如下所示:
{
"proctors" : [
{
"region" : "Region1",
"name" : "Mary Edwards",
"email" : "medwards@example.com"
},
{
"region" : "Region1",
"name" : "Jack Phillips",
"email" : "jphillips@example.com"
},
{
"region" : "Region1",
"name" : "Mark Jensen",
"email" : "mjensen@example.com"
}
]
}
问题是:如何让代码查看数据库(数组)而不是 DATA.JSON 文件?
编辑:
在我使用下面建议的代码后,我发现当我去查看或编辑 Proctor 列表时,有一个 javascript 文件似乎执行以下操作:
选择监考人员后,javascript 会自动设置区域。这是脚本(我不是 javascript 专业人士):
var proctors = [];
$(function () {
//disable region sel as proctor sel will control
$('#id_profile_field_Region').attr('disabled', 'disabled');
$('#mform1').submit(function () {
//need to reenable so php will note changes
$('#id_profile_field_Region').attr('disabled', false);
})
$.getJSON('../jca/data.json', function(json) {
proctors = json.proctors;
}).error(function() { alert("There was an error loading json. "); });
$('#id_profile_field_Proctor').change(function () {
newProctorSelected($(this).find("option:selected").text());
})
});
function newProctorSelected(pName) {
//find proctor object from json
var p = null;
for (var i = 0; i < proctors.length; i++) {
if (proctors[i].name === pName) {
p = proctors[i];
break;
}
}
if (p) {
//set the value of region based on region name of proctor
$('#id_profile_field_Region option').each(function() {
if($(this).text() === p.region) {
this.selected = true;
return;
}
});
}
else {
alert("proctor not found");
}
}
我不断收到错误消息 "There was an error loading JSON"。有没有办法在 PHP 中复制此功能?
如果您有一个名为 mdl_local_proctors 的 table,具有 ID、地区、姓名、电子邮件
那就用
function get_region_proctors($region) {
global $DB;
return $DB->get_records('local_proctors', array('region' => $region));
}