From 1db4c6c89de9c3e6d628ced7d44aa73c56cac232 Mon Sep 17 00:00:00 2001 From: Carlos Alvarado Date: Mon, 4 Jan 2021 17:53:47 -0500 Subject: [PATCH] Plugin: ReportByAuthor: Fix Edit lp item - refs BT#17943 --- main/lp/learnpath.class.php | 44 ++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/main/lp/learnpath.class.php b/main/lp/learnpath.class.php index b983f318b6..2dd9f75b84 100755 --- a/main/lp/learnpath.class.php +++ b/main/lp/learnpath.class.php @@ -7335,7 +7335,7 @@ class learnpath case 'dir': case 'asset': case 'sco': - if (isset($_GET['view']) && $_GET['view'] == 'build') { + if (isset($_GET['view']) && $_GET['view'] == 'build') { $return .= $this->display_manipulate($item_id, $row['item_type']); $return .= $this->display_item_form( $row['item_type'], @@ -7749,6 +7749,7 @@ class learnpath $form->addHidden('type', TOOL_QUIZ); $form->addHidden('post_time', time()); + $form = $this->getAutorLpItem($form); $form->setDefaults($defaults); return '
'.$form->returnForm().'
'; @@ -8110,6 +8111,7 @@ class learnpath } $form->addHidden('type', TOOL_FORUM); $form->addHidden('post_time', time()); + $form = $this->getAutorLpItem($form); $form->setDefaults($defaults); return '
'.$form->returnForm().'
'; @@ -8314,6 +8316,7 @@ class learnpath $form->addHidden('type', TOOL_THREAD); $form->addHidden('post_time', time()); + $form = $this->getAutorLpItem($form); $form->setDefaults($defaults); return $form->returnForm(); @@ -8963,6 +8966,7 @@ class learnpath } $form->addElement('hidden', 'type', TOOL_DOCUMENT); $form->addElement('hidden', 'post_time', time()); + $form = $this->getAutorLpItem($form); $form->setDefaults($defaults); return $form->returnForm(); @@ -9254,6 +9258,7 @@ class learnpath $form->addElement('hidden', 'type', TOOL_READOUT_TEXT); $form->addElement('hidden', 'post_time', time()); + $form = $this->getAutorLpItem($form); $form->setDefaults($defaults); return $form->returnForm(); @@ -9602,6 +9607,7 @@ class learnpath } $form->addHidden('type', TOOL_LINK); $form->addHidden('post_time', time()); + $form = $this->getAutorLpItem($form); $form->setDefaults($defaults); return '
'.$form->returnForm().'
'; @@ -9774,6 +9780,7 @@ class learnpath $form->addHidden('type', TOOL_STUDENTPUBLICATION); $form->addHidden('post_time', time()); + $form = $this->getAutorLpItem($form); $form->setDefaults(['title' => $item_title]); $return = '
'; @@ -14165,4 +14172,39 @@ EOD; return ''; } + + /** + * Gets the form to evaluate if it exists contains the extra field extra_authorlpitem to establish authors when + * editing an item of an LP. Returns the form with the authors' setting. It must be set before the setDefault. + * + * @param FormValidator $form + * @return FormValidator + */ + private function getAutorLpItem($form ){ + /** @var FormValidator $form */ + if ($form->hasElement('extra_authorlpitem')) { + /** @var HTML_QuickForm_select $author */ + $author = $form->getElement('extra_authorlpitem'); + $options = []; + $field = new ExtraField('user'); + $authorLp = $field->get_handler_field_info_by_field_variable('authorlp'); + $idExtraField = (int) (isset($authorLp['id']) ? $authorLp['id'] : 0); + if ($idExtraField != 0) { + $extraFieldValueUser = new ExtraFieldValue('user'); + $arrayExtraFieldValueUser = $extraFieldValueUser->get_item_id_from_field_variable_and_field_value( + $authorLp['variable'], + 1, + true, + false, + true + ); + foreach ($arrayExtraFieldValueUser as $item) { + $teacher = api_get_user_info($item['item_id']); + $options[$teacher['id']] = $teacher['complete_name']; + } + } + $author->setOptions($options); + } + return $form; + } }