123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <?php
- elgg_register_event_handler('init', 'system', 'crud_init');
- function crud_url_handler($entity) {
- if (!$entity->getOwnerEntity()) {
-
- return FALSE;
- }
-
-
- return $entity->getSubtype()."/view/{$entity->guid}";
- }
- function crud_page_handler($page) {
- elgg_load_library('elgg:crud');
- if (!isset($page[0])) {
- $page[0] = 'all';
- }
- $page_url = current_page_url();
- $site_url = elgg_get_site_url();
- $current_url = str_replace($site_url, "", $page_url);
- $crud_type = current(explode('/', $current_url));
- $crud_handler = crud_get_handler($crud_type);
- $crud_module = $crud_handler->module;
- elgg_push_breadcrumb(elgg_echo($crud_module), '');
- switch ($page[0]) {
- case 'owner':
- case 'group':
- crud_handle_list_page($crud_handler, $page[1]);
- break;
- case 'add':
- crud_handle_edit_page($crud_handler, 'add', $page[1]);
- break;
- case 'edit':
- crud_handle_edit_page($crud_handler, 'edit', $page[1]);
- break;
- case 'view':
- crud_handle_view_page($crud_handler, $page[1]);
- break;
- case 'edit_general':
- crud_handle_edit_page($crud_handler, 'edit_general', $page[1]);
- break;
- default:
- return false;
- }
- return true;
- }
- function crud_register_type($name, $variables, $class=NULL) {
- crud_register_subtype($name, $class);
- $object = crud_get_handler($name);
- $prev_variables = elgg_get_config($name);
- if (!empty($prev_variables)) {
- $variables = array_merge($prev_variables, $variables);
- }
- elgg_set_config($name, $variables);
- $object->variables = $variables;
- if (empty($prev_variables)) {
-
- elgg_register_entity_type('object', $name);
-
- elgg_register_page_handler($name, 'crud_page_handler');
-
- elgg_register_entity_url_handler('object', $name, 'crud_url_handler');
- $action_path = elgg_get_plugins_path() . 'crud/actions/crud';
- elgg_register_action("$name/save", "$action_path/save.php");
- elgg_register_action("$name/delete", "$action_path/delete.php");
-
- elgg_register_plugin_hook_handler('entity:icon:url', 'object', 'crud_icon_url_override');
- }
- return $object;
- }
- function crud_icon_url_override($hook, $type, $returnvalue, $params) {
- $entity = $params['entity'];
- if ($entity instanceof CrudObject) {
- $size = $params['size'];
- if (!$size)
- $icon = 'tiny';
- $icon = $entity->getCrudIcon($size);
- }
- return $icon;
- }
- function crud_get_handler($name) {
- global $CONFIG;
- if (isset($CONFIG->crud->handlers[$name])) {
- return $CONFIG->crud->handlers[$name];
- }
- return $CONFIG->crud->handlers[$name] = new CrudTemplate($name);
- }
- function crud_owner_block_menu($hook, $type, $return, $params) {
- global $CONFIG;
-
- foreach($CONFIG->crud->handlers as $handler_name => $handler) {
- if (!$handler->owner_menu) {
- continue;
- }
-
- if ($handler->owner_menu != 'group' && elgg_instanceof($params['entity'], 'user')) {
- $url = "$handler_name/owner/{$params['entity']->username}";
- $item = new ElggMenuItem($handler_name, elgg_echo($handler_name), $url);
- $return[] = $item;
- } elseif ($handler->owner_menu != 'user') {
- if ($handler->module_check)
- $enable = "{$handler->module_check}_enable";
- else
- $enable = "{$handler->module}_enable";
- if ($params['entity']->$enable == "yes") {
- $owner_label = ($handler->owner_menu == 'group') ? 'owner' : 'group';
- $url = "$handler_name/$owner_label/{$params['entity']->guid}/all";
- $item = new ElggMenuItem($handler_name, elgg_echo("$handler_name:group"), $url);
- $return[] = $item;
- }
- }
- }
- return $return;
- }
- function crud_init() {
- global $CONFIG;
- $CONFIG->crud = new stdClass();
- $CONFIG->crud->handlers = array();
-
- elgg_register_library('elgg:crud', elgg_get_plugins_path() . 'crud/lib/crud.php');
-
- elgg_extend_view('css/elgg', 'crud/css');
-
- $action_path = elgg_get_plugins_path() . 'crud/actions/crud';
- elgg_register_action('crud/save', "$action_path/save.php");
- elgg_register_action('crud/delete', "$action_path/delete.php");
- elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'crud_owner_block_menu');
- }
- function crud_register_subtype($name, $class_name=NULL) {
- if (empty($class_name))
- $class_name = "CrudObject";
- if (get_subtype_id('object', $name)) {
- if (get_subtype_class('object', $name) != $class_name) {
- update_subtype('object', $name, $class_name);
- }
- } else {
- add_subtype('object', $name, $class_name);
- }
- }
|