.. ================================================== .. ================================================== .. ================================================== .. Header hierarchy .. == .. -- .. ^^ .. "" .. ;; .. ,, .. .. --------------------------------------------used to the update the records specified ------ .. Best Practice T3 reST: https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/WritingReST/CheatSheet.html .. Reference: https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/WritingReST/Index.html .. Italic *italic* .. Bold **bold** .. Code ``text`` .. External Links: `Bootstrap `_ .. Internal Link: :ref:`downloadButton` (default url text) or :ref:`download Button` (explicit url text) .. Add Images: .. image:: ../Images/a4.jpg .. .. .. Admonitions .. .. note:: .. important:: .. tip:: .. warning:: .. Color: (blue) (orange) (green) (red) .. .. Definition: .. some text becomes strong (only one line) .. description has to indented .. -*- coding: utf-8 -*- with BOM. .. include:: Includes.txt .. _debug: Debug ===== .. _QFQ_LOG: QFQ Log ------- Setup in :ref:`configuration` * *qfqLog* * Filename where to log QFQ debug and error messages. * File is relative to the `` or absolute (starting with '/'). * Content: error situations of QFQ and debug, if enabled. All non SQL related information will be logged to QFQ log file. .. _SQL_LOG: SQL Log ------- Setup in :ref:`configuration` * *sqlLog* * Filename where to log SQL queries and statistical data. * File is relative to the `` or absolute (starting with '/'). * Content: SQL queries and timestamp, formName/formId, fe_user, success, affected rows, newly created record id's and accessed from IP. * The global setting can be overwritten by defining `sqlLog` inside of a QFQ tt-content record. .. _SQL_LOG_MODE: * *sqlLogMode: all|modify|error|none* * *all*: logs every SQL statement. * *modify*: logs only statements who might potentially change data. * *error*: logs only queries which generate SQL errors. * *none*: no query logging at all. * The global setting can be overwritten by defining `sqlLogMode` inside of a QFQ tt-content record. * *showDebugInfo = [yes|no|auto],[download]* If active, displays additional information in the Frontend (FE). This is typically helpful during development. * *yes*: * Form: * For every internal link/button, show tooltips with decoded SIP on mouseover. * Shows an 'Edit form'-button (wrench symbol) on a form. The link points to the T3 page with the :ref:`form-editor`. * Report: Will be configured per tt-content record. *debugShowBodyText = 1* * *no*: No debug info. * *auto*: Depending if there is a Typo3 BE session, set internally: * *showDebugInfo = yes* (BE session exist) * *showDebugInfo = no* (no BE session) * *download*: * During a download (especially by using wkhtml), temporary files are not deleted automatically. Also the ``wkhtmltopdf``, ``pdfunite``, ``pdf2img`` command lines will be logged to :ref:`QFQ_LOG`. Use this only to debug problems on download. .. _MAIL_LOG: MAIL Log -------- Setup in :ref:`configuration` * *mailLog* * File which `sendEmail` logs sending mail. * File is relative to the `` or absolute (starting with '/'). .. _`mail-log-page`: Mail Log page (Table MailLog) ----------------------------- For debugging purposes you may like to add a Mail Log page in the frontend. The following QFQ code could be used for that purpose (put it in a QFQ PageContent element) .. warning:: Use this code only on access restricted pages. GET/POST Parameter might be used to get access to unintended content. Note: If you do not use/have the Ggroup table, then remove the "# Filters" block.:: # Page parameters 1.sql = SELECT @grId := '{{grId:C0:digit}}' AS _grId 2.sql = SELECT @summary := IF('{{summary:CE:alnumx}}' = 'true', 'true', 'false') AS _s # Filters 10 { sql = SELECT "'", gr.id, IF(gr.id = @grId, "' selected>", "'>"), gr.value, ' (Id: ', gr.id, ')' FROM Ggroup AS gr INNER JOIN MailLog AS ml ON ml.grId = gr.id GROUP BY gr.id head =
Filter By Group: } 20 { sql = SELECT IF(@summary = 'true', ' checked', '') head =
} # Mail Log 50 { sql = SELECT id, '', grId, '', xId, '' , REPLACE(receiver, ',', '
'), '', REPLACE(sender, ',', '
'), '' , DATE_FORMAT(modified, '%d.%m.%Y
%H:%i:%s'), '' , CONCAT('', subject, '
', IF(@summary = 'true', CONCAT(SUBSTR(body, 1 , LEAST(IF(INSTR(body, '\n') = 0, 50, INSTR(body, '\n')), IF(INSTR(body, '
') = 0, 50 , INSTR(body, '
')))-1), ' ...'), CONCAT('
', REPLACE(body, '\n', '
'))) ) FROM MailLog WHERE (grId = @grId OR @grId = 0) ORDER BY modified DESC LIMIT 100 head = tail =
IdgrIdxIdToFromDateE-Mail
rbeg = rend = } .. _REDIRECT_ALL_MAIL_TO: Redirect all mail to (catch all) -------------------------------- Setup in :ref:`configuration` * *redirectAllMailTo=john@doe.com* * During the development, it might be helpful to configure a 'catch all' email address, which QFQ uses as the final receiver instead of the original intended one. * The setting will: * Replace the 'To' with the configured one. * Clear 'CC' and 'Bcc' * Write a note and the original configured receiver at the top of the email body. Show log files realtime ----------------------- .. warning:: Use this code only on access restricted pages. GET/POST Parameter might be used to get access to unintended content. Display QFQ log files in realtime. Put the following code in a QFQ page content element.:: # # {{logfile:SU}} # # Show buttons to select log file. 10 { sql = SELECT '{{logfile:SU:::sql.log}}' AS '_=logfile' head =

tail =

20.sql = SELECT CONCAT('p:{{pageAlias:T}}&logfile=sql.log|t:sql.log|b:', IF('{{logfile:R}}'='sql.log','primary','')) AS _page, ' ' , CONCAT('p:{{pageAlias:T}}&logfile=qfq.log|t:qfq.log|b:', IF('{{logfile:R}}'='qfq.log','primary','')) AS _page, ' ' , CONCAT('p:{{pageAlias:T}}&logfile=mail.log|t:mail.log|b:', IF('{{logfile:R}}'='mail.log','primary','')) AS _page } # Show selected log file. 100 { sql = SELECT 'file:{{qfqProjectPath:Y}}/log/{{logfile:R}}' AS _monitor head =
Please wait
} **NOTE**: The `log` directory has been moved into `qfqProject` with a recent upgrade of QFQ. For backwards compatibility logs are still stored in `fileadmin/protected/log/` if that directory already exists. .. _`form-submit-log-page`: Form Submit Log page -------------------- .. warning:: Use this code only on access restricted pages. GET/POST Parameter might be used to get access to unintended content. Check the Form Submit Log page to see what have been submitted. Put the following code in a QFQ page content element.:: # # Show all form submit. Optional filter by Form or FeUser. # # {{formId:SC0}} # {{feUser:SCE:alnumx}} # Filters 10 { sql = SELECT '' shead =
stail =
# Dropdown: Form 20 { sql = SELECT "'", f.id, IF( f.id = '{{formId:SC0}}', "' selected>", "'>"), f.name, ' (', QIFEMPTY(COUNT(fsl.id),'-'), ')' FROM Form AS f LEFT JOIN FormSubmitLog AS fsl ON fsl.formId=f.id GROUP BY f.id ORDER BY f.name head = rbeg =