Esempio n. 1
0
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');
}
Esempio n. 2
0
/**
 * 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');
}
Esempio n. 3
0
File: start.php Progetto: elgg/elgg
/**
 * 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;
    }
}
Esempio n. 4
0
/**
 * 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;
                }
            }
        }
    }
}
Esempio n. 5
0
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');
    }
}
Esempio n. 6
0
/**
 * 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;
}
Esempio n. 8
0
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;
 }
Esempio n. 12
0
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);
}
Esempio n. 13
0
/**
 * 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;
}
Esempio n. 14
0
/**
 * 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;
}
Esempio n. 15
0
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');
}
Esempio n. 16
0
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);
}
Esempio n. 17
0
/**
 * 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');
}
Esempio n. 18
0
 /**
  * {@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;
 }
Esempio n. 19
0
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);
}
Esempio n. 20
0
/**
 * 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);
}
Esempio n. 21
0
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');
}
Esempio n. 22
0
/**
 * 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;
}
Esempio n. 23
0
/**
 * 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;
}
Esempio n. 24
0
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);
}
Esempio n. 25
0
/**
 * 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);
}
Esempio n. 26
0
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;
    }
}
Esempio n. 27
0
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);
    }
}
Esempio n. 28
0
File: start.php Progetto: elgg/elgg
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');
    }
}
Esempio n. 29
0
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');
}
Esempio n. 30
0
/**
 * 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');
    }
}