|
29 | 29 | * ---------------------------------------------------------------------
|
30 | 30 | */
|
31 | 31 |
|
| 32 | +use Glpi\Application\View\TemplateRenderer; |
32 | 33 | use Glpi\Toolbox\Sanitizer;
|
33 | 34 | use GlpiPlugin\Formcreator\Field\DropdownField;
|
34 | 35 |
|
@@ -207,7 +208,6 @@ public function rawSearchOptions() {
|
207 | 208 | 'table' => 'glpi_plugin_formcreator_forms',
|
208 | 209 | 'field' => 'name',
|
209 | 210 | 'name' => PluginFormcreatorForm::getTypeName(1),
|
210 |
| - 'searchtype' => 'contains', |
211 | 211 | 'datatype' => 'string',
|
212 | 212 | 'massiveaction' => false
|
213 | 213 | ];
|
@@ -423,32 +423,85 @@ public function getTabNameForItem(CommonGLPI $item, $withtemplate = 0) {
|
423 | 423 | }
|
424 | 424 |
|
425 | 425 | static function showForForm(PluginFormcreatorForm $form, $params = []) {
|
426 |
| - // set a session var to tweak search results |
427 |
| - $_SESSION['formcreator']['form_search_answers'] = $form->getID(); |
428 |
| - |
429 |
| - // prepare params for search |
430 |
| - $item = PluginFormcreatorCommon::getFormAnswer(); |
431 |
| - $searchOptions = $item->rawSearchOptions(); |
432 |
| - $filteredOptions = []; |
433 |
| - foreach ($searchOptions as $value) { |
434 |
| - if (is_numeric($value['id']) && $value['id'] <= 7) { |
435 |
| - $filteredOptions[$value['id']] = $value; |
| 426 | + global $DB; |
| 427 | + |
| 428 | + $table = self::getTable(); |
| 429 | + $form_table = PluginFormcreatorForm::getTable(); |
| 430 | + $form_fk = PluginFormcreatorForm::getForeignKeyField(); |
| 431 | + $user_table = User::getTable(); |
| 432 | + if (version_compare(GLPI_VERSION, '10.0.5') >= 0) { |
| 433 | + $userQueryExpression = User::getFriendlyNameFields('requester_name'); |
| 434 | + } else { |
| 435 | + // Drop this alternative when the plugin requires GLPI 10.0.5+ |
| 436 | + $alias = 'requester_name'; |
| 437 | + $config = Config::getConfigurationValues('core'); |
| 438 | + if ($config['names_format'] == User::FIRSTNAME_BEFORE) { |
| 439 | + $first = "firstname"; |
| 440 | + $second = "realname"; |
| 441 | + } else { |
| 442 | + $first = "realname"; |
| 443 | + $second = "firstname"; |
436 | 444 | }
|
| 445 | + |
| 446 | + $first = DBmysql::quoteName("$user_table.$first"); |
| 447 | + $second = DBmysql::quoteName("$user_table.$second"); |
| 448 | + $alias = DBmysql::quoteName($alias); |
| 449 | + $name = DBmysql::quoteName($user_table . '.' . self::getNameField()); |
| 450 | + |
| 451 | + $userQueryExpression = new QueryExpression("IF( |
| 452 | + $first <> '' && $second <> '', |
| 453 | + CONCAT($first, ' ', $second), |
| 454 | + $name |
| 455 | + ) AS $alias"); |
437 | 456 | }
|
438 |
| - $searchOptions = $filteredOptions; |
439 |
| - $sopt_keys = array_keys($searchOptions); |
440 | 457 |
|
441 |
| - $forcedisplay = array_combine($sopt_keys, $sopt_keys); |
| 458 | + $result = $DB->request([ |
| 459 | + 'SELECT' => [ |
| 460 | + $table => [ |
| 461 | + 'id', |
| 462 | + 'name', |
| 463 | + 'requester_id', |
| 464 | + 'users_id_validator', |
| 465 | + 'request_date' |
| 466 | + ], |
| 467 | + $form_table => [ |
| 468 | + 'name as form_name' |
| 469 | + ], |
| 470 | + $userQueryExpression |
| 471 | + ], |
| 472 | + 'FROM' => self::getTable(), |
| 473 | + 'INNER JOIN' => [ |
| 474 | + $form_table => [ |
| 475 | + 'FKEY' => [ |
| 476 | + $form_table => 'id', |
| 477 | + $table => $form_fk, |
| 478 | + ], |
| 479 | + ], |
| 480 | + ], |
| 481 | + 'LEFT JOIN' => [ |
| 482 | + $user_table => [ |
| 483 | + 'FKEY' => [ |
| 484 | + $user_table => 'id', |
| 485 | + $table => 'requester_id', |
| 486 | + ], |
| 487 | + ], |
| 488 | + ], |
| 489 | + 'WHERE' => [ |
| 490 | + $table . '.' . $form_fk => $form->getID(), |
| 491 | + ], |
| 492 | + 'LIMIT' => 20, |
| 493 | + 'ORDER' => [ |
| 494 | + 'request_date DESC', |
| 495 | + ], |
| 496 | + ]); |
442 | 497 |
|
443 |
| - // do search |
444 |
| - $params = Search::manageParams(__CLASS__, $params, false); |
445 |
| - $data = Search::prepareDatasForSearch(__CLASS__, $params, $forcedisplay); |
446 |
| - Search::constructSQL($data); |
447 |
| - Search::constructData($data); |
448 |
| - Search::displayData($data); |
| 498 | + $total_count = count($result); |
449 | 499 |
|
450 |
| - // remove previous session var (restore default view) |
451 |
| - unset($_SESSION['formcreator']['form_search_answers']); |
| 500 | + TemplateRenderer::getInstance()->display('@formcreator/pages/form.formanswer.html.twig', [ |
| 501 | + 'form' => $form, |
| 502 | + 'form_answers' => $result, |
| 503 | + 'total_count' => $total_count, |
| 504 | + ]); |
452 | 505 | }
|
453 | 506 |
|
454 | 507 | /**
|
|
0 commit comments