diff --git a/change.php b/change.php
index 8865611..12a242c 100644
--- a/change.php
+++ b/change.php
@@ -23,30 +23,29 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-use \auth_outage\outage;
-use \auth_outage\outageutils;
-use \auth_outage\outagedb;
-use \auth_outage\outageform;
+use auth_outage\models\outage;
+use auth_outage\outagedb;
+use auth_outage\outagelib;
require_once('../../config.php');
require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->libdir . '/formslib.php');
-outageutils::pagesetup();
+outagelib::pagesetup();
-$mform = new outageform();
+$mform = new \auth_outage\forms\outage\edit();
if ($mform->is_cancelled()) {
redirect('/auth/outage/list.php');
} else if ($fromform = $mform->get_data()) {
- $fromform = outageutils::parseformdata($fromform);
+ $fromform = outagelib::parseformdata($fromform);
$outage = new outage($fromform);
- $id = outagedb::get()->save($outage);
+ $id = outagedb::save($outage);
redirect('/auth/outage/list.php#auth_outage_id=' . $id);
}
$id = required_param('id', PARAM_INT);
-$outage = outagedb::get()->getbyid($id);
+$outage = outagedb::getbyid($id);
if ($outage == null) {
throw new invalid_parameter_exception('Outage #' . $id . ' not found.');
}
diff --git a/classes/outagedeleteform.php b/classes/forms/outage/delete.php
similarity index 96%
rename from classes/outagedeleteform.php
rename to classes/forms/outage/delete.php
index ce9bce7..9a79076 100644
--- a/classes/outagedeleteform.php
+++ b/classes/forms/outage/delete.php
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-namespace auth_outage;
+namespace auth_outage\forms\outage;
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); // It must be included from a Moodle page.
@@ -30,7 +30,7 @@ require_once($CFG->libdir . '/formslib.php');
* @copyright Catalyst IT
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-class outagedeleteform extends \moodleform {
+class delete extends \moodleform {
/**
* {@inheritDoc}
* @see moodleform::definition()
diff --git a/classes/outageform.php b/classes/forms/outage/edit.php
similarity index 96%
rename from classes/outageform.php
rename to classes/forms/outage/edit.php
index 93041c3..21f2117 100644
--- a/classes/outageform.php
+++ b/classes/forms/outage/edit.php
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-namespace auth_outage;
+namespace auth_outage\forms\outage;
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); // It must be included from a Moodle page.
@@ -30,7 +30,7 @@ require_once($CFG->libdir . '/formslib.php');
* @copyright Catalyst IT
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-class outageform extends \moodleform {
+class edit extends \moodleform {
/**
* {@inheritDoc}
* @see moodleform::definition()
diff --git a/classes/outage.php b/classes/models/outage.php
similarity index 95%
rename from classes/outage.php
rename to classes/models/outage.php
index d167148..aca44be 100644
--- a/classes/outage.php
+++ b/classes/models/outage.php
@@ -23,7 +23,9 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-namespace auth_outage;
+namespace auth_outage\models;
+
+use auth_outage\outagelib;
class outage
{
@@ -82,7 +84,7 @@ class outage
}
if (is_object($data) || is_array($data)) {
- outageutils::data2object($data, $this);
+ outagelib::data2object($data, $this);
return;
}
diff --git a/classes/outagedb.php b/classes/outagedb.php
index 72fb454..4d1dd0c 100644
--- a/classes/outagedb.php
+++ b/classes/outagedb.php
@@ -25,43 +25,12 @@
namespace auth_outage;
+use auth_outage\models\outage;
+
final class outagedb
{
/**
- * @var outagedb Singleton reference created on first use.
- */
- private static $singleton = null;
-
- /**
- * Returns the singleton instance.
- *
- * @return outagedb The singleton object.
- */
- public static function get() {
- if (is_null(self::$singleton)) {
- self::$singleton = new outagedb();
- }
- return self::$singleton;
- }
-
- /**
- * Private clone method to prevent cloning singleton.
- *
- * @return void
- */
- private function __clone() {
- }
-
- /**
- * Private unserialize method to prevent unserializing singleton.
- *
- * @return void
- */
- private function __wakeup() {
- }
-
- /**
- * Private constructor (singleton), use outagedb::get() instead.
+ * Private constructor, use static methods instead.
*/
private function __construct() {
}
@@ -69,7 +38,7 @@ final class outagedb
/**
* Gets all outage entries.
*/
- public function getall() {
+ public static function getall() {
global $DB;
$outages = [];
@@ -83,7 +52,11 @@ final class outagedb
return $outages;
}
- public function getbyid($id) {
+ /**
+ * @param $id int Outage id to get.
+ * @return outage|null Returns the outage or null if not found.
+ */
+ public static function getbyid($id) {
global $DB;
if (!is_int($id)) {
@@ -107,7 +80,7 @@ final class outagedb
* @param outage $outage Outage to save.
* @return int Outage ID.
*/
- public function save(outage $outage) {
+ public static function save(outage $outage) {
global $DB, $USER;
// Do not change the original object.
@@ -139,7 +112,7 @@ final class outagedb
* @param $id outage Outage ID to delete
* @throws InvalidArgumentException If ID is not valid.
*/
- public function delete($id) {
+ public static function delete($id) {
global $DB;
if (!is_int($id)) {
diff --git a/classes/outageutils.php b/classes/outagelib.php
similarity index 88%
rename from classes/outageutils.php
rename to classes/outagelib.php
index 37bf9b2..d8e3543 100644
--- a/classes/outageutils.php
+++ b/classes/outagelib.php
@@ -28,7 +28,7 @@ if (!defined('MOODLE_INTERNAL')) {
* @copyright Catalyst IT
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-class outageutils
+class outagelib
{
/**
* Initializes admin pages for outage.
@@ -43,7 +43,7 @@ class outageutils
}
/**
- * Loads data from an object or array into another object.
+ * Loads data from an object or array into another object. It ensures no new fields are created in the $obj.
*
* @param $data mixed An object or array.
* @param $obj object Destination object to write the properties.
@@ -77,7 +77,13 @@ class outageutils
}
}
- public static function parseformdata($data) {
+ /**
+ * Parses data from the form ensuring it is valid for an outage object.
+ *
+ * @param $data stdClass The input data.
+ * @return stdClass The parsed data.
+ */
+ public static function parseformdata(\stdClass $data) {
if ($data->description['format'] != '1') {
throw new \InvalidArgumentException('Not implemented for format ' . $data->description['format']);
}
diff --git a/create.php b/create.php
index bd997b6..f658da1 100644
--- a/create.php
+++ b/create.php
@@ -23,24 +23,23 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-use \auth_outage\outage;
-use \auth_outage\outageutils;
-use \auth_outage\outagedb;
-use \auth_outage\outageform;
+use auth_outage\models\outage;
+use auth_outage\outagedb;
+use auth_outage\outagelib;
require_once('../../config.php');
require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->libdir . '/formslib.php');
-outageutils::pagesetup();
+outagelib::pagesetup();
-$mform = new outageform();
+$mform = new \auth_outage\forms\outage\edit();
if ($mform->is_cancelled()) {
redirect('/auth/outage/list.php');
} else if ($fromform = $mform->get_data()) {
- $fromform = outageutils::parseformdata($fromform);
+ $fromform = outagelib::parseformdata($fromform);
$outage = new outage($fromform);
- $id = outagedb::get()->save($outage);
+ $id = outagedb::save($outage);
redirect('/auth/outage/list.php#auth_outage_id=' . $id);
}
diff --git a/list.php b/list.php
index d61fec3..dd2c840 100644
--- a/list.php
+++ b/list.php
@@ -23,18 +23,16 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-use \auth_outage\outage;
-use \auth_outage\outageutils;
-use \auth_outage\outagedb;
+use auth_outage\outagedb;
+use auth_outage\outagelib;
require_once('../../config.php');
require_once($CFG->libdir . '/adminlib.php');
-$renderer = outageutils::pagesetup();
+$renderer = outagelib::pagesetup();
echo $OUTPUT->header();
-// TODO Add paging or limiting past entries displayed.
-echo $renderer->renderoutagelist(outagedb::get()->getall());
+echo $renderer->renderoutagelist(outagedb::getall());
echo $OUTPUT->footer();
diff --git a/remove.php b/remove.php
index e8e418a..b5db3f0 100644
--- a/remove.php
+++ b/remove.php
@@ -23,27 +23,26 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-use \auth_outage\outage;
-use \auth_outage\outageutils;
-use \auth_outage\outagedb;
-use \auth_outage\outagedeleteform;
+use auth_outage\models\outage;
+use auth_outage\outagedb;
+use auth_outage\outagelib;
require_once('../../config.php');
require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->libdir . '/formslib.php');
-$renderer = outageutils::pagesetup();
+$renderer = outagelib::pagesetup();
-$mform = new outagedeleteform();
+$mform = new \auth_outage\forms\outage\delete();
if ($mform->is_cancelled()) {
redirect('/auth/outage/list.php');
} else if ($fromform = $mform->get_data()) {
- outagedb::get()->delete($fromform->id);
+ outagedb::delete($fromform->id);
redirect('/auth/outage/list.php');
}
$id = required_param('id', PARAM_INT);
-$outage = outagedb::get()->getbyid($id);
+$outage = outagedb::getbyid($id);
if ($outage == null) {
throw new invalid_parameter_exception('Outage #' . $id . ' not found.');
}
diff --git a/renderer.php b/renderer.php
index d9df979..97528c8 100644
--- a/renderer.php
+++ b/renderer.php
@@ -14,8 +14,8 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-use \auth_outage\outage;
-use \auth_outage\outageform;
+use auth_outage\models\outage;
+use auth_outage\models\outageform;
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); // It must be included from a Moodle page.
diff --git a/tests/outage_test.php b/tests/outage_test.php
index d955874..fc6485c 100644
--- a/tests/outage_test.php
+++ b/tests/outage_test.php
@@ -23,7 +23,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-use \auth_outage\outage;
+use auth_outage\models\outage;
defined('MOODLE_INTERNAL') || die();
diff --git a/tests/outagedb_test.php b/tests/outagedb_test.php
index 8b20152..5226c64 100644
--- a/tests/outagedb_test.php
+++ b/tests/outagedb_test.php
@@ -23,33 +23,25 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-use \auth_outage\outage;
-use \auth_outage\outagedb;
+use auth_outage\models\outage;
+use auth_outage\outagedb;
defined('MOODLE_INTERNAL') || die();
class outagedb_test extends advanced_testcase
{
- /**
- * Make sure the db context is a singleton.
- */
- public function test_singleton() {
- self::assertSame(outagedb::get(), outagedb::get(), 'Must always get same instance.');
- }
-
/**
* Make sure we can save and update.
*/
public function test_save() {
$this->resetAfterTest(true);
- $db = outagedb::get();
// Save new outage.
- $id = $db->save($this->createoutage(1));
+ $id = outagedb::save($this->createoutage(1));
// Update it.
$outage = $this->createoutage(2);
$outage->id = $id;
- $db->save($outage);
+ outagedb::save($outage);
}
/**
@@ -57,16 +49,15 @@ class outagedb_test extends advanced_testcase
*/
public function test_getbyid() {
$this->resetAfterTest(true);
- $db = outagedb::get();
// Create something.
- $id = $db->save($this->createoutage(1));
+ $id = outagedb::save($this->createoutage(1));
// Get should work.
- $outage = $db->getbyid($id);
+ $outage = outagedb::getbyid($id);
self::assertNotNull($outage);
// Delete it.
- $db->delete($id);
+ outagedb::delete($id);
// Get should be null.
- $outage = $db->getbyid($id);
+ $outage = outagedb::getbyid($id);
self::assertNull($outage);
}
@@ -75,13 +66,12 @@ class outagedb_test extends advanced_testcase
*/
public function test_delete() {
$this->resetAfterTest(true);
- $db = outagedb::get();
// Create something.
- $id = $db->save($this->createoutage(1));
+ $id = outagedb::save($this->createoutage(1));
// Delete it.
- $db->delete($id);
+ outagedb::delete($id);
// Should not exist anymore.
- self::assertNull($db->getbyid($id));
+ self::assertNull(outagedb::getbyid($id));
}
/**
@@ -89,17 +79,16 @@ class outagedb_test extends advanced_testcase
*/
public function test_getall() {
$this->resetAfterTest(true);
- $db = outagedb::get();
$amount = 10;
// Should start empty.
- $outages = $db->getall();
+ $outages = outagedb::getall();
self::assertSame([], $outages);
// Create some stuff outages.
for ($i = 0; $i < $amount; $i++) {
- $db->save($this->createoutage($i));
+ outagedb::save($this->createoutage($i));
}
// Count entries created.
- self::assertSame($amount, count($db->getall()));
+ self::assertSame($amount, count(outagedb::getall()));
}
/**
@@ -108,20 +97,19 @@ class outagedb_test extends advanced_testcase
public function test_basiccrud() {
return;
$this->resetAfterTest(true);
- $db = outagedb::get();
// Create some outages.
$outages = [];
for ($i = 1; $i <= 10; $i++) {
$outage = $this->createoutage($i);
- $id = $db->save($outage);
+ $id = outagedb::save($outage);
$outages[$id] = $outage;
}
// With all created outages.
foreach ($outages as $id => $outage) {
// Get it.
- $inserted = $db->getbyid($id);
+ $inserted = outagedb::getbyid($id);
self::assertNotNull($inserted);
// Check its data.
foreach (['starttime', 'stoptime', 'warningduration', 'title', 'description'] as $field) {
@@ -134,14 +122,14 @@ class outagedb_test extends advanced_testcase
self::assertNotNull($inserted->modifiedby);
// Change it.
$inserted->title = 'Title ID' . $id;
- $db->save($inserted);
+ outagedb::save($inserted);
// Get it again and check data.
- $updated = $db->getbyid($id);
+ $updated = outagedb::getbyid($id);
self::assertSame('Title ID' . $id, $updated->title);
self::assertSame($inserted->description, $updated->description);
// Delete it.
- $db->delete($id);
- $deleted = $db->getbyid($id);
+ outagedb::delete($id);
+ $deleted = outagedb::getbyid($id);
self::assertNull($deleted);
}
}
diff --git a/tests/outageutils_test.php b/tests/outagelib_test.php
similarity index 89%
rename from tests/outageutils_test.php
rename to tests/outagelib_test.php
index f56d117..fbe0e74 100644
--- a/tests/outageutils_test.php
+++ b/tests/outagelib_test.php
@@ -23,12 +23,12 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-use \auth_outage\outageutils;
+use auth_outage\outagelib;
defined('MOODLE_INTERNAL') || die();
-class outageutils_test extends basic_testcase
+class outagelib_test extends basic_testcase
{
public function test_data2object() {
// Using object data, no new fields, not strict.
@@ -37,7 +37,7 @@ class outageutils_test extends basic_testcase
$obj->number = 42;
$data = new stdClass();
$data->foo = 'not bar';
- outageutils::data2object($data, $obj, false);
+ outagelib::data2object($data, $obj, false);
self::assertEquals(get_object_vars($obj), ['foo' => 'not bar', 'number' => 42], 'Invalid result.');
self::assertEquals(get_object_vars($data), ['foo' => 'not bar'], 'Data should not change.');
@@ -46,7 +46,7 @@ class outageutils_test extends basic_testcase
$obj->foo = 'bar';
$obj->number = 42;
$data = ['foo' => 'foobar', 'flag' => false];
- outageutils::data2object($data, $obj, false);
+ outagelib::data2object($data, $obj, false);
self::assertEquals(get_object_vars($obj), ['foo' => 'foobar', 'number' => 42], 'Invalid result.');
// Using object data, no new fields, strict.
@@ -55,7 +55,7 @@ class outageutils_test extends basic_testcase
$obj->number = 42;
$data = new stdClass();
$data->foo = 'not bar';
- outageutils::data2object($data, $obj, true);
+ outagelib::data2object($data, $obj, true);
self::assertEquals(get_object_vars($obj), ['foo' => 'not bar', 'number' => 42], 'Invalid result.');
self::assertEquals(get_object_vars($data), ['foo' => 'not bar'], 'Data should not change.');
@@ -65,7 +65,7 @@ class outageutils_test extends basic_testcase
$obj->number = 42;
$data = ['foo' => 'foobar', 'flag' => false];
try {
- outageutils::data2object($data, $obj, true);
+ outagelib::data2object($data, $obj, true);
$this->fail('Exception was expected.');
}
catch (InvalidArgumentException $e){