Error: The block topics does not define the standard capability block/topics:addinstance

Error: The block topics does not define the standard capability block/topics:addinstance

de Alberto Pérez -
Número de respuestas: 4

Muy buenas tardes,


Estoy actualizando moodle desde la versión 3.1.2 a la 3.6.2. 

Al hacer la migración he obtenido algunos mensajes de depuración. Algunos los he resuelto, pero otros no hay manera. En particular me está dando problemas este:


The block topics does not define the standard capability block/topics:addinstance

  • line 617 of /blocks/moodleblock.class.php: call to debugging()
  • line 595 of /blocks/moodleblock.class.php: call to block_base->has_add_block_capability()
  • line 236 of /lib/blocklib.php: call to block_base->user_can_addto()
  • line 1893 of /lib/blocklib.php: call to block_manager->get_addable_blocks()
  • line 1010 of /lib/blocklib.php: call to block_add_block_ui()
  • line 353 of /lib/blocklib.php: call to block_manager->ensure_content_created()
  • line 6 of /theme/base/layout/general.php: call to block_manager->region_has_content()
  • line 870 of /lib/outputrenderers.php: call to include()
  • line 800 of /lib/outputrenderers.php: call to core_renderer->render_page_layout()
  • line ? of unknownfile: call to core_renderer->header()
  • line 240 of /lib/outputrenderers.php: call to call_user_func_array()
  • line 478 of /admin/renderer.php: call to plugin_renderer_base->__call()
  • line 478 of /admin/renderer.php: call to core_admin_renderer->header()
  • line 109 of /admin/environment.php: call to core_admin_renderer->environment_check_page()


He estado leyendo acerca de este error, y he visto que la solución sería modificar el fichero db/access.php del bloque escribiendo esto:

<?php

    $capabilities = array(

    'block/topics:myaddinstance' => array(

        'captype' => 'write',

        'contextlevel' => CONTEXT_SYSTEM,

        'archetypes' => array(

            'user' => CAP_ALLOW

        ),

        'clonepermissionsfrom' => 'moodle/my:manageblocks'

    ),

    'block/topics:addinstance' => array(

        'riskbitmask' => RISK_SPAM | RISK_XSS,

        'captype' => 'write',

        'contextlevel' => CONTEXT_BLOCK,

        'archetypes' => array(

            'editingteacher' => CAP_ALLOW,

            'manager' => CAP_ALLOW

        ),

        'clonepermissionsfrom' => 'moodle/site:manageblocks'

    ),

);


Sin embargo el error persiste. 


¿Alguien me podría ayudar?


Muchas gracias, saludos



Promedio de valoraciones: -
En respuesta a Alberto Pérez

Re: Error: The block topics does not define the standard capability block/topics:addinstance

de Franco Pantoja -
Imagen de Moodlers de gran ayuda

Hola en relación con el anterior post.

Las nuevas versiones son más estrictas también con la configuración del código de los bloques.

Trata de comparar el código de un bloque 2.6 con el original, para poder corregirlo.


Saludos!

En respuesta a Franco Pantoja

Re: Error: The block topics does not define the standard capability block/topics:addinstance

de Alberto Pérez -

Buenas Paco, gracias por contestar!


Me he basado en código de bloques propios de la 2.6 para comparar, y son idénticos, por eso es por lo que no acabo de entender el error. 


Este es el código de uno de la 2.6, que si se compara con el mío se puede ver que sigue justo el mismo esquema...



$capabilities = array(


    'block/glossary_random:myaddinstance' => array(

        'captype' => 'write',

        'contextlevel' => CONTEXT_SYSTEM,

        'archetypes' => array(

            'user' => CAP_ALLOW

        ),


        'clonepermissionsfrom' => 'moodle/my:manageblocks'

    ),


    'block/glossary_random:addinstance' => array(

        'riskbitmask' => RISK_SPAM | RISK_XSS,


        'captype' => 'write',

        'contextlevel' => CONTEXT_BLOCK,

        'archetypes' => array(

            'editingteacher' => CAP_ALLOW,

            'manager' => CAP_ALLOW

        ),


        'clonepermissionsfrom' => 'moodle/site:manageblocks'

    ),

);

En respuesta a Alberto Pérez

Re: Error: The block topics does not define the standard capability block/topics:addinstance

de Alberto Pérez -

Lo he podido solucionar, comparto por si ayuda a alguien más...

Me faltaba cambiar la versión del bloque (en el fichero version.php), para que moodle detectara el cambio y actualizara la base de datos. Una vez hecho esto, todo OK.


Saludos

En respuesta a Alberto Pérez

Re: Error: The block topics does not define the standard capability block/topics:addinstance

de Manuel Antonio Rivera Socarrás -
Hola, Alberto, me est'a pasando algo muy aparecido a lo que te pas'o, ¿qué hicistes con eso de la versión? Pues yo también le cambié la versión y nada cambió.