From 45a1a16bfc0d56d3f5596c61057d4b7da7a0ad81 Mon Sep 17 00:00:00 2001 From: David Monllao Date: Mon, 23 Feb 2015 15:53:41 +0800 Subject: [PATCH] MDL-48595 log: Replacing current interfaces Deprecating sql_internal_reader and sql_select_reader in favour of the new interfaces including get_events_select_iterator. --- lib/classes/log/sql_internal_reader.php | 13 ++- lib/classes/log/sql_internal_table_reader.php | 51 +++++++++++ lib/classes/log/sql_reader.php | 90 +++++++++++++++++++ lib/classes/log/sql_select_reader.php | 10 +++ lib/upgrade.txt | 2 + 5 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 lib/classes/log/sql_internal_table_reader.php create mode 100644 lib/classes/log/sql_reader.php diff --git a/lib/classes/log/sql_internal_reader.php b/lib/classes/log/sql_internal_reader.php index dbd1b825f6b..d5fcc3da63e 100644 --- a/lib/classes/log/sql_internal_reader.php +++ b/lib/classes/log/sql_internal_reader.php @@ -26,11 +26,20 @@ namespace core\log; defined('MOODLE_INTERNAL') || die(); +/** + * Sql internal reader. + * + * @deprecated since Moodle 2.9 MDL-48595 - please do not use this interface any more. + * @see sql_reader + * @todo MDL-49291 This will be deleted in Moodle 3.1. + * @package core + * @copyright 2013 Petr Skoda {@link http://skodak.org} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ interface sql_internal_reader extends sql_select_reader { /** - * Returns name of the table or database view that - * holds the log data in standardised format. + * Returns name of the table or database view that holds the log data in standardised format. * * Note: this table must be used for reading only, * it is strongly recommended to use this in complex reports only. diff --git a/lib/classes/log/sql_internal_table_reader.php b/lib/classes/log/sql_internal_table_reader.php new file mode 100644 index 00000000000..fd94eb72a1d --- /dev/null +++ b/lib/classes/log/sql_internal_table_reader.php @@ -0,0 +1,51 @@ +. + +/** + * Log storage sql internal table reader interface. + * + * @package core + * @copyright 2015 David Monllao + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace core\log; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Sql internal table reader. + * + * Replaces sql_internal_reader and extends sql_reader. + * + * @since Moodle 2.9 + * @package core + * @copyright 2015 David Monllao + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +interface sql_internal_table_reader extends sql_reader { + + /** + * Returns name of the table or database view that + * holds the log data in standardised format. + * + * Note: this table must be used for reading only, + * it is strongly recommended to use this in complex reports only. + * + * @return string + */ + public function get_internal_log_table_name(); +} diff --git a/lib/classes/log/sql_reader.php b/lib/classes/log/sql_reader.php new file mode 100644 index 00000000000..92aa4528900 --- /dev/null +++ b/lib/classes/log/sql_reader.php @@ -0,0 +1,90 @@ +. + +/** + * Log iterator reader interface. + * + * @package core + * @copyright 2015 David Monllao + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace core\log; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Log iterator reader interface. + * + * Replaces sql_select_reader adding functions + * to return iterators. + * + * @since Moodle 2.9 + * @package core + * @copyright 2015 David Monllao + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +interface sql_reader extends reader { + + /** + * Fetch records using given criteria. + * + * @param string $selectwhere + * @param array $params + * @param string $sort + * @param int $limitfrom + * @param int $limitnum + * @return \core\event\base[] + */ + public function get_events_select($selectwhere, array $params, $sort, $limitfrom, $limitnum); + + /** + * Return number of events matching given criteria. + * + * @param string $selectwhere + * @param array $params + * @return int + */ + public function get_events_select_count($selectwhere, array $params); + + /** + * Fetch records using the given criteria returning an traversable list of events. + * + * Note that the returned object is Traversable, not Iterator, as we are returning + * EmptyIterator if we know there are no events, and EmptyIterator does not implement + * Countable {@link https://bugs.php.net/bug.php?id=60577} so valid() should be checked + * in any case instead of a count(). + * + * Also note that the traversable object contains a recordset and it is very important + * that you close it after using it. + * + * @param string $selectwhere + * @param array $params + * @param string $sort + * @param int $limitfrom + * @param int $limitnum + * @return \Traversable|\core\event\base[] Returns an iterator containing \core\event\base objects. + */ + public function get_events_select_iterator($selectwhere, array $params, $sort, $limitfrom, $limitnum); + + /** + * Returns an event from the log data. + * + * @param stdClass $data Log data + * @return \core\event\base + */ + public function get_log_event($data); +} diff --git a/lib/classes/log/sql_select_reader.php b/lib/classes/log/sql_select_reader.php index 216399e44d1..65b94e1a9de 100644 --- a/lib/classes/log/sql_select_reader.php +++ b/lib/classes/log/sql_select_reader.php @@ -26,6 +26,16 @@ namespace core\log; defined('MOODLE_INTERNAL') || die(); +/** + * Sql select reader. + * + * @deprecated since Moodle 2.9 MDL-48595 - please do not use this interface any more. + * @see sql_reader + * @todo MDL-49291 This will be deleted in Moodle 3.1. + * @package core + * @copyright 2013 Petr Skoda {@link http://skodak.org} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ interface sql_select_reader extends reader { /** * Fetch records using given criteria. diff --git a/lib/upgrade.txt b/lib/upgrade.txt index 671df7dc50f..ac6ef96f767 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -20,6 +20,8 @@ information provided here is intended especially for developers. * html_table: new API for adding captions to tables (new field, $table->caption) and subsequently hiding said captions from sighted users using accesshide (enabled using $table->captionhide). * The authorization procedure in the mdeploy.php script has been improved. The script now relies on the main config.php when deploying an available update. +* sql_internal_reader and sql_select_reader interfaces have been deprecated in favour of sql_internal_table_reader + and sql_reader. === 2.8 === -- 2.43.0