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 2009-07-21 11:14:42

tilb
Member
From: CHOLET
Registered: 2008-05-07
Posts: 82
Website

Utilisation de la fonction plugin_change_profile_XXX()

Bonjour,

Je développe actuellement un plugin nommé "listing" pour la v0.72 et ai un problème à l'utilisation de la fonction plugin_change_profile_listing(). Mon problème est qu'en mode débug, j'ai l'erreur suivante lors de la connexion :

PHP ERROR: Undefined index: glpi_plugin_listing_profile in D:\APPLICATIFS\GLPI-OCSNG\APACHE\htdocs\glpitest\plugins\listing\setup.php at line 158.

Je l'ai bien déclarée dans mon fichier hook.php :

function plugin_change_profile_listing() {
    global $DB;
    
    $result=$DB->query("SELECT ID, level FROM glpi_plugin_listing_profiles WHERE FK_profiles='" . $_SESSION['glpiactiveprofile']['ID'] . "'");
    if($DB->numrows($result)){
        $prof=$DB->fetch_assoc($result);
        $_SESSION["glpi_plugin_listing_profile"]=intval($prof['level']);
    }else{
        $_SESSION["glpi_plugin_listing_profile"]=0;
    }
}

Ma fonction init :

function plugin_init_listing() {
    global $PLUGIN_HOOKS,$CFG_GLPI,$LANG;
    $plugin = new Plugin();
    
    if (isset($_SESSION["glpiID"])){
    
        $PLUGIN_HOOKS['change_profile']['listing'] = 'plugin_change_profile_listing';
        
        if ($plugin->isActivated("listing") && plugin_listing_haveRight(10)) {
            $PLUGIN_HOOKS['menu_entry']['listing'] = true;
            $PLUGIN_HOOKS['add_javascript']['listing'] = "javascript/listing.js";
            $PLUGIN_HOOKS['add_css']['listing'] = "css/plugin_listing.css";
        }
        
        if ($plugin->isActivated("listing") && plugin_listing_haveRight(50)) {
            $PLUGIN_HOOKS['submenu_entry']['listing']['add'] = 'front/plugin_listing.form.php?action=def'; 
        }
        
        if (($plugin->isActivated("listing") && plugin_listing_haveRight(99)) || haveRight("config","w")) {
            $PLUGIN_HOOKS['submenu_entry']['listing']['config'] = 'front/plugin_listing.config.php';
            $PLUGIN_HOOKS['config_page']['listing'] = "front/plugin_listing.config.php";
        }
        
        registerPluginType('listing',
            'PLUGIN_LISTING_TYPE',
            25001,
            array(
                'classname'  => 'pluginListing',
                'tablename'  => 'glpi_plugin_listing',
                'formpage'   => 'front/plugin_listing.form.php',
                'searchpage' => 'index.php',
                'typename'   => 'Listing',
                'deleted_tables' => true,
            ));

    }
}

Ma fonction posant problème :

function plugin_listing_haveRight($level) {
    global $DB;
    $plugin = new Plugin();
        
    if (!isset($_SESSION["glpiactiveprofile"])){
        return false;
    }
    
    if (!$plugin->isActivated("listing")){
        return false;
    }

    if ($_SESSION["glpi_plugin_listing_profile"]>=$level){
        return true;
    }else{
        return false;
    }
}

La ligne 158 est la ligne

if ($_SESSION["glpi_plugin_listing_profile"]>=$level){

J'ai l'impression que la fonction "plugin_change_profile_listing" n'est pas appelée avant la ligne

if ($plugin->isActivated("listing") && plugin_listing_haveRight(10)) {

de ma fonction plugin_init_listing().

Dans ce cas, comment dois-je procéder ?

Merci d'avance,

Florian


GLPI 9.1.2 et FusionInventory 9.1+1.0

Offline

#2 2009-07-21 11:29:45

remi
GLPI-DEV
From: Champagne
Registered: 2007-04-28
Posts: 7,127
Website

Re: Utilisation de la fonction plugin_change_profile_XXX()

Ligne 158

if (isset($_SESSION["glpi_plugin_listing_profile"]) &&
  $_SESSION["glpi_plugin_listing_profile"]>=$level){

Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/

Offline

#3 2009-07-21 11:30:52

tilb
Member
From: CHOLET
Registered: 2008-05-07
Posts: 82
Website

Re: Utilisation de la fonction plugin_change_profile_XXX()

J'ai trouvé...

En fait la fonction plugin_change_profile_listing() n'est appellée automatiquement qu'au "changement" de profil et non à la première connexion.

J'ai donc modifier ma fonction posant problème de la sorte :

function plugin_listing_haveRight($level) {
    global $DB;
    $plugin = new Plugin();
        
    if (!isset($_SESSION["glpiactiveprofile"]))
        return false;

    
    if (!$plugin->isActivated("listing"))
        return false;
    
    if (!isset($_SESSION["glpi_plugin_listing_profile"]))
        plugin_listing_changeProfile();

    if ($_SESSION["glpi_plugin_listing_profile"]>=$level){
        return true;
    }else{
        return false;
    }
}

Merci quand même,

Sujet clos smile

Florian


GLPI 9.1.2 et FusionInventory 9.1+1.0

Offline

#4 2009-07-21 11:55:40

tilb
Member
From: CHOLET
Registered: 2008-05-07
Posts: 82
Website

Re: Utilisation de la fonction plugin_change_profile_XXX()

On a posté quasiment en même temps,

Merci pour ta réponse,


GLPI 9.1.2 et FusionInventory 9.1+1.0

Offline

Board footer

Powered by FluxBB