コード例 #1
0
ファイル: DocumentController.php プロジェクト: gotcms/gotcms
 /**
  * Paste document
  *
  * @return \Zend\View\Model\JsonModel
  */
 public function pasteAction()
 {
     $parentId = $this->getRouteMatch()->getParam('id', null);
     $session = $this->getSession();
     if (!empty($parentId)) {
         $parentDocument = DocumentModel::fromId($parentId);
         if (empty($parentDocument)) {
             return $this->returnJson(array('success' => false));
         }
     }
     if (!empty($session['document-cut'])) {
         $document = DocumentModel::fromId($session['document-cut']);
         if (empty($document)) {
             return $this->returnJson(array('success' => false));
         }
         if (!empty($parentDocument)) {
             $availableChildren = $parentDocument->getDocumentType()->getDependencies();
             if (!in_array($document->getDocumentType()->getId(), $availableChildren)) {
                 return $this->returnJson(array('success' => false));
             }
         }
         $searchDocument = DocumentModel::fromUrlKey($document->getUrlKey(), $parentId);
         if (!empty($searchDocument)) {
             return $this->returnJson(array('success' => false));
         }
         $document->setParentId($parentId);
         $document->save();
         unset($session['document-cut']);
         return $this->returnJson(array('success' => true));
     } elseif (!empty($session['document-copy'])) {
         $urlKey = $this->getRequest()->getQuery('url_key');
         $searchDocument = DocumentModel::fromUrlKey($urlKey, $parentId);
         if (!empty($searchDocument)) {
             return $this->returnJson(array('success' => false));
         }
         $document = DocumentModel::fromId($session['document-copy']);
         if (empty($document)) {
             return $this->returnJson(array('success' => false));
         }
         if (!empty($parentDocument)) {
             $availableChildren = $parentDocument->getDocumentType()->getDependencies();
             if (!in_array($document->getDocumentType()->getId(), $availableChildren)) {
                 return $this->returnJson(array('success' => false));
             }
         }
         $copyDocument = new DocumentModel();
         $copyDocumentProperties = new Property\Collection();
         $copyDocumentProperties->load(null, null, $document->getId());
         $copyDocument->addData($document->getData());
         $copyDocument->setData('id', null);
         $copyDocument->setParentId($parentId);
         $copyDocument->setName($this->getRequest()->getQuery('name'));
         $copyDocument->setUrlKey($urlKey);
         $copyDocument->save();
         foreach ($copyDocumentProperties->getProperties() as $property) {
             $value = $property->getValueModel();
             if (empty($value)) {
                 continue;
             }
             $copyProperty = new Property\Value\Model();
             $copyProperty->addData($value->getData());
             $copyProperty->setData('id', null);
             $copyProperty->setDocumentId($copyDocument->getId());
             $copyProperty->save();
         }
         return $this->returnJson(array('success' => true));
     } else {
         return $this->returnJson(array('success' => false));
     }
 }