Beispiel #1
0
/**
 * Returns suggested groups
 *
 * @param ElggUser $user  (optional) the user to get the groups for, defaults to the current user
 * @param int      $limit (optional) the number of suggested groups to return, default = 10
 *
 * @return ElggGroup[] all the suggested groups
 */
function group_tools_get_suggested_groups($user = null, $limit = null)
{
    $result = array();
    if (!elgg_instanceof($user, "user")) {
        $user = elgg_get_logged_in_user_entity();
    }
    if (is_null($limit)) {
        $limit = get_input("limit", 10);
    }
    $limit = sanitize_int($limit, false);
    if ($user && $limit > 0) {
        $dbprefix = elgg_get_config("dbprefix");
        $group_membership_where = "e.guid NOT IN (SELECT er.guid_two FROM {$dbprefix}entity_relationships er where er.guid_one = {$user->getGUID()} and er.relationship IN ('member', 'membership_request'))";
        if (elgg_get_plugin_setting("auto_suggest_groups", "group_tools") !== "no") {
            $tag_names = elgg_get_registered_tag_metadata_names();
            if (!empty($tag_names)) {
                $user_metadata_options = array("guid" => $user->getGUID(), "limit" => false, "metadata_names" => $tag_names);
                // get metadata
                $user_values = elgg_get_metadata($user_metadata_options);
                if (!empty($user_values)) {
                    // transform to values
                    $user_values = metadata_array_to_values($user_values);
                    // find group with these metadatavalues
                    $group_options = array("type" => "group", "metadata_names" => $tag_names, "metadata_values" => $user_values, "wheres" => $group_membership_where, "group_by" => "e.guid", "order_by" => "count(msn.id) DESC", "limit" => $limit);
                    $groups = elgg_get_entities_from_metadata($group_options);
                    if (!empty($groups)) {
                        foreach ($groups as $group) {
                            $result[$group->getGUID()] = $group;
                            $limit--;
                        }
                    }
                }
            }
        }
        // get admin defined suggested groups
        $group_guids = string_to_tag_array(elgg_get_plugin_setting("suggested_groups", "group_tools"));
        if (!empty($group_guids) && $limit > 0) {
            $group_options = array("guids" => $group_guids, "type" => "group", "wheres" => array($group_membership_where), "limit" => $limit);
            if (!empty($result)) {
                $suggested_guids = array_keys($result);
                $group_options["wheres"][] = "e.guid NOT IN (" . implode(",", $suggested_guids) . ")";
            }
            $groups = elgg_get_entities($group_options);
            if (!empty($groups)) {
                foreach ($groups as $group) {
                    $result[$group->getGUID()] = $group;
                }
            }
        }
    }
    return $result;
}
Beispiel #2
0
 /**
  * Return the value of a piece of metadata.
  *
  * @param string $name Name
  *
  * @return mixed The value, or null if not found.
  */
 public function getMetadata($name)
 {
     $guid = $this->getGUID();
     if (!$guid) {
         if (isset($this->temp_metadata[$name])) {
             // md is returned as an array only if more than 1 entry
             if (count($this->temp_metadata[$name]) == 1) {
                 return $this->temp_metadata[$name][0];
             } else {
                 return $this->temp_metadata[$name];
             }
         } else {
             return null;
         }
     }
     // upon first cache miss, just load/cache all the metadata and retry.
     // if this works, the rest of this function may not be needed!
     $cache = _elgg_services()->metadataCache;
     if ($cache->isLoaded($guid)) {
         return $cache->getSingle($guid, $name);
     } else {
         $cache->populateFromEntities(array($guid));
         // in case ignore_access was on, we have to check again...
         if ($cache->isLoaded($guid)) {
             return $cache->getSingle($guid, $name);
         }
     }
     $md = elgg_get_metadata(array('guid' => $guid, 'metadata_name' => $name, 'limit' => 0, 'distinct' => false));
     $value = null;
     if ($md && !is_array($md)) {
         $value = $md->value;
     } elseif (count($md) == 1) {
         $value = $md[0]->value;
     } else {
         if ($md && is_array($md)) {
             $value = metadata_array_to_values($md);
         }
     }
     return $value;
 }
Beispiel #3
0
 /**
  * Return the value of a piece of metadata.
  *
  * @param string $name Name
  *
  * @return mixed The value, or NULL if not found.
  */
 public function getMetaData($name)
 {
     if ((int) $this->guid > 0) {
         $md = elgg_get_metadata(array('guid' => $this->getGUID(), 'metadata_name' => $name, 'limit' => 0));
     } else {
         if (isset($this->temp_metadata[$name])) {
             return $this->temp_metadata[$name];
         }
     }
     if ($md && !is_array($md)) {
         return $md->value;
     } elseif (count($md) == 1) {
         return $md[0]->value;
     } else {
         if ($md && is_array($md)) {
             return metadata_array_to_values($md);
         }
     }
     return null;
 }
Beispiel #4
0
 // because they are entities, but their dirs were removed.
 // don't delete the entities because they hold settings.
 foreach ($known_plugins as $plugin) {
     if ($plugin->isActive()) {
         $plugin->deactivate();
     }
     // remove the priority.
     $name = elgg_namespace_plugin_private_setting('internal', 'priority');
     remove_private_setting($plugin->guid, $name);
     $plugin->disable();
 }
 // get old enabled plugins
 $enabled_plugin_options["guids"] = array($subsite->getGUID());
 $old_enabled_plugins = elgg_get_metadata($enabled_plugin_options);
 if (!empty($old_enabled_plugins)) {
     $old_enabled_plugins = metadata_array_to_values($old_enabled_plugins);
     $old_enabled_plugins = array_unique($old_enabled_plugins);
     foreach ($old_enabled_plugins as $plugin_id) {
         if ($plugin = elgg_get_plugin_from_id($plugin_id)) {
             if (!check_entity_relationship($plugin->getGUID(), 'active_plugin', $subsite->getGUID())) {
                 add_entity_relationship($plugin->getGUID(), 'active_plugin', $subsite->getGUID());
             }
         }
     }
 }
 // remove old metadata
 remove_metadata($subsite->getGUID(), 'pluginorder');
 remove_metadata($subsite->getGUID(), 'enabled_plugins');
 elgg_set_config("site", $site);
 elgg_set_config("site_guid", $old_site_guid);
 datalist_set("plugins_done_" . $subsite->getGUID(), true);
Beispiel #5
0
 /**
  * Get a given piece of metadata.
  * 
  * @param string $name
  */
 public function getMetaData($name)
 {
     if ((int) $this->guid > 0) {
         $md = get_metadata_byname($this->getGUID(), $name);
     } else {
         if (isset($this->temp_metadata[$name])) {
             return $this->temp_metadata[$name];
         }
     }
     if ($md && !is_array($md)) {
         return $md->value;
     } else {
         if ($md && is_array($md)) {
             return metadata_array_to_values($md);
         }
     }
     return null;
 }
Beispiel #6
0
/**
 * Get a list of all the unique help contexts
 *
 * @return bool|array
 */
function user_support_find_unique_help_context()
{
    static $result;
    if (!isset($result)) {
        $result = false;
        // get all metadata values of help_context
        $options = array("metadata_name" => "help_context", "type" => "object", "subtypes" => array(UserSupportFAQ::SUBTYPE, UserSupportHelp::SUBTYPE, UserSupportTicket::SUBTYPE), "limit" => false);
        $metadata = elgg_get_metadata($options);
        if (!empty($metadata)) {
            // make it into an array
            $filtered = metadata_array_to_values($metadata);
            if (!empty($filtered)) {
                //get unique values
                $result = array_unique($filtered);
                natcasesort($result);
            }
        }
    }
    return $result;
}
Beispiel #7
0
 $form_body .= "</tr><tr>";
 $form_body .= "<td><label>" . elgg_echo("event_manager:edit:form:location") . "</label></td>";
 $form_body .= "<td>" . elgg_view('input/text', array('name' => 'location', 'value' => $location)) . "</td>";
 $form_body .= "</tr><tr>";
 $form_body .= "<td><label>" . elgg_echo("event_manager:edit:form:max_attendees") . "</label></td>";
 $form_body .= "<td>" . elgg_view('input/text', array('name' => 'max_attendees', 'value' => $max_attendees)) . "</td>";
 $form_body .= "</tr><tr>";
 $form_body .= "<td><label>" . elgg_echo("description") . "</label></td>";
 $form_body .= "<td>" . elgg_view('input/plaintext', array('name' => 'description', 'value' => $description)) . "</td>";
 $form_body .= "</tr><tr>";
 $form_body .= "<td><label>" . elgg_echo("event_manager:edit:form:slot_set") . "</label></td>";
 $form_body .= "<td>";
 $form_body .= elgg_view("input/radio", array("name" => "slot_set", "options" => array(elgg_echo("event_manager:edit:form:slot_set:empty") => 0), "value" => $slot_set));
 // unique set names for this event
 $metadata = elgg_get_metadata(array("type" => "object", "subtype" => EventSlot::SUBTYPE, "container_guids" => array($entity->container_guid), "metadata_names" => array("slot_set"), "limit" => false));
 $metadata_values = metadata_array_to_values($metadata);
 if (!empty($metadata_values)) {
     $metadata_values = array_unique($metadata_values);
     foreach ($metadata_values as $value) {
         $form_body .= elgg_view("input/radio", array("name" => "slot_set", "options" => array($value => $value), "value" => $slot_set));
     }
 }
 // optionally add a new set
 $form_body .= elgg_view("input/text", array("id" => "event-manager-new-slot-set-name"));
 $form_body .= elgg_view("input/button", array("id" => "event-manager-new-slot-set-name-button", "value" => elgg_echo("event_manager:edit:form:slot_set:add"), "class" => "elgg-button-action"));
 $form_body .= "<div class='elgg-subtext'>" . elgg_echo("event_manager:edit:form:slot_set:description") . "</div>";
 $form_body .= "</td>";
 $form_body .= "</tr></table>";
 $form_body .= elgg_view('input/submit', array('value' => elgg_echo('submit')));
 $form = elgg_view('input/form', array('id' => 'event_manager_form_program_slot', 'name' => 'event_manager_form_program_slot', 'action' => 'javascript:event_manager_program_add_slot($(\'#event_manager_form_program_slot\'))', 'body' => $form_body));
 echo elgg_view_module("info", elgg_echo("event_manager:form:program:slot"), $form, array("id" => "event-manager-program-slot-lightbox"));
 /**
  * Return the value of a piece of metadata.
  *
  * @param string $name Name
  *
  * @return mixed The value, or NULL if not found.
  */
 public function getMetaData($name)
 {
     if ((int) $this->guid == 0) {
         if (isset($this->temp_metadata[$name])) {
             // md is returned as an array only if more than 1 entry
             if (count($this->temp_metadata[$name]) == 1) {
                 return $this->temp_metadata[$name][0];
             } else {
                 return $this->temp_metadata[$name];
             }
         } else {
             return null;
         }
     }
     $md = elgg_get_metadata(array('guid' => $this->getGUID(), 'metadata_name' => $name, 'limit' => 0));
     if ($md && !is_array($md)) {
         return $md->value;
     } elseif (count($md) == 1) {
         return $md[0]->value;
     } else {
         if ($md && is_array($md)) {
             return metadata_array_to_values($md);
         }
     }
     return null;
 }
Beispiel #9
0
/**
 * Returns suggested groups
 *
 * @param ElggUser $user  (optional) the user to get the groups for, defaults to the current user
 * @param int      $limit (optional) the number of suggested groups to return, default = 10
 *
 * @return ElggGroup[]
 */
function group_tools_get_suggested_groups($user = null, $limit = null)
{
    if (!$user instanceof ElggUser) {
        $user = elgg_get_logged_in_user_entity();
    }
    if (is_null($limit)) {
        $limit = (int) get_input('limit', 10);
    }
    $limit = sanitize_int($limit, false);
    if (empty($user) || $limit < 1) {
        return [];
    }
    $result = [];
    $dbprefix = elgg_get_config('dbprefix');
    $group_membership_where = "e.guid NOT IN (\n\t\tSELECT er.guid_two FROM {$dbprefix}entity_relationships er\n\t\tWHERE er.guid_one = {$user->getGUID()}\n\t\tAND er.relationship IN (\n\t\t\t'member',\n\t\t\t'membership_request'\n\t\t)\n\t)";
    if (elgg_get_plugin_setting('auto_suggest_groups', 'group_tools') !== 'no') {
        $tag_names = elgg_get_registered_tag_metadata_names();
        if (!empty($tag_names)) {
            $user_metadata_options = ['guid' => $user->getGUID(), 'limit' => false, 'metadata_names' => $tag_names];
            // get metadata
            $user_values = elgg_get_metadata($user_metadata_options);
            if (!empty($user_values)) {
                // transform to values
                $user_values = metadata_array_to_values($user_values);
                // find group with these metadatavalues
                $group_options = ['type' => 'group', 'metadata_names' => $tag_names, 'metadata_values' => $user_values, 'wheres' => $group_membership_where, 'group_by' => 'e.guid', 'order_by' => 'count(msn.id) DESC', 'limit' => $limit];
                $groups = elgg_get_entities_from_metadata($group_options);
                if (!empty($groups)) {
                    foreach ($groups as $group) {
                        $result[$group->getGUID()] = $group;
                        $limit--;
                    }
                }
            }
        }
    }
    // get admin defined suggested groups
    if ($limit > 0) {
        $group_guids = string_to_tag_array(elgg_get_plugin_setting('suggested_groups', 'group_tools'));
        if (!empty($group_guids)) {
            $group_options = ['guids' => $group_guids, 'type' => 'group', 'wheres' => [$group_membership_where], 'limit' => $limit];
            if (!empty($result)) {
                $suggested_guids = array_keys($result);
                $group_options['wheres'][] = 'e.guid NOT IN (' . implode(',', $suggested_guids) . ')';
            }
            $groups = elgg_get_entities($group_options);
            if (!empty($groups)) {
                foreach ($groups as $group) {
                    $result[$group->getGUID()] = $group;
                }
            }
        }
    }
    return $result;
}