Example #1
0
 private function _duplicateNode($id, $newParentId = null)
 {
     // Load the node data
     $node = new Pagstructure($id);
     // Duplicate node
     $duplicateNode = $node->createRow($node->__toArray());
     $duplicateNode->id = 0;
     $duplicateNode->ishome = 0;
     // avoid two homepage
     $duplicateNode->status = 'draft';
     // unpublish the copy
     if ($newParentId !== null) {
         $duplicateNode->parent_id = $newParentId;
     }
     $duplicateNode->datecreated = new Zend_Db_Expr("NOW()");
     $duplicateNode->datemodified = new Zend_Db_Expr("NOW()");
     $duplicateNode->who_modified = Sydney_Tools::who();
     $duplicateNode->save();
     // Duplicate node content
     $page = new Pagdivspage();
     $pageDivs = $page->getDivs($id, false);
     PagdivspageOp::resetFictivePagDivsOrder();
     foreach ($pageDivs as $pageDiv) {
         Pagdivspage::duplicate($pageDiv['pagdivs_id'], $duplicateNode->id, $pageDiv['order_pagstructure_pagdiv']);
     }
     // Access right to duplicate?
     // Menu presence to duplicate?
     // Duplicate child, if any
     $kids = $node->getKids($id);
     if (count($kids) > 0) {
         foreach ($kids as $kid) {
             $this->_duplicateNode($kid->id, $duplicateNode->id);
         }
     }
     return $duplicateNode->id;
 }
Example #2
0
 public function duplicateAction()
 {
     $dbId = $this->_getParam('id', null);
     $request = $this->getRequest();
     $status = 0;
     if (null == $dbId) {
         $msg = 'A problem occur.';
     } else {
         if ('pages' == $this->eModule) {
             // Soucis : il faudrait récuperer l'ordre du type de contenu
             $result = Pagdivspage::duplicate($dbId, $request->pagstructureid);
             $traceMsg = 'trace.event.duplicate_content_pages';
         } else {
             $result = Pagdivsnews::duplicate($dbId, $request->pagstructureid);
             $traceMsg = 'trace.event.duplicate_content_news';
         }
         if (false == $result) {
             $msg = 'Unknow status';
         } else {
             $msg = 'Element ' . $result;
             $status = 1;
             Sydney_Db_Trace::add($traceMsg, $request->getModuleName(), 'pagdivs', $request->getActionName(), $result, $request->pagstructureid);
         }
     }
     $this->view->ResultSet = array('message' => $msg, 'status' => $status, 'dbid' => $result, 'modal' => false);
 }