123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- <?php
- function elgg_get_page_owner_guid($guid = 0) {
- static $page_owner_guid;
- if ($guid === false || $guid === null) {
- $page_owner_guid = 0;
- return $page_owner_guid;
- }
-
- if ($guid) {
- $page_owner_guid = (int)$guid;
- }
- if (isset($page_owner_guid)) {
- return $page_owner_guid;
- }
-
- $guid = (int)elgg_trigger_plugin_hook('page_owner', 'system', null, 0);
- if ($guid) {
- $page_owner_guid = $guid;
- }
- return $guid;
- }
- function elgg_get_page_owner_entity() {
- $guid = elgg_get_page_owner_guid();
- if ($guid > 0) {
- $ia = elgg_set_ignore_access(true);
- $owner = get_entity($guid);
- elgg_set_ignore_access($ia);
- return $owner;
- }
- return false;
- }
- function elgg_set_page_owner_guid($guid) {
- elgg_get_page_owner_guid($guid);
- }
- function default_page_owner_handler($hook, $entity_type, $returnvalue, $params) {
- if ($returnvalue) {
- return $returnvalue;
- }
- $ia = elgg_set_ignore_access(true);
- $username = get_input("username");
- if ($username) {
-
- if (substr_count($username, 'group:')) {
- preg_match('/group\:([0-9]+)/i', $username, $matches);
- $guid = $matches[1];
- if ($entity = get_entity($guid)) {
- elgg_set_ignore_access($ia);
- return $entity->getGUID();
- }
- }
- if ($user = get_user_by_username($username)) {
- elgg_set_ignore_access($ia);
- return $user->getGUID();
- }
- }
- $owner = get_input("owner_guid");
- if ($owner) {
- if ($user = get_entity($owner)) {
- elgg_set_ignore_access($ia);
- return $user->getGUID();
- }
- }
-
- $uri = current_page_url();
- $path = str_replace(elgg_get_site_url(), '', $uri);
- $path = trim($path, "/");
- if (strpos($path, "?")) {
- $path = substr($path, 0, strpos($path, "?"));
- }
-
- $segments = explode('/', $path);
- if (isset($segments[1]) && isset($segments[2])) {
- switch ($segments[1]) {
- case 'owner':
- case 'friends':
- $user = get_user_by_username($segments[2]);
- if ($user) {
- elgg_set_ignore_access($ia);
- return $user->getGUID();
- }
- break;
- case 'view':
- case 'edit':
- $entity = get_entity($segments[2]);
- if ($entity) {
- elgg_set_ignore_access($ia);
- return $entity->getContainerGUID();
- }
- break;
- case 'add':
- case 'group':
- $entity = get_entity($segments[2]);
- if ($entity) {
- elgg_set_ignore_access($ia);
- return $entity->getGUID();
- }
- break;
- }
- }
- elgg_set_ignore_access($ia);
- }
- function elgg_set_context($context) {
- return _elgg_services()->context->set($context);
- }
- function elgg_get_context() {
- return _elgg_services()->context->peek();
- }
- function elgg_push_context($context) {
- _elgg_services()->context->push($context);
- }
- function elgg_pop_context() {
- return _elgg_services()->context->pop();
- }
- function elgg_in_context($context) {
- return _elgg_services()->context->contains($context);
- }
- function elgg_get_context_stack() {
- return _elgg_services()->context->toArray();
- }
- function elgg_set_context_stack(array $stack) {
- _elgg_services()->context->fromArray($stack);
- }
- function page_owner_boot() {
-
- elgg_register_plugin_hook_handler('page_owner', 'system', 'default_page_owner_handler');
-
-
-
- $request = _elgg_services()->request;
-
- if (basename($request->server->get('SCRIPT_FILENAME')) === 'index.php') {
- $context = $request->getFirstUrlSegment();
- if (!$context) {
- $context = 'main';
- }
- elgg_set_context($context);
- }
- }
- return function(\Elgg\EventsService $events, \Elgg\HooksRegistrationService $hooks) {
- $events->registerHandler('boot', 'system', 'page_owner_boot');
- };
|