Example for the new dashboard filters hooks

This commit is contained in:
Adrien Clairembault 2023-05-17 08:46:52 +02:00 committed by GitHub
parent 99ccf29a7e
commit 4899ba4968
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 105 additions and 0 deletions

View File

@ -34,6 +34,7 @@ use GlpiPlugin\Example\Config;
use GlpiPlugin\Example\Dropdown;
use GlpiPlugin\Example\DeviceCamera;
use GlpiPlugin\Example\Example;
use GlpiPlugin\Example\Filters\ComputerModelFilter;
use GlpiPlugin\Example\ItemForm;
use GlpiPlugin\Example\RuleTestCollection;
use GlpiPlugin\Example\Showtabitem;
@ -232,6 +233,11 @@ function plugin_init_example() {
// add new cards to dashboard grid
$PLUGIN_HOOKS['dashboard_types']['example'] = [Example::class, 'dashboardTypes'];
$PLUGIN_HOOKS['dashboard_cards']['example'] = [Example::class, 'dashboardCards'];
// Dashboard filter
$PLUGIN_HOOKS[Hooks::DASHBOARD_FILTERS]['example'] = [
ComputerModelFilter::class
];
}

View File

@ -0,0 +1,99 @@
<?php
/**
* -------------------------------------------------------------------------
* Example plugin for GLPI
* -------------------------------------------------------------------------
*
* LICENSE
*
* This file is part of Example.
*
* Example is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Example 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Example. If not, see <http://www.gnu.org/licenses/>.
* -------------------------------------------------------------------------
* @copyright Copyright (C) 2006-2022 by Example plugin team.
* @license GPLv2 https://www.gnu.org/licenses/gpl-2.0.html
* @link https://github.com/pluginsGLPI/example
* -------------------------------------------------------------------------
*/
namespace GlpiPlugin\Example\Filters;
use ComputerModel;
use DBmysql;
use Glpi\Dashboard\Filters\AbstractFilter;
class ComputerModelFilter extends AbstractFilter
{
public static function getName(): string
{
return __("Computer model");
}
public static function getId(): string
{
return "plugin_example_computer_model";
}
public static function canBeApplied(string $table): bool
{
global $DB;
return $DB->fieldExists($table, ComputerModel::getForeignKeyField());
}
public static function getHtml($value): string
{
return self::displayList(
self::getName(),
is_string($value) ? $value : "",
self::getId(),
ComputerModel::class
);
}
public static function getCriteria(string $table, $value): array
{
if ((int) $value > 0) {
$field = ComputerModel::getForeignKeyField();
return [
"WHERE" => [
"$table.$field" => (int) $value
]
];
}
return [];
}
public static function getSearchCriteria(string $table, $value): array
{
if ((int) $value > 0) {
return [
[
'link' => 'AND',
'searchtype' => 'equals',
'value' => (int) $value,
'field' => self::getSearchOptionID(
$table,
ComputerModel::getForeignKeyField(),
ComputerModel::getTable()
),
]
];
}
return [];
}
}