protected function renderTable($limit, $offset = 0)
 {
     static $count;
     static $iterator;
     $options = ['query' => sanitize_string($this->option('keyword')), 'guids' => $this->option('guid') ?: ELGG_ENTITIES_ANY_VALUE, 'types' => $this->option('type') ?: 'object', 'subtypes' => $this->option('subtype') ?: ELGG_ENTITIES_ANY_VALUE, 'limit' => $limit, 'offset' => (int) $offset, 'order_by' => 'e.guid ASC'];
     if ($this->option('keyword')) {
         $results = elgg_trigger_plugin_hook('search', $this->option('type') ?: 'object', $options, []);
         $count = $results['count'];
         $batch = $results['entities'];
     } else {
         $options['count'] = true;
         if (!$count) {
             $count = elgg_get_entities($options);
         }
         unset($options['count']);
         $batch = new ElggBatch('elgg_get_entities', $options);
     }
     if (!$count) {
         $this->write('<comment>No entities to display</comment>');
         return;
     }
     $headers = ['#', 'GUID', 'Type', 'Title/name', 'Description', 'Owner', 'Container', 'Access'];
     if ($this->option('full-view')) {
         $headers[] = 'Metadata';
     }
     $table = new Table($this->output);
     $table->setHeaders($headers);
     foreach ($batch as $entity) {
         /* @var $entity \ElggEntity */
         $row = [$iterator, $entity->guid, ($subtype = $entity->getSubtype()) ? elgg_echo("item:{$entity->type}:{$subtype}") : elgg_echo("item:{$entity->type}"), elgg_get_excerpt($entity->getDisplayName(), 25), elgg_get_excerpt($entity->description, 25), ($owner = $entity->getOwnerEntity()) ? '[' . $owner->guid . '] ' . elgg_get_excerpt($owner->getDisplayName(), 25) : '', ($container = $entity->getContainerEntity()) ? '[' . $container->guid . '] ' . elgg_get_excerpt($container->getDisplayName(), 25) : '', '[' . $entity->access_id . '] ' . elgg_get_excerpt(get_readable_access_level($entity->access_id), 25)];
         if ($this->option('full-view')) {
             $metadata = new \ElggBatch('elgg_get_metadata', ['guids' => $entity->guid, 'limit' => 0]);
             $metatable = [];
             foreach ($metadata as $md) {
                 $name = $md->name;
                 $values = (array) $md->value;
                 foreach ($values as $value) {
                     $metatable[] = "{$name}: {$value}";
                 }
             }
             $row[] = implode("\n", $metatable);
         }
         $table->addRow($row);
         $table->addRow(new TableSeparator());
         $iterator++;
     }
     $table->render();
     if ($count > $limit + $offset) {
         $helper = $this->getHelper('question');
         $question = new ConfirmationQuestion('Load next batch [y,n]?', true);
         if (!$helper->ask($this->input, $this->output, $question)) {
             return;
         }
         $this->renderTable($limit, $limit + $offset);
     }
 }
Example #2
0
 /**
  * Show the group access status indicator
  *
  * @param string          $hook         the name of the hook
  * @param string          $type         the type of the hook
  * @param \ElggMenuItem[] $return_value current return vaue
  * @param array           $params       supplied params
  *
  * @return void|\ElggMenuItem[]
  */
 public static function showGroupHiddenIndicator($hook, $type, $return_value, $params)
 {
     $entity = elgg_extract('entity', $params);
     if (!$entity instanceof \ElggGroup) {
         return;
     }
     if (!group_tools_show_hidden_indicator($entity)) {
         return;
     }
     $access_id_string = get_readable_access_level($entity->access_id);
     $text = elgg_format_element('span', ['title' => $access_id_string], elgg_view_icon('eye'));
     $return_value[] = \ElggMenuItem::factory(['name' => 'hidden_indicator', 'text' => $text, 'href' => false, 'priority' => 1]);
     return $return_value;
 }
Example #3
0
<?php

/**
 * Displays HTML for entity access levels.
 * Requires an entity because some special logic for containers is used.
 *
 * @uses int $vars['entity'] - The entity whose access ID to display.
 */
//sort out the access level for display
if (isset($vars['entity']) && elgg_instanceof($vars['entity'])) {
    $access_id = $vars['entity']->access_id;
    $access_class = 'elgg-access';
    $access_id_string = get_readable_access_level($access_id);
    // if within a group or shared access collection display group name and open/closed membership status
    // @todo have a better way to do this instead of checking against subtype / class.
    $container = $vars['entity']->getContainerEntity();
    if ($container && $container instanceof ElggGroup) {
        // we decided to show that the item is in a group, rather than its actual access level
        // not required. Group ACLs are prepended with "Group: " when written.
        //$access_id_string = elgg_echo('groups:group') . $container->name;
        $membership = $container->membership;
        if ($membership == ACCESS_PUBLIC) {
            $access_class .= ' elgg-access-group-open';
        } else {
            $access_class .= ' elgg-access-group-closed';
        }
        // @todo this is plugin specific code in core. Should be removed.
    } elseif ($container && $container->getSubtype() == 'shared_access') {
        $access_class .= ' shared_collection';
    } elseif ($access_id == ACCESS_PRIVATE) {
        $access_class .= ' elgg-access-private';
Example #4
0
 public static function getAccess(PropertyInterface $prop, $object)
 {
     $key = $prop->getAttributeName();
     $modes = array_flip($prop->getEnumOptions());
     return array('id' => $object->{$key}, 'label' => elgg_extract($key, $modes, get_readable_access_level($object->{$key})));
 }
foreach ($annotations as $ann) {
    $hidden = elgg_view('input/hidden', array('name' => "{$name}[id][{$index}]", 'value' => $ann->id, 'data-reset' => true));
    $hidden .= elgg_view('input/hidden', array('name' => "{$name}[name][{$index}]", 'value' => $ann->name ? $ann->name : $name));
    $hidden .= elgg_view('input/hidden', array('name' => "{$name}[owner_guid][{$index}]", 'value' => $ann->owner_guid ? $ann->owner_guid : elgg_get_logged_in_user_guid()));
    $input_vars = $field->getInputVars($entity);
    $input_vars['name'] = "{$name}[value][{$index}]";
    $input_vars['value'] = $ann->value;
    $input_vars['data-reset'] = true;
    $input_vars['placeholder'] = $label;
    $type = $field->getType();
    $view = $field->getInputView();
    $input = elgg_view($view, $input_vars);
    $show_access = $field->hasAccessInput();
    $access = '';
    if (is_int($show_access)) {
        $access .= '<span class="elgg-access">' . get_readable_access_level($access_id) . '</span>';
        $access_id = $show_access;
        $access_type = 'hidden';
    } else {
        $access_id = $ann->access_id ? $ann->access_id : $entity->guid ? $entity->access_id : get_default_access();
        if ($show_access === true && $type !== 'hidden') {
            $access_type = 'access';
        } else {
            $access_type = 'hidden';
        }
    }
    $access .= elgg_view("input/{$access_type}", array('name' => "{$name}[access_id][{$index}]", 'value' => $access_id));
    if ($type == 'hidden') {
        echo $hidden . $access . $input;
        continue;
    }
/**
 * Change some menu items to icons
 *
 * @param string         $hook         the name of the hook
 * @param string         $type         the type of the hook
 * @param ElggMenuItem[] $return_value current return value
 * @param mixed          $params       supplied params
 *
 * @return ElggMenuItem[]
 */
function theme_haarlem_intranet_entity_menu_icons($hook, $type, $return_value, $params)
{
    if (empty($return_value) || !is_array($return_value)) {
        return $return_value;
    }
    if (empty($params) || !is_array($params)) {
        return $return_value;
    }
    $entity = elgg_extract('entity', $params);
    if (empty($entity) || !elgg_instanceof($entity)) {
        return $return_value;
    }
    $site = elgg_get_site_entity();
    $container = $entity->getContainerEntity();
    foreach ($return_value as $menu_item) {
        switch ($menu_item->getName()) {
            case 'edit':
                if (!$menu_item->getTooltip()) {
                    $menu_item->setTooltip($menu_item->getText());
                }
                $menu_item->setPriority(1);
                $menu_item->setText(elgg_view_icon('pencil'));
                break;
            case 'access':
                $access_id_string = get_readable_access_level($entity->access_id);
                $access_id_string = htmlspecialchars($access_id_string, ENT_QUOTES, 'UTF-8', false);
                $menu_item->setTooltip($access_id_string);
                $menu_item->setHref('#');
                switch ($entity->access_id) {
                    case ACCESS_PRIVATE:
                        $menu_item->setText(elgg_view_icon('minus-circle'));
                        break;
                    case ACCESS_LOGGED_IN:
                        $menu_item->setText(elgg_view_icon('circle-o-notch'));
                        break;
                    default:
                        if ($site instanceof Subsite && $entity->access_id == $site->getACL()) {
                            // subsite
                            $menu_item->setText(elgg_view_icon('circle-o'));
                        }
                        if ($container instanceof ElggGroup && $entity->access_id == $container->group_acl) {
                            // group
                            $menu_item->setText(elgg_view_icon('dot-circle-o'));
                        }
                        break;
                }
                break;
            case 'history':
                $menu_item->setTooltip($menu_item->getText());
                $menu_item->setText(elgg_view_icon('clock-o'));
                break;
        }
    }
}
Example #7
0
/**
 * Modify the entity menu.
 *
 * @param string $hook         the 'register' hook
 * @param string $type         for the 'menu:entity' menu
 * @param array  $return_value the menu items to show
 * @param array  $params       params to help extend the menu items
 *
 * @return ElggMenuItem[] a list of menu items
 */
function group_tools_menu_entity_handler($hook, $type, $return_value, $params)
{
    $result = $return_value;
    if (!empty($params) && is_array($params)) {
        $entity = elgg_extract("entity", $params);
        $page_owner = elgg_get_page_owner_entity();
        if (elgg_in_context("group_tools_related_groups") && !empty($page_owner) && elgg_instanceof($page_owner, "group") && $page_owner->canEdit() && elgg_instanceof($entity, "group")) {
            // remove related group
            $result[] = ElggMenuItem::factory(array("name" => "related_group", "text" => elgg_echo("group_tools:related_groups:entity:remove"), "href" => "action/group_tools/remove_related_groups?group_guid=" . $page_owner->getGUID() . "&guid=" . $entity->getGUID(), "confirm" => elgg_echo("question:areyousure")));
        } elseif (elgg_in_context("widgets_groups_show_members") && elgg_instanceof($entity, "group")) {
            // number of members
            $num_members = $entity->getMembers(10, 0, true);
            $result[] = ElggMenuItem::factory(array("name" => "members", "text" => $num_members . " " . elgg_echo("groups:member"), "href" => false, "priority" => 200));
        } elseif (elgg_instanceof($entity, "object", "groupforumtopic") && $entity->canEdit()) {
            $result[] = ElggMenuItem::factory(array("name" => "status_change_open", "text" => elgg_echo("open"), "confirm" => elgg_echo("group_tools:discussion:confirm:open"), "href" => "action/discussion/toggle_status?guid=" . $entity->getGUID(), "is_trusted" => true, "priority" => 200, "item_class" => $entity->status == "closed" ? "" : "hidden"));
            $result[] = ElggMenuItem::factory(array("name" => "status_change_close", "text" => elgg_echo("close"), "confirm" => elgg_echo("group_tools:discussion:confirm:close"), "href" => "action/discussion/toggle_status?guid=" . $entity->getGUID(), "is_trusted" => true, "priority" => 201, "item_class" => $entity->status == "closed" ? "hidden" : ""));
        } elseif (elgg_instanceof($entity, "group") && group_tools_show_hidden_indicator($entity)) {
            $access_id_string = get_readable_access_level($entity->access_id);
            $access_id_string = htmlspecialchars($access_id_string, ENT_QUOTES, "UTF-8", false);
            $text = "<span title='" . $access_id_string . "'>" . elgg_view_icon("eye") . "</span>";
            $result[] = ElggMenuItem::factory(array("name" => "hidden_indicator", "text" => $text, "href" => false, "priority" => 1));
        } elseif (!elgg_in_context("widgets") && !empty($page_owner) && elgg_instanceof($page_owner, "group") && $page_owner->canEdit() && elgg_instanceof($entity, "user")) {
            // user listing in a group
            if ($page_owner->getOwnerGUID() != $entity->getGUID() && $entity->getGUID() != elgg_get_logged_in_user_guid() && $page_owner->isMember($entity)) {
                // remove user from group
                $result[] = ElggMenuItem::factory(array("name" => "removeuser", "text" => elgg_echo('groups:removeuser'), "href" => "action/groups/remove?user_guid=" . $entity->getGUID() . "&group_guid=" . $page_owner->getGUID(), "confirm" => elgg_echo("question:areyousure"), "priority" => 900));
                // add/remove group admins
                if (group_tools_group_multiple_admin_enabled($page_owner)) {
                    $is_admin = check_entity_relationship($entity->getGUID(), "group_admin", $page_owner->getGUID());
                    $result[] = ElggMenuItem::factory(array("name" => "group_admin", "text" => elgg_echo("group_tools:multiple_admin:profile_actions:add"), "href" => "action/group_tools/toggle_admin?group_guid=" . $page_owner->getGUID() . "&user_guid=" . $entity->getGUID(), "is_action" => true, "priority" => 800, "item_class" => $is_admin ? "hidden" : ""));
                    $result[] = ElggMenuItem::factory(array("name" => "group_admin_remove", "text" => elgg_echo("group_tools:multiple_admin:profile_actions:remove"), "href" => "action/group_tools/toggle_admin?group_guid=" . $page_owner->getGUID() . "&user_guid=" . $entity->getGUID(), "is_action" => true, "priority" => 801, "item_class" => $is_admin ? "" : "hidden"));
                }
            }
        }
    }
    return $result;
}
Example #8
0
 /**
  * Extender export
  *
  * @param string   $hook   "to:object"
  * @param string   $type   Metadata or annotation name
  * @param stdClass $return Export object
  * @param array    $params Hook params
  * @return stdClass
  */
 public function exportExtender($hook, $type, $return, $params)
 {
     if (!elgg_in_context('graph')) {
         return $return;
     }
     $aliases = $this->getAliases();
     $annotation_names = (array) elgg_extract('annotation', $aliases, array());
     $metadata_names = (array) elgg_extract('metadata', $aliases, array());
     $extender_names = array_merge($annotation_names, $metadata_names);
     foreach ($params as $key => $entity) {
         if (in_array($key, $extender_names) && $entity instanceof \ElggExtender) {
             break;
         }
     }
     if (!$entity instanceof ElggExtender) {
         return $return;
     }
     $allowed = $this->getFields($entity);
     $fields = get_input('fields') ?: $allowed;
     if (is_string($fields)) {
         $fields = string_to_tag_array($fields);
     }
     $result = array();
     foreach ($fields as $key) {
         if (!in_array($key, $allowed)) {
             $result[$key] = ELGG_ENTITIES_ANY_VALUE;
             continue;
         }
         switch ($key) {
             default:
                 $result[$key] = $entity->{$key};
                 break;
             case 'uid':
                 if ($entity->getType() == 'metadata') {
                     $result[$key] = "md{$entity->id}";
                 } else {
                     $result[$key] = "an{$entity->id}";
                 }
                 break;
             case 'type':
                 $result[$key] = $entity->getType();
                 break;
             case 'subtype':
                 $result[$key] = $entity->getSubtype();
                 break;
             case 'owner':
                 $owner = $entity->getOwnerEntity();
                 $result[$key] = $owner ? $owner->toObject() : null;
                 break;
             case 'entity':
                 $parent = $entity->getEntity();
                 $result[$key] = $parent ? $parent->toObject() : null;
                 break;
             case 'time_created':
                 $result[$key] = date(DATE_ATOM, $entity->time_created);
                 break;
             case 'access':
                 $result[$key] = array('id' => $entity->access_id, 'label' => get_readable_access_level($entity->access_id));
                 break;
         }
     }
     return (object) $result;
 }
Example #9
0
/**
 * Elgg bookmark view
 * 
 * @package ElggBookmarks
 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
 * @author Curverider <*****@*****.**>
 * @copyright Curverider Ltd 2008-2010
 * @link http://elgg.org/
 */
$owner = $vars['entity']->getOwnerEntity();
$friendlytime = friendly_time($vars['entity']->time_created);
$parsed_url = parse_url($vars['entity']->address);
$faviconurl = $parsed_url['scheme'] . "://" . $parsed_url['host'] . "/favicon.ico";
//sort out the access level for display
$object_acl = get_readable_access_level($vars['entity']->access_id);
//files with these access level don't need an icon
$general_access = array('Public', 'Logged in users', 'Friends');
//set the right class for access level display - need it to set on groups and shared access only
$is_group = get_entity($vars['entity']->container_guid);
if ($is_group instanceof ElggGroup) {
    //get the membership type open/closed
    $membership = $is_group->membership;
    //we decided to show that the item is in a group, rather than its actual access level
    $object_acl = "Group: " . $is_group->name;
    if ($membership == 2) {
        $access_level = "class='access_level group_open'";
    } else {
        $access_level = "class='access_level group_closed'";
    }
} elseif ($object_acl == 'Private') {
Example #10
0
File: start.php Project: elgg/elgg
/**
 * Add ACCESS_FRIENDS to the available access levels
 *
 * @param string $hook         "access:collections:write"
 * @param string $type         "user"
 * @param array  $access_array Access array
 * @param array  $params       Hook params
 *
 * @return array
 */
function _elgg_friends_write_access($hook, $type, $access_array, $params)
{
    // rebuild array, putting friends 1st or 2nd
    $ret = [];
    // private exists, it goes first
    if (isset($access_array[ACCESS_PRIVATE])) {
        $ret[ACCESS_PRIVATE] = $access_array[ACCESS_PRIVATE];
        unset($access_array[ACCESS_PRIVATE]);
    }
    // friends
    $ret[ACCESS_FRIENDS] = get_readable_access_level(ACCESS_FRIENDS);
    // rest
    foreach ($access_array as $key => $value) {
        $ret[$key] = $value;
    }
    return $ret;
}
Example #11
0
/**
 * Modify the entity menu.
 *
 * @param string $hook         the 'register' hook
 * @param string $type         for the 'menu:entity' menu
 * @param array  $return_value the menu items to show
 * @param array  $params       params to help extend the menu items
 *
 * @return ElggMenuItem[] a list of menu items
 */
function group_tools_menu_entity_handler($hook, $type, $return_value, $params)
{
    $result = $return_value;
    if (!empty($params) && is_array($params)) {
        $entity = elgg_extract("entity", $params);
        $page_owner = elgg_get_page_owner_entity();
        if (elgg_in_context("group_tools_related_groups") && !empty($page_owner) && elgg_instanceof($page_owner, "group") && $page_owner->canEdit() && elgg_instanceof($entity, "group")) {
            // remove relatede group
            $result[] = ElggMenuItem::factory(array("name" => "related_group", "text" => elgg_echo("group_tools:related_groups:entity:remove"), "href" => "action/group_tools/remove_related_groups?group_guid=" . $page_owner->getGUID() . "&guid=" . $entity->getGUID(), "confirm" => elgg_echo("question:areyousure")));
        } elseif (elgg_in_context("widgets_groups_show_members") && elgg_instanceof($entity, "group")) {
            // number of members
            $num_members = $entity->getMembers(10, 0, true);
            $result[] = ElggMenuItem::factory(array("name" => "members", "text" => $num_members . " " . elgg_echo("groups:member"), "href" => false, "priority" => 200));
        } elseif (elgg_instanceof($entity, "object", "groupforumtopic") && $entity->canEdit()) {
            $text = elgg_echo("close");
            $confirm = elgg_echo("group_tools:discussion:confirm:close");
            if ($entity->status == "closed") {
                $text = elgg_echo("open");
                $confirm = elgg_echo("group_tools:discussion:confirm:open");
            }
            $result[] = ElggMenuItem::factory(array("name" => "status_change", "text" => $text, "confirm" => $confirm, "href" => "action/discussion/toggle_status?guid=" . $entity->getGUID(), "is_trusted" => true, "priority" => 200));
        } elseif (elgg_instanceof($entity, "group") && group_tools_show_hidden_indicator($entity)) {
            $access_id_string = get_readable_access_level($entity->access_id);
            $access_id_string = htmlspecialchars($access_id_string, ENT_QUOTES, "UTF-8", false);
            $text = "<span title='" . $access_id_string . "'>" . elgg_view_icon("eye") . "</span>";
            $result[] = ElggMenuItem::factory(array("name" => "hidden_indicator", "text" => $text, "href" => false, "priority" => 1));
        }
    }
    return $result;
}