function mobilize_init() { $action_path = dirname(__FILE__) . '/actions'; elgg_register_action("mobilize/admin/settings", "{$action_path}/settings.php", 'admin'); elgg_register_admin_menu_item('configure', 'mobilize', 'settings'); elgg_extend_view('css/admin', 'mobilize/admin'); elgg_register_page_handler('about', 'mobilize_expages_page_handler'); elgg_register_page_handler('terms', 'mobilize_expages_page_handler'); elgg_register_page_handler('privacy', 'mobilize_expages_page_handler'); elgg_register_css('elgg.mobilize', '/css/mobilize.css'); detectmobile(); $mobile = detectmobile(); $mobile = true; if ($mobile == true) { elgg_set_viewtype('mobile'); elgg_register_plugin_hook_handler('index', 'system', 'index_handler'); elgg_extend_view('js/elgg', 'js/mobilize'); elgg_register_page_handler('dashboard', 'dashboard_page_handler'); if (elgg_get_plugin_setting('use_friendspicker', 'mobilize') == 'yes') { elgg_unregister_js('elgg.friendspicker'); } elgg_unregister_js('elgg.tinymce'); elgg_extend_view('page/elements/head', 'mobilize/meta', 1); elgg_register_js('mobilize', 'mod/mobilize/vendors/js/mobilize.js', 'footer'); elgg_load_js('mobilize'); elgg_register_event_handler('pagesetup', 'system', 'mobilize_setup_handler', 1000); } elgg_register_viewtype_fallback('mobile'); elgg_unregister_js("elgg.map"); elgg_register_js('elgg.map', 'mod/mobilize/views/mobile/js/map.js', 'footer'); elgg_load_js('elgg.map'); elgg_unregister_js("elgg.touch"); elgg_register_js('elgg.touch', 'mod/mobilize/views/mobile/js/jquery.ui.touch-punch.min.js', 'footer'); elgg_load_js('elgg.touch'); }
/** * Initialize the plugin. */ function tour_init() { $js_lib = elgg_get_plugin_setting('js_library', 'tour'); if ($js_lib == 'joyride') { elgg_register_css('joyride', '/mod/tour/vendors/joyride/joyride-2.1.css'); elgg_load_css('joyride'); elgg_define_js('joyride', array('src' => '/mod/tour/vendors/joyride/jquery.joyride-2.1.js', 'exports' => 'joyride')); } else { elgg_register_css('hopscotch', '/mod/tour/vendors/hopscotch/css/hopscotch.min.css'); elgg_load_css('hopscotch'); elgg_define_js('hopscotch', array('src' => '/mod/tour/vendors/hopscotch/hopscotch.min.js', 'exports' => 'hopscotch')); } elgg_require_js('elgg/tour/display'); //elgg_require_js('elgg/tour/edit'); elgg_register_ajax_view('ajax/tour_stop/save'); elgg_extend_view('page/elements/footer', 'tour/outline'); elgg_extend_view('css/elgg', 'css/tour'); elgg_extend_view('css/admin', 'css/tour_admin'); elgg_register_action('tour_page/save', __DIR__ . '/actions/tour_page/save.php', 'admin'); elgg_register_action('tour_page/reorder', __DIR__ . '/actions/tour_page/reorder.php', 'admin'); elgg_register_action('tour_page/delete', __DIR__ . '/actions/tour_page/delete.php', 'admin'); elgg_register_action('tour_stop/save', __DIR__ . '/actions/tour_stop/save.php', 'admin'); elgg_register_action('tour_stop/delete', __DIR__ . '/actions/tour_stop/delete.php', 'admin'); elgg_register_page_handler('tour', 'tour_page_handler'); elgg_register_page_handler('tour_stop', 'tour_page_handler'); // For convenience elgg_register_admin_menu_item('administer', 'tour', 'administer_utilities'); elgg_register_menu_item('topbar', array('name' => 'tour', 'href' => '', 'text' => elgg_echo('tour:start'), 'id' => 'tour-start', 'section' => 'alt', 'data-library' => $js_lib)); elgg_register_plugin_hook_handler('register', 'menu:entity', array('Tour\\Page\\EntityMenu', 'setUp')); elgg_register_plugin_hook_handler('register', 'menu:entity', array('Tour\\Stop\\EntityMenu', 'setUp')); elgg_register_viewtype('json'); }
/** * Redirect the requestor to the new URL * Checks the plugin setting to determine the course of action: * a) Displays an error page with the new URL * b) Forwards to the new URL and displays an error message * c) Silently forwards to the new URL * * @param string $url Relative or absolute URL * @return mixed */ function legacy_urls_redirect($url) { $method = elgg_get_plugin_setting('redirect_method', 'legacy_urls'); // we only show landing page or queue warning if html generating page $viewtype = elgg_get_viewtype(); if ($viewtype != 'default' && !elgg_does_viewtype_fallback($viewtype)) { $method = 'immediate'; } switch ($method) { case 'landing': $content = elgg_view('legacy_urls/message', array('url' => $url)); $body = elgg_view_layout('error', array('content' => $content)); echo elgg_view_page('', $body, 'error'); return true; break; case 'immediate_error': // drop through after setting error message register_error(elgg_echo('changebookmark')); case 'immediate': default: $url = elgg_normalize_url($url); header("HTTP/1.1 301 Moved Permanently"); header("Location: {$url}"); exit; break; } }
/** * Called on the login user event * Checks for spammers * * @param type $event * @param type $type * @param type $user * @return boolean */ function login_event($event, $type, $user) { $check_login = elgg_get_plugin_setting('event_login', PLUGIN_ID); $ip = get_ip(); $user->ip_address = $ip; if ($check_login != 'no' || !$user->last_login) { // do it by default if (!check_spammer($user->email, $ip, true) && !$user->isAdmin()) { register_error(elgg_echo('spam_login_filter:access_denied_mail_blacklist')); notify_admin($user->email, $ip, "Existing member identified as spammer has tried to login, check this account"); return false; } } // check user metadata for banned words/phrases $banned = get_banned_strings(); $metadata = get_metadata_names(); if ($banned && $metadata) { foreach ($metadata as $m) { foreach ($banned as $str) { if (strpos($user->{$m}, $str) !== false) { return false; } } } } }
function twitter_bootswatch_init() { $bootswatch_style = elgg_get_plugin_setting('bootswatch_style', 'twitter_bootswatch'); switch ($bootswatch_style) { case 'amelia': case 'cerulean': case 'cosmo': case 'cyborg': case 'flatty': case 'journal': case 'readable': case 'simplex': case 'slate': case 'spacelab': case 'spruce': case 'superhero': case 'united': break; default: $bootswatch_style = 'cyborg'; } // Unextend the default bootstrap override css elgg_unextend_view('css/elgg', 'twitter_bootstrap/css'); // Extend system CSS with our own styles elgg_extend_view('css/elgg', 'twitter_bootswatch/css'); // united bootstrap $bootstrap_css = 'mod/twitter_bootswatch/vendors/bootstrap-' . $bootswatch_style . '.min.css'; elgg_register_css('twitter_bootswatch_css', $bootstrap_css, 5); //unload default bootstrap css and load new one elgg_unregister_css('bootstrap_css'); if (get_context() != 'admin') { elgg_load_css('twitter_bootswatch_css'); } }
/** * Listen to the usersettings save hook for some notifications to the user * * @param string $hook usersettings:save * @param string $type user * @param bool $return_value not supplied for this hook * @param null $params not supplied for this hook * * @return void */ function security_tools_usersettings_save_handler($hook, $type, $return_value, $params) { $user_guid = (int) get_input("guid"); if (empty($user_guid)) { $user_guid = elgg_get_logged_in_user_guid(); } if (empty($user_guid)) { return $return_value; } $user = get_user($user_guid); if (empty($user) || !$user->canEdit()) { return $return_value; } // passwords are different if (_elgg_set_user_password() === true) { // do we need to notify the user about a password change $setting = elgg_get_plugin_setting("mails_password_change", "security_tools"); if ($setting != "no") { $site = elgg_get_site_entity(); $subject = elgg_echo("security_tools:notify_user:password:subject"); $message = elgg_echo("security_tools:notify_user:password:message", array($user->name, $site->name, $site->url)); notify_user($user->getGUID(), $site->getGUID(), $subject, $message, null, "email"); } } // email are also different $setting = elgg_get_plugin_setting("mails_verify_email_change", "security_tools"); if ($setting != "no" && $user->getGUID() == elgg_get_logged_in_user_guid()) { // verify new email address security_tools_prepare_email_change(); } else { // old way, or admin changes your email _elgg_set_user_email(); } }
function group_timeline_layout_allow(ElggGroup $group) { static $metadata_field; static $metadata_value; $result = false; if (!empty($group) && elgg_instanceof($group, "group")) { // set statics if (!isset($metadata_field) && !isset($metadata_value)) { $metadata_field = false; $metadata_value = false; // get metadata name if ($field_setting = elgg_get_plugin_setting("metadata_key", "timeline_theme")) { $metadata_field = $field_setting; } // get metadata valeu if ($value_setting = elgg_get_plugin_setting("metadata_value", "timeline_theme")) { $metadata_value = $value_setting; } } // check for this group if (!empty($metadata_field) && !empty($metadata_value)) { if (!empty($group->{$metadata_field}) && $group->{$metadata_field} == $metadata_value) { $result = true; } } } return $result; }
function language_selector_get_allowed_translations() { $configured_allowed = elgg_get_plugin_setting("allowed_languages", "language_selector"); if (empty($configured_allowed)) { $allowed = array("en"); $installed_languages = get_installed_translations(); $min_completeness = (int) elgg_get_plugin_setting("min_completeness", "language_selector"); if ($min_completeness > 0) { $update_completeness = false; if (elgg_is_active_plugin("translation_editor")) { if (elgg_is_admin_logged_in()) { $update_completeness = true; } $completeness_function = "translation_editor_get_language_completeness"; } else { $completeness_function = "get_language_completeness"; } foreach ($installed_languages as $lang_id => $lang_description) { if ($lang_id != "en") { if (($completeness = $completeness_function($lang_id)) >= $min_completeness) { $allowed[] = $lang_id; } } } } elgg_set_plugin_setting("allowed_languages", implode(",", $allowed), "language_selector"); } else { $allowed = string_to_tag_array($configured_allowed); } return $allowed; }
/** * Returns prototyped fields * * @param string $hook "prototype" * @param string $type "groups/edit" * @param array $return Fields * @param array $params Hook params * @return array */ function prototyper_group_get_prototype_fields($hook, $type, $return, $params) { $entity = elgg_extract('entity', $params); $subtype = $entity->getSubtype() ?: 'default'; $prototype = elgg_get_plugin_setting("prototype:{$subtype}", 'prototyper_group'); if (!$prototype && $subtype != 'default') { $prototype = elgg_get_plugin_setting('prototype:default', 'prototyper_group'); } if ($prototype) { $prototype_fields = unserialize($prototype); $return = array_merge($return, $prototype_fields); } else { $fields = elgg_get_config('group'); $return['icon'] = ['type' => 'icon', 'data_type' => 'file', 'label' => [get_current_language() => elgg_echo('groups:icon')], 'help' => false]; $return['description'] = ['type' => 'description', 'data_type' => 'attribute', 'label' => [get_current_language() => elgg_echo('groups:description')], 'help' => false]; foreach ($fields as $shortname => $input_type) { $return[$shortname] = ['type' => $input_type, 'data_type' => 'metadata', 'label' => [get_current_language() => elgg_echo("groups:{$shortname}")], 'help' => false]; } } // Not adding these above, as we want them to persist, even if they are deleted from the UI $return['name'] = ['type' => 'name', 'data_type' => 'attribute', 'class_name' => \hypeJunction\Prototyper\Groups\NameField::class, 'label' => [get_current_language() => elgg_echo('groups:name')], 'help' => false, 'priority' => 1]; $return['membership'] = ['type' => 'membership', 'data_type' => 'metadata', 'id' => 'groups-membership', 'input_view' => 'input/groups/membership', 'output_view' => false, 'class_name' => hypeJunction\Prototyper\Groups\MembershipField::class, 'label' => [get_current_language() => elgg_echo("groups:membership")], 'help' => false, 'priority' => 900]; // treating this as metadata so that it gets handled after the entity has been saved once and group_acl has been created $return['vis'] = ['type' => 'access', 'data_type' => 'metadata', 'id' => 'groups-vis', 'input_view' => 'input/groups/visibility', 'output_view' => false, 'class_name' => hypeJunction\Prototyper\Groups\VisibilityField::class, 'label' => [get_current_language() => elgg_echo("groups:visibility")], 'help' => false, 'priority' => 900]; $return['content_access_mode'] = ['type' => 'content_access_mode', 'data_type' => 'metadata', 'id' => 'groups-content-access-mode', 'input_view' => 'input/groups/content_access_mode', 'output_view' => false, 'class_name' => hypeJunction\Prototyper\Groups\ContentAccessModeField::class, 'label' => [get_current_language() => elgg_echo("groups:content_access_mode")], 'help' => false, 'priority' => 900]; $return['owner_guid'] = ['type' => 'select', 'data_type' => 'attribute', 'input_view' => 'input/groups/owner', 'output_view' => false, 'class_name' => hypeJunction\Prototyper\Groups\OwnerField::class, 'label' => [get_current_language() => elgg_echo("groups:owner")], 'help' => false, 'priority' => 900]; $return['tools'] = ['type' => 'checkboxes', 'data_type' => 'metadata', 'input_view' => 'input/groups/tools', 'output_view' => false, 'class_name' => hypeJunction\Prototyper\Groups\ToolsField::class, 'label' => false, 'help' => false, 'priority' => 900]; return $return; }
/** * Sleep for a while to slow things down. * * @param int $multiplier A time multipler to tarpit repeat offending IPs */ function registration_randomizer_tarpit($wait = 5) { $ip = filter_input(INPUT_SERVER, 'REMOTE_ADDR', FILTER_VALIDATE_IP); $setting_name = "{$ip}_tarpit_count"; $count = (int) elgg_get_plugin_setting($setting_name, 'registration_randomizer'); if ($count > 4) { $wait = pow(4, 4); } else { $wait = pow($count, 4); } // now limit it to something reasonable, like 90% of max execution time $max_execution_time = ini_get('max_execution_time'); if ($max_execution_time === false) { $max_execution_time = 30; } $max_execution_time = floor(0.9 * $max_execution_time); if ($max_execution_time && $wait > $max_execution_time) { $wait = $max_execution_time; } elgg_set_plugin_setting($setting_name, $count + 1, 'registration_randomizer'); registration_randomizer_log("Tarpitting {$ip} for {$wait} seconds after {$count} failures.", false); if ($wait > 0) { // close mysql connections for the time of a sleep mysql_close(_elgg_services()->db->getLink('read')); mysql_close(_elgg_services()->db->getLink('write')); sleep($wait); //restore connections _elgg_services()->db->setupConnections(); } }
/** * dropzone/upload action handler * @return array */ public function handleUploads() { $subtype = get_input('subtype'); if (!$subtype) { $subtype = elgg_get_plugin_setting('default_upload_subtype', 'hypeDropzone', 'file'); } $uploads = $this->saveUploadedFiles('dropzone', ['owner_guid' => elgg_get_logged_in_user_guid(), 'container_guid' => get_input('container_guid') ?: ELGG_ENTITIES_ANY_VALUE, 'subtype' => $subtype, 'access_id' => ACCESS_PRIVATE, 'origin' => get_input('origin', 'dropzone')]); $output = array(); foreach ($uploads as $upload) { $messages = array(); $success = true; if ($upload->error) { $messages[] = $upload->error; $success = false; ${$guid} = false; } else { $file = $upload->file; $guid = $file->guid; $html = elgg_view('input/hidden', array('name' => get_input('input_name', 'guids[]'), 'value' => $file->guid)); } $file_output = array('messages' => $messages, 'success' => $success, 'guid' => $guid, 'html' => $html); $output[] = elgg_trigger_plugin_hook('upload:after', 'dropzone', array('upload' => $upload), $file_output); } return $output; }
function elgg_solr_entities_sync() { $access = access_get_show_hidden_status(); access_show_hidden_entities(true); $guids = elgg_get_config('elgg_solr_sync'); if ($guids) { $options = array('guids' => array_keys($guids), 'limit' => false); $batch_size = elgg_get_plugin_setting('reindex_batch_size', 'elgg_solr'); $entities = new ElggBatch('elgg_get_entities', $options, null, $batch_size); foreach ($entities as $e) { elgg_solr_add_update_entity(null, null, $e); } } $delete_guids = elgg_get_config('elgg_solr_delete'); if (is_array($delete_guids)) { foreach ($delete_guids as $g => $foo) { $client = elgg_solr_get_client(); $query = $client->createUpdate(); $query->addDeleteById($g); $query->addCommit(); try { $client->update($query); } catch (Exception $ex) { //something went wrong, lets cache the id and try again on cron elgg_get_site_entity()->annotate('elgg_solr_delete_cache', $g, ACCESS_PUBLIC); } } } access_show_hidden_entities($access); }
/** * This method is called when a users points are updated. * We check to see what the users current balance is and * assign the appropriate badge. */ function badges_userpoints($hook, $type, $return, $params) { if ($params['entity']->badges_locked) { return true; } $points = $params['entity']->userpoints_points; $badge = get_entity($params['entity']->badges_badge); $options = array('type' => 'object', 'subtype' => 'badge', 'limit' => false, 'order_by_metadata' => array('name' => 'badges_userpoints', 'direction' => DESC, 'as' => integer)); $options['metadata_name_value_pairs'] = array(array('name' => 'badges_userpoints', 'value' => $points, 'operand' => '<=')); $entities = elgg_get_entities_from_metadata($options); if ((int) elgg_get_plugin_setting('lock_high', 'elggx_badges')) { if ($badge->badges_userpoints > $entities[0]->badges_userpoints) { return true; } } if ($badge->guid != $entities[0]->guid) { $params['entity']->badges_badge = $entities[0]->guid; if (!elgg_trigger_plugin_hook('badges:update', 'object', array('entity' => $user), true)) { $params['entity']->badges_badge = $badge->guid; return false; } // Announce it on the river $user_guid = $params['entity']->getGUID(); elgg_delete_river(array("view" => 'river/object/badge/assign', "subject_guid" => $user_guid, "object_guid" => $user_guid)); elgg_delete_river(array("view" => 'river/object/badge/award', "subject_guid" => $user_guid, "object_guid" => $user_guid)); elgg_create_river_item(array('view' => 'river/object/badge/award', 'action_type' => 'award', 'subject_guid' => $user_guid, 'object_guid' => $user_guid)); } return true; }
/** * Extends the current config of htmlawed * * @param string $hook hookname * @param string $type hooktype * @param array $returnvalue returnvalue * @param array $params params * * @return void */ function ckeditor_extended_htmlawed_config($hook_name, $entity_type, $return_value, $params) { if (!is_array($return_value)) { return $return_value; } // Extend valid input elements $htmlawed_elements = elgg_get_plugin_setting('htmlawed_elements', 'ckeditor_extended'); if (!empty($htmlawed_elements)) { $ext_tags_array = explode(',', $htmlawed_elements); $elements = '*'; foreach ($ext_tags_array as $fulltag) { $fulltag = trim(str_replace(array('[', ']'), ' ', $fulltag)); $fulltag = explode(' ', $fulltag); $tag = $fulltag[0]; $elements .= '+' . $tag; } $return_value['elements'] = $elements; } $htmlawed_schemes = elgg_get_plugin_setting('htmlawed_schemes', 'ckeditor_extended'); if (!empty($htmlawed_schemes)) { $current_schemes = elgg_extract('schemes', $return_value, '*:http'); $htmlawed_schemes = $current_schemes . ',' . ltrim($htmlawed_schemes, ','); $return_value['schemes'] = $htmlawed_schemes; } return $return_value; }
function embed_extender_init() { global $CONFIG; if (elgg_is_active_plugin('embedvideo')) { include_once $CONFIG->pluginspath . 'embedvideo/lib/embedvideo.php'; //die('embed'); } else { include_once $CONFIG->pluginspath . 'embed_extender/lib/embedvideo.php'; //die('extender'); } include_once $CONFIG->pluginspath . 'embed_extender/lib/custom.php'; include_once $CONFIG->pluginspath . 'embed_extender/lib/embed_extender.php'; //Check where embed code - The wire $wire_show = elgg_get_plugin_setting('wire_show', 'embed_extender'); if ($wire_show == 'yes') { elgg_register_plugin_hook_handler('view', 'object/thewire', 'embed_extender_rewrite'); } //Check where embed code - Blog posts $blog_show = elgg_get_plugin_setting('blog_show', 'embed_extender'); if ($blog_show == 'yes') { elgg_register_plugin_hook_handler('view', 'object/blog', 'embed_extender_rewrite'); } //Check where embed code - Comments $comment_show = elgg_get_plugin_setting('comment_show', 'embed_extender'); if ($comment_show == 'yes') { elgg_register_plugin_hook_handler('view', 'annotation/generic_comment', 'embed_extender_rewrite'); elgg_register_plugin_hook_handler('view', 'annotation/default', 'embed_extender_rewrite'); } //Check where embed code - Group topics $topicposts_show = elgg_get_plugin_setting('topicposts_show', 'embed_extender'); if ($topicposts_show == 'yes') { elgg_register_plugin_hook_handler('view', 'object/groupforumtopic', 'embed_extender_rewrite'); } //Check where embed code - Messageboard $messageboard_show = elgg_get_plugin_setting('messageboard_show', 'embed_extender'); if ($messageboard_show == 'yes') { elgg_register_plugin_hook_handler('view', 'annotation/default', 'embed_extender_rewrite'); } //Check where embed code - Pages $page_show = elgg_get_plugin_setting('page_show', 'embed_extender'); if ($page_show == 'yes') { elgg_register_plugin_hook_handler('view', 'object/page_top', 'embed_extender_rewrite'); } //Check where embed code - Pages $page_show = elgg_get_plugin_setting('bookmark_show', 'embed_extender'); if ($page_show == 'yes') { elgg_register_plugin_hook_handler('view', 'object/bookmarks', 'embed_extender_rewrite'); } // Check embed code for custom views $viewslist = elgg_get_plugin_setting('custom_views', 'embed_extender'); $views = explode("\n", $viewslist); foreach ($views as $view) { elgg_register_plugin_hook_handler('view', $view, 'embed_extender_rewrite'); } elgg_extend_view('css', 'embed_extender/css'); // register example hook handler // for providing custom video handler (yahoo) elgg_register_plugin_hook_handler('embed_extender', 'custom_patterns', 'embed_extender_yahoo_pattern'); elgg_register_plugin_hook_handler('embed_extender', 'custom_embed', 'embed_extender_yahoo_embed'); }
function follow_tags_init() { // Load follow-tags configuration if (elgg_get_plugin_setting("followTags", "follow_tags") == "true") { // Register Cache-Clear hook after change admin settig elgg_register_plugin_hook_handler("setting", "plugin", "follow_tags_setting"); //Register Save Action for saving and changing FollowTags elgg_register_action("follow_tags/save", dirname(__FILE__) . '/action/save_notify.php'); elgg_register_action("follow_tags/activity", dirname(__FILE__) . '/action/save.php'); //Register a River Tab if (elgg_is_logged_in()) { $user = elgg_get_logged_in_user_entity(); elgg_register_menu_item('filter', array('name' => 'tags', 'href' => "/activity/tags", 'text' => elgg_echo("follow_tags:tab:title"), 'priority' => 500, 'contexts' => array('activity'))); //Register a Sidebar Item for Usersettings elgg_register_menu_item('page', array('name' => "follow_tags", 'text' => elgg_echo("follow_tags:sidebar:title"), 'href' => "follow_tags/settings/" . $user->username, 'context' => "settings")); } elgg_register_plugin_hook_handler("route", "activity", "follow_tags_route_activity_hook"); //Register Pagehandlers elgg_register_page_handler('follow_tags', 'follow_tags_page_handler'); } //Register Pagehandlers elgg_register_page_handler('follow_tags_data', 'follow_tags_data_page_handler'); //Register JS and CSS for custom taginput field $js_url = 'mod/follow_tags/vendors/tag-it.min.js'; elgg_register_js('jquery.tagsinput', $js_url); // Register CSS for TagInput $css_url = 'mod/follow_tags/vendors/tag-it.css'; elgg_register_css('jquery.tagsinput', $css_url); // extend tags to include js/css just in time elgg_extend_view("input/tags", "follow_tags/extends/tags"); // Add a JavaScript Initialization elgg_extend_view('js/elgg', 'js/follow_tags/site'); // Run the followtags_notofy function in event is triggerd elgg_register_event_handler('create', 'object', 'follow_tags_notify', 501); }
/** * Cron job */ function garbagecollector_cron($hook, $entity_type, $returnvalue, $params) { echo elgg_echo('garbagecollector'); // Garbage collect metastrings echo elgg_echo('garbagecollector:gc:metastrings'); if (_elgg_delete_orphaned_metastrings() !== false) { echo elgg_echo('garbagecollector:ok'); } else { echo elgg_echo('garbagecollector:error'); } echo "\n"; // Now, because we are nice, trigger a plugin hook to let other plugins do some GC $rv = true; $period = elgg_get_plugin_setting('period', 'garbagecollector'); elgg_trigger_plugin_hook('gc', 'system', array('period' => $period)); // Now we optimize all tables $tables = garbagecollector_get_tables(); foreach ($tables as $table) { echo elgg_echo('garbagecollector:optimize', array($table)); if (garbagecollector_optimize_table($table) !== false) { echo elgg_echo('garbagecollector:ok'); } else { echo elgg_echo('garbagecollector:error'); } echo "\n"; } echo elgg_echo('garbagecollector:done'); }
/** * {@inheritdoc} */ public function getFilterOptions() { $options = $this->getOptions(); $filter_options = array('', 'open', 'closed', 'featured'); if (elgg_is_logged_in()) { $filter_options[] = 'member'; if (elgg_get_plugin_setting('limited_groups', 'groups') != 'yes' || elgg_is_admin_logged_in()) { $filter_options[] = 'admin'; } $filter_options[] = 'invited'; $filter_options[] = 'membership_request'; } $params = ['list' => $this]; $filter_options = elgg_trigger_plugin_hook('sort_relationships', 'group', $params, $filter_options); $subtypes = elgg_extract('subtype', $options); if (!$subtypes) { $subtypes = elgg_extract('subtypes', $options); } if (!empty($subtypes)) { $subtypes = (array) $subtypes; $subtype = $subtypes[0]; $filter_options = elgg_trigger_plugin_hook('sort_relationships', "group:{$subtype}", $params, $filter_options); } return $filter_options; }
function set_notification_method($event, $object_type, $object) { $personalNotifications = elgg_get_plugin_setting('personal_notifications', 'notifications_tools'); update_user_personal_notifications_settings($object->getGUID(), $personalNotifications); $friendsNotifications = elgg_get_plugin_setting('friends_notifications', 'notifications_tools'); update_user_friends_notifications_settings($object->getGUID(), $friendsNotifications); }
/** * Determines if $viewer has access to $user's friends list * * @param ElggUser $user User whose friends are to be displayed * @param ElggUser $viewer Viewer * @return bool */ function user_friends_can_view_friends(ElggUser $user, ElggUser $viewer = null) { if (!isset($viewer)) { $viewer = elgg_get_logged_in_user_entity(); } $permission = false; if ($viewer && elgg_check_access_overrides($viewer->guid)) { $permission = true; } $setting = elgg_get_plugin_user_setting('friend_list_visibility', $user->guid, 'user_friends'); if (!isset($setting)) { $setting = elgg_get_plugin_setting('friend_list_visibility', 'user_friends', ACCESS_PUBLIC); } switch ((int) $setting) { case ACCESS_PRIVATE: $permission = $viewer && $user->canEdit($viewer->guid); break; case ACCESS_FRIENDS: $permission = $viewer && $user->isFriendsWith($viewer->guid); break; case ACCESS_LOGGED_IN: $permission = $viewer; break; case ACCESS_PUBLIC: $permission = true; break; } $params = array('viewer' => $viewer, 'user' => $user); return elgg_trigger_plugin_hook('permissions_check:view_friends_list', 'user', $params, $permission); }
function gnusocial_api_init() { // require libraries $base = elgg_get_plugins_path() . 'gnusocial_api'; elgg_register_class('GNUSocialOAuth', "{$base}/vendors/gnusocialoauth/gnusocialOAuth.php"); elgg_register_library('gnusocial_api', "{$base}/lib/gnusocial_api.php"); elgg_load_library('gnusocial_api'); // extend site views //elgg_extend_view('metatags', 'gnusocial_api/metatags'); elgg_extend_view('css/elgg', 'gnusocial_api/css'); elgg_extend_view('css/admin', 'gnusocial_api/css'); elgg_extend_view('js/elgg', 'gnusocial_api/js'); // sign on with gnusocial if (gnusocial_api_allow_sign_on_with_gnusocial()) { elgg_extend_view('login/extend', 'gnusocial_api/login'); } // register page handler elgg_register_page_handler('gnusocial_api', 'gnusocial_api_pagehandler'); // backward compatibility elgg_register_page_handler('gnusocialservice', 'gnusocial_api_pagehandler_deprecated'); // register Walled Garden public pages elgg_register_plugin_hook_handler('public_pages', 'walled_garden', 'gnusocial_api_public_pages'); // push wire post messages to gnusocial if (elgg_get_plugin_setting('wire_posts', 'gnusocial_api') == 'yes') { elgg_register_plugin_hook_handler('status', 'user', 'gnusocial_api_tweet'); } $actions = dirname(__FILE__) . '/actions/gnusocial_api'; elgg_register_action('gnusocial_api/interstitial_settings', "{$actions}/interstitial_settings.php", 'logged_in'); }
/** * Add search by proximity section * * @param string $hook Equals 'search_types' * @param string $type Equals 'get_types' * @param array $return A list of search types * @param array $params Additional params * @return array */ function search_custom_types($hook, $type, $return, $params) { if (elgg_get_plugin_setting('proximity_search', PLUGIN_ID)) { $return[] = 'proximity'; } return $return; }
/** * Extends the current config of htmlawed * * @param string $hook hookname * @param string $type hooktype * @param array $returnvalue returnvalue * @param array $params params * * @return void */ function ckeditor_extended_htmlawed_config($hook_name, $entity_type, $return_value, $params) { if (is_array($return_value)) { // Extend valid input elements $htmlawed_elements = elgg_get_plugin_setting("htmlawed_elements", "ckeditor_extended"); if (!empty($htmlawed_elements)) { $ext_tags_array = explode(",", $htmlawed_elements); $elements = "*"; foreach ($ext_tags_array as $fulltag) { $fulltag = trim(str_replace(array("[", "]"), " ", $fulltag)); $fulltag = explode(" ", $fulltag); $tag = $fulltag[0]; $opts = explode("|", $fulltag[1]); $elements .= "+" . $tag; } $return_value["elements"] = $elements; } $htmlawed_schemes = elgg_get_plugin_setting("htmlawed_schemes", "ckeditor_extended"); if (!empty($htmlawed_schemes)) { $current_schemes = elgg_extract("schemes", $return_value, "*:http"); $htmlawed_schemes = $current_schemes . "," . ltrim($htmlawed_schemes, ","); $return_value["schemes"] = $htmlawed_schemes; } } return $return_value; }
function upgrade_20141125() { $version = (int) elgg_get_plugin_setting('version', PLUGIN_ID); if ($version == 2011111502) { // this didn't happen correctly in the last upgrade // due to some legacy setting elgg_set_plugin_setting('version', 20141121, PLUGIN_ID); $version = 20141121; } if ($version >= UPGRADE_VERSION) { return true; } $options = array('type' => 'object', 'subtype' => 'plugin_project', 'limit' => false); $batch = new ElggBatch('elgg_get_entities', $options); foreach ($batch as $plugin) { // get most recent release $releases = elgg_get_entities(array('type' => 'object', 'subtype' => 'plugin_release', 'container_guid' => $plugin->guid, 'limit' => 1, 'callback' => false)); if ($releases[0]->time_created) { update_entity_last_action($plugin->guid, $releases[0]->time_created); } else { update_entity_last_action($plugin->guid, $plugin->time_created); } } elgg_set_plugin_setting('version', 20141125, PLUGIN_ID); }
/** * Clean unvalidated users cron hook */ function clean_unvalidate($vars) { $days_till_first_reminder = elgg_get_plugin_setting("validation_reminder_first_message") * 1; $days_till_second_reminder = elgg_get_plugin_setting("validation_reminder_second_message") * 1; $days_till_removal = elgg_get_plugin_setting("validation_reminder_remove") * 1; $proviousAccessShowHiddenEntities = access_show_hidden_entities(true); $proviousIgnoreAccess = elgg_set_ignore_access(true); $dbprefix = elgg_get_config('dbprefix'); // @var $users ElggUser[] $users = elgg_get_entities_from_metadata(['type' => 'user', 'limit' => false, 'metadata_name_value_pair' => array(array('name' => 'validated', 'value' => false))]); foreach ($users as $user) { $validate_reminder_start_date = $user->time_created; if (time() - $validate_reminder_start_date >= $days_till_removal * 24 * 60 * 60) { $user->delete(); echo 'Account deleted'; } else { if (time() - $validate_reminder_start_date >= $days_till_second_reminder * 24 * 60 * 60 && time() - $validate_reminder_start_date <= ($days_till_second_reminder + 1) * 24 * 60 * 60) { send_validation_reminder_mail($user, $days_till_removal, $days_till_second_reminder); echo 'Send second reminder send'; } else { if (time() - $validate_reminder_start_date >= $days_till_first_reminder * 24 * 60 * 60 && time() - $validate_reminder_start_date <= ($days_till_first_reminder + 1) * 24 * 60 * 60) { send_validation_reminder_mail($user, $days_till_removal, $days_till_first_reminder); echo 'Send first reminder send'; } else { echo 'Waiting for validation'; } } } echo ' for user: '******'<br>'; } elgg_set_ignore_access($proviousIgnoreAccess); access_show_hidden_entities($proviousAccessShowHiddenEntities); }
function elgg_modifications_pagesetup() { $user = elgg_get_logged_in_user_entity(); if (!$user) { return; } if (elgg_in_context("accept_terms")) { return; } $site = elgg_get_site_entity(); if ($site->isPublicPage()) { return; } if (!empty($_SESSION["terms_accepted"])) { return; } if (elgg_get_plugin_setting("accept_terms", "elgg_modifications") === "no") { return; } $user_ts = $user->getPrivateSetting("general_terms_accepted"); if (empty($user_ts)) { $_SESSION["terms_forward_from"] = current_page_url(); forward("accept_terms"); } else { // user has accepted the terms, so don't check again $_SESSION["terms_accepted"] = $user_ts; } }
function developers_process_settings() { if (elgg_get_plugin_setting('display_errors', 'developers') == 1) { ini_set('display_errors', 1); } else { ini_set('display_errors', 0); } if (elgg_get_plugin_setting('screen_log', 'developers') == 1) { $cache = new ElggLogCache(); elgg_set_config('log_cache', $cache); elgg_register_plugin_hook_handler('debug', 'log', array($cache, 'insertDump')); elgg_extend_view('page/elements/foot', 'developers/log'); } if (elgg_get_plugin_setting('show_strings', 'developers') == 1) { // first and last in case a plugin registers a translation in an init method elgg_register_event_handler('init', 'system', 'developers_clear_strings', 1000); elgg_register_event_handler('init', 'system', 'developers_clear_strings', 1); } if (elgg_get_plugin_setting('wrap_views', 'developers') == 1) { elgg_register_plugin_hook_handler('view', 'all', 'developers_wrap_views'); } if (elgg_get_plugin_setting('log_events', 'developers') == 1) { elgg_register_event_handler('all', 'all', 'developers_log_events', 1); elgg_register_plugin_hook_handler('all', 'all', 'developers_log_events', 1); } }
function twitter_api_init() { // require libraries $base = __DIR__; elgg_register_class('TwitterOAuth', "{$base}/vendors/twitteroauth/twitterOAuth.php"); elgg_register_library('twitter_api', "{$base}/lib/twitter_api.php"); elgg_load_library('twitter_api'); // extend site views //elgg_extend_view('metatags', 'twitter_api/metatags'); elgg_extend_view('elgg.css', 'twitter_api/css'); elgg_extend_view('admin.css', 'twitter_api/css'); elgg_extend_view('elgg.js', 'twitter_api/js'); // sign on with twitter if (twitter_api_allow_sign_on_with_twitter()) { elgg_extend_view('login/extend', 'twitter_api/login'); } // register page handler elgg_register_page_handler('twitter_api', 'twitter_api_pagehandler'); // register Walled Garden public pages elgg_register_plugin_hook_handler('public_pages', 'walled_garden', 'twitter_api_public_pages'); // push wire post messages to twitter if (elgg_get_plugin_setting('wire_posts', 'twitter_api') == 'yes') { elgg_register_plugin_hook_handler('status', 'user', 'twitter_api_tweet'); } }
function init() { if (is_on_probation()) { // don't allow sending messages elgg_unregister_action('messages/send'); elgg_register_plugin_hook_handler('register', 'menu:topbar', __NAMESPACE__ . '\\hook_register_menu_topbar', 999); // don't allow group creation elgg_unregister_action('groups/edit'); elgg_register_plugin_hook_handler('register', 'menu:title', __NAMESPACE__ . '\\hook_register_title_menu', 999); // mark content as probationary and make it private. if (elgg_get_plugin_setting(QUARANTINE_CONTENT, PLUGIN_ID)) { elgg_register_event_handler('create', 'object', __NAMESPACE__ . '\\event_create_object'); elgg_register_event_handler('update', 'object', __NAMESPACE__ . '\\event_update_object'); } } if (elgg_is_admin_logged_in()) { elgg_register_admin_menu_item('administer', 'probation', 'users'); // Add approval links to entity menus elgg_register_plugin_hook_handler('prepare', 'menu:entity', __NAMESPACE__ . '\\hook_prepare_entity_menu', 999); } // show message above user profile elgg_extend_view('profile/details', 'probation/profile_details_400', 400); elgg_register_action('probation/approve_content', __DIR__ . '/actions/probation/approve_content.php', 'admin'); elgg_register_action('probation/approve_user', __DIR__ . '/actions/probation/approve_user.php', 'admin'); // hiding "Send message" or adding "Remove probation" elgg_register_plugin_hook_handler('register', 'menu:user_hover', __NAMESPACE__ . '\\hook_register_hover_menu', 999); // put all newly-enabled users on probation elgg_register_event_handler('enable', 'user', __NAMESPACE__ . '\\event_enable_user'); // we don't enqueue notification events for probationary content elgg_register_plugin_hook_handler('enqueue', 'notification', __NAMESPACE__ . '\\hook_enqueue_notification'); // nor do we allow notify_user() for comments/replies elgg_register_plugin_hook_handler('email', 'system', __NAMESPACE__ . '\\hook_email_system', 1); elgg_register_event_handler('shutdown', 'system', __NAMESPACE__ . '\\event_shutdown'); }
/** * initialize the phpmailer plugin */ function phpmailer_init() { if (elgg_get_plugin_setting('phpmailer_override', 'phpmailer') != 'disabled') { register_notification_handler('email', 'phpmailer_notify_handler'); elgg_register_plugin_hook_handler('email', 'system', 'phpmailer_mail_override'); } }