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 2023-01-20 10:14:14

Abshol
Member
Registered: 2023-01-20
Posts: 4

Problème pour enregistrer son plugin dans le crontask

Bonjour, actuellement débutant en création de plugins pour glpi je me suis lancé dedans pour un stage. Je suis actuellement bloqué pour que ce plugin s'active automatiquement toutes les 5 minutes, pouvez-vous m'aider ? (Je tiens à m'excuser si ce n'est pas le bon endroit pour poster ceci)

Mon setup.php:

<?php
define('autotasks_VERSION', '1.0');

/**
 * Init the hooks of the plugins - Needed
 *
 * @return void
 */
function plugin_init_autotasks() {
   global $PLUGIN_HOOKS;

   $PLUGIN_HOOKS['config_page']['autotasks'] = 'front/config.form.php';
   Plugin::registerClass('autotasks');

   $PLUGIN_HOOKS['csrf_compliant']['autotasks'] = true;
}

/**
 * Get the name and the version of the plugin
 *
 * @return array
 */
function plugin_version_autotasks() {
   return [
      'name'           => 'autotasks',
      'version'        => autotasks_VERSION,
      'author'         => 'Abshol',
      'license'        => '¯\_(ツ)_/¯',
      'homepage'       => 'https://github.com/Abshol',
      'requirements'   => [
         'glpi'   => [
            'min' => '9.5.0'
         ]
      ]
   ];
}

/**
 * Check configuration process for plugin : need to return true if succeeded
 * Can display a message only if failure and $verbose is true
 *
 * @param boolean $verbose Enable verbosity. Default to false
 *
 * @return boolean
 */
function plugin_autotasks_check_config($verbose = false) {
   if (true) { // Your configuration check
      return true;
   }

   if ($verbose) {
      echo "Installed, but not configured";
   }
   return false;
}

/**
 * Optional: defines plugin options.
 *
 * @return array
 */
function plugin_autotasks_options() {
   return [
      Plugin::OPTION_AUTOINSTALL_DISABLED => true,
   ];
}

Mon hook.php:

<?php
global $CFG_GLPI;
require_once("vendor/autoload.php");
require_once("../inc/includes.php");
/**
 * Install hook
 *
 * @return boolean
 **/
function plugin_autotasks_install() {
    global $DB;
    //instanciate migration with version
    $migration = new Migration(100);
    CronTask::register('pluginautotasksAutoTasks', 'autotasks', 300);
    if (!$DB->TableExists("glpi_plugin_autotaskslogs")) {
        $query = "CREATE TABLE `glpi`.`glpi_plugin_autotaskslogs` (`id` INT NOT NULL AUTO_INCREMENT , `user` INT NOT NULL , `hardreset` BOOLEAN NOT NULL, `date` DATE NOT NULL, `success` BOOLEAN NOT NULL, PRIMARY KEY (`id`));";
        $DB->query($query) or die("Erreur creation table glpi_plugin_autotaskslogs". $DB->error);
        $query = "ALTER TABLE `glpi_plugin_autotaskslogs` ADD FOREIGN KEY (user) REFERENCES glpi_users(id);";
        if (!$DB->query($query)) {
            $query = "DROP TABLE glpi_plugin_autotaskslogs";
            $DB->query($query);
            die("Erreur creation table glpi_plugin_autotaskslogs" . $DB->error);
        }
    }
    //execute the whole migration
    $migration->executeMigration();

    return true;
}
/**
 * Uninstall hook
 *
 * @return boolean
 **/
function plugin_autotasks_uninstall() {
    global $DB;
    $query = "DROP TABLE glpi_plugin_autotaskslogs";
    $DB->query($query);
    CronTask::unregister('AutoTasks');
    return true;
}

Last edited by Abshol (2023-01-20 10:17:07)

Offline

#2 2023-01-20 10:24:10

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

Re: Problème pour enregistrer son plugin dans le crontask

Bonjour

Lisez cette documentation, si vous ne l'avez pas déjà consultée : https://glpi-developer-documentation.re … tasks.html


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 2023-01-20 10:25:32

Abshol
Member
Registered: 2023-01-20
Posts: 4

Re: Problème pour enregistrer son plugin dans le crontask

Je l'ai déjà lue plusieurs fois, et j'ai suivi plusieurs tutos mais rien n'y fait

Offline

#4 2023-01-20 10:28:52

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

Re: Problème pour enregistrer son plugin dans le crontask

Dans vos extraits de code je ne vois rien qui corresponde à l'enregistrement d'une action automatique.

Vous ne montrez aucune classe ayant une méthode dont le nom commence par "cron" ni aucun code pour faire reconnaître cette méthode comme une action automatique.

Mettez le code de votre plugin sur github pour que les membres du forum puissent voir l'ensemble du projet et puissent vous aider.


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 2023-01-20 10:42:10

Abshol
Member
Registered: 2023-01-20
Posts: 4

Re: Problème pour enregistrer son plugin dans le crontask

btry wrote:

Dans vos extraits de code je ne vois rien qui corresponde à l'enregistrement d'une action automatique.

Vous ne montrez aucune classe ayant une méthode dont le nom commence par "cron" ni aucun code pour faire reconnaître cette méthode comme une action automatique.

Mettez le code de votre plugin sur github pour que les membres du forum puissent voir l'ensemble du projet et puissent vous aider.

Voici le lien vers mon github: https:// github . com/Abshol/ (excusez moi des espaces mais je ne suis apparement pas autorisé à poster des liens)

Offline

#6 2023-01-21 20:17:07

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

Re: Problème pour enregistrer son plugin dans le crontask

Bonjour

J'ai trouvé le code qui déclare l'action automatique.

Elle doit être créée, et visible dans la liste des actions automatiques de glpi. Je pense qu'elle utilise le mode GLPI, qui dépend de l'activité des utilisateurs de GLPI.

Votre glpi doit utiliser une tâche cron (voir la configuration générale d'un glpi) et votre action automatique doit utiliser le mode externe. Un argument supplémentaire à la déclaration de l'action automatique est requis.

Un exemple est disponible ici (fin du fichier, dernière méthode) : https://github.com/pluginsGLPI/formcrea … nstall.php.


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

#7 2023-01-23 10:57:29

Abshol
Member
Registered: 2023-01-20
Posts: 4

Re: Problème pour enregistrer son plugin dans le crontask

btry wrote:

Bonjour

J'ai trouvé le code qui déclare l'action automatique.

Elle doit être créée, et visible dans la liste des actions automatiques de glpi. Je pense qu'elle utilise le mode GLPI, qui dépend de l'activité des utilisateurs de GLPI.

Votre glpi doit utiliser une tâche cron (voir la configuration générale d'un glpi) et votre action automatique doit utiliser le mode externe. Un argument supplémentaire a la déclaration de l'action automatique est requis.

Bonjour, j'ai pu m'aider de votre code pour faire la tâche automatique, tout fonctionne maintenant, un grand merci à vous !

Offline

Board footer

Powered by FluxBB