Beispiel #1
0
function subsite_manager_fix_piwik_settings()
{
    global $SUBSITE_MANAGER_IGNORE_WRITE_ACCESS;
    if (subsite_manager_on_subsite()) {
        $site = elgg_get_site_entity();
        if ($piwik_settings = $site->phloor_analytics_piwik_settings) {
            $SUBSITE_MANAGER_IGNORE_WRITE_ACCESS = true;
            if ($site->canEdit()) {
                // log to the error log that we did something
                error_log("PIWIK saving settings for " . $site->name . " (" . $site->getGUID() . ")");
                error_log("PIWIK settings: " . $piwik_settings);
                if ($piwik_settings = json_decode($piwik_settings, true)) {
                    if (!empty($piwik_settings) && is_array($piwik_settings)) {
                        $enabled = elgg_extract("enable_tracking", $piwik_settings);
                        $piwik_url = elgg_extract("path_to_piwik", $piwik_settings);
                        $piwik_site_id = elgg_extract("site_guid", $piwik_settings);
                        if ($enabled == "true") {
                            if (!empty($piwik_url) && !empty($piwik_site_id)) {
                                // check if analytics is enabled
                                if (!elgg_is_active_plugin("analytics")) {
                                    // not active so enable
                                    if ($plugin = elgg_get_plugin_from_id("analytics")) {
                                        $plugin->activate();
                                        elgg_invalidate_simplecache();
                                        elgg_reset_system_cache();
                                    }
                                }
                                // save settings, if not exists
                                if (!elgg_get_plugin_setting("piwik_url", "analytics") && !elgg_get_plugin_setting("piwik_site_id", "analytics")) {
                                    elgg_set_plugin_setting("piwik_url", $piwik_url, "analytics");
                                    elgg_set_plugin_setting("piwik_site_id", $piwik_site_id, "analytics");
                                }
                            }
                        }
                    }
                }
                // remove the settings so we don't do this again
                unset($site->phloor_analytics_piwik_settings);
            }
            // unset write access
            $SUBSITE_MANAGER_IGNORE_WRITE_ACCESS = false;
        }
    }
}
Beispiel #2
0
 /**
  * Run the upgrade process
  *
  * @return array
  */
 public function run()
 {
     $result = array('failure' => false, 'reason' => '');
     // prevent someone from running the upgrade script in parallel (see #4643)
     if (!$this->getUpgradeMutex()) {
         $result['failure'] = true;
         $result['reason'] = _elgg_services()->translator->translate('upgrade:locked');
         return $result;
     }
     // disable the system log for upgrades to avoid exceptions when the schema changes.
     _elgg_services()->events->unregisterHandler('log', 'systemlog', 'system_log_default_logger');
     _elgg_services()->events->unregisterHandler('all', 'all', 'system_log_listener');
     // turn off time limit
     set_time_limit(0);
     if ($this->getUnprocessedUpgrades()) {
         $this->processUpgrades();
     }
     _elgg_services()->events->trigger('upgrade', 'system', null);
     elgg_invalidate_simplecache();
     elgg_reset_system_cache();
     $this->releaseUpgradeMutex();
     return $result;
 }
}
foreach ($plugin_guids as $guid) {
    $plugin = get_entity($guid);
    if (!$plugin instanceof ElggPlugin) {
        register_error(elgg_echo('admin:plugins:deactivate:no', array($guid)));
        continue;
    }
    if ($plugin->deactivate()) {
        //system_message(elgg_echo('admin:plugins:deactivate:yes', array($plugin->getManifest()->getName())));
    } else {
        $msg = $plugin->getError();
        $string = $msg ? 'admin:plugins:deactivate:no_with_msg' : 'admin:plugins:deactivate:no';
        register_error(elgg_echo($string, array($plugin->getFriendlyName(), $plugin->getError())));
    }
}
// don't regenerate the simplecache because the plugin won't be
// loaded until next run.  Just invalidate and let it regnerate as needed
elgg_invalidate_simplecache();
elgg_reset_system_cache();
if (count($plugin_guids) == 1) {
    $url = 'admin/plugins';
    $query = (string) parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);
    if ($query) {
        $url .= "?{$query}";
    }
    $plugin = get_entity($plugin_guids[0]);
    $id = preg_replace('/[^a-z0-9-]/i', '-', $plugin->getID());
    forward("{$url}#{$id}");
} else {
    forward(REFERER);
}
Beispiel #4
0
/**
 * @access private
 * @deprecated 1.9 Use elgg_reset_system_cache()
 */
function elgg_filepath_cache_reset()
{
    elgg_deprecated_notice(__FUNCTION__ . ' is deprecated by elgg_reset_system_cache()', 1.9);
    elgg_reset_system_cache();
}
Beispiel #5
0
/**
 * Sync the plugins for a specific subsite
 *
 * @param ElggSite   $subsite
 *
 * @return array ($sorted, $activated)  number of sorted and activated plugins.
 */
function subsite_manager_sync_plugins(Subsite $subsite)
{
    $main_site = elgg_get_config('site');
    $plugins_by_id_map = elgg_get_config('plugins_by_id_map');
    $global_order = subsite_manager_get_main_plugin_order();
    $global_plugins_active = subsite_manager_get_global_enabled_plugins();
    // pretend to be on the subsite
    elgg_set_config('site', $subsite);
    elgg_set_config('site_guid', $subsite->guid);
    elgg_set_config('plugins_by_id_map', array());
    // make sure all plugins exist in the database
    elgg_generate_plugin_entities();
    // mark plugins to activate
    $private_setting = $subsite->getPrivateSetting('subsite_manager_plugins_activate');
    if (isset($private_setting)) {
        $to_activate = unserialize($private_setting);
    } else {
        $to_activate = array();
    }
    $sorted = 0;
    $activated = 0;
    // reorder plugins according to global order and activate global plugins
    $plugins = subsite_manager_get_plugins();
    foreach ($plugins as $plugin) {
        $priority = array_search($plugin->getID(), $global_order) + 1;
        if ($priority === false) {
            $priority = 'last';
        }
        $priority_name = elgg_namespace_plugin_private_setting('internal', 'priority');
        if ($plugin->get($priority_name) != $priority) {
            $plugin->set($priority_name, $priority);
            $sorted++;
        }
        if (!$plugin->isActive() && in_array($plugin->getID(), $global_plugins_active)) {
            if (!in_array($plugin->getID(), $to_activate)) {
                $to_activate[] = $plugin->getID();
                $activated++;
            }
        }
    }
    $subsite->setPrivateSetting('subsite_manager_plugins_activate', serialize($to_activate));
    // clean the caches
    elgg_invalidate_simplecache();
    elgg_reset_system_cache();
    // restore original "main" site
    elgg_set_config('site', $main_site);
    elgg_set_config('site_guid', $main_site->guid);
    elgg_set_config('plugins_by_id_map', $plugins_by_id_map);
    return array($sorted, $activated);
}
Beispiel #6
0
 /**
  * Elgg upgrade script.
  *
  * This script triggers any necessary upgrades. If the site has been upgraded
  * to the most recent version of the code, no upgrades are run but the caches
  * are flushed.
  *
  * Upgrades use a table {db_prefix}upgrade_lock as a mutex to prevent concurrent upgrades.
  *
  * The URL to forward to after upgrades are complete can be specified by setting $_GET['forward']
  * to a relative URL.
  * 
  * @return void
  */
 public static function upgrade()
 {
     // we want to know if an error occurs
     ini_set('display_errors', 1);
     define('UPGRADING', 'upgrading');
     self::start();
     $site_url = elgg_get_config('url');
     $site_host = parse_url($site_url, PHP_URL_HOST) . '/';
     // turn any full in-site URLs into absolute paths
     $forward_url = get_input('forward', '/admin', false);
     $forward_url = str_replace(array($site_url, $site_host), '/', $forward_url);
     if (strpos($forward_url, '/') !== 0) {
         $forward_url = '/' . $forward_url;
     }
     if (get_input('upgrade') == 'upgrade') {
         $upgrader = new \Elgg\UpgradeService();
         $result = $upgrader->run();
         if ($result['failure'] == true) {
             register_error($result['reason']);
             forward($forward_url);
         }
     } else {
         $rewriteTester = new \ElggRewriteTester();
         $url = elgg_get_site_url() . "__testing_rewrite?__testing_rewrite=1";
         if (!$rewriteTester->runRewriteTest($url)) {
             // see if there is a problem accessing the site at all
             // due to ip restrictions for example
             if (!$rewriteTester->runLocalhostAccessTest()) {
                 // note: translation may not be available until after upgrade
                 $msg = elgg_echo("installation:htaccess:localhost:connectionfailed");
                 if ($msg === "installation:htaccess:localhost:connectionfailed") {
                     $msg = "Elgg cannot connect to itself to test rewrite rules properly. Check " . "that curl is working and there are no IP restrictions preventing " . "localhost connections.";
                 }
                 echo $msg;
                 exit;
             }
             // note: translation may not be available until after upgrade
             $msg = elgg_echo("installation:htaccess:needs_upgrade");
             if ($msg === "installation:htaccess:needs_upgrade") {
                 $msg = "You must update your .htaccess file so that the path is injected " . "into the GET parameter __elgg_uri (you can use install/config/htaccess.dist as a guide).";
             }
             echo $msg;
             exit;
         }
         $vars = array('forward' => $forward_url);
         // reset cache to have latest translations available during upgrade
         elgg_reset_system_cache();
         echo elgg_view_page(elgg_echo('upgrading'), '', 'upgrade', $vars);
         exit;
     }
     forward($forward_url);
 }
/**
 * Disables the system disk cache.
 *
 * Uses the 'system_cache_enabled' datalist with a boolean value.
 * Resets the system cache.
 *
 * @return void
 */
function elgg_disable_system_cache()
{
    global $CONFIG;
    datalist_set('system_cache_enabled', 0);
    $CONFIG->system_cache_enabled = 0;
    elgg_reset_system_cache();
}
Beispiel #8
0
 /**
  * Saves the menu configuration
  *
  * @param array $config configuration of menu items
  */
 public function setMenuConfig($config = [])
 {
     elgg_set_plugin_setting("menu_{$this->name}_config", json_encode($config), 'menu_builder');
     elgg_reset_system_cache();
 }
Beispiel #9
0
/**
 * @access private
 */
function elgg_filepath_cache_reset()
{
    return elgg_reset_system_cache();
}
Beispiel #10
0
 /**
  * Disables the system disk cache.
  *
  * Uses the 'system_cache_enabled' datalist with a boolean value.
  * Resets the system cache.
  *
  * @return void
  */
 function disable()
 {
     _elgg_services()->datalist->set('system_cache_enabled', 0);
     $this->CONFIG->system_cache_enabled = 0;
     elgg_reset_system_cache();
 }
Beispiel #11
0
/**
 * This event will be triggered when plugin are reordered in in 'boot' 'system'
 *
 * @param string $event
 * @param string $type
 * @param mixed $entity
 */
function subsite_manager_ready_system_handler($event, $type, $entity)
{
    elgg_reset_system_cache();
    elgg_invalidate_simplecache();
}