評定プラス

GradebookPlus Version 2(GBPv2)パッチでは、標準のgradebookに次の機能が追加されています。

  • 評定表のインプレース編集
  • 特定のカテゴリ内の数字でマークされたすべての活動に対する複数列編集(スプレッドシートスタイル)
  • コース活動ではない段階的イベントを作成します(これは、ユーザがMoodle以外のコースワークのためにオフライン課題を作成しなければならなかった評定表の問題を回避します)。
  • Moodleバージョン1.5および1.6で動作します
18STABLEブランチはMoodle 1.8(そしておそらくMoodle 1.7)で動作します。 Moodleの標準評定表の18STABLEブランチからの変更をGBPv2パッチの18STABLEブランチにマージするための努力がなされています。 Anthonyは、GBPv2パッチがMoodle 1.9で利用可能になった改良と新機能によって時代遅れにされることを望みます。現在の計画は、Moodle TrackerのCONTRIBセクションで確認され報告されているGBPv2パッチのバグを修正することです。

GBPv2パッチの詳細については、次のURLを参照してください 。https://moodle.org/mod/data/view.php?d=13&rid=929

GBPv2からMoodle 1.9への移行(実験的)

Moodleの評定表は、Moodle 1.9に完全に書き直されました。 GBPv2はMoodle 1.9以降では動作しません。また、Moodle 1.9はGBPv2のレベルを超えて進歩しているため、更新されることはありません。以下のステップは、ユーザーがGBPv2データをMoodle 1.8から1.9に移行するのを助けるためにAnthony Borrowによって開発されました。これがAnthonyのステップに関する免責事項です。

これらのクエリは、テーブル間の関係を示すことだけを目的としているため、移行計画を立てることができます。ブック番サイトでの運用を意図したものではありません。それが有用である限りそれを使用し、それが有用ではない限りそれを回避するという私の典型的な警告は二重に適用されます。それにもかかわらず、私は2つのステップを含むものとして移行を見ます。評定イベント(1.8)から評定項目(1.9)、および評定イベント評定(1.8)から評定評点へのマイグレーション。物事を複雑にする可能性があるのか、または現時点で私が最も明確にしていないのは、評点カテゴリ(1.8)から評点カテゴリ(1.9)への移行です。私は、現在の計画は少し控えめなものであることを認識しています。

Moodleのアップグレード担当者に仕事を任せてください

Moodle 1.8から1.9へ移行するための最初のステップは、最新ビルドのMoodle 1.9.xをダウンロードしてインストールすることです。残念ながら、インストールの過程でMoodleは移行に必要ないくつかのテーブルを削除するでしょう。そのため、Moodle 1.9の評定表に統合する場合は、何らかの方法でそのデータを保存する必要があります。そのデータを保存する最も簡単な方法は、のセクションをコメントアウトすることです。
 moodle / lib / db / upgrade.php 
テーブルを削除する責任があります。コメントアウトオプションについては、後述の「ステップ1」で説明しますが、MySQLコマンドを
 moodle / lib / db / upgrade.php 
そのため、データ変換は自動的に行われ、不要なテーブルは削除されます。自動変換を設定するには、最新バージョンのMoodle 1.9.xを解凍して新しいバージョンを開きます。
 moodle / lib / db / upgrade.php 
お気に入りのテキストエディタでファイルを作成します。以下の表に示されているコードを見つけて、リストされている交換用コードと交換します。ファイルを保存し、MySQLデータベースをバックアップし、コピーしたことを確認します。
 moodle / config.php 
以前のMoodleフォルダから新しいMoodleフォルダに移動し、新しいMoodleフォルダがMoodleが探している名前になるようにフォルダの名前を変更しました。最後に、Webブラウザを使って
 <あなたのMoodleパス> / admin 
アップグレードプロセスを開始します。置き換えられるテキスト
 moodle / lib / db / upgrade.php 
(およそ2555 - 2570行目):
 ///古い評定表を削除する
    if($ result && $ oldversion <2007100903){
        $ tables = array( 'grade_category'、
                        'grade_item'、
                        'grade_letter'、
                        'grade_preferences'、
                        'grade_exceptions');

        foreach($テーブルを$テーブルとして){
            $ table = new XMLDBTable($ table);
            if(table_exists($ table)){
                drop_table($ table);
            }
        }

        upgrade_main_savepoint($ result、2007100903);
    }

その場所に配置するテキスト:

 /// GradebookPlus v2データを変換してから、古い評定表を削除します
    if($ result && $ oldversion <2007100903){

        {
            /// grade_itemsにすべてのgrade_eventsを追加する
            $ sql = "INSERT INTO {$ CFG-> prefix} grade_items(コースID、カテゴリID、アイテム名、アイテムタイプ、 
                iteminfo、idnumber、grademax、grademin、時間作成、時間変更)SELECT gi.courseid 
                courseidとして、gi.categoryとしてcategoryid、ge.nameとしてitemname、 'manual'としてitemtypeとして、 
                iteminfoとしてのge.description、idnumberとしてのconcat( 'GBE  - '、ge.id)、grademaxとしてのge.grade、 
                grademinとして0、timecreatedとしてge.timemodified、timemodifiedとしてge.timemodified 
                geとして{$ CFG-> prefix} grade_item、geとして{$ CFG-> prefix} grade_eventsから 
                gi.courseid = ge.course AND gi.modid = 0 AND gi.cminstance = ge.id "; 
            execute_sql($ sql);

            ///古いcategoryidを新しいcategoryidに置き換えます(可能な場合) 
            $ sql = "giとして削除{$ CFG-> prefix} grade_items({$ CFG-> prefix} grade_category 
                gc)ON(gi.categoryid = gc.id)左結合({$ CFG-> prefix} gcsとしてのgrade_categories) 
                ON(gi.courseid = gcs.courseid AND gc.name = gcs.fullname)SET gi.categoryid = gcs.id、 
                gi.idnumber = replace(gi.idnumber、 'GBE'、 'GBI')どこgi.idnumber LIKE 'GBE%' "; 
            execute_sql($ sql);

            ///分類されていないものには、一般的なcategoryidを割り当てます 
            $ sql = "gi {LEFT JOIN({$ CFG-> prefix} grade_categoriesとして更新{$ CFG-> prefix} grade_items) 
                gcs)ON(gi.courseid = gcs.courseidかつgcs.parentがNULL) 
                gi.categoryid = gcs.id SET gi.idnumberが「GBI%」で、gi.categoryidがNULLです。 
            execute_sql($ sql);
 
            ///カテゴリのダブルチェック
            $ sql = "INSERT INTO {$ CFG-> prefix} grade_categories(コースID、深さ、フルネーム、 
                timecreated、timemodified)SELECT DISTINCTコースID、深さとして1 
                フルネームとしての 'コース評定カテゴリ'、作成日としてのunix_timestamp()、 
                {$ CFG-> prefix} grade_itemsから時間修正されたunix_timestamp() 
                ';' GBI% 'およびcategoryidがNULLです。 
            execute_sql($ sql);

            ///パスを追加 
            $ sql = "UPDATE {$ CFG-> prefix} grade_categories SET path = concat( '/'、id、 '/')WHERE path 
                IS NULL AND深さ= 1 "; 
            execute_sql($ sql);

            ///以前はNULLのカテゴリIDを生成します
            $ sql = "gi {LEFT JOIN({$ CFG-> prefix} grade_categoriesとして更新{$ CFG-> prefix} grade_items) 
                gcs)ON(gi.courseid = gcs.courseidかつgcs.parentがNULL)SET gi.categoryid = 
                gcs.idどこにgi.idnumberが「GBI%」で、gi.categoryidがNULLです。 
            execute_sql($ sql);

            ///古いテーブルから新しいテーブルにスコアをコピーする 
            $ sql = "INSERT INTO {$ CFG-> prefix} grade_grades(itemid、userid、usermodified、finalgrade、 
                timecreated、timemodified)SELECT gi.idをitemidとして、geg.useridをuseridとして、geg.teacher 
                ユーザが修正したもの、最終評定がgeg.grade、時間が作成されたものとしてgeg.timemark。 
                geg.timeはgegとして{$ CFG-> prefix} grade_events_gradesから時間変更されたものとしてマークされ、 
                giとしての{$ CFG-> prefix} grade_itemsどこで(gi.idnumber、 'GBI  - '、 '')= geg.event ";を置き換えてください。 
            execute_sql($ sql);

            ///各カテゴリ内の集計を単純な加重平均に設定する
            $ sql = "UPDATE {$ CFG  - > prefix} grade_categories SET集計= 11 WHERE depth!= 1"; 
            execute_sql($ sql);
        }
        
        $ tables = array( 'grade_category'、
                        'grade_item'、
                        'grade_letter'、
                        'grade_preferences'、
                        'grade_exceptions');

        foreach($テーブルを$テーブルとして){
            $ table = new XMLDBTable($ table);
            if(table_exists($ table)){
                drop_table($ table);
            }
        }

        upgrade_main_savepoint($ result、2007100903);
    }

それはそれをするべきです!ただし、空白の評定を無視する新しい機能を使用すると平均が変わることに注意してください。また、追加のクレジットはほとんど壊れているので、追加のクレジットの課題と100%を超えるスコアの課題は、評定に異なる影響を与えます。

ステップ1 - Moodle 1.9をインストールする

手動で変換を行う場合は、アップグレードプロセスを通じて最初にGBPv2データを保存する必要があります。あなたのWebブラウザでMoodleにログインする前に(アップグレードプロセスを開始するために)編集してください
 moodle / lib / db / upgrade.php 
そして、下に引用されている評定表を削除する行をコメントアウトしてください(または、必要であれば削除してください)。それらはおよそ2555 - 2570行目になるはずです。
 if($ result && $ oldversion <2007100903){
        $ tables = array( 'grade_category'、
                        'grade_item'、
                        'grade_letter'、
                        'grade_preferences'、
                        'grade_exceptions');

        foreach($テーブルを$テーブルとして){
            $ table = new XMLDBTable($ table);
            if(table_exists($ table)){
                drop_table($ table);
            }
        }

        upgrade_main_savepoint($ result、2007100903);
    }

編集後、インストールを完了し(新しいファイルをインストールした後に最初にログインしたときにMoodleがこれを行う)、ステップ2に進みます。

ステップ2 - MySQLコマンドでデータベースを変換する

あなたのお気に入りのMySQLツール(Moodleに対応したphpMyAdminであるMySQL Adminをインストールすることをお勧めします )を使用して、あなたのMoodleデータベースで以下の各コマンドを実行します。以下のコマンドはあなたがあなたのMoodleテーブルのプレフィックスとしてmdl_を使用したと仮定していることに注意してください。変更していない場合は、それに応じてすべてのテーブル名を変更する必要があります。このドキュメントの最後には、これらすべてのコマンドがまとめられているので、一連のコマンド全体を1回の操作でコピーして貼り付けることができます。

grade_itemsにgrade_eventsをすべて追加する
INSERT INTO mdl_grade_items(コースID、カテゴリID、アイテム名、アイテムタイプ、iteminfo、ID番号、grademax、grademin、時間を作成、時間変更)SELECT gi.courseidをコースIDとして、gi.categoryをカテゴリIDとして、ge.nameをアイテム名として、manualをitemtypeとして、ge iteminfoとしての記述、idnumberとしてのconcat( 'GBE - '、ge.id)、grademaxとしてのge.grade、timecreatedとしてのge.timemodified、timecifiedとのge.timemodified、from giとしてのmdl_grade_item、giとしてのmdl_grade_events .courseid = ge.course AND gi.modid = 0 AND gi.cminstance = ge.id;
古いcategoryidを新しいcategoryidに置き換えます(可能な場合)
mdl_grade_itemsをgiとして更新(gdとしてmdl_grade_category)ON(gi.categoryid = gc.id)左(gcsとしてmdl_grade_categories)ON(gi.courseid = gcs.courseidおよびgc.name = gcs.fullname)SET gi.categoryid = gcs.id、gi.idnumber = replace(gi.idnumber、 'GBE'、 'GBI')どこgi.idnumberのように 'GBE%';
分類されていないものには、一般的なcategoryidを課題てください(評定イベントは、以前のコースでは分類されていなかったと推定されます)。
giとしてmdl_grade_itemsを更新(gcsとしてmdl_grade_categories)ON(gi.courseid = gcs.courseidかつgcs.parentはNULL)SET gi.categoryid = gcs.idどこgi.idnumberのように 'GBI%'そしてgi.categoryidはNULL ;

- まだ分類されていない2つの項目があり、mdl_grade_categoriesにレコードを作成して上記のクエリを再実行することをお勧めします

ダブルチェックカテゴリー
INSERT INTO mdl_grade_categories(コースID、深さ、フルネーム、タイムクリエーション、タイム修正)SELECT DISTINCTコースID、フルコースとしての 'コース評定カテゴリ'、タイムクリエーションとしてのunix_timestamp()、タイム修正としてのunix_timestamp()FROM mdl_grade_items AND categoryidがNULLです。
パスを追加

- 上記の方法はあるかもしれませんが、自動インクリメントIDフィールドを使用してそれを行う方法がわからないので、最初にレコードを挿入してからデータを使用します。

UPDATE mdl_grade_categories SET path = concat( '/'、id、 '/')WHERE pathがNULLで、depth = 1です。
以前にNULLのカテゴリーIDを取り込む
giとしてmdl_grade_itemsを更新(gcsとしてmdl_grade_categories)ON(gi.courseid = gcs.courseidかつgcs.parentはNULL)SET gi.categoryid = gcs.idどこgi.idnumberのように 'GBI%'そしてgi.categoryidはNULL ;

- 商品をGBP商品として簡単に識別するために、ID番号としてGBE文字列と連結されたgrade event(1.8)idフィールドを使用しました。カテゴリを課題た後、それがNULLであってもidnumberはGBIになります。これにより、項目のリンク(1.9)やevents_gradesからgrade_gradesへの評点の課題も容易になります。 - OK - 今度はすべての評定イベントが評定項目に変わり、新しいカテゴリが見つかったか割り当てられたので、先に進んで評点を引き上げようとします。

古いテーブルから新しいテーブルにスコアをコピーする
INSERT INTO mdl_grade_grades(itemid、userid、usermodified、finalgrade、timecreated、timemodified)SELECT gi.idをitemidとして、geg.useridをuseridとして、geg.teacherをusermodified、geg.gradeをfinalgradeとして、geg.timeをtimecreatedとして、geg.timemarked mdl_grade_events_gradesをgegとして、mdl_grade_itemsをgiとして変更した場合WHERE((gi.idnumber、 'GBI - '、 '')= geg.eventを置き換えます。

私はテストサーバー上のブック番データでこれらのクエリをテストしました、そしてそれは私のために働くようです。しかし、これだけでは解決できない場合もあると私は考えていますが、それが少なくとも正しい方向への一歩であることを私は願っています。ちょっとぎょっとしている人のために、もしあなたがテストサーバー上のいくつかのブック番データでこれをテストしそしてそれを報告することができればそれは最も役に立つでしょう。フィードバック、質問、批評などをいただければ幸いです。Peace - Anthony

評点集約に関する問題

教師がレターの評定を割り当てるために[パーセントを使用する]を選択した場合、評定の集計は問題ありません。ただし、教師が「評定を割り当てる」に「ウェイトを使用」を選択した場合、クラスのすべての課題とカテゴリは「評定の加重平均」に設定されますが、すべての課題には加重係数がnullになります。

Bob Pufferによる最初の提案に基づいて、以下は評定集計問題を解決するはずです。

まず、以下のMySQLコマンドを使用して、コースの評定ではないすべての課題とカテゴリを「単純加重平均評定」に設定します。

UPDATE mdl_grade_categories SET集計= 11 WHERE depth!= 1;

Moodleに評定の再集計を強制する必要があります。これは次の手順で実行できます。

  1. [サイトの管理] - > [評定] - > [一般設定]に移動します。
  2. [集計に評価尺度を含める]チェックボックスをオンまたはオフにします。
  3. 変更内容を保存。システムの評定が再計算されるまでしばらく時間がかかります。
  4. 手順3の前に、「集計に評価尺度を含める」を元の位置に戻します。
  5. 変更をもう一度保存します。

Moodle 1.8のGBPv2からMoodle 1.9への移行のためのSQLコマンドの概要

勇敢な人にとっては(しかしupgrade.phpにあなたの代わりに仕事をさせるほど勇敢ではありませんが)、ここにすべてのSQLコマンドを組み合わせているので、一度コピーして貼り付けることができます。

 INSERT INTO mdl_grade_items(コースID、カテゴリID、アイテム名、アイテムタイプ、iteminfo、ID番号、grademax、grademin、時間を作成、時間変更)SELECT gi.courseidをコースIDとして、gi.categoryをカテゴリIDとして、ge.nameをアイテム名として、manualをitemtypeとして、ge iteminfoとしての記述、idnumberとしてのconcat( 'GBE  - '、ge.id)、grademaxとしてのge.grade、timecreatedとしてのge.timemodified、timecifiedとのge.timemodified、from giとしてのmdl_grade_item、giとしてのmdl_grade_events .courseid = ge.course AND gi.modid = 0 AND gi.cminstance = ge.id; 
mdl_grade_itemsをgiとして更新(gdとしてmdl_grade_category)ON(gi.categoryid = gc.id)左(gcsとしてmdl_grade_categories)ON(gi.courseid = gcs.courseidおよびgc.name = gcs.fullname)SET gi.categoryid = gcs.id、gi.idnumber = replace(gi.idnumber、 'GBE'、 'GBI')どこgi.idnumberのように 'GBE%';
giとしてmdl_grade_itemsを更新(gcsとしてmdl_grade_categories)ON(gi.courseid = gcs.courseidかつgcs.parentはNULL)SET gi.categoryid = gcs.idどこgi.idnumberのように 'GBI%'そしてgi.categoryidはNULL ; 
INSERT INTO mdl_grade_categories(コースID、深さ、フルネーム、タイムクリエーション、タイム修正)SELECT DISTINCTコースID、フルコースとしての 'コース評定カテゴリ'、タイムクリエーションとしてのunix_timestamp()、タイム修正としてのunix_timestamp()FROM mdl_grade_items AND categoryidがNULLです。 
UPDATE mdl_grade_categories SET path = concat( '/'、id、 '/')WHERE pathがNULLで、depth = 1です。
giとしてmdl_grade_itemsを更新(gcsとしてmdl_grade_categories)ON(gi.courseid = gcs.courseidかつgcs.parentはNULL)SET gi.categoryid = gcs.idどこgi.idnumberのように 'GBI%'そしてgi.categoryidはNULL ; 
INSERT INTO mdl_grade_grades(itemid、userid、usermodified、finalgrade、timecreated、timemodified)SELECT gi.idをitemidとして、geg.useridをuseridとして、geg.teacherをusermodified、geg.gradeをfinalgradeとして、geg.timeをtimecreatedとして、geg.timemarked mdl_grade_events_gradesをgegとして、mdl_grade_itemsをgiとして変更した場合WHERE((gi.idnumber、 'GBI  - '、 '')= geg.eventを置き換えます。 
UPDATE mdl_grade_categories SET集計= 11 WHERE depth!= 1;