function get_object_path() { $object_path = array(); if (!is_object($this->_object)) { return $object_path; } $object_path[] = $this->_object->guid; $parent = $this->_object->get_parent(); while (is_object($parent) && $parent->guid) { $object_path[] = $parent->guid; $parent = $parent->get_parent(); } return array_reverse($object_path); }
/** * Object display * * @param mixed $handler_id The ID of the handler. * @param Array $args The argument list. * @param Array &$data The local request data. * @return boolean Indicating success. */ public function _handler_delete($handler_id, array $args, array &$data) { $this->_load_object($args[0]); $this->_object->require_do('midgard:delete'); midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin'); $type = $this->_object->__mgdschema_class_name__; $relocate_url = $type; $cancel_url = "__mfa/asgard/object/{$this->_request_data['default_mode']}/{$this->_object->guid}/"; $class_extends = $this->_config->get('class_extends'); if (is_array($class_extends) && array_key_exists($type, $class_extends)) { $relocate_url = $class_extends[$type]; } // Redirect person deletion to user management if (is_a($this->_object, 'midcom_db_person')) { $relocate_url = "../asgard_midcom.admin.user/"; $cancel_url = "__mfa/asgard_midcom.admin.user/edit/{$args[0]}/"; } $this->_prepare_request_data(); $this->_load_schemadb(); $this->_datamanager = new midcom_helper_datamanager2_datamanager($this->_schemadb); $this->_datamanager->set_schema('object'); if (!$this->_datamanager->set_storage($this->_object)) { throw new midcom_error("Failed to create a DM2 instance for object {$this->_object->guid}."); } if (array_key_exists('midgard_admin_asgard_deleteok', $_REQUEST)) { // Deletion confirmed. $parent = $this->_object->get_parent(); if (array_key_exists('midgard_admin_asgard_disablercs', $_REQUEST)) { $this->_object->_use_rcs = false; } if (!$this->_object->delete_tree()) { throw new midcom_error("Failed to delete object {$args[0]}, last Midgard error was: " . midcom_connection::get_error_string()); } if (is_a($this->_object, 'midcom_db_style') || is_a($this->_object, 'midcom_db_element')) { mgd_cache_invalidate(); } // Update the index $indexer = midcom::get('indexer'); $indexer->delete($this->_object->guid); if ($parent) { return new midcom_response_relocate(midcom_connection::get_url('self') . "__mfa/asgard/object/{$data['default_mode']}/{$parent->guid}/"); } return new midcom_response_relocate(midcom_connection::get_url('self') . "__mfa/asgard/" . $relocate_url); } if (array_key_exists('midgard_admin_asgard_deletecancel', $_REQUEST)) { // Redirect to default object mode page. return new midcom_response_relocate($cancel_url); } midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data); // Add Thickbox midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/midgard.admin.asgard/object_browser.js'); midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/jQuery/thickbox/jquery-thickbox-3.1.pack.js'); $this->add_stylesheet(MIDCOM_STATIC_URL . '/jQuery/thickbox/thickbox.css', 'screen'); midcom::get('head')->add_jscript('var tb_pathToImage = "' . MIDCOM_STATIC_URL . '/jQuery/thickbox/loadingAnimation.gif"'); // Add jQuery file for the checkbox operations midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/midgard.admin.asgard/jquery-copytree.js'); midcom::get('head')->add_jscript('jQuery(document).ready(function(){jQuery("#midgard_admin_asgard_copytree").tree_checker();})'); }