123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999 |
- <?php
- global $ENTITY_CACHE;
- $ENTITY_CACHE = array();
- global $ENTITY_CACHE_DISABLED_GUIDS;
- $ENTITY_CACHE_DISABLED_GUIDS = array();
- function _elgg_disable_caching_for_entity($guid) {
- global $ENTITY_CACHE_DISABLED_GUIDS;
- _elgg_invalidate_cache_for_entity($guid);
- $ENTITY_CACHE_DISABLED_GUIDS[$guid] = true;
- }
- function _elgg_enable_caching_for_entity($guid) {
- global $ENTITY_CACHE_DISABLED_GUIDS;
- unset($ENTITY_CACHE_DISABLED_GUIDS[$guid]);
- }
- function _elgg_invalidate_cache_for_entity($guid) {
- global $ENTITY_CACHE;
- $guid = (int)$guid;
- if (isset($ENTITY_CACHE[$guid])) {
- unset($ENTITY_CACHE[$guid]);
-
-
-
-
- _elgg_services()->metadataCache->clear($guid);
- }
- }
- function _elgg_cache_entity(\ElggEntity $entity) {
- global $ENTITY_CACHE, $ENTITY_CACHE_DISABLED_GUIDS;
-
-
- if (!($entity instanceof \ElggPlugin) && elgg_get_ignore_access()) {
- return;
- }
- $guid = $entity->getGUID();
- if (isset($ENTITY_CACHE_DISABLED_GUIDS[$guid])) {
- return;
- }
-
-
- if (count($ENTITY_CACHE) > 256) {
- _elgg_invalidate_cache_for_entity(array_rand($ENTITY_CACHE));
- }
- $ENTITY_CACHE[$guid] = $entity;
- }
- function _elgg_retrieve_cached_entity($guid) {
- global $ENTITY_CACHE;
- if (isset($ENTITY_CACHE[$guid])) {
- if ($ENTITY_CACHE[$guid]->isFullyLoaded()) {
- return $ENTITY_CACHE[$guid];
- }
- }
- return false;
- }
- function get_subtype_id($type, $subtype) {
- return _elgg_services()->subtypeTable->getId($type, $subtype);
- }
- function get_subtype_from_id($subtype_id) {
- return _elgg_services()->subtypeTable->getSubtype($subtype_id);
- }
- function _elgg_retrieve_cached_subtype($type, $subtype) {
- return _elgg_services()->subtypeTable->retrieveFromCache($type, $subtype);
- }
- function _elgg_populate_subtype_cache() {
- return _elgg_services()->subtypeTable->populateCache();
- }
- function get_subtype_class($type, $subtype) {
- return _elgg_services()->subtypeTable->getClass($type, $subtype);
- }
- function get_subtype_class_from_id($subtype_id) {
- return _elgg_services()->subtypeTable->getClassFromId($subtype_id);
- }
- function add_subtype($type, $subtype, $class = "") {
- return _elgg_services()->subtypeTable->add($type, $subtype, $class);
- }
- function remove_subtype($type, $subtype) {
- return _elgg_services()->subtypeTable->remove($type, $subtype);
- }
- function update_subtype($type, $subtype, $class = '') {
- return _elgg_services()->subtypeTable->update($type, $subtype, $class);
- }
- function can_write_to_container($user_guid = 0, $container_guid = 0, $type = 'all', $subtype = 'all') {
- $container_guid = (int)$container_guid;
- if (!$container_guid) {
- $container_guid = elgg_get_page_owner_guid();
- }
- $container = get_entity($container_guid);
- $user_guid = (int)$user_guid;
- if ($user_guid == 0) {
- $user = elgg_get_logged_in_user_entity();
- $user_guid = elgg_get_logged_in_user_guid();
- } else {
- $user = get_user($user_guid);
- if (!$user) {
- return false;
- }
- }
- $return = false;
- if ($container) {
-
- if ($container->canEdit($user_guid)) {
- $return = true;
- }
- }
-
- return elgg_trigger_plugin_hook(
- 'container_permissions_check',
- $type,
- array(
- 'container' => $container,
- 'user' => $user,
- 'subtype' => $subtype
- ),
- $return);
- }
- function get_entity_as_row($guid) {
- return _elgg_services()->entityTable->getRow($guid);
- }
- function entity_row_to_elggstar($row) {
- return _elgg_services()->entityTable->rowToElggStar($row);
- }
- function get_entity($guid) {
- return _elgg_services()->entityTable->get($guid);
- }
- function elgg_entity_exists($guid) {
- return _elgg_services()->entityTable->exists($guid);
- }
- function elgg_enable_entity($guid, $recursive = true) {
- return _elgg_services()->entityTable->enable($guid, $recursive);
- }
- function elgg_get_entities(array $options = array()) {
- return _elgg_services()->entityTable->getEntities($options);
- }
- function _elgg_fetch_entities_from_sql($sql, \ElggBatch $batch = null) {
- return _elgg_services()->entityTable->fetchFromSql($sql, $batch);
- }
- function _elgg_get_entity_type_subtype_where_sql($table, $types, $subtypes, $pairs) {
- return _elgg_services()->entityTable->getEntityTypeSubtypeWhereSql($table, $types, $subtypes, $pairs);
- }
- function _elgg_get_guid_based_where_sql($column, $guids) {
- return _elgg_services()->entityTable->getGuidBasedWhereSql($column, $guids);
- }
- function _elgg_get_entity_time_where_sql($table, $time_created_upper = null,
- $time_created_lower = null, $time_updated_upper = null, $time_updated_lower = null) {
- return _elgg_services()->entityTable->getEntityTimeWhereSql($table,
- $time_created_upper, $time_created_lower, $time_updated_upper, $time_updated_lower);
- }
- function elgg_list_entities(array $options = array(), $getter = 'elgg_get_entities',
- $viewer = 'elgg_view_entity_list') {
- global $autofeed;
- $autofeed = true;
- $offset_key = isset($options['offset_key']) ? $options['offset_key'] : 'offset';
- $defaults = array(
- 'offset' => (int) max(get_input($offset_key, 0), 0),
- 'limit' => (int) max(get_input('limit', elgg_get_config('default_limit')), 0),
- 'full_view' => false,
- 'list_type_toggle' => false,
- 'pagination' => true,
- 'no_results' => '',
- );
- $options = array_merge($defaults, $options);
-
- if (isset($options['view_type_toggle'])) {
- elgg_deprecated_notice("Option 'view_type_toggle' deprecated by 'list_type_toggle' in elgg_list* functions", 1.9);
- $options['list_type_toggle'] = $options['view_type_toggle'];
- }
- $options['count'] = true;
- $count = call_user_func($getter, $options);
- if ($count > 0) {
- $options['count'] = false;
- $entities = call_user_func($getter, $options);
- } else {
- $entities = array();
- }
- $options['count'] = $count;
- return call_user_func($viewer, $entities, $options);
- }
- function elgg_get_entities_from_attributes(array $options = array()) {
- return _elgg_services()->entityTable->getEntitiesFromAttributes($options);
- }
- function _elgg_get_entity_attribute_where_sql(array $options = array()) {
- return _elgg_services()->entityTable->getEntityAttributeWhereSql($options);
- }
- function get_entity_dates($type = '', $subtype = '', $container_guid = 0, $site_guid = 0,
- $order_by = 'time_created') {
- return _elgg_services()->entityTable->getDates(
- $type, $subtype, $container_guid, $site_guid, $order_by);
- }
- function elgg_register_entity_type($type, $subtype = null) {
- global $CONFIG;
- $type = strtolower($type);
- if (!in_array($type, $CONFIG->entity_types)) {
- return false;
- }
- if (!isset($CONFIG->registered_entities)) {
- $CONFIG->registered_entities = array();
- }
- if (!isset($CONFIG->registered_entities[$type])) {
- $CONFIG->registered_entities[$type] = array();
- }
- if ($subtype) {
- $CONFIG->registered_entities[$type][] = $subtype;
- }
- return true;
- }
- function elgg_unregister_entity_type($type, $subtype = null) {
- global $CONFIG;
- $type = strtolower($type);
- if (!in_array($type, $CONFIG->entity_types)) {
- return false;
- }
- if (!isset($CONFIG->registered_entities)) {
- return false;
- }
- if (!isset($CONFIG->registered_entities[$type])) {
- return false;
- }
- if ($subtype) {
- if (in_array($subtype, $CONFIG->registered_entities[$type])) {
- $key = array_search($subtype, $CONFIG->registered_entities[$type]);
- unset($CONFIG->registered_entities[$type][$key]);
- } else {
- return false;
- }
- } else {
- unset($CONFIG->registered_entities[$type]);
- }
- return true;
- }
- function get_registered_entity_types($type = null) {
- global $CONFIG;
- if (!isset($CONFIG->registered_entities)) {
- return false;
- }
- if ($type) {
- $type = strtolower($type);
- }
- if (!empty($type) && empty($CONFIG->registered_entities[$type])) {
- return false;
- }
- if (empty($type)) {
- return $CONFIG->registered_entities;
- }
- return $CONFIG->registered_entities[$type];
- }
- function is_registered_entity_type($type, $subtype = null) {
- global $CONFIG;
- if (!isset($CONFIG->registered_entities)) {
- return false;
- }
- $type = strtolower($type);
-
-
- if (!isset($CONFIG->registered_entities[$type])) {
- return false;
- }
- if ($subtype && !in_array($subtype, $CONFIG->registered_entities[$type])) {
- return false;
- }
- return true;
- }
- function elgg_list_registered_entities(array $options = array()) {
- global $autofeed;
- $autofeed = true;
- $defaults = array(
- 'full_view' => false,
- 'allowed_types' => true,
- 'list_type_toggle' => false,
- 'pagination' => true,
- 'offset' => 0,
- 'types' => array(),
- 'type_subtype_pairs' => array(),
- );
- $options = array_merge($defaults, $options);
-
- if (isset($options['view_type_toggle'])) {
- elgg_deprecated_notice("Option 'view_type_toggle' deprecated by 'list_type_toggle' in elgg_list* functions", 1.9);
- $options['list_type_toggle'] = $options['view_type_toggle'];
- }
- $types = get_registered_entity_types();
- foreach ($types as $type => $subtype_array) {
- if (in_array($type, $options['allowed_types']) || $options['allowed_types'] === true) {
-
- if ($type == 'object') {
- if (is_array($subtype_array) && count($subtype_array)) {
- $options['type_subtype_pairs'][$type] = $subtype_array;
- }
- } else {
- if (is_array($subtype_array) && count($subtype_array)) {
- $options['type_subtype_pairs'][$type] = $subtype_array;
- } else {
- $options['type_subtype_pairs'][$type] = ELGG_ENTITIES_ANY_VALUE;
- }
- }
- }
- }
- if (!empty($options['type_subtype_pairs'])) {
- $count = elgg_get_entities(array_merge(array('count' => true), $options));
- if ($count > 0) {
- $entities = elgg_get_entities($options);
- } else {
- $entities = array();
- }
- } else {
- $count = 0;
- $entities = array();
- }
- $options['count'] = $count;
- return elgg_view_entity_list($entities, $options);
- }
- function elgg_instanceof($entity, $type = null, $subtype = null, $class = null) {
- $return = ($entity instanceof \ElggEntity);
- if ($type) {
-
- $return = $return && ($entity->getType() == $type);
- }
- if ($subtype) {
- $return = $return && ($entity->getSubtype() == $subtype);
- }
- if ($class) {
- $return = $return && ($entity instanceof $class);
- }
- return $return;
- }
- function update_entity_last_action($guid, $posted = null) {
- return _elgg_services()->entityTable->updateLastAction($guid, $posted);
- }
- function _elgg_entities_test($hook, $type, $value) {
- global $CONFIG;
- $value[] = $CONFIG->path . 'engine/tests/ElggEntityTest.php';
- $value[] = $CONFIG->path . 'engine/tests/ElggCoreAttributeLoaderTest.php';
- $value[] = $CONFIG->path . 'engine/tests/ElggCoreGetEntitiesTest.php';
- $value[] = $CONFIG->path . 'engine/tests/ElggCoreGetEntitiesFromAnnotationsTest.php';
- $value[] = $CONFIG->path . 'engine/tests/ElggCoreGetEntitiesFromMetadataTest.php';
- $value[] = $CONFIG->path . 'engine/tests/ElggCoreGetEntitiesFromPrivateSettingsTest.php';
- $value[] = $CONFIG->path . 'engine/tests/ElggCoreGetEntitiesFromRelationshipTest.php';
- $value[] = $CONFIG->path . 'engine/tests/ElggCoreGetEntitiesFromAttributesTest.php';
- $value[] = $CONFIG->path . 'engine/tests/ElggEntityPreloaderIntegrationTest.php';
- return $value;
- }
- function _elgg_entities_init() {
- elgg_register_plugin_hook_handler('unit_test', 'system', '_elgg_entities_test');
- }
- return function(\Elgg\EventsService $events, \Elgg\HooksRegistrationService $hooks) {
- $events->registerHandler('init', 'system', '_elgg_entities_init');
- };
|