Wiki

Clone wiki

MOODECx / Dev_Notes_3-5

##Media Collection Delete sample Feature###

Classe : /mod/mediagallery/renderer.php

Méthode : renderer_gallery Mission : Commenter 4 lignes

#!php

   public function render_gallery(rengallery $renderable) {
        $gallery = $renderable->gallery;
        $o = $this->gallery_heading($gallery);

        if (!$renderable->nosample) {
            $class = '';
            $pix = 't/check';
            if (!$gallery->moral_rights_asserted()) {
                $class = ' no';
                $pix = 'i/invalid';
            }
           // $indicator = html_writer::empty_tag('img', array('src' => $this->output->image_url($pix)));
           // $o .= html_writer::tag('div', $indicator, array('class' => 'moralrights'.$class));
          //  $link = html_writer::link('#', get_string('sample', 'mediagallery'), array('id' => 'mg_sample'));
          //  $o .= html_writer::tag('div', $link, array('class' => 'moralrights_title'));
        }

##Autorisation de créer plusieurs badges avec le même nom##

**/badges/edit_form.php

Méhtode : validation

Commenter la ligne suivante :

#!php

   if ($duplicate) {
           // $errors['name'] = get_string('error:duplicatename', 'badges');
        }

##Suppression des pages de l'ancien forum dans le profile de l'utilisateur##

/mod/forum/lib.php

Méthode : mod_forum_myprofile_navigation

Commmenter les deux lignes :

#!php

$tree->add_node($node);

Modification du plugin Workshop pour ajouter un nouvel état de completion

Fichier à modifier :

1) /mod/workshop/lib.php

Ajouter la fonction suivante :

#!php

/**
 * Obtains the automatic completion state for this forum based on any conditions
 * in forum settings.
 *
 * @param object $course Course
 * @param object $cm Course-module
 * @param int $userid User ID
 * @param bool $type Type of comparison (or/and; can be used as return value if no conditions)
 * @return bool True if completed, false if not, $type if conditions not set.
 */
function workshop_get_completion_state($course,$cm,$userid,$type) {
    global $CFG,$DB;

    // Get workshop details
    if(!($workshop=$DB->get_record('workshop',array('id'=>$cm->instance)))) {
        throw new Exception("Can't find workshop {$cm->instance}");
    }

    // If completion option is enabled, evaluate it and return true/false
    if($workshop->completionevals) {
        return $workshop->completionevals <= $DB->get_field_sql("
        SELECT
            COUNT(1)
        FROM
            {workshop_assessments} wa
            INNER JOIN {workshop_submissions} ws ON wa.submissionid=ws.id
        WHERE
            wa.reviewerid=:userid AND ws.workshopid=:workshopid AND wa.grade IS NOT NULL",
            array('userid'=>$userid,'workshopid'=>$workshop->id));
    } else {
        // Completion option is not enabled so just return $type
        return $type;
    }
}

1.1 Modifier la fonction suivante :

#!php

function workshop_supports($feature) {
    switch($feature) {
        case FEATURE_GRADE_HAS_GRADE:   return true;
        case FEATURE_GROUPS:            return true;
        case FEATURE_GROUPINGS:         return true;
        case FEATURE_MOD_INTRO:         return true;
        case FEATURE_BACKUP_MOODLE2:    return true;
        case FEATURE_COMPLETION_TRACKS_VIEWS:
            return true;
        case FEATURE_COMPLETION_HAS_RULES: return true;
        case FEATURE_SHOW_DESCRIPTION:  return true;
        case FEATURE_PLAGIARISM:        return true;
        default:                        return null;
    }
}

2) /mod/workshop/locallib.php : Modifier la fonction suivante

#!php

 /**
     * Saves a raw grade for submission as calculated from the assessment form fields
     *
     * @param array $assessmentid assessment record id, must exists
     * @param mixed $grade        raw percentual grade from 0.00000 to 100.00000
     * @return false|float        the saved grade
     */
    public function set_peer_grade($assessmentid, $grade) {
        global $DB, $COURSE;

        $course = $COURSE ;

        $assessment = $DB->get_record('workshop_assessments',array('id'=>$assessmentid));
        $submission = $DB->get_record('workshop_submissions',array('id'=>$assessment->submissionid));
        $cm = get_coursemodule_from_instance('workshop', $submission->workshopid, $course->id) ;

        if(!($workshop=$DB->get_record('workshop',array('id'=>$submission->workshopid)))) {
            throw new Exception("Can't find workshop");
        }


        if (is_null($grade)) {
            return false;
        }
        $data = new stdclass();
        $data->id = $assessmentid;
        $data->grade = $grade;
        $data->timemodified = time();
        $DB->update_record('workshop_assessments', $data);

        // Update completion state
        $completion=new completion_info($course);
        if($completion->is_enabled($cm) && $workshop->completionevals) {
            $completion->update_state($cm,COMPLETION_COMPLETE);
        }
        return $grade;
    }
3) /mod/workshop/mod_form.php : Modifier le formulaire

#!php
 function add_completion_rules() {
        $mform =& $this->_form;

        $group=array();
        $group[] =& $mform->createElement('checkbox', 'completionevalenabled', '', get_string('completioneval','workshop'));
        $group[] =& $mform->createElement('text', 'completionevals', '', array('size'=>3));
        $mform->setType('completionevals',PARAM_INT);
        $mform->addGroup($group, 'completionevalsgroup', get_string('completionevalsgroup','workshop'), array(' '), false);
        $mform->disabledIf('completionevals','completionevalenabled','notchecked');

        return array('completionevalsgroup');
    }

    function completion_rule_enabled($data) {
        return (!empty($data['completionevalenabled']) && $data['completionevals']!=0);
    }

    function get_data() {
        $data = parent::get_data();
        if (!$data) {
            return $data;
        }

        if (!empty($data->completionunlocked)) {
            // Turn off completion settings if the checkboxes aren't ticked
            $autocompletion = !empty($data->completion) && $data->completion==COMPLETION_TRACKING_AUTOMATIC;
            if (empty($data->completionevalenabled) || !$autocompletion) {
                $data->completionevals = 0;
            }
        }
        return $data;
    }

4) /mod/workshop/backup/moodle2/backup_workshop_stepslib.php : Modifier le backup de l'activité

#!php

// root element describing workshop instance
        $workshop = new backup_nested_element('workshop', array('id'), array(
            'name', 'intro', 'introformat', 'instructauthors',
            'instructauthorsformat', 'instructreviewers',
            'instructreviewersformat', 'timemodified', 'phase', 'useexamples',
            'usepeerassessment', 'useselfassessment', 'grade', 'gradinggrade',
            'strategy', 'evaluation', 'gradedecimals', 'nattachments', 'submissionfiletypes',
            'latesubmissions', 'maxbytes', 'examplesmode', 'submissionstart',
            'submissionend', 'assessmentstart', 'assessmentend',
            'conclusion', 'conclusionformat', 'overallfeedbackmode',
            'overallfeedbackfiles', 'overallfeedbackfiletypes', 'overallfeedbackmaxbytes','completionevals'));

5) /mod/workshop/db/install.xml Modifier le fichier de la bdd pour ajouter ce champ à la table workshop :

#!xml

<FIELD NAME="completionevals" TYPE="int" LENGTH="9" NOTNULL="true" DEFAULT="0" SEQUENCE="false" COMMENT="Nonzero if a certain number of evals are required to mark this workshop complete for a user."/>

6) /mod/workshop/lang Modifier / créer les fichiers de lang pour le FR/EN/DE

DE :

#!php

$string['completioneval'] = 'Anzahl der Beurteilungen abgeschlossen';
$string['completionevalsgroup'] = 'Anzahl der Bewertungen';

FR :

#!php

$string['completioneval'] = 'Nombre d\'évaluation à compléter';
$string['completionevalsgroup'] = 'Nombre d\'évaluation';

EN :

#!php

$string['completioneval'] = 'Number of assessments to complete';
$string['completionevalsgroup'] = 'Number of assessments';
  • Rajouter la police pour le certificat sous : /moodecx/lib/tcpdf/fonts Ajouter Oswald et Helvetica

##Correction des warning dans les badges de cours en 3.5 (vérifier si toujours présent en 3.6)##

**/lib/badgeslib.php

Méhtode : badges_get_badges

Cast en int les deux variables $page et $perpage à cette ligne :

#!php

$records = $DB->get_records_sql($sql, $params, (int)$page * (int)$perpage, $perpage);

##Correction des warning dans le forum de cours en 3.5 (vérifier si toujours présent en 3.6)##

**/mod/forumqta/q2a/qa-include/qa-page.php

Méhtode : qa_content_prepare

Rajouter un "@" avant la méthode count() à cette ligne :

#!php

$lastcategoryid=@count($categoryids) ? end($categoryids) : null;

**/mod/forumqta/q2a/qa-include/qa-theme-base.php

Méthode : widgets

Rajouter un "@" avant la méthode count() à ces lignes :

#!php

if (@count(@$this->content['widgets'][$region][$place])) {
#!php

if (@count(@$navlink['subnav']))

Updated