public function loadArticle(Article &$destination, Article $src, $skipSlug = false, $skipMetaData = false) { $destination->setContent($src->getContent())->setTitle($src->getTitle())->setExcerpt($src->getExcerpt())->setExcerptPhoto($src->getExcerptPhoto())->setAuthor($src->getAuthor())->setCategories($src->getCategories())->setTags($src->getTags()); if (!$skipMetaData) { //remove old metaData foreach ($destination->getMetaData() as $destMeta) { if ($src->getMetaByKey($destMeta->getKey()) === false) { $destination->removeMetaData($destMeta); } } //add new metaData foreach ($src->getMetaData() as $srcMeta) { if ($destination->hasMetaData($srcMeta) === false && $srcMeta->getKey() != 'writing_locked') { $destMeta = $destination->getMetaByKey($srcMeta->getKey()); if ($destMeta === false) { $metaDataClass = $this->metaDataClass; $destMeta = new $metaDataClass(); } $destMeta->setKey($srcMeta->getKey())->setValue($srcMeta->getValue())->setArticle($destination); $destination->addMetaData($destMeta); } } } if (!$skipSlug) { $destination->setSlug($src->getSlug()); } }