/** * Entity tools page handler * * @param array $page url parts * * @return true|void */ function entity_tools_page_handler($page) { $supported = array_keys(entity_tools_get_supported_entity_types()); $subtype = elgg_extract(2, $page, $supported[0]); switch ($page[0]) { case 'owner': case 'group': echo elgg_view_resource('entity_tools/list', ['subtype' => $subtype]); return true; } }
/** * Add menu items to the filter menu * * @param string $hook hook name * @param string $type hook type * @param array $return current return value * @param array $params parameters * * @return array */ public static function registerFilter($hook, $type, $return, $params) { if (!elgg_in_context('entities')) { return; } $page_owner = elgg_get_page_owner_entity(); if (elgg_instanceof($page_owner, 'group')) { $href_prefix = "entities/group/{$page_owner->getGUID()}/"; } else { $href_prefix = "entities/owner/{$page_owner->username}/"; } $types = array_keys(entity_tools_get_supported_entity_types()); if (empty($types)) { return; } $return = []; $priority = 10; foreach ($types as $type) { $return[] = \ElggMenuItem::factory(['name' => $type, 'text' => elgg_echo("item:object:{$type}"), 'href' => $href_prefix . $type, 'priority' => $priority]); $priority += 10; } return $return; }
<?php $entity = elgg_extract('entity', $vars); if (!$entity instanceof \ElggEntity) { return; } $supported = entity_tools_get_supported_entity_types(); $class = $supported[$entity->getSubtype()]; $migrate = new $class($entity); $row_data = []; $title = $entity->getDisplayName(); if (empty($title)) { $title = $entity->description; } $row_data[] = elgg_view('output/url', ['text' => elgg_get_excerpt($title, 30), 'title' => $title, 'href' => $entity->getURL()]); if ($migrate->canBackDate()) { $row_data[] = elgg_view('input/datetimepicker', ['name' => "params[{$entity->guid}][time_created]", 'value' => $entity->time_created, 'timestamp' => true, 'readonly' => true]); } if ($migrate->canChangeOwner()) { $row_data[] = elgg_view('input/userpicker', ['name' => "params[{$entity->guid}][owner_guid]", 'values' => $entity->getOwnerGUID(), 'limit' => 1]); } if ($migrate->canChangeContainer()) { $view = 'input/entity_tools_container'; if (elgg_view_exists("{$view}/{$entity->getSubtype()}")) { $view = "{$view}/{$entity->getSubtype()}"; } $row_data[] = elgg_view($view, ['entity' => $entity, 'name' => "params[{$entity->guid}][container_guid]", 'value' => $entity->getContainerGUID()]); } $row = implode('</td><td>', $row_data); echo "<tr><td>{$row}</td></tr>";
<?php // only when logged in elgg_gatekeeper(); // depending on plugin setting who can view this page entity_tools_gatekeeper(); // make sure we can edit the page owner $page_owner = elgg_get_page_owner_entity(); if (empty($page_owner) || !$page_owner->canEdit()) { register_error(elgg_echo('pageownerunavailable', [$page_owner->guid])); forward(REFERER); } $subtype = elgg_extract('subtype', $vars); // get supported types $supported_types = array_keys(entity_tools_get_supported_entity_types()); if (!in_array($subtype, $supported_types)) { register_error(elgg_echo('entity_tools:error:unsupported_subtype', [$subtype])); forward(REFERER); } $title_text = elgg_echo('entity_tools:page:owner:title', [$page_owner->name, elgg_echo('item:object:' . $subtype)]); $content = elgg_view_form('entity_tools/update_entities', [], ['subtype' => $subtype, 'owner' => $page_owner]); // build page $page_data = elgg_view_layout('content', array('title' => $title_text, 'content' => $content)); // show page echo elgg_view_page($title_text, $page_data);