Closed voytec69 closed 2 years ago
tak wygląda w bazie dokument którego nie mogę wyświetlić
SELECT * from documentattachments WHERE docid = 317160 ORDER BY docid ASC, type DESC;
id | docid | filename | contenttype | md5sum | type | cdate
-------+--------+--------------------------+-----------------+----------------------------------+------+-------
29220 | 317160 | ssssss_DANUTA - u.pdf | application/pdf | 94197cc3186fb7b8b2f7ffd644ca7b8f | 0 | 0
Zapytania z procesu wyświetlania teg dokumentu wyglądają tak.
SELECT 1 FROM documents WHERE id = '317160';
?column?
----------
1
(1 row)
SELECT d.id FROM documents d
JOIN docrights r ON (r.doctype = d.type)
WHERE d.id IN (317160)
AND d.type < 0
AND r.userid = '2'
AND (r.rights & 1) > 0;
id
--------
317160
(1 row)
SELECT filename, contenttype, md5sum
FROM documentattachments
WHERE docid IN ('317160') AND type = 1 ORDER BY docid ASC, type DESC;
filename | contenttype | md5sum
----------+-------------+--------
(0 rows)
Commit 6527b4f8f550e00d647be8c35ddfa315862e91e1
Zmieniłem linie u siebie
na
. ($attachments || !empty($attachmentid) ? '' : '')
I działa, ale to słabe rozwiązanie problemu :) i zapewne wygeneruje inne...
O ile dobrze rozumiem logikę documentadd.php to plik generowany w systemie ma https://github.com/chilek/lms/blob/fa49e3e1432ea2b733938d7efe6952418860e826/modules/documentadd.php#L235 a ten uploadowany ma https://github.com/chilek/lms/blob/fa49e3e1432ea2b733938d7efe6952418860e826/modules/documentadd.php#L252
jak to się ma do tego warunku type = 1 w documentview.php ?
attachmenttype = 1 (pole type w tabeli documentattachments) - to załącznik główny dokumentu i jest zwykle generowany na podstawie szablonu HTML.
Jest
Jeśli do ?m=documentview przekazano attachmentid, tzn. że chcemy obejrzeć konkretny plik z załącznikem dokumentu i wtedy potrzebny jest warunek AND id = ' . $attachmentid
, a jednocześnie nie powinniśmy testować, czy załącznik jest głównym (niepotrzebny więc warunek AND type = 1
).
Jeśli $attachments jest niepuste, tzn. że chcemy obejrzeć wszystkie załączniki w postaci sklejonego HTML lub PDF i dlatego też nie powinniśmy tworzyć warunku AND type = 1
).
Typ własny dokumentu nie ma nic wspólnego z typem załącznika. Typ dokumentu to pole type w tabeli documents, a typ załącznika dokumentu to pole type w tabeli documentattachments.
Z ciekawości - co pokazuje Ci polecenie:
pdfinfo 'ssssss_DANUTA - u.pdf'
?
Jaki wynik zwraca zapytanie:
SELECT filename, contenttype, md5sum
FROM documentattachments
WHERE docid = 317160;
?
Wynik już wrzucałem wyżej: https://github.com/chilek/lms/issues/2330#issuecomment-1306994706
i tu proces z logow postgresa. Jak widac dla tego dokumentu testowal warunek and type = 1 w konsekwencji nie zwraca tego co trzeba. https://github.com/chilek/lms/issues/2330#issuecomment-1307411928
Ta logika którą wprowadziłeś, za pewne nie ogarnia (bo skąd), sposobu dodawania pdfów (zaszłość) przez bok. Odbywa się to poprzez Dokument->Nowy dokument.
attachmenttype = 1 (pole type w tabeli documentattachments) - to załącznik główny dokumentu i jest zwykle generowany na podstawie szablonu HTML.
No czyli tu pewnie jest pies pogrzebany, bo dokument nie powstał na bazie żadnego szablonu.
Typ dokumentu skan jest własny, dodany w definitions.php
Nie napisałem precyzyjnie też, bo to dotyczy wszystkich dokumentów dodanych w ten sposób, ten jeden to przykład tylko. (do momentu wprowadzenia tego warunku, otwierały się wszystkie bez problemu).
Żeby była jasność, to te pdfy to fizyczne skany nie wiem, ulotki, oświadczenia, mapki ale też samej umowy wydrukowanej i podpisanej przez klienta.
odwzorowałem to na demo.lms.org.pl https://demo.lms.org.pl/?m=documentlist&c=10 dokument aaa_test
@chilek potrzebne ci dodatkowe info?
Proszę o testy po poprawce, którą przesłałem.
To samo. PHP Warning: Invalid argument supplied for foreach() in /modules/documentview.php on line 76
Problem jest raczej w zapytaniu które powinno coś zwrócić.
Poprawka, jednak jest ok, mialem jedno niezamknięte okno LMSa, które wprowadziło mnie w błąd.
Dzięki, zamykam.
Jednak jak klika się w wiersz to się nie otwiera dokument. testowane na demo.lms.org.pl
Może warto użyć w tym miejscu: https://github.com/interduo/lms/blob/master/js/lms-ui-fileview.js ?
Fajnie to działa dla plików PDF.
Naprawione.
Po aktualizacji mam problem z podglądem dokumentów w pdf. Są one zdefiniowane typem własnym w definitions.php (pewna zaszłość). define('DOC_SKAN', -200); DOC_SKAN => trans('skan'),
W logach widzę, PHP Warning: Invalid argument supplied for foreach() in modules/documentview.php on line 76 PHP Warning: Invalid argument supplied for foreach() in modules/documentview.php on line 110
Wersja LMS: 28-git Wersja LMSDB: 2022110400 Wersja PostgreSQL: 13.8 Wersja PHP: 7.4.30
LMSGponZtePlugin Wersja oprogramowania: - Wersja bazy danych: 2022081100
LMSSmsCenterPlugin Wersja oprogramowania: - Wersja bazy danych: -
LMSWarehousePlugin Wersja oprogramowania: 2.6.14 Wersja bazy danych: 2022052000 Wersja LMS: 28-git Wersja LMSDB: 2022110400 Wersja PostgreSQL: 13.8 Wersja PHP: 7.4.30
LMSGponZtePlugin Wersja oprogramowania: - Wersja bazy danych: 2022081100
LMSSmsCenterPlugin Wersja oprogramowania: - Wersja bazy danych: -
LMSWarehousePlugin Wersja oprogramowania: 2.6.14 Wersja bazy danych: 2022052000