Пример #1
0
 /**
  * Sends a notice about deprecated use of a function, view, etc.
  *
  * @param string $msg             Message to log
  * @param string $dep_version     Human-readable *release* version: 1.7, 1.8, ...
  * @param int    $backtrace_level How many levels back to display the backtrace.
  *                                Useful if calling from functions that are called
  *                                from other places (like elgg_view()). Set to -1
  *                                for a full backtrace.
  * @return bool
  */
 function sendNotice($msg, $dep_version, $backtrace_level = 1)
 {
     if (!$dep_version) {
         return false;
     }
     $elgg_version = elgg_get_version(true);
     $elgg_version_arr = explode('.', $elgg_version);
     $elgg_major_version = (int) $elgg_version_arr[0];
     $elgg_minor_version = (int) $elgg_version_arr[1];
     $dep_version_arr = explode('.', (string) $dep_version);
     $dep_major_version = (int) $dep_version_arr[0];
     $dep_minor_version = (int) $dep_version_arr[1];
     $msg = "Deprecated in {$dep_major_version}.{$dep_minor_version}: {$msg} Called from ";
     // Get a file and line number for the log. Skip over the function that
     // sent this notice and see who called the deprecated function itself.
     $stack = array();
     $backtrace = debug_backtrace();
     // never show this call.
     array_shift($backtrace);
     $i = count($backtrace);
     foreach ($backtrace as $trace) {
         $stack[] = "[#{$i}] {$trace['file']}:{$trace['line']}";
         $i--;
         if ($backtrace_level > 0) {
             if ($backtrace_level <= 1) {
                 break;
             }
             $backtrace_level--;
         }
     }
     $msg .= implode("<br /> -> ", $stack);
     $this->logger->warn($msg);
     return true;
 }
Пример #2
0
/**
 * Generate a basic report.
 *
 * @return string
 */
function diagnostics_basic_hook($hook, $entity_type, $returnvalue, $params)
{
    // Get version information
    $version = elgg_get_version();
    $release = elgg_get_version(true);
    $returnvalue .= elgg_echo('diagnostics:report:basic', array($release, $version));
    return $returnvalue;
}
Пример #3
0
 /**
  * @codeCoverageIgnore
  */
 public static function boot()
 {
     if (version_compare(elgg_get_version(true), '1.9', '<')) {
         $autoloader = new CodeReviewAutoloader();
         $autoloader->register();
     }
     self::initConfig(array('path' => elgg_get_config('path'), 'pluginspath' => elgg_get_plugins_path(), 'plugins_getter' => 'elgg_get_plugins'));
 }
Пример #4
0
 /**
  * @codeCoverageIgnore
  */
 public static function boot()
 {
     if (version_compare(elgg_get_version(true), '1.9', '<')) {
         $autoloader = new \CodeReview\Autoloader();
         $autoloader->register();
     }
     $enginePath = elgg_get_config('path') . 'engine/';
     if (function_exists('elgg_get_engine_path')) {
         $enginePath = elgg_get_engine_path() . '/';
     }
     self::initConfig(array('engine_path' => $enginePath, 'path' => elgg_get_config('path'), 'pluginspath' => elgg_get_plugins_path(), 'plugins_getter' => 'elgg_get_plugins'));
 }
Пример #5
0
/**
 * Initialize the plugin
 * @return void
 */
function elgg_lightbox_init()
{
    if (!elgg_is_active_plugin('mrclay_combiner')) {
        elgg_unregister_js('lightbox');
    }
    elgg_unregister_css('lightbox');
    elgg_extend_view('elgg.css', 'colorbox.css');
    elgg_extend_view('admin.css', 'colorbox.css');
    if (version_compare(elgg_get_version(true), '2.2', '<')) {
        elgg_extend_view('elgg.js', 'elgg/lightbox.js');
        elgg_require_js('elgg/lightbox');
    }
}
Пример #6
0
 /**
  * Returns Elgg version
  * @return string|false
  */
 public static function getElggVersion()
 {
     if (isset(self::$version)) {
         return self::$version;
     }
     if (is_callable('elgg_get_version')) {
         return elgg_get_version(true);
     } else {
         $path = self::getRootPath() . '/version.php';
         if (!(include $path)) {
             return false;
         }
         self::$version = $release;
         return self::$version;
     }
 }
Пример #7
0
 /**
  * Sends a notice about deprecated use of a function, view, etc.
  *
  * @param string $msg             Message to log / display.
  * @param string $dep_version     Human-readable *release* version: 1.7, 1.8, ...
  * @param int    $backtrace_level How many levels back to display the backtrace.
  *                                Useful if calling from functions that are called
  *                                from other places (like elgg_view()). Set to -1
  *                                for a full backtrace.
  * @return bool
  */
 function sendNotice($msg, $dep_version, $backtrace_level = 1)
 {
     // if it's a major release behind, visual and logged
     // if it's a 1 minor release behind, visual and logged
     // if it's for current minor release, logged.
     // bugfixes don't matter because we are not deprecating between them
     if (!$dep_version) {
         return false;
     }
     $elgg_version = elgg_get_version(true);
     $elgg_version_arr = explode('.', $elgg_version);
     $elgg_major_version = (int) $elgg_version_arr[0];
     $elgg_minor_version = (int) $elgg_version_arr[1];
     $dep_version_arr = explode('.', (string) $dep_version);
     $dep_major_version = (int) $dep_version_arr[0];
     $dep_minor_version = (int) $dep_version_arr[1];
     $visual = false;
     if ($dep_major_version < $elgg_major_version || $dep_minor_version < $elgg_minor_version) {
         $visual = true;
     }
     $msg = "Deprecated in {$dep_major_version}.{$dep_minor_version}: {$msg}";
     if ($visual && $this->session->isAdminLoggedIn()) {
         register_error($msg);
     }
     // Get a file and line number for the log. Never show this in the UI.
     // Skip over the function that sent this notice and see who called the deprecated
     // function itself.
     $msg .= " Called from ";
     $stack = array();
     $backtrace = debug_backtrace();
     // never show this call.
     array_shift($backtrace);
     $i = count($backtrace);
     foreach ($backtrace as $trace) {
         $stack[] = "[#{$i}] {$trace['file']}:{$trace['line']}";
         $i--;
         if ($backtrace_level > 0) {
             if ($backtrace_level <= 1) {
                 break;
             }
             $backtrace_level--;
         }
     }
     $msg .= implode("<br /> -> ", $stack);
     $this->logger->warn($msg);
     return true;
 }
Пример #8
0
function elgg_update_services_get_updates()
{
    $installed_plugins = elgg_get_plugins('all');
    $plugin_hash_list = array();
    foreach ($installed_plugins as $id => $plugin) {
        $manifest = $plugin->getManifest();
        $bundled = in_array('bundled', $manifest->getCategories()) ? true : false;
        if (!$bundled) {
            $id = $manifest->getID();
            if (empty($id)) {
                $id = $plugin->getID();
            }
            $version = $manifest->getVersion();
            $author = $manifest->getAuthor();
            $plugin_hash_list[] = md5($id . $version . $author);
        }
    }
    $url = "http://community.elgg.org/services/api/rest/json/?method=plugins.update.check&version=" . elgg_get_version(true);
    foreach ($plugin_hash_list as $plugin_hash) {
        $url .= "&plugins[]=" . $plugin_hash;
    }
    $update_check = elgg_update_services_file_get_conditional_contents($url);
    return json_decode($update_check, true);
}
Пример #9
0
function init_late()
{
    elgg_extend_view('css/elgg', 'css/mrclay_aalborg');
    elgg_register_css('fonts.Open Sans', 'https://fonts.googleapis.com/css?family=Open+Sans:400,300&subset=latin,latin-ext');
    elgg_load_css('fonts.Open Sans');
    elgg_require_js('mrclay_aalborg');
    // add a topbar in the header
    // TODO leave topbar in place and change with CSS
    elgg_extend_view('page/elements/header', 'mrclay_aalborg/topbar', 0);
    elgg_extend_view('forms/comment/save', 'mrclay_aalborg/comment_save', 0);
    // topbar menu edits
    elgg_register_plugin_hook_handler('prepare', 'menu:topbar', 'MrClay\\AalborgExtras\\Topbar::prepareMenu', 1000);
    // user hover customizations
    elgg_register_plugin_hook_handler('prepare', 'menu:user_hover', 'MrClay\\AalborgExtras\\UserHover::prepareMenu', 1000);
    // https://github.com/Elgg/Elgg/issues/8718
    elgg_register_plugin_hook_handler('route', 'file', 'MrClay\\AalborgExtras\\Files::handleFileRoute', 1000);
    elgg_register_plugin_hook_handler('register', 'menu:page', 'MrClay\\AalborgExtras\\Files::registerPageMenu', 1000);
    elgg_register_plugin_hook_handler('register', 'menu:extras', 'MrClay\\AalborgExtras\\Files::registerExtrasMenu', 1000);
    // Replace "Navigation" with "Pages"
    // TODO cleanup
    elgg_register_plugin_hook_handler('view', 'pages/sidebar/navigation', function ($h, $t, $v, $p) {
        $v = preg_replace('~<h3>.*?</h3>~', '<h3>' . elgg_echo('pages') . '</h3>', $v, 1);
        return $v;
    });
    // https://github.com/Elgg/Elgg/issues/8697
    elgg_unextend_view('profile/status', 'thewire/profile_status');
    // https://github.com/Elgg/Elgg/issues/8628
    if (version_compare(elgg_get_version(), '2.0', '>=')) {
        // https://github.com/Elgg/Elgg/issues/8628
        elgg_unregister_menu_item('extras', 'report_this');
        if (elgg_is_logged_in()) {
            elgg_register_menu_item('extras', array('name' => 'report_this', 'href' => 'reportedcontent/add', 'title' => elgg_echo('reportedcontent:this:tooltip'), 'text' => elgg_view_icon('exclamation-triangle'), 'priority' => 500, 'section' => 'default', 'link_class' => 'elgg-lightbox'));
        }
    }
    $path = substr(current_page_url(), strlen(elgg_get_site_url()));
    // remove duplicate title from page view
    // TODO cleanup
    if (preg_match('~^pages/view/(\\d+)~', $path, $m)) {
        $guid = (int) $m[1];
        // https://github.com/Elgg/Elgg/issues/8723
        elgg_register_plugin_hook_handler('view_vars', 'object/elements/summary', function ($h, $t, $vars, $p) use($guid) {
            if (empty($vars['entity'])) {
                return;
            }
            $entity = $vars['entity'];
            /* @var \ElggEntity $entity */
            // make sure this is the expected entity
            if ($entity->guid !== $guid) {
                return;
            }
            $vars['title'] = false;
            return $vars;
        });
        // https://github.com/Elgg/Elgg/issues/8722
        elgg_register_plugin_hook_handler('view_vars', 'object/elements/full', function ($h, $t, $vars, $p) use($guid) {
            // make sure this is the expected entity
            if (empty($vars['entity'])) {
                return;
            }
            $entity = $vars['entity'];
            /* @var \ElggEntity $entity */
            if ($entity->guid !== $guid) {
                return;
            }
            $vars['icon'] = elgg_view_entity_icon($entity->getOwnerEntity(), 'tiny');
            return $vars;
        });
    }
    //	// add resources view classes to BODY
    //	elgg_register_plugin_hook_handler('view_vars', 'all', function ($h, $view, $vars, $p) {
    //		if (0 !== strpos($view, 'resources/')) {
    //			return;
    //		}
    //
    //		$classes = [];
    //
    //		$classes[] = 'elgg-' . preg_replace('~[^a-zA-Z0-9]+~', '-', $view);
    //
    //		if (is_array($vars)) {
    //			foreach ($vars as $key => $value) {
    //				if (is_string($value)
    //						&& preg_match('~^[a-zA-Z0-9_]+$~', $key)
    //						&& preg_match('~^[a-zA-Z0-9_]+$~', $key)) {
    //					$classes[] = "elgg-resource-vars-$key-$value";
    //				}
    //			}
    //		}
    //
    //		$classes_adder = function ($h, $t, $vars, $p) use ($classes) {
    //			$body_attrs = (array)elgg_extract('body_attrs', $vars, []);
    //			$body_classes = (array)elgg_extract('class', $body_attrs, []);
    //
    //			array_splice($body_classes, count($body_classes), 0, $classes);
    //			$vars['body_attrs']['class'] = $body_classes;
    //
    //			return $vars;
    //		};
    //		elgg_register_plugin_hook_handler('view_vars', 'page/elements/html', $classes_adder);
    //	});
}
Пример #10
0
    readfile("{$root_path}{$file}.js");
    // putting a new line between the files to address https://github.com/elgg/elgg/issues/3081
    echo "\n";
}
/**
 * Set some values that are cacheable
 */
?>
//<script>

elgg.version = '<?php 
echo elgg_get_version();
?>
';
elgg.release = '<?php 
echo elgg_get_version(true);
?>
';
elgg.config.wwwroot = '<?php 
echo elgg_get_site_url();
?>
';

// refresh token 3 times during its lifetime (in microseconds 1000 * 1/3)
elgg.security.interval = <?php 
echo (int) _elgg_services()->actions->getActionTokenTimeout() * 333;
?>
;
elgg.config.language = '<?php 
echo empty($CONFIG->language) ? 'en' : $CONFIG->language;
?>
Пример #11
0
 /**
  * Returns if the Elgg system meets the plugin's dependency
  * requirements.  This includes both requires and conflicts.
  *
  * Full reports can be requested.  The results are returned
  * as an array of arrays in the form array(
  * 	'type' => requires|conflicts,
  * 	'dep' => array( dependency array ),
  * 	'status' => bool if depedency is met,
  * 	'comment' => optional comment to display to the user.
  * )
  *
  * @param bool $full_report Return a full report.
  * @return bool|array
  */
 public function checkDependencies($full_report = false)
 {
     // Note: $conflicts and $requires are not unused. They're called dynamically
     $requires = $this->getManifest()->getRequires();
     $conflicts = $this->getManifest()->getConflicts();
     $enabled_plugins = elgg_get_plugins('active');
     $this_id = $this->getID();
     $report = array();
     // first, check if any active plugin conflicts with us.
     foreach ($enabled_plugins as $plugin) {
         $temp_conflicts = array();
         $temp_manifest = $plugin->getManifest();
         if ($temp_manifest instanceof \ElggPluginManifest) {
             $temp_conflicts = $plugin->getManifest()->getConflicts();
         }
         foreach ($temp_conflicts as $conflict) {
             if ($conflict['type'] == 'plugin' && $conflict['name'] == $this_id) {
                 $result = $this->checkDepPlugin($conflict, $enabled_plugins, false);
                 // rewrite the conflict to show the originating plugin
                 $conflict['name'] = $plugin->getManifest()->getName();
                 if (!$full_report && !$result['status']) {
                     $css_id = preg_replace('/[^a-z0-9-]/i', '-', $plugin->getManifest()->getID());
                     $link = elgg_view('output/url', ['text' => $plugin->getManifest()->getName(), 'href' => "#{$css_id}"]);
                     $key = 'ElggPluginPackage:InvalidPlugin:ConflictsWithPlugin';
                     $this->errorMsg = _elgg_services()->translator->translate($key, [$link]);
                     return $result['status'];
                 } else {
                     $report[] = array('type' => 'conflicted', 'dep' => $conflict, 'status' => $result['status'], 'value' => $this->getManifest()->getVersion());
                 }
             }
         }
     }
     $check_types = array('requires', 'conflicts');
     if ($full_report) {
         // Note: $suggests is not unused. It's called dynamically
         $suggests = $this->getManifest()->getSuggests();
         $check_types[] = 'suggests';
     }
     foreach ($check_types as $dep_type) {
         $inverse = $dep_type == 'conflicts' ? true : false;
         foreach (${$dep_type} as $dep) {
             switch ($dep['type']) {
                 case 'elgg_release':
                     $result = $this->checkDepElgg($dep, elgg_get_version(true), $inverse);
                     break;
                 case 'plugin':
                     $result = $this->checkDepPlugin($dep, $enabled_plugins, $inverse);
                     break;
                 case 'priority':
                     $result = $this->checkDepPriority($dep, $enabled_plugins, $inverse);
                     break;
                 case 'php_version':
                     $result = $this->checkDepPhpVersion($dep, $inverse);
                     break;
                 case 'php_extension':
                     $result = $this->checkDepPhpExtension($dep, $inverse);
                     break;
                 case 'php_ini':
                     $result = $this->checkDepPhpIni($dep, $inverse);
                     break;
                 default:
                     $result = null;
                     //skip further check
                     break;
             }
             if ($result !== null) {
                 // unless we're doing a full report, break as soon as we fail.
                 if (!$full_report && !$result['status']) {
                     $this->errorMsg = "Missing dependencies.";
                     return $result['status'];
                 } else {
                     // build report element and comment
                     $report[] = array('type' => $dep_type, 'dep' => $dep, 'status' => $result['status'], 'value' => $result['value']);
                 }
             }
         }
     }
     if ($full_report) {
         // add provides to full report
         $provides = $this->getManifest()->getProvides();
         foreach ($provides as $provide) {
             $report[] = array('type' => 'provides', 'dep' => $provide, 'status' => true, 'value' => '');
         }
         return $report;
     }
     return true;
 }
Пример #12
0
 /**
  * Returns if the Elgg system meets the plugin's dependency
  * requirements.  This includes both requires and conflicts.
  *
  * Full reports can be requested.  The results are returned
  * as an array of arrays in the form array(
  * 	'type' => requires|conflicts,
  * 	'dep' => array( dependency array ),
  * 	'status' => bool if depedency is met,
  * 	'comment' => optional comment to display to the user.
  * )
  *
  * @param bool $full_report Return a full report.
  * @return bool|array
  */
 public function checkDependencies($full_report = false)
 {
     // Note: $conflicts and $requires are not unused. They're called dynamically
     $requires = $this->getManifest()->getRequires();
     $conflicts = $this->getManifest()->getConflicts();
     $enabled_plugins = elgg_get_plugins('active');
     $this_id = $this->getID();
     $report = array();
     // first, check if any active plugin conflicts with us.
     foreach ($enabled_plugins as $plugin) {
         $temp_conflicts = array();
         $temp_manifest = $plugin->getManifest();
         if ($temp_manifest instanceof ElggPluginManifest) {
             $temp_conflicts = $plugin->getManifest()->getConflicts();
         }
         foreach ($temp_conflicts as $conflict) {
             if ($conflict['type'] == 'plugin' && $conflict['name'] == $this_id) {
                 $result = $this->checkDepPlugin($conflict, $enabled_plugins, false);
                 // rewrite the conflict to show the originating plugin
                 $conflict['name'] = $plugin->getManifest()->getName();
                 if (!$full_report && !$result['status']) {
                     $this->errorMsg = "Conflicts with plugin \"{$plugin->getManifest()->getName()}\".";
                     return $result['status'];
                 } else {
                     $report[] = array('type' => 'conflicted', 'dep' => $conflict, 'status' => $result['status'], 'value' => $this->getManifest()->getVersion());
                 }
             }
         }
     }
     $check_types = array('requires', 'conflicts');
     if ($full_report) {
         // Note: $suggests is not unused. It's called dynamically
         $suggests = $this->getManifest()->getSuggests();
         $check_types[] = 'suggests';
     }
     foreach ($check_types as $dep_type) {
         $inverse = $dep_type == 'conflicts' ? true : false;
         foreach (${$dep_type} as $dep) {
             switch ($dep['type']) {
                 case 'elgg_version':
                     elgg_deprecated_notice("elgg_version in manifest.xml files is deprecated. Use elgg_release", 1.9);
                     $result = $this->checkDepElgg($dep, elgg_get_version(), $inverse);
                     break;
                 case 'elgg_release':
                     $result = $this->checkDepElgg($dep, elgg_get_version(true), $inverse);
                     break;
                 case 'plugin':
                     $result = $this->checkDepPlugin($dep, $enabled_plugins, $inverse);
                     break;
                 case 'priority':
                     $result = $this->checkDepPriority($dep, $enabled_plugins, $inverse);
                     break;
                 case 'php_version':
                     $result = $this->checkDepPhpVersion($dep, $inverse);
                     break;
                 case 'php_extension':
                     $result = $this->checkDepPhpExtension($dep, $inverse);
                     break;
                 case 'php_ini':
                     $result = $this->checkDepPhpIni($dep, $inverse);
                     break;
                 default:
                     $result = null;
                     //skip further check
                     break;
             }
             if ($result !== null) {
                 // unless we're doing a full report, break as soon as we fail.
                 if (!$full_report && !$result['status']) {
                     $this->errorMsg = "Missing dependencies.";
                     return $result['status'];
                 } else {
                     // build report element and comment
                     $report[] = array('type' => $dep_type, 'dep' => $dep, 'status' => $result['status'], 'value' => $result['value']);
                 }
             }
         }
     }
     if ($full_report) {
         // add provides to full report
         $provides = $this->getManifest()->getProvides();
         foreach ($provides as $provide) {
             $report[] = array('type' => 'provides', 'dep' => $provide, 'status' => true, 'value' => '');
         }
         return $report;
     }
     return true;
 }
Пример #13
0
if (!$base_url) {
    $base_url = current_page_url();
}
$base_url = elgg_http_remove_url_query_element($base_url, 'query');
$base_url = elgg_http_remove_url_query_element($base_url, 'sort');
$base_url = elgg_http_remove_url_query_element($base_url, 'limit');
$base_url = elgg_http_remove_url_query_element($base_url, elgg_extract('offset_key', $options, 'offset'));
$form = elgg_view_form('group/sort', array('action' => $base_url, 'method' => 'GET', 'disable_security' => true), $vars);
$user = elgg_extract('user', $vars, elgg_get_page_owner_entity());
$options['user'] = $user ?: null;
$options = group_sort_add_rel_options($options, $rel, $user ?: null);
list($sort_field, $sort_direction) = explode('::', $sort);
$options = group_sort_add_sort_options($options, $sort_field, $sort_direction);
if (!empty($query) && elgg_is_active_plugin('search')) {
    $options['query'] = $query;
    if (version_compare(elgg_get_version(true), '2.1', '>=')) {
        // search hooks in earlier versions reset 'joins' and 'wheres' and 'order_by'
        $results = elgg_trigger_plugin_hook('search', 'group', $options, array());
        $entities = elgg_extract('entities', $results);
        $list = elgg_view_entity_list($entities, $options);
    } else {
        $options = group_sort_add_search_query_options($options, $query);
        $list = call_user_func($callback, $options);
    }
} else {
    $list = call_user_func($callback, $options);
}
// make sure it's not an empty list with no results <p>
if (empty($query) && !preg_match_all("/<ul.*>.*<\\/ul>/s", $list)) {
    echo $list;
    return;
Пример #14
0
 /**
  * Initialize the site including site entity, plugins, and configuration
  *
  * @param array $submissionVars Submitted vars
  *
  * @return bool
  */
 protected function saveSiteSettings($submissionVars)
 {
     global $CONFIG;
     // ensure that file path, data path, and www root end in /
     $submissionVars['path'] = sanitise_filepath($submissionVars['path']);
     $submissionVars['dataroot'] = sanitise_filepath($submissionVars['dataroot']);
     $submissionVars['wwwroot'] = sanitise_filepath($submissionVars['wwwroot']);
     $site = new ElggSite();
     $site->name = strip_tags($submissionVars['sitename']);
     $site->url = $submissionVars['wwwroot'];
     $site->access_id = ACCESS_PUBLIC;
     $site->email = $submissionVars['siteemail'];
     $guid = $site->save();
     if (!$guid) {
         register_error(elgg_echo('install:error:createsite'));
         return FALSE;
     }
     // bootstrap site info
     $CONFIG->site_guid = $guid;
     $CONFIG->site_id = $guid;
     $CONFIG->site = $site;
     datalist_set('installed', time());
     datalist_set('path', $submissionVars['path']);
     datalist_set('dataroot', $submissionVars['dataroot']);
     datalist_set('default_site', $site->getGUID());
     datalist_set('version', elgg_get_version());
     datalist_set('simplecache_enabled', 1);
     datalist_set('system_cache_enabled', 1);
     datalist_set('simplecache_lastupdate', time());
     // new installations have run all the upgrades
     $upgrades = elgg_get_upgrade_files($submissionVars['path'] . 'engine/lib/upgrades/');
     datalist_set('processed_upgrades', serialize($upgrades));
     set_config('view', 'default', $site->getGUID());
     set_config('language', 'en', $site->getGUID());
     set_config('default_access', $submissionVars['siteaccess'], $site->getGUID());
     set_config('allow_registration', TRUE, $site->getGUID());
     set_config('walled_garden', FALSE, $site->getGUID());
     set_config('allow_user_default_access', '', $site->getGUID());
     $this->setSubtypeClasses();
     $this->enablePlugins();
     return TRUE;
 }
Пример #15
0
/**
 * Get the site data to be merged into "elgg" in elgg.js.
 *
 * Unlike _elgg_get_js_page_data(), the keys returned are literal expressions.
 *
 * @return array
 * @access private
 */
function _elgg_get_js_site_data()
{
    $language = elgg_get_config('language');
    if (!$language) {
        $language = 'en';
    }
    return ['elgg.data' => (object) elgg_trigger_plugin_hook('elgg.data', 'site', null, []), 'elgg.version' => elgg_get_version(), 'elgg.release' => elgg_get_version(true), 'elgg.config.wwwroot' => elgg_get_site_url(), 'elgg.security.interval' => (int) _elgg_services()->actions->getActionTokenTimeout() * 333, 'elgg.config.language' => $language];
}
Пример #16
0
/**
 * Get the current Elgg version information
 *
 * @param bool $humanreadable Whether to return a human readable version (default: false)
 *
 * @return string|false Depending on success
 * @deprecated 1.9 Use elgg_get_version()
 */
function get_version($humanreadable = false)
{
    elgg_deprecated_notice('get_version() has been deprecated by elgg_get_version()', 1.9);
    return elgg_get_version($humanreadable);
}
Пример #17
0
<?php

//code_review::boot();
//elgg_register_event_handler('init', 'system', array('code_review', 'init'));
/*
 * Definitions
 */
function callbackTrueGlobal()
{
    return true;
}
/*
 * Elgg 1.7 conventions
 */
if (version_compare(elgg_get_version(true), '1.8') < 1) {
    elgg_register_event_handler('foo', 'bar', 'callbackTrueGlobal');
    elgg_register_event_handler('foo', 'bar', array('ugly_plugin', 'callbackTrue'));
    elgg_register_plugin_hook_handler('foo', 'bar', 'callbackTrueGlobal');
    elgg_register_plugin_hook_handler('foo', 'bar', array('ugly_plugin', 'callbackTrue'));
}
/*
 * Elgg 1.8 conventions
 */
if (version_compare(elgg_get_version(true), '1.9') < 1) {
    elgg_register_event_handler('foo', 'bar', 'callbackTrueGlobal');
    elgg_register_event_handler('foo', 'bar', array('ugly_plugin', 'callbackTrue'));
    elgg_register_plugin_hook_handler('foo', 'bar', 'callbackTrueGlobal');
    elgg_register_plugin_hook_handler('foo', 'bar', array('ugly_plugin', 'callbackTrue'));
}
Пример #18
0
 /**
  * Upgrades Elgg Database and code
  *
  * @return bool
  */
 protected function processUpgrades()
 {
     $dbversion = (int) _elgg_services()->datalist->get('version');
     if ($this->upgradeCode($dbversion)) {
         system_message(_elgg_services()->translator->translate('upgrade:core'));
         // Now we trigger an event to give the option for plugins to do something
         $upgrade_details = new \stdClass();
         $upgrade_details->from = $dbversion;
         $upgrade_details->to = elgg_get_version();
         _elgg_services()->events->trigger('upgrade', 'upgrade', $upgrade_details);
         return true;
     }
     return false;
 }
Пример #19
0
/**
 * Sends a notice about deprecated use of a function, view, etc.
 *
 * This function either displays or logs the deprecation message,
 * depending upon the deprecation policies in {@link CODING.txt}.
 * Logged messages are sent with the level of 'WARNING'. Only admins
 * get visual deprecation notices. When non-admins are logged in, the
 * notices are sent to PHP's log through elgg_dump().
 *
 * A user-visual message will be displayed if $dep_version is greater
 * than 1 minor releases lower than the current Elgg version, or at all
 * lower than the current Elgg major version.
 *
 * @note This will always at least log a warning.  Don't use to pre-deprecate things.
 * This assumes we are releasing in order and deprecating according to policy.
 *
 * @see CODING.txt
 *
 * @param string $msg             Message to log / display.
 * @param string $dep_version     Human-readable *release* version: 1.7, 1.8, ...
 * @param int    $backtrace_level How many levels back to display the backtrace.
 *                                Useful if calling from functions that are called
 *                                from other places (like elgg_view()). Set to -1
 *                                for a full backtrace.
 *
 * @return bool
 * @since 1.7.0
 */
function elgg_deprecated_notice($msg, $dep_version, $backtrace_level = 1) {
	// if it's a major release behind, visual and logged
	// if it's a 1 minor release behind, visual and logged
	// if it's for current minor release, logged.
	// bugfixes don't matter because we are not deprecating between them

	if (!$dep_version) {
		return false;
	}

	$elgg_version = elgg_get_version(true);
	$elgg_version_arr = explode('.', $elgg_version);
	$elgg_major_version = (int)$elgg_version_arr[0];
	$elgg_minor_version = (int)$elgg_version_arr[1];

	$dep_major_version = (int)$dep_version;
	$dep_minor_version = 10 * ($dep_version - $dep_major_version);

	$visual = false;

	if (($dep_major_version < $elgg_major_version) ||
		($dep_minor_version < $elgg_minor_version)) {
		$visual = true;
	}

	$msg = "Deprecated in $dep_major_version.$dep_minor_version: $msg";

	if ($visual && elgg_is_admin_logged_in()) {
		register_error($msg);
	}

	// Get a file and line number for the log. Never show this in the UI.
	// Skip over the function that sent this notice and see who called the deprecated
	// function itself.
	$msg .= " Called from ";
	$stack = array();
	$backtrace = debug_backtrace();
	// never show this call.
	array_shift($backtrace);
	$i = count($backtrace);

	foreach ($backtrace as $trace) {
		$stack[] = "[#$i] {$trace['file']}:{$trace['line']}";
		$i--;

		if ($backtrace_level > 0) {
			if ($backtrace_level <= 1) {
				break;
			}
			$backtrace_level--;
		}
	}

	$msg .= implode("<br /> -> ", $stack);

	elgg_log($msg, 'WARNING');

	return true;
}
Пример #20
0
 /**
  * @return string
  */
 public function getMaxVersion()
 {
     if (!$this->maxVersion) {
         //TODO decouple Elgg core dependency
         return elgg_get_version(true);
     }
     return $this->maxVersion;
 }
Пример #21
0
<?php

// Work out number of users
$users_stats = get_number_users();
$total_users = get_number_users(true);
// Get version information
$version = elgg_get_version();
$release = elgg_get_version(true);
?>
<table class="elgg-table-alt">
	<tr class="odd">
		<td><b><?php 
echo elgg_echo('admin:statistics:label:version');
?>
 :</b></td>
		<td><?php 
echo elgg_echo('admin:statistics:label:version:release');
?>
 - <?php 
echo $release;
?>
, <?php 
echo elgg_echo('admin:statistics:label:version:version');
?>
 - <?php 
echo $version;
?>
</td>
	</tr>
	<tr class="even">
		<td><b><?php 
Пример #22
0
/**
 * This function checks a plugin manifest 'elgg_version' value against the current install
 * returning TRUE if the elgg_version is >= the current install's version.
 *
 * @deprecated 1.8 Use ElggPlugin->canActivate()
 *
 * @param string $manifest_elgg_version_string The build version (eg 2009010201).
 * @return bool
 */
function check_plugin_compatibility($manifest_elgg_version_string)
{
    elgg_deprecated_notice('check_plugin_compatibility() is deprecated by ElggPlugin->canActivate()', 1.8);
    $version = elgg_get_version();
    if (strpos($manifest_elgg_version_string, '.') === false) {
        // Using version
        $req_version = (int) $manifest_elgg_version_string;
        return $version >= $req_version;
    }
    return false;
}
Пример #23
0
 /**
  * Initialize the site including site entity, plugins, and configuration
  *
  * @param array $submissionVars Submitted vars
  *
  * @return bool
  */
 protected function saveSiteSettings($submissionVars)
 {
     // ensure that file path, data path, and www root end in /
     $submissionVars['dataroot'] = sanitise_filepath($submissionVars['dataroot']);
     $submissionVars['wwwroot'] = sanitise_filepath($submissionVars['wwwroot']);
     $site = new ElggSite();
     $site->name = strip_tags($submissionVars['sitename']);
     $site->url = $submissionVars['wwwroot'];
     $site->access_id = ACCESS_PUBLIC;
     $site->email = $submissionVars['siteemail'];
     $guid = $site->save();
     if (!$guid) {
         register_error(_elgg_services()->translator->translate('install:error:createsite'));
         return FALSE;
     }
     // bootstrap site info
     $this->CONFIG->site_guid = $guid;
     $this->CONFIG->site_id = $guid;
     $this->CONFIG->site = $site;
     _elgg_services()->datalist->set('installed', time());
     _elgg_services()->datalist->set('dataroot', $submissionVars['dataroot']);
     _elgg_services()->datalist->set('default_site', $site->getGUID());
     _elgg_services()->datalist->set('version', elgg_get_version());
     _elgg_services()->datalist->set('simplecache_enabled', 1);
     _elgg_services()->datalist->set('system_cache_enabled', 1);
     _elgg_services()->datalist->set('simplecache_lastupdate', time());
     // @todo plugins might use this, but core doesn't. remove in 2.0
     _elgg_services()->datalist->set('path', $this->CONFIG->path);
     // new installations have run all the upgrades
     $upgrades = elgg_get_upgrade_files("{$this->CONFIG->path}engine/lib/upgrades/");
     _elgg_services()->datalist->set('processed_upgrades', serialize($upgrades));
     _elgg_services()->configTable->set('view', 'default', $site->getGUID());
     _elgg_services()->configTable->set('language', 'en', $site->getGUID());
     _elgg_services()->configTable->set('default_access', $submissionVars['siteaccess'], $site->getGUID());
     _elgg_services()->configTable->set('allow_registration', TRUE, $site->getGUID());
     _elgg_services()->configTable->set('walled_garden', FALSE, $site->getGUID());
     _elgg_services()->configTable->set('allow_user_default_access', '', $site->getGUID());
     _elgg_services()->configTable->set('default_limit', 10, $site->getGUID());
     $this->setSubtypeClasses();
     $this->enablePlugins();
     return TRUE;
 }
Пример #24
0
 /**
  * Upgrades Elgg Database and code
  *
  * @return bool
  */
 protected function processUpgrades()
 {
     $dbversion = (int) _elgg_services()->datalist->get('version');
     // No version number? Oh snap...this is an upgrade from a clean installation < 1.7.
     // Run all upgrades without error reporting and hope for the best.
     // See https://github.com/elgg/elgg/issues/1432 for more.
     $quiet = !$dbversion;
     // Note: Database upgrades are deprecated as of 1.8.  Use code upgrades.  See #1433
     if ($this->dbUpgrade($dbversion, '', $quiet)) {
         system_message(_elgg_services()->translator->translate('upgrade:db'));
     }
     if ($this->upgradeCode($dbversion, $quiet)) {
         system_message(_elgg_services()->translator->translate('upgrade:core'));
         // Now we trigger an event to give the option for plugins to do something
         $upgrade_details = new \stdClass();
         $upgrade_details->from = $dbversion;
         $upgrade_details->to = elgg_get_version();
         _elgg_services()->events->trigger('upgrade', 'upgrade', $upgrade_details);
         return true;
     }
     return false;
 }
Пример #25
0
/**
 * Navigation initialization
 * @access private
 */
function _elgg_nav_init()
{
    elgg_register_plugin_hook_handler('prepare', 'menu:site', '_elgg_site_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:river', '_elgg_river_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:entity', '_elgg_entity_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:widget', '_elgg_widget_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:login', '_elgg_login_menu_setup');
    elgg_register_menu_item('footer', \ElggMenuItem::factory(array('name' => 'powered', 'text' => elgg_echo("elgg:powered"), 'href' => 'http://elgg.org', 'title' => 'Elgg ' . elgg_get_version(true), 'section' => 'meta')));
}
Пример #26
0
 /**
  * Initialize the site including site entity, plugins, and configuration
  *
  * @param array $submissionVars Submitted vars
  *
  * @return bool
  */
 protected function saveSiteSettings($submissionVars)
 {
     // ensure that file path, data path, and www root end in /
     $submissionVars['dataroot'] = sanitise_filepath($submissionVars['dataroot']);
     $submissionVars['wwwroot'] = sanitise_filepath($submissionVars['wwwroot']);
     $site = new ElggSite();
     $site->name = strip_tags($submissionVars['sitename']);
     $site->url = $submissionVars['wwwroot'];
     $site->access_id = ACCESS_PUBLIC;
     $site->email = $submissionVars['siteemail'];
     $guid = $site->save();
     if (!$guid) {
         register_error(_elgg_services()->translator->translate('install:error:createsite'));
         return FALSE;
     }
     // bootstrap site info
     $this->CONFIG->site_guid = $guid;
     $this->CONFIG->site = $site;
     _elgg_services()->configTable->set('installed', time());
     _elgg_services()->configTable->set('dataroot', $submissionVars['dataroot']);
     _elgg_services()->configTable->set('default_site', $site->getGUID());
     _elgg_services()->configTable->set('version', elgg_get_version());
     _elgg_services()->configTable->set('simplecache_enabled', 1);
     _elgg_services()->configTable->set('system_cache_enabled', 1);
     _elgg_services()->configTable->set('simplecache_lastupdate', time());
     // new installations have run all the upgrades
     $upgrades = elgg_get_upgrade_files(\Elgg\Application::elggDir()->getPath("/engine/lib/upgrades/"));
     _elgg_services()->configTable->set('processed_upgrades', $upgrades);
     _elgg_services()->configTable->set('view', 'default', $site->getGUID());
     _elgg_services()->configTable->set('language', 'en', $site->getGUID());
     _elgg_services()->configTable->set('default_access', $submissionVars['siteaccess'], $site->getGUID());
     _elgg_services()->configTable->set('allow_registration', TRUE, $site->getGUID());
     _elgg_services()->configTable->set('walled_garden', FALSE, $site->getGUID());
     _elgg_services()->configTable->set('allow_user_default_access', '', $site->getGUID());
     _elgg_services()->configTable->set('default_limit', 10, $site->getGUID());
     _elgg_services()->configTable->set('security_protect_upgrade', true, $site->getGUID());
     _elgg_services()->configTable->set('security_notify_admins', true, $site->getGUID());
     _elgg_services()->configTable->set('security_notify_user_password', true, $site->getGUID());
     _elgg_services()->configTable->set('security_email_require_password', true, $site->getGUID());
     $this->setSubtypeClasses();
     $this->enablePlugins();
     return TRUE;
 }
Пример #27
0
<?php

elgg_load_js('code_review');
$bigVersion = elgg_get_version(true);
if (preg_match('#^([0-9]+\\.[0-9]+)#', $bigVersion, $matches)) {
    $bigVersion = $matches[1];
}
$subpath = get_input('subpath');
$version = get_input('version', elgg_extract('version', $vars, $bigVersion));
$include_disabled_plugins = get_input('include_disabled_plugins', 0);
$find_deprecated_functions = get_input('find_deprecated_functions', 1);
$find_private_functions = get_input('find_private_functions', 1);
$fix_problems = get_input('fix_problems', 0);
echo '<p>';
echo '<label>' . elgg_echo('code_review:subpath') . '</label> ';
echo elgg_view('input/text', array('name' => 'subpath', 'value' => $subpath, 'placeholder' => elgg_echo('code_review:subpath:placeholder')));
echo '</p>';
echo '<p>';
echo '<label>' . elgg_echo('code_review:version') . '</label> ';
echo elgg_view('input/dropdown', array('name' => 'version', 'value' => $version, 'options' => code_review::getVersionsList()));
echo '</p>';
echo '<p>';
echo '<label>' . elgg_echo('code_review:disabled_plugins_only') . '</label> ';
echo elgg_view('input/dropdown', array('name' => 'include_disabled_plugins', 'value' => $include_disabled_plugins, 'options_values' => array(0 => elgg_echo('option:no'), 1 => elgg_echo('option:yes'))));
echo '</p>';
echo '<p>';
echo '<label>' . elgg_echo('code_review:find_deprecated_functions') . '</label> ';
echo elgg_view('input/dropdown', array('name' => 'find_deprecated_functions', 'value' => $find_deprecated_functions, 'options_values' => array(0 => elgg_echo('option:no'), 1 => elgg_echo('option:yes'))));
echo '</p>';
echo '<p>';
echo '<label>' . elgg_echo('code_review:find_private_functions') . '</label> ';
Пример #28
0
/**
 * Navigation initialization
 * @access private
 */
function _elgg_nav_init()
{
    elgg_register_plugin_hook_handler('prepare', 'breadcrumbs', 'elgg_prepare_breadcrumbs');
    elgg_register_plugin_hook_handler('prepare', 'menu:site', '_elgg_site_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:river', '_elgg_river_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:entity', '_elgg_entity_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:widget', '_elgg_widget_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:login', '_elgg_login_menu_setup');
    elgg_register_plugin_hook_handler('public_pages', 'walled_garden', '_elgg_nav_public_pages');
    elgg_register_menu_item('footer', \ElggMenuItem::factory(array('name' => 'powered', 'text' => elgg_echo("elgg:powered"), 'href' => 'http://elgg.org', 'title' => 'Elgg ' . elgg_get_version(true), 'section' => 'meta')));
    elgg_register_ajax_view('navigation/menu/user_hover/contents');
}
Пример #29
0
/**
 * Navigation initialization
 * @access private
 */
function _elgg_nav_init()
{
    elgg_register_plugin_hook_handler('prepare', 'breadcrumbs', 'elgg_prepare_breadcrumbs');
    elgg_register_plugin_hook_handler('prepare', 'menu:site', '_elgg_site_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:river', '_elgg_river_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:entity', '_elgg_entity_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:widget', '_elgg_widget_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:login', '_elgg_login_menu_setup');
    elgg_register_plugin_hook_handler('register', 'menu:extras', '_elgg_extras_menu_setup');
    elgg_register_plugin_hook_handler('public_pages', 'walled_garden', '_elgg_nav_public_pages');
    elgg_register_menu_item('footer', \ElggMenuItem::factory(array('name' => 'powered', 'text' => elgg_echo("elgg:powered"), 'href' => 'http://elgg.org', 'title' => 'Elgg ' . elgg_get_version(true), 'section' => 'meta')));
    elgg_register_ajax_view('navigation/menu/user_hover/contents');
    // Using a view extension to ensure that themes that have replaced the item view
    // still load the required AMD modules
    elgg_extend_view('navigation/menu/elements/item', 'navigation/menu/elements/item_deps');
}