From 5bbada53e3b786a2ecccd6b6c8ee5fc9d52730f2 Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Fri, 10 Mar 2017 10:51:32 +0100 Subject: [PATCH] MDL-58217 mod_feedback: API changes to allow generators We include a new function set_date at item level so we can add the data instead using the forms. --- mod/feedback/item/feedback_item_class.php | 13 +++++++++++++ mod/feedback/item/info/lib.php | 3 ++- mod/feedback/item/label/lib.php | 3 ++- mod/feedback/item/multichoice/lib.php | 3 ++- mod/feedback/item/multichoicerated/lib.php | 3 ++- mod/feedback/item/numeric/lib.php | 3 ++- mod/feedback/item/textarea/lib.php | 3 ++- mod/feedback/item/textfield/lib.php | 3 ++- 8 files changed, 27 insertions(+), 7 deletions(-) diff --git a/mod/feedback/item/feedback_item_class.php b/mod/feedback/item/feedback_item_class.php index 92eb10a4265..ec8294da471 100644 --- a/mod/feedback/item/feedback_item_class.php +++ b/mod/feedback/item/feedback_item_class.php @@ -55,12 +55,25 @@ abstract class feedback_item_base { * @return bool */ public function get_data() { + if ($this->item !== null) { + return true; + } if ($this->item = $this->item_form->get_data()) { return true; } return false; } + /** + * Set the item data (to be used by data generators). + * + * @param stdClass $itemdata the item data to set + * @since Moodle 3.3 + */ + public function set_data($itemdata) { + $this->item = $itemdata; + } + /** * Creates and returns an instance of the form for editing the item * diff --git a/mod/feedback/item/info/lib.php b/mod/feedback/item/info/lib.php index b96772cff27..3df76d23ff3 100644 --- a/mod/feedback/item/info/lib.php +++ b/mod/feedback/item/info/lib.php @@ -81,9 +81,10 @@ class feedback_item_info extends feedback_item_base { public function save_item() { global $DB; - if (!$item = $this->item_form->get_data()) { + if (!$this->get_data()) { return false; } + $item = $this->item; if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item diff --git a/mod/feedback/item/label/lib.php b/mod/feedback/item/label/lib.php index 6fa83bf5472..9fabd5126d0 100644 --- a/mod/feedback/item/label/lib.php +++ b/mod/feedback/item/label/lib.php @@ -89,9 +89,10 @@ class feedback_item_label extends feedback_item_base { public function save_item() { global $DB; - if (!$item = $this->item_form->get_data()) { + if (!$this->get_data()) { return false; } + $item = $this->item; if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item diff --git a/mod/feedback/item/multichoice/lib.php b/mod/feedback/item/multichoice/lib.php index d3b628bc16a..e9205ff5ac8 100644 --- a/mod/feedback/item/multichoice/lib.php +++ b/mod/feedback/item/multichoice/lib.php @@ -71,9 +71,10 @@ class feedback_item_multichoice extends feedback_item_base { public function save_item() { global $DB; - if (!$item = $this->item_form->get_data()) { + if (!$this->get_data()) { return false; } + $item = $this->item; if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item diff --git a/mod/feedback/item/multichoicerated/lib.php b/mod/feedback/item/multichoicerated/lib.php index 8be2faa97e8..8f80a5294a5 100644 --- a/mod/feedback/item/multichoicerated/lib.php +++ b/mod/feedback/item/multichoicerated/lib.php @@ -76,9 +76,10 @@ class feedback_item_multichoicerated extends feedback_item_base { public function save_item() { global $DB; - if (!$item = $this->item_form->get_data()) { + if (!$this->get_data()) { return false; } + $item = $this->item; if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item diff --git a/mod/feedback/item/numeric/lib.php b/mod/feedback/item/numeric/lib.php index add58cb88ae..2cddf274c94 100644 --- a/mod/feedback/item/numeric/lib.php +++ b/mod/feedback/item/numeric/lib.php @@ -76,9 +76,10 @@ class feedback_item_numeric extends feedback_item_base { public function save_item() { global $DB; - if (!$item = $this->item_form->get_data()) { + if (!$this->get_data()) { return false; } + $item = $this->item; if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item diff --git a/mod/feedback/item/textarea/lib.php b/mod/feedback/item/textarea/lib.php index 30172ca5f7a..6e9f5a901c9 100644 --- a/mod/feedback/item/textarea/lib.php +++ b/mod/feedback/item/textarea/lib.php @@ -76,9 +76,10 @@ class feedback_item_textarea extends feedback_item_base { public function save_item() { global $DB; - if (!$item = $this->item_form->get_data()) { + if (!$this->get_data()) { return false; } + $item = $this->item; if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item diff --git a/mod/feedback/item/textfield/lib.php b/mod/feedback/item/textfield/lib.php index cf0b3b0b1b2..c491f0b648f 100644 --- a/mod/feedback/item/textfield/lib.php +++ b/mod/feedback/item/textfield/lib.php @@ -73,9 +73,10 @@ class feedback_item_textfield extends feedback_item_base { public function save_item() { global $DB; - if (!$item = $this->item_form->get_data()) { + if (!$this->get_data()) { return false; } + $item = $this->item; if (isset($item->clone_item) AND $item->clone_item) { $item->id = ''; //to clone this item