original_string: public function duplicate_page($pageid) {
          global $PAGE;
          $cm = get_coursemodule_from_instance('lesson', $this->properties->id, $this->properties->course);
          $context = context_module::instance($cm->id);
          // Load the page.
          $page = $this->load_page($pageid);
          $properties = $page->properties();
          // The create method checks to see if these properties are set and if not sets them to zero, hence the unsetting here.
          if (!$properties->qoption) {
              unset($properties->qoption);
          }
          if (!$properties->layout) {
              unset($properties->layout);
          }
          if (!$properties->display) {
              unset($properties->display);
          }
  
          $properties->pageid = $pageid;
          // Add text and format into the format required to create a new page.
          $properties->contents_editor = array(
              'text' => $properties->contents,
              'format' => $properties->contentsformat
          );
          $answers = $page->get_answers();
          // Answers need to be added to $properties.
          $i = 0;
          $answerids = array();
          foreach ($answers as $answer) {
              // Needs to be rearranged to work with the create function.
              $properties->answer_editor[$i] = array(
                  'text' => $answer->answer,
                  'format' => $answer->answerformat
              );
  
              $properties->response_editor[$i] = array(
                'text' => $answer->response,
                'format' => $answer->responseformat
              );
              $answerids[] = $answer->id;
  
              $properties->jumpto[$i] = $answer->jumpto;
              $properties->score[$i] = $answer->score;
  
              $i++;
          }
          // Create the duplicate page.
          $newlessonpage = lesson_page::create($properties, $this, $context, $PAGE->course->maxbytes);
          $newanswers = $newlessonpage->get_answers();
          // Copy over the file areas as well.
          $this->copy_page_files('page_contents', $pageid, $newlessonpage->id, $context->id);
          $j = 0;
          foreach ($newanswers as $answer) {
              if (isset($answer->answer) && strpos($answer->answer, '@@PLUGINFILE@@') !== false) {
                  $this->copy_page_files('page_answers', $answerids[$j], $answer->id, $context->id);
              }
              if (isset($answer->response) && !is_array($answer->response) && strpos($answer->response, '@@PLUGINFILE@@') !== false) {
                  $this->copy_page_files('page_responses', $answerids[$j], $answer->id, $context->id);
              }
              $j++;
          }
      }
code: public function duplicate_page($pageid) {
          global $PAGE;
          $cm = get_coursemodule_from_instance('lesson', $this->properties->id, $this->properties->course);
          $context = context_module::instance($cm->id);
          // Load the page.
          $page = $this->load_page($pageid);
          $properties = $page->properties();
          // The create method checks to see if these properties are set and if not sets them to zero, hence the unsetting here.
          if (!$properties->qoption) {
              unset($properties->qoption);
          }
          if (!$properties->layout) {
              unset($properties->layout);
          }
          if (!$properties->display) {
              unset($properties->display);
          }
  
          $properties->pageid = $pageid;
          // Add text and format into the format required to create a new page.
          $properties->contents_editor = array(
              'text' => $properties->contents,
              'format' => $properties->contentsformat
          );
          $answers = $page->get_answers();
          // Answers need to be added to $properties.
          $i = 0;
          $answerids = array();
          foreach ($answers as $answer) {
              // Needs to be rearranged to work with the create function.
              $properties->answer_editor[$i] = array(
                  'text' => $answer->answer,
                  'format' => $answer->answerformat
              );
  
              $properties->response_editor[$i] = array(
                'text' => $answer->response,
                'format' => $answer->responseformat
              );
              $answerids[] = $answer->id;
  
              $properties->jumpto[$i] = $answer->jumpto;
              $properties->score[$i] = $answer->score;
  
              $i++;
          }
          // Create the duplicate page.
          $newlessonpage = lesson_page::create($properties, $this, $context, $PAGE->course->maxbytes);
          $newanswers = $newlessonpage->get_answers();
          // Copy over the file areas as well.
          $this->copy_page_files('page_contents', $pageid, $newlessonpage->id, $context->id);
          $j = 0;
          foreach ($newanswers as $answer) {
              if (isset($answer->answer) && strpos($answer->answer, '@@PLUGINFILE@@') !== false) {
                  $this->copy_page_files('page_answers', $answerids[$j], $answer->id, $context->id);
              }
              if (isset($answer->response) && !is_array($answer->response) && strpos($answer->response, '@@PLUGINFILE@@') !== false) {
                  $this->copy_page_files('page_responses', $answerids[$j], $answer->id, $context->id);
              }
              $j++;
          }
      }
code_tokens: public function duplicate_page ( $ pageid ) { global $ PAGE ; $ cm = get_coursemodule_from_instance ( 'lesson' , $ this -> properties -> id , $ this -> properties -> course ) ; $ context = context_module :: instance ( $ cm -> id ) ; // Load the page. $ page = $ this -> load_page ( $ pageid ) ; $ properties = $ page -> properties ( ) ; // The create method checks to see if these properties are set and if not sets them to zero, hence the unsetting here. if ( ! $ properties -> qoption ) { unset ( $ properties -> qoption ) ; } if ( ! $ properties -> layout ) { unset ( $ properties -> layout ) ; } if ( ! $ properties -> display ) { unset ( $ properties -> display ) ; } $ properties -> pageid = $ pageid ; // Add text and format into the format required to create a new page. $ properties -> contents_editor = array ( 'text' => $ properties -> contents , 'format' => $ properties -> contentsformat ) ; $ answers = $ page -> get_answers ( ) ; // Answers need to be added to $properties. $ i = 0 ; $ answerids = array ( ) ; foreach ( $ answers as $ answer ) { // Needs to be rearranged to work with the create function. $ properties -> answer_editor [ $ i ] = array ( 'text' => $ answer -> answer , 'format' => $ answer -> answerformat ) ; $ properties -> response_editor [ $ i ] = array ( 'text' => $ answer -> response , 'format' => $ answer -> responseformat ) ; $ answerids [ ] = $ answer -> id ; $ properties -> jumpto [ $ i ] = $ answer -> jumpto ; $ properties -> score [ $ i ] = $ answer -> score ; $ i ++ ; } // Create the duplicate page. $ newlessonpage = lesson_page :: create ( $ properties , $ this , $ context , $ PAGE -> course -> maxbytes ) ; $ newanswers = $ newlessonpage -> get_answers ( ) ; // Copy over the file areas as well. $ this -> copy_page_files ( 'page_contents' , $ pageid , $ newlessonpage -> id , $ context -> id ) ; $ j = 0 ; foreach ( $ newanswers as $ answer ) { if ( isset ( $ answer -> answer ) && strpos ( $ answer -> answer , '@@PLUGINFILE@@' ) !== false ) { $ this -> copy_page_files ( 'page_answers' , $ answerids [ $ j ] , $ answer -> id , $ context -> id ) ; } if ( isset ( $ answer -> response ) && ! is_array ( $ answer -> response ) && strpos ( $ answer -> response , '@@PLUGINFILE@@' ) !== false ) { $ this -> copy_page_files ( 'page_responses' , $ answerids [ $ j ] , $ answer -> id , $ context -> id ) ; } $ j ++ ; } }
docstring: Duplicate the lesson page.
  
  @param  int $pageid Page ID of the page to duplicate.
  @return void.
docstring_tokens: Duplicate the lesson page .