mise à jour ansible glpi
This commit is contained in:
@@ -0,0 +1,309 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* FusionInventory
|
||||
*
|
||||
* Copyright (C) 2010-2016 by the FusionInventory Development Team.
|
||||
*
|
||||
* http://www.fusioninventory.org/
|
||||
* https://github.com/fusioninventory/fusioninventory-for-glpi
|
||||
* http://forge.fusioninventory.org/
|
||||
*
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This file is part of FusionInventory project.
|
||||
*
|
||||
* FusionInventory is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* FusionInventory is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with FusionInventory. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
* This file is used to manage the deploy task job.
|
||||
*
|
||||
* ------------------------------------------------------------------------
|
||||
*
|
||||
* @package FusionInventory
|
||||
* @author David Durieux
|
||||
* @author Alexandre Delaunay
|
||||
* @copyright Copyright (c) 2010-2016 FusionInventory team
|
||||
* @license AGPL License 3.0 or (at your option) any later version
|
||||
* http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
* @link http://www.fusioninventory.org/
|
||||
* @link https://github.com/fusioninventory/fusioninventory-for-glpi
|
||||
*
|
||||
*/
|
||||
|
||||
if (!defined('GLPI_ROOT')) {
|
||||
die("Sorry. You can't access directly to this file");
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage the deploy task job.
|
||||
*
|
||||
* @todo This class should inherit the PluginFusioninventoryTaskjob
|
||||
*/
|
||||
class PluginFusioninventoryDeployTaskjob extends CommonDBTM {
|
||||
|
||||
|
||||
/**
|
||||
* Is this use can create a deploy task job
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
static function canCreate() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Is this use can view a deploy task job
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
static function canView() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all data
|
||||
*
|
||||
* @global object $DB
|
||||
* @param array $params
|
||||
* @return string in JSON format
|
||||
*/
|
||||
function getAllDatas($params) {
|
||||
global $DB;
|
||||
|
||||
$tasks_id = $params['tasks_id'];
|
||||
|
||||
$sql = " SELECT *
|
||||
FROM `".$this->getTable()."`
|
||||
WHERE `plugin_fusioninventory_deploytasks_id` = '$tasks_id'
|
||||
AND method = 'deployinstall'";
|
||||
|
||||
$res = $DB->query($sql);
|
||||
$json = [];
|
||||
$temp_tasks = [];
|
||||
while ($row = $DB->fetchAssoc($res)) {
|
||||
$row['packages'] = importArrayFromDB($row['definition']);
|
||||
$row['actions'] = importArrayFromDB($row['action']);
|
||||
|
||||
$temp_tasks[] = $row;
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
foreach ($temp_tasks as $task) {
|
||||
foreach ($task['actions'] as $action) {
|
||||
foreach ($task['packages'] as $package) {
|
||||
|
||||
$tmp = array_keys($action);
|
||||
$action_type = $tmp[0];
|
||||
|
||||
$json['tasks'][$i]['package_id'] = $package['PluginFusioninventoryDeployPackage'];
|
||||
$json['tasks'][$i]['method'] = $task['method'];
|
||||
$json['tasks'][$i]['comment'] = $task['comment'];
|
||||
$json['tasks'][$i]['retry_nb'] = $task['retry_nb'];
|
||||
$json['tasks'][$i]['retry_time'] = $task['retry_time'];
|
||||
$json['tasks'][$i]['action_type'] = $action_type;
|
||||
$json['tasks'][$i]['action_selection'] = $action[$action_type];
|
||||
|
||||
$obj_action = new $action_type();
|
||||
$obj_action->getFromDB($action[$action_type]);
|
||||
$json['tasks'][$i]['action_name'] = $obj_action->getField('name');
|
||||
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return json_encode($json);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save data
|
||||
*
|
||||
* @global object $DB
|
||||
* @param array $params
|
||||
*/
|
||||
function saveDatas($params) {
|
||||
global $DB;
|
||||
|
||||
$tasks_id = $params['tasks_id'];
|
||||
$tasks = json_decode($params['tasks']);
|
||||
|
||||
//remove old jobs from task
|
||||
$this->deleteByCriteria(['plugin_fusioninventory_deploytasks_id' => $tasks_id], true);
|
||||
|
||||
//get plugin id
|
||||
$plug = new Plugin();
|
||||
$plug->getFromDBbyDir('fusinvdeploy');
|
||||
$plugins_id = $plug->getField('id');
|
||||
|
||||
//insert new rows
|
||||
$sql_tasks = [];
|
||||
$i = 0;
|
||||
|
||||
$qparam = new QueryParam();
|
||||
$query = $DB::buildInsert(
|
||||
$this->getTable(), [
|
||||
'plugin_fusioninventory_deploytasks_id' => $qparam,
|
||||
'name' => $qparam,
|
||||
'date_creation' => $qparam,
|
||||
'entities_id' => $qparam,
|
||||
'plugins_id' => $qparam,
|
||||
'method' => $qparam,
|
||||
'definition' => $qparam,
|
||||
'action' => $qparam,
|
||||
'retry_nb' => $qparam,
|
||||
'retry_time' => $qparam,
|
||||
'periodicity_type' => $qparam,
|
||||
'periodicity_count' => $qparam
|
||||
]
|
||||
);
|
||||
$stmt = $DB->prepare($query);
|
||||
|
||||
foreach ($tasks as $task) {
|
||||
$task = get_object_vars($task);
|
||||
|
||||
//encode action and definition
|
||||
//$action = exportArrayToDB(array(array(
|
||||
// $task['action_type'] => $task['action_selection'])));
|
||||
$action = exportArrayToDB($task['action']);
|
||||
$definition = exportArrayToDB([[
|
||||
'PluginFusioninventoryDeployPackage' => $task['package_id']]]);
|
||||
|
||||
$stmt->bind_param(
|
||||
'ssssssssssss',
|
||||
$tasks_id,
|
||||
"job_".$tasks_id."_".$i,
|
||||
'NOW()',
|
||||
'0',
|
||||
$plugins_id,
|
||||
$task['method'],
|
||||
$definition,
|
||||
$action,
|
||||
$task['retry_nb'],
|
||||
$task['retry_time'],
|
||||
'minutes',
|
||||
'0'
|
||||
);
|
||||
$stmt->execute();
|
||||
}
|
||||
mysqli_stmt_close($stmt);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the different type of task job actions
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
static function getActionTypes() {
|
||||
|
||||
return [
|
||||
[
|
||||
'name' => __('Computers'),
|
||||
'value' => 'Computer',
|
||||
],
|
||||
[
|
||||
'name' => __('Group'),
|
||||
'value' => 'Group',
|
||||
],
|
||||
[
|
||||
'name' => __('Groups of computers', 'fusioninventory'),
|
||||
'value' => 'PluginFusioninventoryDeployGroup',
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get actions
|
||||
*
|
||||
* @global object $DB
|
||||
* @param array $params
|
||||
* @return string in JSON format
|
||||
*/
|
||||
static function getActions($params) {
|
||||
global $DB;
|
||||
|
||||
$res = '';
|
||||
if (!isset($params['get'])) {
|
||||
exit;
|
||||
}
|
||||
switch ($params['get']) {
|
||||
|
||||
case "type";
|
||||
$res = json_encode([
|
||||
'action_types' =>self::getActionTypes()
|
||||
]);
|
||||
break;
|
||||
case "selection";
|
||||
|
||||
switch ($params['type']) {
|
||||
|
||||
case 'Computer':
|
||||
$query = "SELECT id, name FROM glpi_computers";
|
||||
if (isset($params['query'])) {
|
||||
$like = $DB->escape($params['query']);
|
||||
$query .= " WHERE name LIKE '%$like'";
|
||||
}
|
||||
$query .= " ORDER BY name ASC";
|
||||
$query_res = $DB->query($query);
|
||||
$i = 0;
|
||||
while ($row = $DB->fetchArray($query_res)) {
|
||||
$res['action_selections'][$i]['id'] = $row['id'];
|
||||
$res['action_selections'][$i]['name'] = $row['name'];
|
||||
$i++;
|
||||
}
|
||||
|
||||
$res = json_encode($res);
|
||||
break;
|
||||
|
||||
case 'Group':
|
||||
$like = [];
|
||||
if (isset($params['query'])) {
|
||||
$like += ['name' => ['LIKE', '%'.$DB->escape($params['query'])]];
|
||||
}
|
||||
$group = new Group;
|
||||
$group_datas = $group->find($like);
|
||||
$i=0;
|
||||
foreach ($group_datas as $group_data) {
|
||||
$res['action_selections'][$i]['id'] = $group_data['id'];
|
||||
$res['action_selections'][$i]['name'] = $group_data['name'];
|
||||
$i++;
|
||||
}
|
||||
$res = json_encode($res);
|
||||
break;
|
||||
|
||||
case 'PluginFusioninventoryDeployGroup':
|
||||
$res = PluginFusioninventoryDeployGroup::getAllDatas('action_selections');
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case "oneSelection":
|
||||
break;
|
||||
|
||||
default:
|
||||
$res = '';
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user