From b2e85faa92353806eca373e3977b2cf10bf8c6b7 Mon Sep 17 00:00:00 2001
From: Francois Marier <francois@catalyst.net.nz>
Date: Wed, 12 Mar 2008 17:34:47 +1300
Subject: [PATCH] mod/certificate: Add support for Face-to-face linked activities

---
 mod/certificate/lib.php |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/mod/certificate/lib.php b/mod/certificate/lib.php
index cf7159a..b36f645 100644
--- a/mod/certificate/lib.php
+++ b/mod/certificate/lib.php
@@ -1473,6 +1473,19 @@ function certificate_get_possible_linked_activities(&$course, $certid) {
         }
     }
 
+    if (record_exists('modules', 'name', 'facetoface')) {
+        $sql = 'SELECT DISTINCT cm.id,a.name ' .
+               'FROM '.$CFG->prefix.'course_modules cm,'.$CFG->prefix.'facetoface a,'.
+               $CFG->prefix.'modules m '.
+               'WHERE cm.course = '.$course->id.' AND cm.instance = a.id AND '.
+               'm.name = \'facetoface\' AND cm.module = m.id AND a.course = '.$course->id;
+        if ($mods = get_records_sql_menu($sql)) {
+            foreach ($mods as $key => $name) {
+                $lacts[$key] = 'Face-to-face: '.$name;
+            }
+        }
+    }
+
     return $lacts;
 }
 
@@ -1488,7 +1501,7 @@ function certificate_get_linked_activities($certid) {
 
 function certificate_activity_completed(&$activity, &$cm, $userid=0) {
     global $CFG, $USER;
-    static $quizid, $questid, $assid, $lessid, $feedid, $survid, $scormid;
+    static $quizid, $questid, $assid, $lessid, $feedid, $survid, $scormid, $facetofaceid;
 
     if (!$userid) {
         $userid = $USER->id;
@@ -1502,6 +1515,7 @@ function certificate_activity_completed(&$activity, &$cm, $userid=0) {
         $feedid = get_field('modules', 'id', 'name', 'feedback');
         $survid = get_field('modules', 'id', 'name', 'survey');
         $scormid = get_field('modules', 'id', 'name', 'scorm');
+        $facetofaceid = get_field('modules', 'id', 'name', 'facetoface');
     }
 
     /// If the module is not visible, it can't be accessed by students (assignment module
@@ -1567,6 +1581,16 @@ function certificate_activity_completed(&$activity, &$cm, $userid=0) {
     
             }
 
+        } else if ($cm->module == $facetofaceid) {
+
+            require_once($CFG->libdir.'/gradelib.php');
+            $grading_info = grade_get_grades($cm->course, 'mod', 'facetoface', $cm->instance, $userid);
+            if (empty($grading_info)) {
+                return false;
+            }
+            $grade = $grading_info->items[0]->grades[$userid]->grade;
+            return ($grade >= (int)$activity->linkgrade);
+
         } else {
             return true;
         }
-- 
1.5.2.5

