Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 /**
  * 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();})');
 }