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));
}