pluginsGLPI / formcreator

GLPI Plugin Formcreator (DOWNLOAD : https://github.com/pluginsGLPI/formcreator/releases)
http://www.teclib-edition.com
GNU General Public License v3.0
174 stars 125 forks source link

The "Put in trash bin" button is not working #2918

Closed wc55 closed 2 years ago

wc55 commented 2 years ago

Describe the bug The "Put in trash bin" button is not working. When the self-service profile user clicks this button, no action is taken on the ticket and nothing different appears in the log either.

To Reproduce Steps to reproduce the behavior:

  1. Access a ticket with a self-service profile user;
  2. Click on "Put in trash bin" button;
  3. The screen refreshes, but the ticket does not change

Expected behavior The ticket should have the status changed or cancelled.

Screenshots image

GLPI / Plugins (please complete the following information):

Instruções de instalação e configuração
GLPI 10.0.2 (/glpi => C:\xampp\htdocs\glpi)
Installation mode: TARBALL
Current language:pt_BR

Server
 
Operating system: Windows NT UNOUNIV-VFNBAD8 10.0 build 19044 (Windows 10) AMD64
PHP 8.1.6 apache2handler (Core, PDO, Phar, Reflection, SPL, SimpleXML, Zend OPcache, apache2handler, bcmath, bz2, calendar,
    ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, intl, json, ldap, libxml, mbstring, mysqli,
    mysqlnd, openssl, pcre, pdo_mysql, pdo_sqlite, readline, session, standard, tokenizer, xml, xmlreader, xmlwriter, zip, zlib)
Setup: max_execution_time="120" memory_limit="1024M" post_max_size="40M" safe_mode="" session.save_handler="files"
    upload_max_filesize="40M" 
Software: Apache/2.4.53 (Win64) OpenSSL/1.1.1n PHP/8.1.6 (Apache/2.4.53 (Win64) OpenSSL/1.1.1n PHP/8.1.6 Server at localhost
    Port 80
)
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Server Software: mariadb.org binary distribution
    Server Version: 10.4.24-MariaDB
    Server SQL Mode: NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
    Parameters: root@localhost/glpidb
    Host info: localhost via TCP/IP

PHP version (8.1.6) is supported.
Sessions configuration is OK.
Allocated memory is sufficient.
mysqli extension is installed.
Following extensions are installed: dom, fileinfo, json, simplexml.
curl extension is installed.
gd extension is installed.
intl extension is installed.
libxml extension is installed.
zlib extension is installed.
The constant SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES is present.
Database engine version (10.4.24) is supported.
The log file has been created successfully.
Write access to C:\xampp\htdocs\glpi/files/_cache has been validated.
Write access to C:\xampp\htdocs\glpi/config has been validated.
Write access to C:\xampp\htdocs\glpi/files/_cron has been validated.
Write access to C:\xampp\htdocs\glpi/files has been validated.
Write access to C:\xampp\htdocs\glpi/files/_dumps has been validated.
Write access to C:\xampp\htdocs\glpi/files/_graphs has been validated.
Write access to C:\xampp\htdocs\glpi/files/_lock has been validated.
Write access to C:\xampp\htdocs\glpi/files/_pictures has been validated.
Write access to C:\xampp\htdocs\glpi/files/_plugins has been validated.
Write access to C:\xampp\htdocs\glpi/files/_rss has been validated.
Write access to C:\xampp\htdocs\glpi/files/_sessions has been validated.
Write access to C:\xampp\htdocs\glpi/files/_tmp has been validated.
Write access to C:\xampp\htdocs\glpi/files/_uploads has been validated.
Web access to files directory is protected
exif extension is installed.
ldap extension is installed.
openssl extension is installed.
zip extension is installed.
bz2 extension is installed.
Zend OPcache extension is installed.
Following extensions are installed: ctype, iconv, mbstring.
Following extensions are not present: sodium.
Write access to C:\xampp\htdocs\glpi/marketplace has been validated.
Timezones seems not loaded, see https://glpi-install.readthedocs.io/en/latest/timezones.html.

GLPI constants
 
GLPI_ROOT: C:\xampp\htdocs\glpi
GLPI_CONFIG_DIR: C:\xampp\htdocs\glpi/config
GLPI_VAR_DIR: C:\xampp\htdocs\glpi/files
GLPI_MARKETPLACE_DIR: C:\xampp\htdocs\glpi/marketplace
GLPI_USE_CSRF_CHECK: 1
GLPI_CSRF_EXPIRES: 7200
GLPI_CSRF_MAX_TOKENS: 100
GLPI_USE_IDOR_CHECK: 1
GLPI_IDOR_EXPIRES: 7200
GLPI_ALLOW_IFRAME_IN_RICH_TEXT: 
GLPI_TELEMETRY_URI: https://telemetry.glpi-project.org
GLPI_INSTALL_MODE: TARBALL
GLPI_NETWORK_MAIL: glpi@teclib.com
GLPI_NETWORK_SERVICES: https://services.glpi-network.com
GLPI_MARKETPLACE_ALLOW_OVERRIDE: 1
GLPI_MARKETPLACE_MANUAL_DOWNLOADS: 1
GLPI_USER_AGENT_EXTRA_COMMENTS: 
GLPI_DISABLE_ONLY_FULL_GROUP_BY_SQL_MODE: 1
GLPI_AJAX_DASHBOARD: 1
GLPI_CALDAV_IMPORT_STATE: 0
GLPI_DEMO_MODE: 0
GLPI_CENTRAL_WARNINGS: 1
GLPI_DOC_DIR: C:\xampp\htdocs\glpi/files
GLPI_CACHE_DIR: C:\xampp\htdocs\glpi/files/_cache
GLPI_CRON_DIR: C:\xampp\htdocs\glpi/files/_cron
GLPI_DUMP_DIR: C:\xampp\htdocs\glpi/files/_dumps
GLPI_GRAPH_DIR: C:\xampp\htdocs\glpi/files/_graphs
GLPI_LOCAL_I18N_DIR: C:\xampp\htdocs\glpi/files/_locales
GLPI_LOCK_DIR: C:\xampp\htdocs\glpi/files/_lock
GLPI_LOG_DIR: C:\xampp\htdocs\glpi/files/_log
GLPI_PICTURE_DIR: C:\xampp\htdocs\glpi/files/_pictures
GLPI_PLUGIN_DOC_DIR: C:\xampp\htdocs\glpi/files/_plugins
GLPI_RSS_DIR: C:\xampp\htdocs\glpi/files/_rss
GLPI_SESSION_DIR: C:\xampp\htdocs\glpi/files/_sessions
GLPI_TMP_DIR: C:\xampp\htdocs\glpi/files/_tmp
GLPI_UPLOAD_DIR: C:\xampp\htdocs\glpi/files/_uploads
GLPI_INVENTORY_DIR: C:\xampp\htdocs\glpi/files/_inventories
GLPI_NETWORK_REGISTRATION_API_URL: https://services.glpi-network.com/api/registration/
GLPI_MARKETPLACE_PLUGINS_API_URI: https://services.glpi-network.com/api/glpi-plugins/
GLPI_I18N_DIR: C:\xampp\htdocs\glpi/locales
GLPI_VERSION: 10.0.2
GLPI_SCHEMA_VERSION: 10.0.2@a130db99c7d9b131c2e2ea59fe0d6260fe93d831
GLPI_MARKETPLACE_PRERELEASES: 
GLPI_MIN_PHP: 7.4.0
GLPI_MAX_PHP: 8.2.0
GLPI_YEAR: 2022

Libraries
 
htmlawed/htmlawed version 1.2.6 in (C:\xampp\htdocs\glpi\vendor\htmlawed\htmlawed)
phpmailer/phpmailer version 6.6.0 in (C:\xampp\htdocs\glpi\vendor\phpmailer\phpmailer\src)
simplepie/simplepie version 1.5.8 in (C:\xampp\htdocs\glpi\vendor\simplepie\simplepie\library)
tecnickcom/tcpdf version 6.4.4 in (C:\xampp\htdocs\glpi\vendor\tecnickcom\tcpdf)
michelf/php-markdown in (C:\xampp\htdocs\glpi\vendor\michelf\php-markdown\Michelf)
true/punycode in (C:\xampp\htdocs\glpi\vendor\true\punycode\src)
iamcal/lib_autolink in (C:\xampp\htdocs\glpi\vendor\iamcal\lib_autolink)
sabre/dav in (C:\xampp\htdocs\glpi\vendor\sabre\dav\lib\DAV)
sabre/http in (C:\xampp\htdocs\glpi\vendor\sabre\http\lib)
sabre/uri in (C:\xampp\htdocs\glpi\vendor\sabre\uri\lib)
sabre/vobject in (C:\xampp\htdocs\glpi\vendor\sabre\vobject\lib)
laminas/laminas-i18n in (C:\xampp\htdocs\glpi\vendor\laminas\laminas-i18n\src)
laminas/laminas-servicemanager in (C:\xampp\htdocs\glpi\vendor\laminas\laminas-servicemanager\src)
monolog/monolog in (C:\xampp\htdocs\glpi\vendor\monolog\monolog\src\Monolog)
sebastian/diff in (C:\xampp\htdocs\glpi\vendor\sebastian\diff\src)
donatj/phpuseragentparser in (C:\xampp\htdocs\glpi\vendor\donatj\phpuseragentparser\src\UserAgent)
elvanto/litemoji in (C:\xampp\htdocs\glpi\vendor\elvanto\litemoji\src)
symfony/console in (C:\xampp\htdocs\glpi\vendor\symfony\console)
scssphp/scssphp in (C:\xampp\htdocs\glpi\vendor\scssphp\scssphp\src)
laminas/laminas-mail in (C:\xampp\htdocs\glpi\vendor\laminas\laminas-mail\src\Protocol)
laminas/laminas-mime in (C:\xampp\htdocs\glpi\vendor\laminas\laminas-mime\src)
rlanvin/php-rrule in (C:\xampp\htdocs\glpi\vendor\rlanvin\php-rrule\src)
blueimp/jquery-file-upload in (C:\xampp\htdocs\glpi\vendor\blueimp\jquery-file-upload\server\php)
ramsey/uuid in (C:\xampp\htdocs\glpi\vendor\ramsey\uuid\src)
psr/log in (C:\xampp\htdocs\glpi\vendor\psr\log\Psr\Log)
psr/simple-cache in (C:\xampp\htdocs\glpi\vendor\psr\simple-cache\src)
psr/cache in (C:\xampp\htdocs\glpi\vendor\psr\cache\src)
league/csv in (C:\xampp\htdocs\glpi\vendor\league\csv\src)
mexitek/phpcolors in (C:\xampp\htdocs\glpi\vendor\mexitek\phpcolors\src\Mexitek\PHPColors)
guzzlehttp/guzzle in (C:\xampp\htdocs\glpi\vendor\guzzlehttp\guzzle\src)
guzzlehttp/psr7 in (C:\xampp\htdocs\glpi\vendor\guzzlehttp\psr7\src)
glpi-project/inventory_format in (C:\xampp\htdocs\glpi\vendor\glpi-project\inventory_format\lib\php)
wapmorgan/unified-archive in (C:\xampp\htdocs\glpi\vendor\wapmorgan\unified-archive\src)
paragonie/sodium_compat in (C:\xampp\htdocs\glpi\vendor\paragonie\sodium_compat\src)
symfony/cache in (C:\xampp\htdocs\glpi\vendor\symfony\cache)
html2text/html2text in (C:\xampp\htdocs\glpi\vendor\html2text\html2text\src)
symfony/css-selector in (C:\xampp\htdocs\glpi\vendor\symfony\css-selector)
symfony/dom-crawler in (C:\xampp\htdocs\glpi\vendor\symfony\dom-crawler)
twig/twig in (C:\xampp\htdocs\glpi\vendor\twig\twig\src)
twig/string-extra in (C:\xampp\htdocs\glpi\vendor\twig\string-extra)
symfony/polyfill-ctype not found
symfony/polyfill-iconv not found
symfony/polyfill-mbstring not found
symfony/polyfill-php80 not found
symfony/polyfill-php81 not found

LDAP directories
 
Server: '10.200.3.1', Port: '389', BaseDN: 'ou=people,dc=ufpr,dc=br', Connection filter: none, RootDN: none, Use TLS: none

SQL replicas
 
Not active

Notifications
 
Way of sending emails: PHP

Plugins list
 
    fields               Name: Additional fields              Version: 1.17.0     State: Enabled                                 
        Install Method: Manual
    behaviors            Name: Comportamentos                 Version: 2.7.2      State: Enabled                                 
        Install Method: Manual
    datainjection        Name: Data injection                 Version: 2.11.2     State: Installed / not activated               
        Install Method: Manual
    escalade             Name: Escalation                     Version: 2.8.0      State: Enabled                                 
        Install Method: Manual
    formcreator          Name: Form Creator                   Version: 2.13.0-rc.2 State: Enabled                                 
        Install Method: Manual
    genericobject        Name: Gerenciamento de objetos       Version: 2.12.1     State: Enabled                                 
        Install Method: Manual
    itilcategorygroups   Name: Grupos ItilCategory            Version: 2.5.0      State: Enabled                                 
        Install Method: Manual
    tag                  Name: Tag Management                 Version: 2.9.2      State: Installed / not activated               
        Install Method: Manual

Desktop (please complete the following information):

Additional context

The "cancel" button on that same screen is also not working.

I also opened an issue about the problem with the cancel button.

The issue is in the link below:

https://github.com/pluginsGLPI/formcreator/issues/2911

btry commented 2 years ago

Hi

A fix has already be created. Try it and feedback : https://github.com/pluginsGLPI/formcreator/pull/2914

wc55 commented 2 years ago

Hi

After applying the corrections, I used the "Cancel" button and the trash can icon button

The ticket goes to the trash but remains on the self-service user's assistance home page

Should this happen?

Self-service profile:

image

Super Admin profile:

image

btry commented 2 years ago

Hi

When a ticket is sent to the trash bin, the issue should be deleted from the database. I need to reproduce to see what happens.

btry commented 2 years ago

I found the problem. Try the above patch and feedback.

wc55 commented 2 years ago

Hi

Resolved the issue of cancellation and not showing to the user, but I tested the restoration, and the requester did not have access.

I canceled a ticket, and it showed up in the trash. Accessing the ticket in the trash, it appears that the message "Item Not Found".

Ticket in the trash:

image

After accessing (self-service profile):

image

Super-Admin Profile:

image

Restore by super admin. Super admin screen:

image

After restoring, the ticket does not appear for the requester.

image

Super admin screen:

image

Historical:

image

btry commented 2 years ago

Hi

I canceled a ticket, and it showed up in the trash. Accessing the ticket in the trash, it appears that the message "Item Not Found".

When you are using teh service catalog you should not have access to the tickets list. I found that 3 redirections were missing in the plugin, which were present in versions 2.12.x. I added several comits to fix this and other inconsistencies when running your workflow.

Revert the patch you applied, download it again and apply it. You will very likely get an error when patching a file in the test/ folder. You can ignore patching this file.

wc55 commented 2 years ago

Hi

I will take the test this afternoon.

wc55 commented 2 years ago

Hi

I did some tests.

On tickets opened after applying the fix, when the self-service user cancels the ticket, it is no longer displayed to the user, but appears in the recycle bin for the super-admin.

If the super-admin restores the ticket, it reappears for the requester.

This was fixed, and I even did some tests in which the super-admin does the cancellation and the ticket does not appear for the requester, and doing the restoration, it appears again.

I'm just mentioning, because doing the same actions on tickets that were already open before the update, when the super-admin does the restore, the ticket actually appears again for the requesting user, but if the super-admin makes a new cancellation and a restore, the ticket does not reappear for the requester.

In summary, in old tickets, when the first deletion and the first restoration are done, there are no problems, after the second restoration, the ticket does not appear for the requester again.

On new tickets (after applying version 2.13.0), cancellation and deletion can be done multiple times and the ticket is always displayed again to the user after the restore.

Thanks

btry commented 2 years ago

Hi

I'm just mentioning, because doing the same actions on tickets that were already open before the update, when the super-admin does the restore, the ticket actually appears again for the requesting user, but if the super-admin makes a new cancellation and a restore, the ticket does not reappear for the requester.

Was the ticket in the trash bin before you apply the update ?

EDIT : also, do you still ave such old ticket that you did not yet restored, deleted the restored again ? Sone data from the DB may be useful to understand where the problem comes from.

wc55 commented 2 years ago

Was the ticket in the trash bin before you apply the update ?

Yes, the ticket was already in the trash before applying an update.

I'll test with tickets that were open before applying an update, but that weren't in the trash.

EDIT : also, do you still ave such old ticket that you did not yet restored, deleted the restored again ? Sone data from the DB may be useful to understand where the problem comes from.

I have some tickets that are still in the trash since before I applied the update, I can try to see how it is in the DB.

Which tables should I look at?

btry commented 2 years ago

Hi

For a given ticket

When a ticket is in the trash bin the associated issue is deleted. When the ticket is restored, the issue is recreated. When both events occur, the status of the matching form answer (it it exists) is updated depending on all tickets associated to it.

Knowing all these functional rules you may detect of there is an inconsistency in the database. Actually the patch fixes the plugin to match the above behaviour. There were several problems, mostly related to the update on the table glpi_plugin_formcreator_issues.

wc55 commented 2 years ago

Hi

Forgot to answer, but I couldn't find any inconsistencies.

I will do more tests

Thanks

btry commented 2 years ago

Hi

If you don't find any inconsistency in the DB then I guess we can close this issue and merge the fix.

wc55 commented 2 years ago

hi

I did not identify inconsistency, I believe it can be finalized

btry commented 2 years ago

Hi

Thank you for your feedback. The fix has been merged.