1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /**
- * Display the latest related comments
- *
- * Generally used in a sidebar.
- *
- * @uses $vars['subtypes'] Object subtype string or array of subtypes
- * @uses $vars['owner_guid'] The owner of the content being commented on
- * @uses $vars['container_guid'] The container of the content being commented on
- * @uses $vars['limit'] The number of comments to display
- */
- $options = array(
- 'type' => 'object',
- 'subtype' => 'comment',
- 'limit' => elgg_extract('limit', $vars, 4),
- 'wheres' => array(),
- 'preload_owners' => true,
- 'distinct' => false,
- );
- $owner_guid = elgg_extract('owner_guid', $vars);
- $container_guid = elgg_extract('container_guid', $vars);
- $subtypes = elgg_extract('subtypes', $vars);
- if ($owner_guid || $container_guid || $subtypes) {
- $db_prefix = elgg_get_config('dbprefix');
- // Join on the entities table to check container subtype and/or owner
- $options['joins'] = array("JOIN {$db_prefix}entities ce ON e.container_guid = ce.guid");
- }
- // If owner is defined, view only the comments that have
- // been posted on objects owned by that user
- if ($owner_guid) {
- $options['wheres'][] = "ce.owner_guid = $owner_guid";
- }
- // If container is defined, view only the comments that have
- // been posted on objects placed inside that container
- if ($container_guid) {
- $options['wheres'][] = "ce.container_guid = $container_guid";
- }
- // If subtypes are defined, view only the comments that have been
- // posted on objects that belong to any of those subtypes
- if ($subtypes) {
- if (is_array($subtypes)) {
- $subtype_ids = array();
- foreach ($subtypes as $subtype) {
- $id = (int)get_subtype_id('object', $subtype);
- if ($id) {
- $subtype_ids[] = $id;
- }
- }
- if ($subtype_ids) {
- $subtype_string = implode(',', $subtype_ids);
- $options['wheres'][] = "ce.subtype IN ($subtype_string)";
- } else {
- // subtype ids do not exist so cannot display comments
- $options['wheres'][] = "1 = -1";
- }
- } else {
- $subtype_id = (int)get_subtype_id('object', $subtypes);
- $options['wheres'][] = "ce.subtype = $subtype_id";
- }
- }
- $title = elgg_echo('generic_comments:latest');
- $comments = elgg_get_entities($options);
- if ($comments) {
- $body = elgg_view('page/components/list', array(
- 'items' => $comments,
- 'pagination' => false,
- 'list_class' => 'elgg-latest-comments',
- 'full_view' => false,
- ));
- } else {
- $body = '<p>' . elgg_echo('generic_comment:none') . '</p>';
- }
- echo elgg_view_module('aside', $title, $body);
|