/
deleted.php
114 lines (102 loc) · 4.21 KB
/
deleted.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
/**
* @package midgard.admin.asgard
* @author The Midgard Project, http://www.midgard-project.org
* @copyright The Midgard Project, http://www.midgard-project.org
* @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License
*/
use midgard\portable\storage\connection;
use midcom\datamanager\datamanager;
/**
* Simple object deleted page
*
* @package midgard.admin.asgard
*/
class midgard_admin_asgard_handler_object_deleted extends midcom_baseclasses_components_handler
{
use midgard_admin_asgard_handler;
/**
* Handler for deleted objects
*
* @param mixed $handler_id The ID of the handler.
* @param string $guid The object's GUID
* @param array $data The local request data.
*/
public function _handler_deleted($handler_id, $guid, array &$data)
{
$this->add_breadcrumb($this->router->generate('welcome'), $this->_l10n->get($this->_component));
if (midcom::get()->auth->admin) {
$data['object'] = $this->prepare_admin_view($guid);
if ($data['object']->metadata->deleted == false) {
return new midcom_response_relocate($this->router->generate('object_open', ['guid' => $data['object']->guid]));
}
midgard_admin_asgard_plugin::bind_to_object($data['object'], $handler_id, $data);
}
$data['view_title'] = $this->_l10n->get('object deleted');
$this->add_breadcrumb("", $data['view_title']);
return $this->get_response();
}
private function prepare_admin_view($guid)
{
$type = connection::get_em()
->createQuery('SELECT r.typename from midgard:midgard_repligard r WHERE r.guid = ?1')
->setParameter(1, $guid)
->getSingleScalarResult();
$dba_type = midcom::get()->dbclassloader->get_midcom_class_name_for_mgdschema_object($type);
$qb = midcom::get()->dbfactory->new_query_builder($dba_type);
$qb->include_deleted();
$qb->add_constraint('guid', '=', $guid);
$object = $qb->get_result(0);
$this->prepare_dm($type, $object);
$this->_request_data['asgard_toolbar']->add_item([
MIDCOM_TOOLBAR_URL => $this->router->generate('trash_type', ['type' => $type]),
MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('undelete'),
MIDCOM_TOOLBAR_GLYPHICON => 'recycle',
MIDCOM_TOOLBAR_POST => true,
MIDCOM_TOOLBAR_POST_HIDDENARGS => [
'undelete[]' => $guid
]
]);
$this->_request_data['asgard_toolbar']->add_item([
MIDCOM_TOOLBAR_URL => $this->router->generate('trash_type', ['type' => $type]),
MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('purge'),
MIDCOM_TOOLBAR_GLYPHICON => 'trash',
MIDCOM_TOOLBAR_POST => true,
MIDCOM_TOOLBAR_POST_HIDDENARGS => [
'undelete[]' => $guid,
'purge' => true
]
]);
$this->add_breadcrumb($this->router->generate('trash'), $this->_l10n->get('trash'));
$this->add_breadcrumb($this->router->generate('trash_type', ['type' => $type]), midgard_admin_asgard_plugin::get_type_label($dba_type));
$label = midcom_helper_reflector::get($object)->get_object_label($object);
$this->add_breadcrumb('', $label);
return $object;
}
/**
* Loads the schemadb from the helper class
*
* @param string $type
* @param midcom_core_dbaobject $object
*/
private function prepare_dm($type, midcom_core_dbaobject $object)
{
$schema_helper = new midgard_admin_asgard_schemadb($object, $this->_config, $type);
$schemadb = $schema_helper->create([]);
$datamanager = new datamanager($schemadb);
$datamanager
->set_storage($object)
->get_form(); // currently needed to add head elements
$this->_request_data['datamanager'] = $datamanager;
}
/**
* Output the style element for deleted objects
*
* @param mixed $handler_id The ID of the handler.
* @param array $data The local request data.
*/
public function _show_deleted($handler_id, array &$data)
{
midcom_show_style('midgard_admin_asgard_object_deleted');
}
}