L'escola com a espai d'emancipació tecnològica

Un nou prisma es vol aplicar en els centres educatius. Es vol inculcar l'esperit emprenedor a les aules. Es vol que les nostres nenes i nens creixin amb valors com el lideratge, la resiliència, l'esforç, el treball i el risc. Sorprèn que ja de ben petits es parli d'aquests valors tant presents en discursos empresarials. De fet la proposta vé acompanyada dels aplaudiments de la patronal.

Davant aquesta determinació per pretendre que els petits no es deixin vèncer a la primera de canvi, i que sàpiguen superar els entrebancs, podem assegurar, com a professionals que ens dediquem al manteniment i a la implementació tecnològica als centres, que als escolars el vent fa temps que els bufa en contra. Es pot afirmar doncs, que l'escenari per fer aquestes “pràctiques empresarials” és immillorable i que hem aconseguit que aflorin entrebancs dia a dia, si més no pel que fa a materials educatius i a elements tecnològics.

Un cop surtin, els petits emprenedors ja estaran habituats a un entorn. Els haurem ensenyat des dels 3 anys fins als 12 que poden fer infinitat de coses: entendre's, jugar, fer treballs, o relacionar-se a través d'ordinadors. Per fer-ho, durant les fases on l'aprenentatge és més intens, hauran après que calen unes eines específiques i úniques, lligades a un contracte de “permanència”, que col·loquen al propietari d'aquestes eines en una posició privilegiada, ja que el futur adult escollirà com a eina professional o personal el que ha après a utilitzar.
Aquesta artificialitat promocionada amb diner públic té beneficiaris clars. Ens impedeix mirar cap a un horitzó comú de prosperitat intel·lectual, cultural, i segurament relacional.

A part de tota la problemàtica en l'ètica d'aprenentatge tecnològic hi han motius tècnics per anar més enllà, s'està utilitzant un sistema operatiu no adequat a l'entremat complex que significa una escola, sobretot tenint en compte els recursos que hi han. Cal un sistema reproduïble, distribuïble, modificable, adaptable i al mateix temps que tingui una bona experiència d'usuari.

Lluny d'aquesta finalitat, el Departament d'Educació de la Generalitat s'ha envoltat de la creme de la creme pel que fa a empreses punta en el capitalisme cognitiu salvatge, dos gegants estan al costat del departament: T-systems, que s'ocupa del suport de proximitat i del manteniment d’equipaments informàtics, i Telefonica que gestiona el servei d’atenció unificada. Les respectives adjudicacions són de 16.499.948,48€ i 4.671.810,82€ (*). Aquests dos reis del NASDAQ dónen una sensació de professionalitat i prestigi.
Però a la pràctica l'activitat d'aquestes empreses és simplement insuficient. La implementació tecnològica i el pla com s'afronten les incidències es pot considerar com a penosa als centres educatius.

L'activitat bàsica de Telefónica ha sigut posar un sistema de VNC (per controlar remotament les màquines) i un congelador. Que jo sàpiga no s'ha recorregut mai a aquest servei, ja que quan s'intenta normalment diuen que la incidència l'ha d'arreglar T-Systems.

Pel que fa al suport de proximitat, la sobresaturació tecnològica és evident si es té en compte el temps que s'hi pot destinar. El tècnic de T-Systems acudeix quinzenalment o mensualment, segons com convingui. No pregunta per incidències, ja que aquestes han de ser reportades per un formulari on-line. I s'ha d'ocupar de més de 100 màquines de diferents tipus connectades en xarxa: servidors, portàtils, impressores, pissarres digitals, fotocopiadores...

Amb el sistema emprat actualment (MS Windows) que no permet ni la còpia ni l'adaptació a cada centre, resulta pràcticament un infern el manteniment automatitzat i centralitzat amb servidors. Significa que per cada avaria cal anar un per un; cada instal·lació és individual, cada descongelació, cada actualització... Per sort això té una solució senzilla, i aquesta passa per a) tàctiques que s'acosten a la creació de virus per trencar congeladors, o b) per un canvi de sistema operatiu que permeti una gestió remota i automatitzada tals com ubuntu, linkat, debian, etc... Malauradament els tècnics no tenen preparació en altres sistemes i sovint afirmen no voler tocar gnu/linux.

Per solucionar alguns problemes tècnics es proposa linkat, un nou sistema operatiu, desconec l'amplitud de la seva comunitat, però l'aterratge als centres s'ha fet en forma dual(juntament amb windows). Si bé les intencions són bones, suficients i de segur que els estudiants s'hi adaptarien, cal avançar cap a permetre una base més plural segons necessitats i coneixements de tècnics, és a dir permetre afegir linkat(en forma de metapaquet o tasca) a qualsevol sistema operatiu lliure, fent més amplia i plural la comunitat que hi hauria darrere de linkat.

Així doncs com moltes altres vegades tornem a topar amb un sistema educatiu que no és més que una postal. On tots els discursos sobre els TIC no són més que una cortina de fum. I d'aquest sistema l'únic que en sortirà és una generació perduda pel que fa a la interpretació de les necessitats tecnològiques. Ignorant casos d'èxit en l'educació tecnològica d'alt nivell com OLPC(**) en el qual fins i tot ensenyen llenguatges de programació com l'smalltalk(***). Enlloc d'això s'aposta per sistemes no adaptats per l'educació i sense cap mena de seguiment.

Aquesta és la lògica emprenedora? És per fer-se un tip de riure... Amb aquest Pla d'acció pel que fa a l'aproximació a l' I+D i TICs a les aules, l'únic que hi ha és l'estampa d'una escola amb moltes màquines però una aptitud nul·la per utilitzar-los.

Davant la crisi viscuda recentment crec no interessa ni com a pares, ni com a mestres, ni com a tècnics, que l'escola sigui un bazar on Microsoft, Telefónica, T-systems i d'altres venen a finançar la seva festa a més a més de crear una dependència a un sistema exclusiu i excloent.

L'adopció de sistemes més plurals i oberts, on la participació i la col·laboració conten, ajudarien també a deixar enrere vells discursos, i aplicar a les nostres escoles públiques nous valors empresarials com la cooperació, el treball col·laboratiu, el compartir coneixements, la producció d'ús social, la resolució conjunta d'incidències, el reforç d'allò públic, treballar des de l'emancipació tecnològica, i un llarg etcètera... Perquè seran els emprenedors que tinguin aquests valors els que ens poden treure de la situació que ens han posat aquells que fa temps únicament els van ensenyar la importància de ser líders.

* http://www.gencat.cat/diari/5392/09146152.htm
** http://one.laptop.org/
*** http://www.squeak.org/

Add new comment

The content of this field is kept private and will not be shown publicly.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Semantic linkbacks

This site uses semantic webmentions to interact between sites and build federated conversations.
Twig context array(16)
'items' => array(0)
'information' => Drupal\Core\StringTranslation\TranslatableMarkup(5)
  • contents
  • Available methods (14)
  • protected string -> string(96) "This site uses semantic webmentions to interact between sites and build federate…"
    This site uses semantic webmentions to interact between sites and build federated conversations.
    protected translatedMarkup -> string(96) "This site uses semantic webmentions to interact between sites and build federate…"
    This site uses semantic webmentions to interact between sites and build federated conversations.
    protected options -> array(0)
    protected stringTranslation -> Drupal\Core\StringTranslation\TranslationManager(4)
    • contents
    • Available methods (10)
    • protected translators -> array(1)
      '30' => array(1)
      Drupal\Core\StringTranslation\Translator\CustomStrings(4)
      • contents
      • Available methods (6)
      • protected settings -> Drupal\Core\Site\Settings(2)
        *DEPTH TOO GREAT*
        protected translations -> array(1)
        *DEPTH TOO GREAT*
        protected _serviceIds -> array(0)
        public _serviceId -> string(32) "string_translator.custom_strings"
      • public __construct(Drupal\Core\Site\Settings $settings)
        Constructs a CustomStrings object.
        
        @param \Drupal\Core\Site\Settings $settings
        The settings read only object.
        
        Defined in .../core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php:31
        public __sleep()
        {@inheritdoc}
        
        Defined in .../core/lib/Drupal/Core/DependencyInjection/DependencySerializationTrait.php:22
        public __wakeup()
        {@inheritdoc}
        
        Defined in .../core/lib/Drupal/Core/DependencyInjection/DependencySerializationTrait.php:46
        public getStringTranslation($langcode, $string, $context)
        {@inheritdoc}
        
        Inherited from Drupal\Core\StringTranslation\Translator\StaticTranslation
        Defined in .../core/lib/Drupal/Core/StringTranslation/Translator/StaticTranslation.php:33
        public reset()
        {@inheritdoc}
        
        Inherited from Drupal\Core\StringTranslation\Translator\StaticTranslation
        Defined in .../core/lib/Drupal/Core/StringTranslation/Translator/StaticTranslation.php:48
        protected getLanguage($langcode)
        {@inheritdoc}
        
        Defined in .../core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php:39
      protected sortedTranslators -> array(1)
      Drupal\Core\StringTranslation\Translator\CustomStrings(4)
      • contents
      • Available methods (6)
      • protected settings -> Drupal\Core\Site\Settings(2)
        • contents
        • Available methods (9)
        • Static class properties (1)
        • private storage -> array(9)
          *DEPTH TOO GREAT*
          public _serviceId -> string(8) "settings"
        • public static get($name, $default = NULL) -> mixed
          Returns a setting.
          
          Settings can be set in settings.php in the $settings array and requested
          by this function. Settings should be used over configuration for read-only,
          possibly low bootstrap configuration that is environment specific.
          
          @param string $name
          The name of the setting to return.
          @param mixed $default
          (optional) The default value to use if this setting is not set.
          
          @return mixed
          The value of the setting, the provided default if not set.
          
          Defined in .../core/lib/Drupal/Core/Site/Settings.php:86
          public static getAll() -> array
          Returns all the settings. This is only used for testing purposes.
          
          @return array
          All the settings.
          
          Defined in .../core/lib/Drupal/Core/Site/Settings.php:96
          public static getApcuPrefix($identifier, $root, $site_path = "") -> string
          Generates a prefix for APCu user cache keys.
          
          A standardized prefix is useful to allow visual inspection of an APCu user
          cache. By default, this method will produce a unique prefix per site using
          the hash salt. If the setting 'apcu_ensure_unique_prefix' is set to FALSE
          then if the caller does not provide a $site_path only the Drupal root will
          be used. This allows WebTestBase to use the same prefix ensuring that the
          number of APCu items created during a full test run is kept to a minimum.
          Additionally, if a multi site implementation does not use site specific
          module directories setting apcu_ensure_unique_prefix would allow the sites
          to share APCu cache items.
          
          @param $identifier
          An identifier for the prefix. For example, 'class_loader' or
          'cache_backend'.
          
          @return string
          The prefix for APCu user cache keys.
          
          Defined in .../core/lib/Drupal/Core/Site/Settings.php:172
          public static getHashSalt() -> string
          Gets a salt useful for hardening against SQL injection.
          
          @return string
          A salt based on information in settings.php, not in the database.
          
          @throws \RuntimeException
          
          Defined in .../core/lib/Drupal/Core/Site/Settings.php:140
          public static getInstance() -> \Drupal\Core\Site\Settings
          Returns the settings instance.
          
          A singleton is used because this class is used before the container is
          available.
          
          @return \Drupal\Core\Site\Settings
          
          @throws \BadMethodCallException
          Thrown when the settings instance has not been initialized yet.
          
          Defined in .../core/lib/Drupal/Core/Site/Settings.php:51
          public static initialize($app_root, $site_path, &$class_loader)
          Bootstraps settings.php and the Settings singleton.
          
          @param string $app_root
          The app root.
          @param string $site_path
          The current site path.
          @param \Composer\Autoload\ClassLoader $class_loader
          The class loader that is used for this request. Passed by reference and
          exposed to the local scope of settings.php, so as to allow it to be
          decorated with Symfony's ApcClassLoader, for example.
          
          @see default.settings.php
          
          Defined in .../core/lib/Drupal/Core/Site/Settings.php:114
          public __construct(array $settings)
          Constructor.
          
          @param array $settings
          Array with the settings.
          
          Defined in .../core/lib/Drupal/Core/Site/Settings.php:35
          public __sleep()
          Prevents settings from being serialized.
          
          Defined in .../core/lib/Drupal/Core/Site/Settings.php:67
          private __clone()
          Protects creating with clone.
          
          Defined in .../core/lib/Drupal/Core/Site/Settings.php:61
        • private $instance :: Drupal\Core\Site\Settings(2) *RECURSION*
        protected translations -> array(1)
        'ca' => array(0)
        protected _serviceIds -> array(0)
        public _serviceId -> string(32) "string_translator.custom_strings"
      • public __construct(Drupal\Core\Site\Settings $settings)
        Constructs a CustomStrings object.
        
        @param \Drupal\Core\Site\Settings $settings
        The settings read only object.
        
        Defined in .../core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php:31
        public __sleep()
        {@inheritdoc}
        
        Defined in .../core/lib/Drupal/Core/DependencyInjection/DependencySerializationTrait.php:22
        public __wakeup()
        {@inheritdoc}
        
        Defined in .../core/lib/Drupal/Core/DependencyInjection/DependencySerializationTrait.php:46
        public getStringTranslation($langcode, $string, $context)
        {@inheritdoc}
        
        Inherited from Drupal\Core\StringTranslation\Translator\StaticTranslation
        Defined in .../core/lib/Drupal/Core/StringTranslation/Translator/StaticTranslation.php:33
        public reset()
        {@inheritdoc}
        
        Inherited from Drupal\Core\StringTranslation\Translator\StaticTranslation
        Defined in .../core/lib/Drupal/Core/StringTranslation/Translator/StaticTranslation.php:48
        protected getLanguage($langcode)
        {@inheritdoc}
        
        Defined in .../core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php:39
      protected defaultLangcode -> string(2) "ca"
      public _serviceId -> string(18) "string_translation"
    • public __construct(Drupal\Core\Language\LanguageDefault $default_language)
      Constructs a TranslationManager object.
      
      @param \Drupal\Core\Language\LanguageDefault $default_language
      The default language.
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:52
      public addTranslator(Drupal\Core\StringTranslation\Translator\TranslatorInterface $translator, $priority = 0) -> $this
      Appends a translation system to the translation chain.
      
      @param \Drupal\Core\StringTranslation\Translator\TranslatorInterface $translator
      The translation interface to be appended to the translation chain.
      @param int $priority
      The priority of the logger being added.
      
      @return $this
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:66
      public formatPlural($count, $singular, $plural, array $args = array(), array $options = array())
      {@inheritdoc}
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:152
      public getStringTranslation($langcode, $string, $context)
      {@inheritdoc}
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:92
      public reset()
      {@inheritdoc}
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:169
      public setDefaultLangcode($langcode)
      Sets the default langcode.
      
      @param string $langcode
      A language code.
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:162
      public translate($string, array $args = array(), array $options = array())
      {@inheritdoc}
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:109
      public translateString(Drupal\Core\StringTranslation\TranslatableMarkup $translated_string)
      {@inheritdoc}
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:116
      protected doTranslate($string, array $options = array()) -> string
      Translates a string to the current language or to a given language.
      
      @param string $string
      A string containing the English text to translate.
      @param array $options
      An associative array of additional options, with the following elements:
      - 'langcode': The language code to translate to a language other than
      what is used to display the page.
      - 'context': The context the source string belongs to.
      
      @return string
      The translated string.
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:134
      protected sortTranslators() -> \Drupal\Core\StringTranslation\Translator\TranslatorInterface[]
      Sorts translators according to priority.
      
      @return \Drupal\Core\StringTranslation\Translator\TranslatorInterface[]
      A sorted array of translator objects.
      
      Defined in .../core/lib/Drupal/Core/StringTranslation/TranslationManager.php:79
    protected arguments -> array(0)
  • public __construct($string, array $arguments = array(), array $options = array(), Drupal\Core\StringTranslation\TranslationInterface $string_translation = NULL)
    Constructs a new class instance.
    
    When possible, use the
    \Drupal\Core\StringTranslation\StringTranslationTrait $this->t(). Otherwise
    create a new \Drupal\Core\StringTranslation\TranslatableMarkup object
    directly.
    
    Calling the trait's t() method or instantiating a new TranslatableMarkup
    object serves two purposes:
    - At run-time it translates user-visible text into the appropriate
    language.
    - Static analyzers detect calls to t() and new TranslatableMarkup, and add
    the first argument (the string to be translated) to the database of
    strings that need translation. These strings are expected to be in
    English, so the first argument should always be in English.
    To allow the site to be localized, it is important that all human-readable
    text that will be displayed on the site or sent to a user is made available
    in one of the ways supported by the
    @link https://www.drupal.org/node/322729 Localization API @endlink.
    See the @link https://www.drupal.org/node/322729 Localization API @endlink
    pages for more information, including recommendations on how to break up or
    not break up strings for translation.
    
    @section sec_translating_vars Translating Variables
    $string should always be an English literal string.
    
    $string should never contain a variable, such as:
    @code
    new TranslatableMarkup($text)
    @endcode
    There are several reasons for this:
    - Using a variable for $string that is user input is a security risk.
    - Using a variable for $string that has even guaranteed safe text (for
    example, user interface text provided literally in code), will not be
    picked up by the localization static text processor. (The parameter could
    be a variable if the entire string in $text has been passed into t() or
    new TranslatableMarkup() elsewhere as the first argument, but that
    strategy is not recommended.)
    
    It is especially important never to call new TranslatableMarkup($user_text)
    or t($user_text) where $user_text is some text that a user entered -- doing
    that can lead to cross-site scripting and other security problems. However,
    you can use variable substitution in your string, to put variable text such
    as user names or link URLs into translated text. Variable substitution
    looks like this:
    @code
    new TranslatableMarkup("@name's blog", array('@name' => $account->getDisplayName()));
    @endcode
    Basically, you can put placeholders like @name into your string, and the
    method will substitute the sanitized values at translation time. (See the
    Localization API pages referenced above and the documentation of
    \Drupal\Component\Render\FormattableMarkup::placeholderFormat()
    for details about how to safely and correctly define variables in your
    string.) Translators can then rearrange the string as necessary for the
    language (e.g., in Spanish, it might be "blog de @name").
    
    @param string $string
    A string containing the English text to translate.
    @param array $arguments
    (optional) An associative array of replacements to make after
    translation. Based on the first character of the key, the value is
    escaped and/or themed. See
    \Drupal\Component\Render\FormattableMarkup::placeholderFormat() for
    details.
    @param array $options
    (optional) An associative array of additional options, with the following
    elements:
    - 'langcode' (defaults to the current language): A language code, to
    translate to a language other than what is used to display the page.
    - 'context' (defaults to the empty context): The context the source
    string belongs to.
    @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
    (optional) The string translation service.
    
    @throws \InvalidArgumentException
    Exception thrown when $string is not a string.
    
    @see \Drupal\Component\Render\FormattableMarkup::placeholderFormat()
    @see \Drupal\Core\StringTranslation\StringTranslationTrait::t()
    
    @ingroup sanitization
    
    Defined in .../core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php:137
    public __sleep()
    Magic __sleep() method to avoid serializing the string translator.
    
    Defined in .../core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php:212
    public __toString()
    Implements the magic __toString() method.
    
    Defined in .../core/lib/Drupal/Component/Utility/ToStringTrait.php:13
    public count() -> int
    Returns the string length.
    
    @return int
    The length of the string.
    
    Defined in .../core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php:236
    public getArguments() -> mixed[]
    Gets all arguments from this translated string.
    
    @return mixed[]
    The array of arguments.
    
    Defined in .../core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php:187
    public getOption($name) -> mixed
    Gets a specific option from this translated string.
    
    @param string $name
    Option name.
    
    @return mixed
    The value of this option or empty string of option is not set.
    
    Defined in .../core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php:167
    public getOptions() -> mixed[]
    Gets all options from this translated string.
    
    @return mixed[]
    The array of options.
    
    Defined in .../core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php:177
    public getUntranslatedString() -> string
    Gets the untranslated string value stored in this translated string.
    
    @return string
    The string stored in this wrapper.
    
    Defined in .../core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php:154
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Inherited from Drupal\Component\Render\FormattableMarkup
    Defined in .../core/lib/Drupal/Component/Render/FormattableMarkup.php:112
    public render() -> string
    Renders the object as a string.
    
    @return string
    The translated string.
    
    Defined in .../core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php:197
    protected static placeholderEscape($value) -> string
    Escapes a placeholder replacement value if needed.
    
    @param string|\Drupal\Component\Render\MarkupInterface $value
    A placeholder replacement value.
    
    @return string
    The properly escaped replacement value.
    
    Inherited from Drupal\Component\Render\FormattableMarkup
    Defined in .../core/lib/Drupal/Component/Render/FormattableMarkup.php:258
    protected static placeholderFormat($string, array $args) -> string
    Replaces placeholders in a string with values.
    
    @param string $string
    A string containing placeholders. The string itself is expected to be
    safe and correct HTML. Any unsafe content must be in $args and
    inserted via placeholders.
    @param array $args
    An associative array of replacements. Each array key should be the same
    as a placeholder in $string. The corresponding value should be a string
    or an object that implements
    \Drupal\Component\Render\MarkupInterface. The value replaces the
    placeholder in $string. Sanitization and formatting will be done before
    replacement. The type of sanitization and formatting depends on the first
    character of the key:
    - @variable: When the placeholder replacement value is:
    - A string, the replaced value in the returned string will be sanitized
    using \Drupal\Component\Utility\Html::escape().
    - A MarkupInterface object, the replaced value in the returned string
    will not be sanitized.
    - A MarkupInterface object cast to a string, the replaced value in the
    returned string be forcibly sanitized using
    \Drupal\Component\Utility\Html::escape().
    @code
    $this->placeholderFormat('This will force HTML-escaping of the replacement value: @text', ['@text' => (string) $safe_string_interface_object));
    @endcode
    Use this placeholder as the default choice for anything displayed on
    the site, but not within HTML attributes, JavaScript, or CSS. Doing so
    is a security risk.
    - %variable: Use when the replacement value is to be wrapped in <em>
    tags.
    A call like:
    @code
    $string = "%output_text";
    $arguments = ['%output_text' => 'text output here.'];
    $this->placeholderFormat($string, $arguments);
    @endcode
    makes the following HTML code:
    @code
    <em class="placeholder">text output here.</em>
    @endcode
    As with @variable, do not use this within HTML attributes, JavaScript,
    or CSS. Doing so is a security risk.
    - :variable: Return value is escaped with
    \Drupal\Component\Utility\Html::escape() and filtered for dangerous
    protocols using UrlHelper::stripDangerousProtocols(). Use this when
    using the "href" attribute, ensuring the attribute value is always
    wrapped in quotes:
    @code
    // Secure (with quotes):
    $this->placeholderFormat('<a href=":url">@variable</a>', [':url' => $url, '@variable' => $variable]);
    // Insecure (without quotes):
    $this->placeholderFormat('<a href=:url>@variable</a>', [':url' => $url, '@variable' => $variable]);
    @endcode
    When ":variable" comes from arbitrary user input, the result is secure,
    but not guaranteed to be a valid URL (which means the resulting output
    could fail HTML validation). To guarantee a valid URL, use
    Url::fromUri($user_input)->toString() (which either throws an exception
    or returns a well-formed URL) before passing the result into a
    ":variable" placeholder.
    
    @return string
    A formatted HTML string with the placeholders replaced.
    
    @ingroup sanitization
    
    @see \Drupal\Core\StringTranslation\TranslatableMarkup
    @see \Drupal\Core\StringTranslation\PluralTranslatableMarkup
    @see \Drupal\Component\Utility\Html::escape()
    @see \Drupal\Component\Utility\UrlHelper::stripDangerousProtocols()
    @see \Drupal\Core\Url::fromUri()
    
    Inherited from Drupal\Component\Render\FormattableMarkup
    Defined in .../core/lib/Drupal/Component/Render/FormattableMarkup.php:188
    protected _die()
    For test purposes, wrap die() in an overridable method.
    
    Defined in .../core/lib/Drupal/Component/Utility/ToStringTrait.php:31
    protected getStringTranslation() -> \Drupal\Core\StringTranslation\TranslationInterface
    Gets the string translation service.
    
    @return \Drupal\Core\StringTranslation\TranslationInterface
    The string translation service.
    
    Defined in .../core/lib/Drupal/Core/StringTranslation/TranslatableMarkup.php:222
'linkbacks' => NULL
'theme_hook_original' => string(26) "semantic_linkbacks_counter"
'attributes' => Drupal\Core\Template\Attribute(1)
  • contents
  • Available methods (17)
  • Iterator contents (0)
  • protected storage -> array(0)
  • public __clone()
    Implements the magic __clone() method.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:315
    public __construct($attributes = array())
    Constructs a \Drupal\Core\Template\Attribute object.
    
    @param array $attributes
    An associative array of key-value pairs to be converted to attributes.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:80
    public __toString()
    Implements the magic __toString() method.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:285
    public addClass() -> $this
    Adds classes or merges them on to array of existing CSS classes.
    
    @param string|array ...
    CSS classes to add to the class attribute array.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:170
    public getIterator()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:324
    public hasClass($class) -> bool
    Checks if the class array has the given CSS class.
    
    @param string $class
    The CSS class to check for.
    
    @return bool
    Returns TRUE if the class exists, or FALSE otherwise.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:273
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:341
    public offsetExists($name)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:158
    public offsetGet($name)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:89
    public offsetSet($name, $value)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:98
    public offsetUnset($name)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:151
    public removeAttribute() -> $this
    Removes an attribute from an Attribute object.
    
    @param string|array ...
    Attributes to remove from the attribute array.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:219
    public removeClass() -> $this
    Removes argument values from array of existing CSS classes.
    
    @param string|array ...
    CSS classes to remove from the class attribute array.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:244
    public setAttribute($attribute, $value) -> $this
    Sets values for an attribute key.
    
    @param string $attribute
    Name of the attribute.
    @param string|array $value
    Value(s) to set for the given attribute key.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:205
    public storage()
    Returns the whole array.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:331
    public toArray() -> array
    Returns all storage elements as an array.
    
    @return array
    An associative array of attributes.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:303
    protected createAttributeValue($name, $value) -> \Drupal\Core\Template\AttributeValueBase
    Creates the different types of attribute values.
    
    @param string $name
    The attribute name.
    @param mixed $value
    The attribute value.
    
    @return \Drupal\Core\Template\AttributeValueBase
    An AttributeValueBase representation of the attribute's value.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:113
'title_attributes' => Drupal\Core\Template\Attribute(1)
  • contents
  • Available methods (17)
  • Iterator contents (0)
  • protected storage -> array(0)
  • public __clone()
    Implements the magic __clone() method.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:315
    public __construct($attributes = array())
    Constructs a \Drupal\Core\Template\Attribute object.
    
    @param array $attributes
    An associative array of key-value pairs to be converted to attributes.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:80
    public __toString()
    Implements the magic __toString() method.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:285
    public addClass() -> $this
    Adds classes or merges them on to array of existing CSS classes.
    
    @param string|array ...
    CSS classes to add to the class attribute array.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:170
    public getIterator()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:324
    public hasClass($class) -> bool
    Checks if the class array has the given CSS class.
    
    @param string $class
    The CSS class to check for.
    
    @return bool
    Returns TRUE if the class exists, or FALSE otherwise.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:273
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:341
    public offsetExists($name)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:158
    public offsetGet($name)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:89
    public offsetSet($name, $value)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:98
    public offsetUnset($name)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:151
    public removeAttribute() -> $this
    Removes an attribute from an Attribute object.
    
    @param string|array ...
    Attributes to remove from the attribute array.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:219
    public removeClass() -> $this
    Removes argument values from array of existing CSS classes.
    
    @param string|array ...
    CSS classes to remove from the class attribute array.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:244
    public setAttribute($attribute, $value) -> $this
    Sets values for an attribute key.
    
    @param string $attribute
    Name of the attribute.
    @param string|array $value
    Value(s) to set for the given attribute key.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:205
    public storage()
    Returns the whole array.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:331
    public toArray() -> array
    Returns all storage elements as an array.
    
    @return array
    An associative array of attributes.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:303
    protected createAttributeValue($name, $value) -> \Drupal\Core\Template\AttributeValueBase
    Creates the different types of attribute values.
    
    @param string $name
    The attribute name.
    @param mixed $value
    The attribute value.
    
    @return \Drupal\Core\Template\AttributeValueBase
    An AttributeValueBase representation of the attribute's value.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:113
'content_attributes' => Drupal\Core\Template\Attribute(1)
  • contents
  • Available methods (17)
  • Iterator contents (0)
  • protected storage -> array(0)
  • public __clone()
    Implements the magic __clone() method.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:315
    public __construct($attributes = array())
    Constructs a \Drupal\Core\Template\Attribute object.
    
    @param array $attributes
    An associative array of key-value pairs to be converted to attributes.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:80
    public __toString()
    Implements the magic __toString() method.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:285
    public addClass() -> $this
    Adds classes or merges them on to array of existing CSS classes.
    
    @param string|array ...
    CSS classes to add to the class attribute array.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:170
    public getIterator()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:324
    public hasClass($class) -> bool
    Checks if the class array has the given CSS class.
    
    @param string $class
    The CSS class to check for.
    
    @return bool
    Returns TRUE if the class exists, or FALSE otherwise.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:273
    public jsonSerialize() -> string
    Returns a representation of the object for use in JSON serialization.
    
    @return string
    The safe string content.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:341
    public offsetExists($name)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:158
    public offsetGet($name)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:89
    public offsetSet($name, $value)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:98
    public offsetUnset($name)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:151
    public removeAttribute() -> $this
    Removes an attribute from an Attribute object.
    
    @param string|array ...
    Attributes to remove from the attribute array.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:219
    public removeClass() -> $this
    Removes argument values from array of existing CSS classes.
    
    @param string|array ...
    CSS classes to remove from the class attribute array.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:244
    public setAttribute($attribute, $value) -> $this
    Sets values for an attribute key.
    
    @param string $attribute
    Name of the attribute.
    @param string|array $value
    Value(s) to set for the given attribute key.
    
    @return $this
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:205
    public storage()
    Returns the whole array.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:331
    public toArray() -> array
    Returns all storage elements as an array.
    
    @return array
    An associative array of attributes.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:303
    protected createAttributeValue($name, $value) -> \Drupal\Core\Template\AttributeValueBase
    Creates the different types of attribute values.
    
    @param string $name
    The attribute name.
    @param mixed $value
    The attribute value.
    
    @return \Drupal\Core\Template\AttributeValueBase
    An AttributeValueBase representation of the attribute's value.
    
    Defined in .../core/lib/Drupal/Core/Template/Attribute.php:113
'title_prefix' => array(0)
'title_suffix' => array(0)
'db_is_active' => boolTRUE
'is_admin' => boolFALSE
'logged_in' => boolFALSE
'user' => Drupal\Core\Session\AccountProxy(4)
  • contents
  • Available methods (17)
  • Static class properties (2)
  • protected account -> Drupal\Core\Session\AnonymousUserSession(8)
    • contents
    • Available methods (15)
    • Static class properties (2)
    • protected uid -> integer0
      protected roles -> array(1)
      string(9) "anonymous"
      protected access -> NULL
      public name -> string(0) ""
      protected preferred_langcode -> NULL
      protected preferred_admin_langcode -> NULL
      protected mail -> NULL
      protected timezone -> NULL
    • public __construct()
      Constructs a new anonymous user session.
      
      Intentionally don't allow parameters to be passed in like UserSession.
      
      Defined in .../core/lib/Drupal/Core/Session/AnonymousUserSession.php:15
      public getAccountName()
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:164
      public getDisplayName()
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:171
      public getEmail()
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:180
      public getLastAccessedTime()
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:194
      public getPreferredAdminLangcode($fallback_to_default = true)
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:144
      public getPreferredLangcode($fallback_to_default = true)
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:131
      public getRoles($exclude_locked_roles = false)
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:92
      public getTimeZone()
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:187
      public getUsername()
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:157
      public hasPermission($permission)
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:105
      public id()
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:85
      public isAnonymous()
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:124
      public isAuthenticated()
      {@inheritdoc}
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:117
      protected getRoleStorage() -> \Drupal\user\RoleStorageInterface
      Returns the role storage object.
      
      @return \Drupal\user\RoleStorageInterface
      The role storage object.
      
      Inherited from Drupal\Core\Session\UserSession
      Defined in .../core/lib/Drupal/Core/Session/UserSession.php:204
    • constant ANONYMOUS_ROLE :: string(9) "anonymous"
      constant AUTHENTICATED_ROLE :: string(13) "authenticated"
    protected id -> integer0
    protected initialAccountId -> NULL
    public _serviceId -> string(12) "current_user"
  • public getAccount()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:58
    public getAccountName()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:133
    public getDisplayName()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:140
    public getEmail()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:147
    public getLastAccessedTime()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:161
    public getPreferredAdminLangcode($fallback_to_default = true)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:119
    public getPreferredLangcode($fallback_to_default = true)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:112
    public getRoles($exclude_locked_roles = false)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:84
    public getTimeZone()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:154
    public getUsername()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:126
    public hasPermission($permission)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:91
    public id()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:77
    public isAnonymous()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:105
    public isAuthenticated()
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:98
    public setAccount(Drupal\Core\Session\AccountInterface $account)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:44
    public setInitialAccountId($account_id)
    {@inheritdoc}
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:168
    protected loadUserEntity($account_id) -> \Drupal\Core\Session\AccountInterface|null
    Load a user entity.
    
    The entity manager requires additional initialization code and cache
    clearing after the list of modules is changed. Therefore it is necessary to
    retrieve it as late as possible.
    
    Because of serialization issues it is currently not possible to inject the
    container into the AccountProxy. Thus it is necessary to retrieve the
    entity manager statically.
    
    @see https://www.drupal.org/node/2430447
    
    @param int $account_id
    The id of an account to load.
    
    @return \Drupal\Core\Session\AccountInterface|null
    An account or NULL if none is found.
    
    Defined in .../core/lib/Drupal/Core/Session/AccountProxy.php:195
  • constant ANONYMOUS_ROLE :: string(9) "anonymous"
    constant AUTHENTICATED_ROLE :: string(13) "authenticated"
'directory' => string(22) "themes/planet_founding"
  • Directory (4.00K)
  • drwxr-x---
'#cache' => array(1)
'contexts' => array(1)
string(16) "user.permissions"
'theme_hook_suggestions' => array(0)