1<?php 2/** 3 * Group module (also called a group widget) 4 * 5 * @uses $vars['title'] The title of the module 6 * @uses $vars['content'] The module content 7 * @uses $vars['all_link'] A link to list content 8 * @uses $vars['add_link'] A link to create content 9 * @uses $vars['entity'] The ElggGroup for which this module is shown (default: page owner) 10 * @uses $vars['entity_type'] The entity type to use to generate title, links and content 11 * @uses $vars['entity_subtype'] The entity subtype to use to generate title, links and content 12 * @uses $vars['no_results'] The no result text to show in the listing (default: true => elgg_echo('notfound')) 13 */ 14 15$group = elgg_extract('entity', $vars, elgg_get_page_owner_entity()); 16if (!$group instanceof ElggGroup) { 17 return; 18} 19 20$entity_type = elgg_extract('entity_type', $vars); 21$entity_subtype = elgg_extract('entity_subtype', $vars); 22 23$can_default = (!empty($entity_type) && !empty($entity_subtype)); 24 25// module title 26$title = elgg_extract('title', $vars); 27if (!isset($title) && $can_default) { 28 $title = elgg_echo("collection:{$entity_type}:{$entity_subtype}:group"); 29} 30 31// link to listing page 32$menu = ''; 33$all_link = elgg_extract('all_link', $vars); 34if (!isset($all_link) && $can_default) { 35 $all_href = elgg_generate_url("collection:{$entity_type}:{$entity_subtype}:group", [ 36 'guid' => $group->guid, 37 ]); 38 if (!empty($all_href)) { 39 $all_link = elgg_view('output/url', [ 40 'href' => $all_href, 41 'text' => elgg_echo('link:view:all'), 42 'is_trusted' => true, 43 ]); 44 } 45} 46 47if (!empty($all_link)) { 48 $menu = elgg_format_element('span', [ 49 'class' => 'groups-widget-viewall', 50 ], $all_link); 51} 52 53// content 54$content = elgg_extract('content', $vars); 55if (!isset($content) && $can_default) { 56 elgg_push_context('widgets'); 57 58 $content = elgg_list_entities([ 59 'type' => $entity_type, 60 'subtype' => $entity_subtype, 61 'container_guid' => $group->guid, 62 'limit' => 6, 63 'full_view' => false, 64 'pagination' => false, 65 'preload_containers' => false, 66 'no_results' => elgg_extract('no_results', $vars, true), 67 ]); 68 69 elgg_pop_context(); 70} 71 72// link to add page 73$footer = ''; 74 75$add_link = elgg_extract('add_link', $vars); 76if (!isset($add_link) && $can_default) { 77 $add_href = elgg_generate_url("add:{$entity_type}:{$entity_subtype}", [ 78 'guid' => $group->guid, 79 ]); 80 if (!empty($add_href)) { 81 $add_link = elgg_view('output/url', [ 82 'href' => $add_href, 83 'text' => elgg_echo("add:{$entity_type}:{$entity_subtype}"), 84 'is_trusted' => true, 85 ]); 86 } 87} 88 89if (!empty($add_link)) { 90 $check_type = $entity_type ?: 'all'; 91 $check_subtype = $entity_subtype ?: 'all'; 92 93 if ($group->canWriteToContainer(0, $check_type, $check_subtype)) { 94 $footer = elgg_format_element('span', [ 95 'class' => 'elgg-widget-more', 96 ], $add_link); 97 } 98} 99 100// draw module 101echo elgg_view_module('info', $title, $content, [ 102 'menu' => $menu, 103 'class' => 'elgg-module-group', 104 'footer' => $footer, 105]); 106