From 601b6117993335ea5a76ad4b18cf5e3cb31edc98 Mon Sep 17 00:00:00 2001
From: Phil Lello <philipl@catalyst-eu.net>
Date: Fri, 7 Mar 2014 21:54:03 +0000
Subject: [PATCH] Added utility function require_plugin which throws an
 exception if the passed plugin and optional version is
 missing.

---
 lib/moodlelib.php |   26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/lib/moodlelib.php b/lib/moodlelib.php
index 2c099ea..97d45bb 100644
--- a/lib/moodlelib.php
+++ b/lib/moodlelib.php
@@ -9723,3 +9723,29 @@ class lang_string {
         return array('forcedstring', 'string', 'lang');
     }
 }
+
+/**
+ * A convenience function that tests if a plugin is installed, and optionally checks the version
+ *
+ * @copyright 2014 Catalyst IT Europe Ltd
+ * @author Phil Lello <philipl@catalyst-eu.net>
+ *
+ * @param string $component The plugin to check for
+ * @param int $version An optional version number to check for
+ * @return void terminates with an error if the plugin is missing, or too old
+ */
+function require_plugin($component, $version = NULL) {
+
+    $pluginfo = core_plugin_manager::instance()->get_plugin_info($component);
+
+    // Check the plugin is available
+    if (is_null($pluginfo)) {
+        throw new moodle_exception('err_unknown_plugin', 'core_plugin', '', array('plugin' => $component));
+    }
+
+    // Check the version
+    if ($version && ($pluginfo->versiondisk < $version || $pluginfo->versiondb < $version)) {
+        throw new moodle_exception('err_version_plugin', 'core_plugin', '',
+            array('plugin' => $component, 'versiondisk' => $pluginfo->versiondisk, 'versiondb' => $pluginfo->versiondb, 'required' => $version));
+    }
+}
-- 
1.7.9.5

