Esempio n. 1
0
 /**
  * Create and return a cloned copy of the given Field
  *
  * @param Field|Saveable $item Item to clone
  * @return bool|Saveable $item Returns the new clone on success, or false on failure
  * @throws WireException
  *
  */
 public function ___clone(Saveable $item)
 {
     $item = $item->type->cloneField($item);
     // don't clone system flags
     if ($item->flags & Field::flagSystem || $item->flags & Field::flagPermanent) {
         $item->flags = $item->flags | Field::flagSystemOverride;
         if ($item->flags & Field::flagSystem) {
             $item->flags = $item->flags & ~Field::flagSystem;
         }
         if ($item->flags & Field::flagPermanent) {
             $item->flags = $item->flags & ~Field::flagPermanent;
         }
         $item->flags = $item->flags & ~Field::flagSystemOverride;
     }
     // don't clone the 'global' flag
     if ($item->flags & Field::flagGlobal) {
         $item->flags = $item->flags & ~Field::flagGlobal;
     }
     return parent::___clone($item);
 }
 /**
  * Create and return a cloned copy of this template
  *
  * Note that this also clones the Fieldgroup if the template being cloned has it's own named fieldgroup.
  *
  * @param Template|Saveable $item Item to clone
  * @param string $name
  * @return bool|Saveable|Template $item Returns the new clone on success, or false on failure
  *
  */
 public function ___clone(Saveable $item, $name = '')
 {
     $original = $item;
     $item = clone $item;
     if ($item->flags & Template::flagSystem) {
         // we want to avoid creating clones that have system flags
         $item->flags = $item->flags | Template::flagSystemOverride;
         $item->flags = $item->flags & ~Template::flagSystem;
         $item->flags = $item->flags & ~Template::flagSystemOverride;
     }
     $item->id = 0;
     // note this must be after removing system flags
     $fieldgroup = $item->fieldgroup;
     if ($fieldgroup->name == $item->name) {
         // if the fieldgroup and the item have the same name, we'll also clone the fieldgroup
         $fieldgroup = $this->wire('fieldgroups')->clone($fieldgroup, $name);
         $item->fieldgroup = $fieldgroup;
     }
     $item = parent::___clone($item, $name);
     if ($item && $item->id && !$item->altFilename) {
         // now that we have a clone, lets also clone the template file, if it exists
         $path = $this->wire('config')->paths->templates;
         $file = $path . $item->name . '.' . $this->wire('config')->templateExtension;
         if ($original->filenameExists() && is_writable($path) && !file_exists($file)) {
             if (copy($original->filename, $file)) {
                 $item->filename = $file;
             }
         }
     }
     return $item;
 }