/** * Inserts container for skip links in page layout. */ public static function insertContainer() { if (UserConfig::get($GLOBALS['user']->id)->getValue('SKIPLINKS_ENABLE')) { PageLayout::addBodyElements('<style> *:focus, .focus_box, a.button:focus, button.button:focus { outline: 2px dashed #ff6600; }</style>'); if (is_object($GLOBALS['auth']) && $GLOBALS['auth']->is_authenticated()) { PageLayout::addBodyElements('<div id="skip_link_navigation" aria-busy="true"></div>'); } } }
/** * Returns a cache instance. * * @param bool $apply_proxied_operations Whether or not to apply any * proxied (disable this in tests!) * @return StudipCache the cache instance */ public static function getCache($apply_proxied_operations = true) { if (is_null(self::$cache)) { $proxied = false; if (!$GLOBALS['CACHING_ENABLE']) { self::$cache = new StudipNullCache(); // Proxy cache operations if CACHING_ENABLE is different from the globally set // caching value. This should only be the case in cli mode. if (isset($GLOBALS['GLOBAL_CACHING_ENABLE']) && $GLOBALS['GLOBAL_CACHING_ENABLE']) { $proxied = true; } } else { try { $class = self::loadCacheClass(); $args = self::retrieveConstructorArguments(); self::$cache = self::instantiateCache($class, $args); } catch (Exception $e) { error_log(__METHOD__ . ': ' . $e->getMessage()); PageLayout::addBodyElements(MessageBox::error(__METHOD__ . ': ' . $e->getMessage())); $class = self::DEFAULT_CACHE_CLASS; self::$cache = new $class(); } } // If proxy should be used, inject it. Otherwise apply pending // operations, if any. if ($proxied) { self::$cache = new StudipCacheProxy(self::$cache); } elseif ($GLOBALS['CACHING_ENABLE'] && $apply_proxied_operations) { // Even if the above condition will try to eliminate most // failures, the following operation still needs to be wrapped // in a try/catch block. Otherwise there are no means to // execute migration 166 which creates the neccessary tables // for said operation. try { StudipCacheOperation::apply(self::$cache); } catch (Exception $e) { } } } return self::$cache; }