/** * Handle the message copying interface * * @return boolean Indicating success */ public function _handler_copy($handler_id, array $args, array &$data) { $this->_topic->require_do('midgard:create'); $this->_message = new org_openpsa_directmarketing_campaign_message_dba($args[0]); $guid = $args[0]; $this->_schemadb = midcom_helper_datamanager2_schema::load_database($this->_config->get('schemadb_message_copy')); $this->_controller = midcom_helper_datamanager2_controller::create('nullstorage'); $this->_controller->schemadb =& $this->_schemadb; $this->_controller->initialize(); $data['targets'] = array(); switch ($this->_controller->process_form()) { case 'save': $copy = new midcom_helper_reflector_copy(); $campaigns = $this->_controller->datamanager->types['campaign']->convert_to_storage(); $copy_objects = array(); foreach ($campaigns as $campaign_id) { try { $campaign = new org_openpsa_directmarketing_campaign_dba($campaign_id); } catch (midcom_error $e) { continue; } $new_object = $copy->copy_object($this->_message->guid, $campaign); $guid = $new_object->guid; // Store for later use $copy_objects[] = $new_object; } if (count($copy_objects) > 1) { $data['targets'] =& $copy_objects; break; } // Fall through // Fall through case 'cancel': return new midcom_response_relocate("message/{$guid}/"); } midcom::get('head')->set_pagetitle($this->_message->title); $this->bind_view_to_object($this->_message); $this->_update_breadcrumb_line($handler_id); }