You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2017-08-24 18:25:39

bosco
Member
From: Montpellier
Registered: 2011-11-17
Posts: 166
Website

Nouvelles classes/fonctions

Bonsoir,

je suis en train de remettre à l'ordre du jour une extension uniquement compatible avec la 0.83 au max.

Il est impossible de l'installer sauf à :
- changer CommonDBTM en Profil
- contourner les checks read/write des droits sur le plugin

J'ai donc commenté les 

 function canCreate() {
      return plugin_manageentities_haveRight('manageentities', 'w');
   }

   function canView() {
      return plugin_manageentities_haveRight('manageentities', 'r');
   }

et d'autres portions blocantes.

Oui mais ça ne suffit pas à ce que ça fonctionne bien (et en plus c'est pas comme il faut).

Les erreurs dans les logs sont les suivantes :

PHP Fatal error:  Cannot make static method CommonDBTM::canView() non static in class 
PHP Fatal error:  Cannot make static method CommonDBTM::canCreate()
PHP Fatal error:  Cannot make non static method Profile::showForm() static in class 

J'ai changé le common par profile, et enlevé l'appel static à showform.

1) Est-bon un bon début
2) Quelles sont les bonnes valeurs de check/fonctions pour les droits ?


- SoluTek.fr - | occasional plugin contributor
GLPI 9.3.1
Windows 2016 - IIS Reverse Proxy - HTTPS/Let's Encrypt | Apache 2.4.33 / PHP 7.1.16

Offline

#2 2017-08-24 19:19:34

btry
Moderator
Registered: 2015-10-01
Posts: 591

Re: Nouvelles classes/fonctions

Bonjour

Les méthodes canCreate et canView doivent être statiques dans les classes du plugin, car elles sont statiques dans CommonDBTM.

Idem pour showForm.

De plus les droits ont évolué, il n'y a plus de 'r' ou 'w' mais des constantes qu'on peut trouver dans define.php . define.php est dans glpi/config jusqu'à 9.1 et dans glpi/inc à partir de 9.2.

changer CommonDBTM en Profil

je n'ai pas compris ce que ça implique concrètement.


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#3 2017-08-25 14:59:27

bosco
Member
From: Montpellier
Registered: 2011-11-17
Posts: 166
Website

Re: Nouvelles classes/fonctions

*** PHP Runtime Notice(2048): Declaration of PluginManageentitiesPreference::showForm() should be compatible with Profile::showForm($ID, $options = Array)

C'est ce qui m'a induit à penser qu'il fallait remplacer CommonDBTM:: en Profile::

Mais visiblement j'a trompé big_smile


- SoluTek.fr - | occasional plugin contributor
GLPI 9.3.1
Windows 2016 - IIS Reverse Proxy - HTTPS/Let's Encrypt | Apache 2.4.33 / PHP 7.1.16

Offline

#4 2017-08-25 15:07:20

btry
Moderator
Registered: 2015-10-01
Posts: 591

Re: Nouvelles classes/fonctions

Si le code est publié quelque part, donnez le lien.

Je suppose que la classe PluginManageentitiesPreference hérite de la classe Profile. Si Profile implémente une méthode showForm alors PluginManageentitiesPreference peut la redéfinir, mais en respectant la signature de la classe mère, à savoir
- statique ou non
- liste des arguments, leur type si défini, et une valeur par défaut.

redéfinissez showFormdans la classe du plugin comme ceci

public function ($ID, $options = []) {
   // ... du code 
}

De mémoire showForm n'est pas statique, mais vérifiez quand même. Si oui, alors ajoutez le mot static entre public et function.

Pour exploiter les argumetns $ID et $options, prenez une classe de GLPI et voyez sa méthode showForm pour savoir ce qui est transmis, et comment s'en servir si besoin.


No support with MP - Always run an upgrade task on a testing instance before running it on production! Always backup before any upgrade task!

Offline

#5 2017-08-25 18:51:01

bosco
Member
From: Montpellier
Registered: 2011-11-17
Posts: 166
Website

Re: Nouvelles classes/fonctions

Merci, je n'ai pas encore fait de dev pour glpi, mais je vais m'y mettre, et là j'ai besoin de ce plugin pour nous simplifier le travail smile


- SoluTek.fr - | occasional plugin contributor
GLPI 9.3.1
Windows 2016 - IIS Reverse Proxy - HTTPS/Let's Encrypt | Apache 2.4.33 / PHP 7.1.16

Offline

#6 2017-08-28 16:07:49

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Nouvelles classes/fonctions

Je vous conseille de migrer ce plugin en 0.84 à l'ai de https://forge.glpi-project.org/projects … in083to084
Et ensuite de la migrer en 0.85 à l'aide de https://forge.glpi-project.org/projects … in084to085

Vous avez aussi https://forge.glpi-project.org/projects … ePlugin084 qui vous aidera pour rendre l'installation possible et mieux comprendre le fonctionnement


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

Board footer

Powered by FluxBB