Example #1
0
 public function copy_contents($template)
 {
     $artefactcopies = array();
     // Correspondence between original artefact ids and id of the copy
     $this->set('numcolumns', $template->get('numcolumns'));
     $this->set('numrows', $template->get('numrows'));
     $this->set('layout', $template->get('layout'));
     if ($template->get('owner') == 0 && $template->get('type') == 'portfolio') {
         $this->set('description', '');
     } else {
         $this->set('description', $this->copy_description($template, $artefactcopies));
     }
     $this->set('tags', $template->get('tags'));
     $this->set('columnsperrow', $template->get('columnsperrow'));
     $blocks = get_records_array('block_instance', 'view', $template->get('id'));
     $numcopied = array('blocks' => 0);
     if ($blocks) {
         foreach ($blocks as $b) {
             safe_require('blocktype', $b->blocktype);
             $oldblock = new BlockInstance($b->id, $b);
             if ($oldblock->copy($this, $template, $artefactcopies)) {
                 $numcopied['blocks']++;
             }
         }
     }
     // Go back and fix up artefact references in the new artefacts so
     // they also point to new artefacts.
     if ($artefactcopies) {
         foreach ($artefactcopies as $oldid => $copyinfo) {
             $a = artefact_instance_from_id($copyinfo->newid);
             $a->update_artefact_references($this, $template, $artefactcopies, $oldid);
             $a->commit();
         }
     }
     $numcopied['artefacts'] = count($artefactcopies);
     return $numcopied;
 }