original_string: public function make_clone() {
          global $DB, $USER, $PAGE;
  
          $fordb = new stdClass();
          foreach (get_object_vars($this) as $k => $v) {
              $fordb->{$k} = $v;
          }
  
          $fordb->name = get_string('copyof', 'badges', $this->name);
          $fordb->status = BADGE_STATUS_INACTIVE;
          $fordb->usercreated = $USER->id;
          $fordb->usermodified = $USER->id;
          $fordb->timecreated = time();
          $fordb->timemodified = time();
          unset($fordb->id);
  
          if ($fordb->notification > 1) {
              $fordb->nextcron = badges_calculate_message_schedule($fordb->notification);
          }
  
          $criteria = $fordb->criteria;
          unset($fordb->criteria);
  
          if ($new = $DB->insert_record('badge', $fordb, true)) {
              $newbadge = new badge($new);
  
              // Copy badge image.
              $fs = get_file_storage();
              if ($file = $fs->get_file($this->get_context()->id, 'badges', 'badgeimage', $this->id, '/', 'f1.png')) {
                  if ($imagefile = $file->copy_content_to_temp()) {
                      badges_process_badge_image($newbadge, $imagefile);
                  }
              }
  
              // Copy badge criteria.
              foreach ($this->criteria as $crit) {
                  $crit->make_clone($new);
              }
  
              // Copy endorsement.
              $endorsement = $this->get_endorsement();
              if ($endorsement) {
                  unset($endorsement->id);
                  $endorsement->badgeid = $new;
                  $newbadge->save_endorsement($endorsement);
              }
  
              // Copy alignments.
              $alignments = $this->get_alignments();
              foreach ($alignments as $alignment) {
                  unset($alignment->id);
                  $alignment->badgeid = $new;
                  $newbadge->save_alignment($alignment);
              }
  
              // Copy related badges.
              $related = $this->get_related_badges(true);
              if (!empty($related)) {
                  $newbadge->add_related_badges(array_keys($related));
              }
  
              // Trigger event, badge duplicated.
              $eventparams = array('objectid' => $new, 'context' => $PAGE->context);
              $event = \core\event\badge_duplicated::create($eventparams);
              $event->trigger();
  
              return $new;
          } else {
              throw new moodle_exception('error:clone', 'badges');
              return false;
          }
      }
code: public function make_clone() {
          global $DB, $USER, $PAGE;
  
          $fordb = new stdClass();
          foreach (get_object_vars($this) as $k => $v) {
              $fordb->{$k} = $v;
          }
  
          $fordb->name = get_string('copyof', 'badges', $this->name);
          $fordb->status = BADGE_STATUS_INACTIVE;
          $fordb->usercreated = $USER->id;
          $fordb->usermodified = $USER->id;
          $fordb->timecreated = time();
          $fordb->timemodified = time();
          unset($fordb->id);
  
          if ($fordb->notification > 1) {
              $fordb->nextcron = badges_calculate_message_schedule($fordb->notification);
          }
  
          $criteria = $fordb->criteria;
          unset($fordb->criteria);
  
          if ($new = $DB->insert_record('badge', $fordb, true)) {
              $newbadge = new badge($new);
  
              // Copy badge image.
              $fs = get_file_storage();
              if ($file = $fs->get_file($this->get_context()->id, 'badges', 'badgeimage', $this->id, '/', 'f1.png')) {
                  if ($imagefile = $file->copy_content_to_temp()) {
                      badges_process_badge_image($newbadge, $imagefile);
                  }
              }
  
              // Copy badge criteria.
              foreach ($this->criteria as $crit) {
                  $crit->make_clone($new);
              }
  
              // Copy endorsement.
              $endorsement = $this->get_endorsement();
              if ($endorsement) {
                  unset($endorsement->id);
                  $endorsement->badgeid = $new;
                  $newbadge->save_endorsement($endorsement);
              }
  
              // Copy alignments.
              $alignments = $this->get_alignments();
              foreach ($alignments as $alignment) {
                  unset($alignment->id);
                  $alignment->badgeid = $new;
                  $newbadge->save_alignment($alignment);
              }
  
              // Copy related badges.
              $related = $this->get_related_badges(true);
              if (!empty($related)) {
                  $newbadge->add_related_badges(array_keys($related));
              }
  
              // Trigger event, badge duplicated.
              $eventparams = array('objectid' => $new, 'context' => $PAGE->context);
              $event = \core\event\badge_duplicated::create($eventparams);
              $event->trigger();
  
              return $new;
          } else {
              throw new moodle_exception('error:clone', 'badges');
              return false;
          }
      }
code_tokens: public function make_clone ( ) { global $ DB , $ USER , $ PAGE ; $ fordb = new stdClass ( ) ; foreach ( get_object_vars ( $ this ) as $ k => $ v ) { $ fordb -> { $ k } = $ v ; } $ fordb -> name = get_string ( 'copyof' , 'badges' , $ this -> name ) ; $ fordb -> status = BADGE_STATUS_INACTIVE ; $ fordb -> usercreated = $ USER -> id ; $ fordb -> usermodified = $ USER -> id ; $ fordb -> timecreated = time ( ) ; $ fordb -> timemodified = time ( ) ; unset ( $ fordb -> id ) ; if ( $ fordb -> notification > 1 ) { $ fordb -> nextcron = badges_calculate_message_schedule ( $ fordb -> notification ) ; } $ criteria = $ fordb -> criteria ; unset ( $ fordb -> criteria ) ; if ( $ new = $ DB -> insert_record ( 'badge' , $ fordb , true ) ) { $ newbadge = new badge ( $ new ) ; // Copy badge image. $ fs = get_file_storage ( ) ; if ( $ file = $ fs -> get_file ( $ this -> get_context ( ) -> id , 'badges' , 'badgeimage' , $ this -> id , '/' , 'f1.png' ) ) { if ( $ imagefile = $ file -> copy_content_to_temp ( ) ) { badges_process_badge_image ( $ newbadge , $ imagefile ) ; } } // Copy badge criteria. foreach ( $ this -> criteria as $ crit ) { $ crit -> make_clone ( $ new ) ; } // Copy endorsement. $ endorsement = $ this -> get_endorsement ( ) ; if ( $ endorsement ) { unset ( $ endorsement -> id ) ; $ endorsement -> badgeid = $ new ; $ newbadge -> save_endorsement ( $ endorsement ) ; } // Copy alignments. $ alignments = $ this -> get_alignments ( ) ; foreach ( $ alignments as $ alignment ) { unset ( $ alignment -> id ) ; $ alignment -> badgeid = $ new ; $ newbadge -> save_alignment ( $ alignment ) ; } // Copy related badges. $ related = $ this -> get_related_badges ( true ) ; if ( ! empty ( $ related ) ) { $ newbadge -> add_related_badges ( array_keys ( $ related ) ) ; } // Trigger event, badge duplicated. $ eventparams = array ( 'objectid' => $ new , 'context' => $ PAGE -> context ) ; $ event = \ core \ event \ badge_duplicated :: create ( $ eventparams ) ; $ event -> trigger ( ) ; return $ new ; } else { throw new moodle_exception ( 'error:clone' , 'badges' ) ; return false ; } }
docstring: Creates and saves a clone of badge with all its properties.
  Clone is not active by default and has 'Copy of' attached to its name.
  
  @return int ID of new badge.
docstring_tokens: Creates and saves a clone of badge with all its properties . Clone is not active by default and has Copy of attached to its name .