2017-03-28 1 views
0

Existe-t-il un moyen de remplacer dans une extension une fonction de base Moodle? Par exemple, je souhaite remplacer la fonction get_max_upload_sizes appelée /admin/settings/security.php:30. Cette fonction est située au /lib/moodlelib.php:6186.Comment remplacer une fonction de base Moodle dans un plugin?

D'une manière plus générale: quelle est la bonne pratique quand vous avez besoin d'effectuer ce genre de choses dans Moodle (je ne veux pas pirater le fichier core)?

Répondre

0

Cela dépend un peu de la fonctionnalité dont vous avez besoin. Depuis la fonction mentionnée fait partie du fichier core moodle, qui est inclus sur config.php global => setup.php je ne vois aucun moyen direct de changer cette fonction sans toucher le noyau.

Quelle est votre intention derrière l'idée? Souhaitez-vous développer un plugin permettant des téléchargements avec des tailles de fichier plus grandes? Si oui, vous pouvez essayer de modifier les paramètres comme ini_get ('upload_max_filesize'))/ini_get ('post_max_size')) pendant l'utilisation du plugin, de sorte que la fonction principale retournera la taille appropriée

+0

Je voudrais changer la valeur généré à partir de cette fonction pour la partie admin utilisée dans '/admin/settings.php? section = sitepolicies'. –

+0

À première vue, je ne vois pas la possibilité de modifier le comportement de cette page de paramètres avec un plugin. Si vous ne voulez pas toucher le noyau, vous pouvez envisager d'écrire un plugin local, ce qui vous permettra de définir le paramètre ici. Mais cela n'affecterait pas la page des paramètres existants, de sorte que chaque fois que quelqu'un sauvegardera le formulaire d'origine, vos valeurs seront remplacées. Ou votre clone toute la page des paramètres dans votre plugin, et interdire l'utilisation de l'original, par exemple avec un serveur web rediriger – Bearzi

+0

J'ai essayé dans un plugin local pour réécrire la fonction que je veux remplacer mais cela provoque une erreur fatale: ne peut pas redeclare get_max_upload_sizes() '. Si le dépassement n'est pas supporté, je m'arrêterai ici. –