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; }
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); }