1

Scriptを使用して、 Moodleコースのセクション内のフォルダまたはリソースへのアクセス制限を作成しようとしています。この制限はユーザーのグループに対して行う必要があり、そのグループに属していない場合、既存のリソースは表示されません。

プログラムで実行したい操作は次のとおりです。 ここに画像の説明を入力

情報を検索しましたが、ドキュメントはほとんどありません。ドキュメントには、Webリンクでそれを行う方法のみが記載されています。

スクリプトからプログラムでグループ、フォルダー、およびセクションを作成する方法は知っていますが、これらの制限に使用するテーブルや、従うべき手順を特定できません。

そのため、誰かがその方法を知っているか、有用な例やドキュメントを持っている場合は、役に立ちます。

前もって感謝します。

4

2 に答える 2

1

UI を作成し、ユーザーがリソースにアクセスできるかどうかを確認するために使用されるクラスは、次の場所にあります。

availability/condition/group/classes/condition.php
availability/condition/group/classes/frontend.php

条件に関するデータは、Javascript の UI から JSON にフォーマットされ、送信および保存されます。私の最初の推測では、JSON 構造を再作成して table/column に保存する必要があると思いますcourse_modules::availability。それが完了したら、現在のユーザーがリソースにアクセスできるかどうかを確認するためcm_infoに、データが使用されている場所からキャッシュを削除する必要があると思います。availability

  • update_moduleinfo - モジュールフォームから送信されたデータを保存します
  • cm_info - 条件が満たされているかどうかを確認します
于 2016-10-11T09:30:25.647 に答える
0

私はあなたのアドバイス@FMCに従い、コースの特定のセクションのグループに許可を与える責任があるスクリプトにこの機能を実行しました

これはコードです:

/**
 * giving permits to a group for a particular section of a course
 *
 * @param $course course that contains the section to restrict access
 * @param $sectionid id of the section to restrict access
 * @param $groupid id of the group will have access
 * @param $module id of the mdl_module to restrict access
 *
 */
function grantPermission($course, $sectionid, $groupid, $module ){

    global $DB;

    $restriction = '{"op":"&","c":[{"type":"group","id":'. $groupid .'}],"showc":[true]}';

    $cm= $DB->get_record('course_modules', array('course' => $course , 'section' => $sectionid, 'module' => $module ), '*', MUST_EXIST);

    $course_module = new stdClass();
    $course_module->id = $cm->id;
    $course_module->course = $course;
    $course_module->section = $sectionid;
    $course_module->availability = $restriction;

    $res = $DB->update_record('course_modules', $course_module);

    if($res)
        rebuild_course_cache($course, true);    

    return $res;
}

これが@FMCの意味かどうか確認できますか? 動作しますが、これが最善の方法かどうかはわかりません。

ありがとうございました!

于 2016-10-13T08:46:51.517 に答える