Adds a dynamic list of entries to each record. Log work hours, attendance records, list your collection, places you've been...adds a whole new dimension to your Participants Database record.
Product Setup
- Setting Up the Log
- Configuring Log Entry Fields
- The Admin Record Log Display
- Adding Entries
- Exporting/Importing Entries
- The Frontend Log Entry Display
- Showing an Interactive Log
- Showing a Global List of Log Entries
Global Log Configuration
In the Participants Database admin menu will be an item named “Participant Log.” On that page you will find the global settings for all logs under the “General Settings” tab. This is where you set things like the template (which controls the layout) and other general settings for all the logs. These settings can be individually overridden in the log field definition if needed.
Setting up the Log
The first thing to do to set up a log is to add a new “Participant Log” field to the Participants Database on the Manage Database Fields page. This new field is the “container” for the log, and in most ways is simply another field in the database. The General Settings tab of the plugin settings menu provides a way to add a new log. When this field is created, a new table is added to your WordPress database which will hold the data for the log.
It is important that the name of your log should be the name of what is stored in it. If, for example, the log is meant to record a person’s time spent volunteering, you might call it “Volunteer Hours.” If it is storing a record of class attendance, you could call it “Class Attendance” or “Attendance Record.” You can change the title that is displayed once it is set up, but the name of the log field can’t be changed, so it’s worth taking a minute to think about what you call it before committing the name. Once you set up the log field, you can configure what is recorded in each entry of the log you created.
Configuring the Log
On the Participant Log admin page, you will see a tab for the log you created. Under that tab you can configure the log: you can set the name for an entry or entries which will help the user interface make more sense. There are more settings that determine what the frontend user can do and also how the log will be displayed in various contexts. This will be explained in more detail later.
Configuring Log Entry Fields
Each log can have as many fields as needed to hold whatever information you need to store in each entry. The user interface for that is the same used for managing the fields in the main database. You can add fields, and then configure each field as needed. They work the same as fields in the main database. Each entry field you create for the log adds a column to the log’s database table.
Field Visibility
Entry fields have a “Visibility” setting that determines the context in which the entry field will be shown. “Public” means the field will be shown in all contexts. “Private” means the field will only be shown to the owner of the record and administrators. “Admin” means the field will be visible to administrators only.
Searchable Fields
When list searching is enabled, only fields that are both visible and marked as searchable will be used to get search results. This is helpful to making searches more efficient and avoids spurious results.
Searchable log entry fields are also available in regular Participants Database list displays so that records with log entries that match the search can be found.
Sortable Fields
Fields that have this setting enabled will be shown in the header of log entry list displays so the log can be sorted by the value of that field.
Field Validation
Entry fields can be made required in the entry field’s configuration. The entry fields use “client side validation” which means the user’s browser will perform the validation and provide the feedback. This is going to look slightly different on every platform, there is little you can do about that, but it has the upside of working on all platforms and devices. To make a field required, you set the validation setting to “required.” You can add to the field validation configuration by using validation attributes.
The Admin Record Log Display
The log display on the record edit page in the admin shows a list of all the entries. The list is paginated, and the number of entries shown on each page of entries is determined in the general settings for the log, in the “Entries Per Page” setting.
The display for the log on the frontend is similar, but what controls are shown depends on the configuration.
Entry List Filtering or Searching
There is a search input at the top, any text typed into the search input will be used to filter the list of entries. On the admin side, all the visible entry fields are included in the search. On the frontend, only fields marked as “searchable” will be included in the search.
Entry List Sorting
The entries can be sorted by clicking on the blue arrow icons seen in the top bar. The fields that can be used for sorting are configured in the log entry fields configurations: check the “Sortable” checkbox to configure the field to appear in the sorting bar.
Adding Entries
Once you have the entry fields set up, you can begin adding entries to the log. Entries can be added in the admin by going to the admin edit record page for the record you want to add log entries to. Find your log field on the edit record page and in the display for the log field, you will see a button with a plus sign for adding a new entry. Clicking that will bring up a form for entering the data for your log entry. Each entry may also be edited by clicking the pencil icon next to the entry. Clicking the pencil will open a form where the contents of the entry can be changed. Entries can be deleted individually by clicking the red on the entry line. When the “X” is clicked, you will be asked to confirm deleting the entry. There is no undo, deleted entries are gone forever unless you restore it from a backup.
Exporting/Importing Entries
In the admin record edit display (Edit Participant), the entry data for the record’s log can be exported as a CSV file. This works pretty much the same as exporting records from Participants Database: if you have used a filter, the export will only include the entries shown after the filter is applied. Records can also be imported with a CSV file. It’s also possible to import and export data for all records on the Participant Log admin page under the tab for the log.
The Frontend Log Entry Display
In single record and editable record displays on the frontend, the log is displayed as a list of entries. It is very similar to the display in the admin, only the ways that the user can interact with the list are controlled by settings. This is so you can choose whether the log can be added to by users, entries edited, deleted, etc. When the record is displayed using the [pdb_single]
shortcode, a list of entries is shown using the template style chosen in the Participant Log settings under the general tab. The entry list in this display can be sorted and filtered. Only log entry fields that have “public” visibility will be shown in this display.
Display Templates
For the frontend displays of the log entry list, 3 basic templates can be chosen. Which one you choose is going to be determined by what you need to show, and what is going to work best for your users.
The Table template will put the log entries into a fixed-width grid so all the values will line up below a header row. This can be the clearest way to show the log entries, but you can only control the width of the table by controlling how many log entry fields you’re showing. Also, it isn’t great on small screens because the width is not determined by the device’s screen width, and so horizontal scrolling is usually required to see all the information.
The Responsive template takes the approach that every log entry field is a separate element with its own width determined by the title and data display. These elements can flow into whatever configuration will fit on the screen. With this template, all the data will be visible on any device, but it can be cluttered.
The Grid template is kindof a bend between the two. It is responsive in that the width of the log display is determined by the width of the device display, but instead of each entry field having its own width, the widths of the entry fields are controlled into columns. This can result in a more organized and easier to see display of the log entry data.
For any kind of responsive display, some adjustments of the CSS that controls the layout are often needed. These additional CSS rules can be placed in the Participants Database Custom CSS setting.
The Summary Display
Each log entry list display may optionally show a “summary” which is configurable to show an important value, such as the number of entries. By choosing a different sum type, the summary can also display other values. If the sum type is a numeric field, the summary will be a sum of the entry values for that field, such as for a work log that shows the number of hours worked. If the field is not a numeric field, the summary will show the number of records that contain a value for that field or if the field has a default value, the sum will show all the fields that have a value different from the default value.
When searches are performed on the list or when a date range is selected, the sum value is immediately updated to show the correct value. This also happens when entries are added, deleted or edited.
This sum value is also saved in the main database so that in Participants Database list displays, the list can be sorted by the summary value: for example you could rank volunteers according to the number of hours logged, or place the collector’s club member with the largest collection at the top.
Showing an Interactive Log Entry List
When the editable record is displayed using the [pdb_record]
shortcode, the log entry display is sortable and filterable, but it is also possible to enable adding new entries, editing and deleting entries, and also import and/or export entries using a CSV file. The settings that control access to these features are in the Participant Log settings, under the General Settings tab. The user interactions in this display are very similar to what is possible in the admin. Log entry fields that have a visibility setting of “public” or “private” will be seen in this display.
Frontend Imports and Exports
The interactive log list display can also be configured to allow the user to import and/or export data to a record’s log. This is enabled under the global settings for the [pdb_record]
log display.
Global Log Displays
It’s possible to display a list of log entries that are taken from all the log entries in all records. There is a special shortcode [pdb_log_list]
that will show all the entries in the same way that the Participants Database list shortcode shows a list of Participants Database records. You can use shortcode filters, custom templates, search, sort, etc. to customize the display.
An example of the use of this shortcode would be a car club, where each member keeps a list of the cars in their collection. The global log display could be used to show all the cars in the club.
If you’ve got more than one Participant Log defined, you can tell the shortcode which one to use with the log_name attribute. Just give that attribute the name of your log, and it will show entries from that log. For example:
[pdb_log_list log_name=cars]
Log List shortcodes can be filtered just like the Participants Database List shortcode, you can filter by fields in the main database and by fields in the log. Check out the linked article for details.
Product Settings
General Settings
These settings will affect all logs, but it is possible to override them for a specific log in the participant log field definition attributes setting.
Enable Log Search: when checked, a search input will be shown above the display of log entries. This search input will search on visible fields only.
Enable Log Sorting: when checked, fields that are configured as “sortable” will show as sorting links in the header of the log entry list.
Enable Date Created Sorting: the “Date Created” field is an automatically set timestamp for every entry. This switch allows the user to sort the entries by this timestamp field.
Entries Per Page: sets the default number of entries to show in the list. If there are more entries in the log than this number, a pagination control will be shown.
Record Shortcode Settings
These are settings that pertain to showing the log list when using the [pdb_record]
shortcode. The log list in this context is editable.
Record Shortcode Log Template: select the display template to use when showing the log entry list.
Enable Creating New Entries: when checked, allow the user to add entries.
Enable Editing Entries: allows the user to edit entries.
Enable Deleting Entries: allows the user to delete entries.
Allow Log Export: allows the user to export a CSV with the log entry data.
Allow Log Import: allows the user to import log entries in a CSV file.
“Slide In” Entry Controls: when checked, the log edit controls will be hidden until the user hovers over an entry. This is good for compact displays.
Highlight Color: lets you select the color to use when highlighting an entry while it is added or edited.
Single Shortcode Settings
These setting are used when showing the list of log entries when using the [pdb_single]
shortcode.
Single Shortcode Log Template: selects the display template to use when showing the log entry list.
Individual Log Settings
For each log you have defined, there is a tab and under that tab are settings that are specific to that log.
Log Fields
In this section, the fields that are used for each entry of a log are defined. The interface is very similar to the one used on the Manage Database Fields page. There are a few differences, for example, there are no field groups (instead there is a “visibility” selector). And, like the Manage Database Fields interface, which options you can set depend on the type of field you have created. You can edit, delete and add log entry fields in this interface.
It is highly recommended that you define all the fields you need to use before adding entries to the log.
Log Options
For each log, a set of options is available:
Log Entry Name: name for a single entry.
Log Entry Name Plural: name for several entries.
No Entries Message: message to show when a log has no entries.
Search Field Placeholder: when the search input is shown, this placeholder string will serve as a prompt for the user.
Entry Image Height: the nominal image height for images uploaded to a log entry. The aspect ratio will be preserved in most cases.
Entry Dates
These settings are for configuring how entries are dated.
Primary Date Field: this allows you to select a log entry field to use as the date for the entry. It defaults to the timestamp that is set when the entry is created. You would use this in the case of something like a list of events where the date of the event is more important than the date the entry was created. This date field will be used to sort the entries chronologically.
Show Log Entry Timestamp: every entry has a timestamp, this preference lets you make that timestamp visible.
Timestamp Title: if you are showing the timestamp, this is how it will be labeled.
Date Range Filter
It is possible to filter entries by date range, these settings configure the date range interface.
Enable the Date Range Filter: check this to turn on the date range control for the log.
Date Range Filter Heading Text: title for the date range control. Leave blank for no title.
Date Range Filter Button Text: text for the button that performs the date range filtering.
Entry Sum Display
The “entry sum” is a feature of the log where a configurable sum is shown. The default is to show the number of entries, but if there is a numeric field in the log entries, the entry sum can show a sum of those values. For example, in a work log, it can show the number of hours worked.
Show Entry Sum in Record Displays: this is to enable a summary display just above the list of entries.
Sum Type: this is where you would configure what is summed.
Sum Display Template: this gives you a way to control how the sum is displayed. There are a number of “value tags” you can use to show dynamic values from the log in the summary display.
F.A.Q.
Is it possible to override the global setting in individual logs?
Yes, this happens in the log field definition on the Manage Database Fields page in the main plugin. You add your override to the “attributes” for example to override the global setting and allow adding entries on the frontend:
allow_frontend_add::true
Here is a list of the global settings with the proper name to use in the attribute:
Setting | attribute name |
---|---|
Enable Log Search | enable_log_search |
Enable Log Sorting | enable_log_sorting |
Entries Per Page | entry_list_limit |
Record Shortcode Log Template | record_module_log_template |
Enable Creating New Entries | allow_frontend_add |
Enable Editing Entries | allow_frontend_edit |
Enable Deleting Entries | allow_frontend_delete |
Allow Log Export | allow_export |
Allow Log Import | allow_import |
“Slide In” Entry Controls | hide_entry_controls |
Highlight Color | highlight_color |
Single Shortcode Log Template | single_module_log_template |
How can I show a customized sum of values for the log list?
Each log has a “summary display” that can be used to show a simple sum from the log data. If you want to show a sum that is specific to your application, such as a sum that is conditional, or a sum that involves multiple entry fields, you need some custom code for that.
In technical terms, the code you need is a filter handler that takes the normal value that would be displayed and changes it ro a custom calculated value. This is best added as a custom plugin or you can put it into your theme functions.php file.
The filter hook is pdblog-{$logname}_sum where {$logname} is the slug name of the log field. You’ll see that on the manage database fields page where the log field is defined.
The filter gets two arguments: the configured sum value (in other words, what the sum would show if you didn’t change it) and the second argument is an array of the record’s log values. You can calculate your sum from the values in that array, and then the filter handler should return your new sum, which will be displayed with the log as configured in the log’s settings for the summary display.
There is a simple example here: https://gist.github.com/xnau/fb961393fc675cf802a509a2a1c888d1
Is it possible to provide a link to the editable record in the Global Log List?
The Global Log List shortcode will show a filtered list of entries from all records for a particular log. Each line in the list is an individual entry from a record’s log. It is possible to place a link to the editable record in this list so that the log entry can be edited. This requires the use of a custom template.
Be sure to control access to this list display, you will be giving edit access to your records when you use it.
To use this custom template, you must first create a “placeholder” field in the main Participants Database plugin. You can also re-use an existing placeholder field if you want. Below is a link to the custom template. You must modify it to use the placeholder field you set up.
Is it possible to delete log entries that are no longer connected to a PDB record?
As of version 1.5.9, when a Participants Database record is deleted, the entries belonging to that record are deleted also.
If records were deleted prior to that version, or if records were deleted not using the “with selected” delete method on the List Participants admin page, you can end up with entries that no longer have a parent record.
There is a utility function you can use to clear these out. To do that go to the Participant Log admin page. Add &pdblog-delete-orphan-entries=log_name to the URL and hit return. This will clear out all the entries that are not connected to a PDB record. For example, if your log is named “automobiles” you can clear out the orphan entries from that log with a URL like this:
When creating a field for a new log, I get this error message: “Failed to create table for this log. You need to use a different name for your log.”
The message you’re seeing means that the table needed to create the log could not be created for some reason. The part about trying a different name is just the most likely reason for the failure.
What I suggest you do is start over: on the Manage Database Fields page, delete the log field. It will be a field of type “Participant Log” Once the log field has been deleted, go to the Participant Database settings under the Advanced tab and turn plugin debugging on to “all errors”. Once that’s enabled, open the Debugging Log page and clear the log.
Now, recreate the log: go back to the Participant Log settings page and create a new log. Try using a very simple name for the log at first…you can always change the display name of the log later, but when you’re first creating it it’s a good idea to use something simple. Once you’ve created the new log field, go back to the Participant Log settings and under the tab for the new log, create your first field for the log. If you get the error message again, check the debugging log.
If you can’t create the log field because of the error, post a question to tech support on this page.
Be sure to turn plugin debugging off again once you get things set up and working.
Hello, good morning and thank you for developing such useful addon. I’m using the Participant Log v.1.9.5 with the latest Participant DB version (2.5.9.5) on a SiteGround hosting. I’ve successfully setup the Participant Log and it’s working fine. However, I noticed that when I enable the Site Ground caching plugin (dynamic caching, file-based cache and memcached) if I try to add an entry on the Participant Log the screen get stuck with the wheel spinning. Do you have any best-practice to allow Participant Log to work with caching? Thanks
Hi Stefano,
Caching, especially any form of caching that alters how javascript is loaded can cause problems, but it is usually possible to solve them with the proper configuration of the caching. Sometimes the only way to get it to work is to exempt from caching the page that has the Participant Log functionality on it, but you can sometimes selectively deactivate caching functionality on these pages and get it working that way.
I can’t go into much detail, that will depend on what kind of options you have for configuring the cache. You can probably get some help with this from SiteGround. Don’t let them tell you there is something wrong with the plugin, I can’t help you get your caching working other than the things I’ve already suggested.
If you don’t get SiteGround to help with this (and they really should, considering what you’re paying for) I can only suggest you trial-and-error different configurations of the cache to find one that works.
I am using the global log list shortcode with a custom template (from above), but need to change the destination of the edit link. I have done this with several list templates but the code is slightly different with the log list and the modification doesn’t work.
$private_id = $record->values[‘private_id’];
if ($this->field->name == ‘edit_link’) {
$this->field->link = ‘/debtor-entries/?pid=’ . $private_id;
}
It doesn’t add the private id to the url.
I can’t change the edit record page in the settings as I am already using that for another purpose.
Any ideas what I am doing wrong?
Thanks
I have looked in the debugging log and found this:
“Trying to access array offset on value of type null”
On the line that says $private_id = $record->values[‘private_id’];
Without seeing the template, I can’t say what the correct code should be, but it’s clear “$record->values” isn’t the correct way to access the record’s values in that template. Are you using a template that I supplied?
Yes, it’s the pdb-log_list-edit-link.php linked above.
OK, in the template, there is a function xnau_get_entry_record_edit_link near the top. The template uses (before you altered it) this function to build the link, so this is where you should make your changes.
Hi,
The cell borders have disappeared from all my logs. Is this a pdb issue, or a WordPress issue? (Same for different browsers)
Thanks
This is usually caused by a change to your site’s CSS, either with a new theme or plugin or an update. Or maybe you changed a display setting and it affected the plugin log display. Probably, what you need to do is add a CSS rule to override whatever changed it. If you target the rule to the log display specifically, it won’t affect other things.
For example (this may or may not work in your case, it’s just an example of a targeted CSS rule):
.pdblog-template-table td {
border: solid black 1px;
}
I am trying to display record_id using pdb_log_list, but it is not working.
[pdb_log_list log_name=certification_proof_cards fields="record_id, first_name, last_name" sort="true" search="true" list_limit=10 class="CertReport" template="cert"]
Is there any way to display the record_id?
Thanks
The “record_id” column from the log can’t be displayed, but you can display the “id” column, which is the record id column from the main database, so it is the same value.
Hi Roland, I am trying to do three things, as follows:
1. One of the fields is a “Link Field” and I want to use the [pdb_log_list] shortcode for this. The filed name in the field list is liveaboard_diving_discounts_go_to_deal, and the shortcode I am using is therefore [pdb_log_list liveaboard_diving_discounts_go_to_deal=MY Alia], where “MY Alia” is the link text for the link field, but the filter doesn’t work and the table lists all entries. Will this work, and if so how do I change the shortcode please?
2. I would like to use a datew filter so that the list only shows information with a date greater or equal to today, so it only lists the items with a future date – the date field is named liveaboard_diving_discounts_deal_date
3. Is it possible to create a setting so the default table that shows the participant log details for each proxy post is also filtered to show entries with dates in the future. The entries each have a discount date, so it would be great to filter the table so that as these deals expire, they are no longer shown on the table.
Thank you, Russell
1. Any time you are having trouble getting a list filter to work, it is helpful to look at the actual database data to see how it has to work. In the case of a link field, the data for that field is stored as a serialized array, so your filter has to use the “~” operator to match the string within the data.
2. You can filter using a date key as explained here: Filtering Dates
3. see above. yes, it is possible as long as you are filtering against a data field.
Thank you Rowland – for the default table which is added within the “Database Fields” section, where do I put the filter so it only lists those entries with a date in the future – do I do this under the participants log section, and perhaps under the “Attributes” field for the date I am trying to filter?
If that is the case, please will you explain the filter I use, thank you.
If not, please let me know how I filter this, thank you
This “filter” I’m talking about is a list shortcode filter.
Hi Roland,, I’m not sure you’re understanding my question. I want to be able to filter the default table produced from the participants log, which from your first reply you said I could. Please check my original question, thank you
OK, when you say “table” I assume you’re talking about the log list display, which is filterable, that’s why I said you could do that. You said “where do I put the filter so it only lists those entries with a date in the future”, using a filter attribute on the [pdb_log_list] shortcode is how you do that.
Hi – still not sure if we are talking about the same thing, where do I put the filter, as per my previous question, is that on the date field itself under “attributes”?
You cannot place a filter in a field attribute. Field attributes are mostly HTML element attributes (occasionally, they are field-type-specific configuration settings), so things that you want to show up in the HTML element. For date fields, you can use the attribute to format the display, but it has nothing to do with filtering data.
Maybe if you explain what you want to see, it will be clear how you can achieve that.
Hi, I want it to only show those records with a future date. I am using it to enter discounted trips, and unless I keep going back and deleting the past trips, they all still show. So the field in the participants log is a date
I don’t have enough information to be specific here, but you can filter for a future date, you need to use something like
filter="trip_date>current_date"
in your list shortcode.I think I found the answer to display all log entries! shortcode [pdb_log_list]. Sorry, my Long COVID makes it extremely hard to do what I used to be able to do, like focus. I guess I still need to figure out how to link it back to the main database to pull information out of that? Thanks again,
Robert
The [pdb_log_list] short code can also be configured to include fields from the main database, so for example if you have the “single record link” placed on the “last_name” field, and you are including the last name field in the log list, it will present a link to the individual record that the log entry comes from.
Participant Database Questions
– [ ] A numeric field on a Participant Log Tab Field of Year too small for entry, how do I make it bigger and only 4 characters?
I can probive a screenshot by e-mail, as the blog entry doesn’t allow for graphics.
– [ ] On Participant Log Phone Number Field how to enforce “(999) 999-9999” in a Telephone type field?
– [ ] Is there any way throughout the system to have a telephone number or Social Security Number pre-formatted with dashes and parentheses as part of the data, like a form?
– [ ] I figure out a good utilization for the Participant Log to be used as normal for content added and changed only by the source person for the data. But, I need anyone to be able to view only the entire Participant Log Table for that Tab and sort by any field from that table. Instead the main database being the master record, I would like to be able to have the Participant log be the master record to list and link into the main database to pull information from that record. Since it keeps the record ID in the Participant Log, for the normal link, the reverse link is already established. That is how we can upload CSV into the Participant Tab to create new records if null, or update records if matched Record ID. There should already be PHP code available within the system as it would be the same (close to anyway) as what is already used from the main record to get/search/add/edit/list. Records from the Participant Log for each Participant Log Tab entry display on the main record.
– [ ] I purchased the relational database, so I could establish a reverse relationship from the Participant Log to the Main Database, but still run into the same problem, how do I list/edit/add/etc. like above, but not part of the main record, yet linked to it to show the Club Name from the main record.
– [ ] I have turned off all Plugins except PDB and still have the issue with the yellow screen import when trying to update WP Users, not PDB Users. You thought it might be a conflict with a plugin, but nothing helpful in debug mode. It goes away when you disable the Participate Log, obviously, since it is coming from that module. It looks like it is from one of my tabs called finances, but all fields are fine and the tab fields have been working fine. Can you please point me in the right direction as to which scripts I should be looking at?
Thank you, I finally decided to write the questions down more clearly and concise so that hopefully it may be easier to provide some guidence. Thank you again, I have learned so much about this plugin and the power it has in it. I do wish I had some examples of using the relational module with the various tables and/or created tables in the same database work area. I learn best by taking something apart that works to see how it is working.
Any help would be appreciated. I am almost done with my project and have come a long way in just a few weeks.
Robert

Hi Robert,
The size of the numeric input is under the control of your theme, the plugin doesn’t have settings for this. You will need to use your own CSS rules to give that field that size you want. The plugin has a place for CSS rules in the plugin settings under custom css. In most cases, you can set the “width” of the input to what you want, but since your theme is controlling it, you may need to specifically override the rule the theme is applying.
Enforcing input formats should be done carefully, my advice is to only enforce what you need to get good data, not for a visual formatting preference. You can use a regex pattern to enforce an input using the “regex” validation setting on the field, there are lots of ways to do this, for a simple example:
/[0-9]{3}-[0-9]{3}-[0-9]{4}/
Your questions about using the Multi-Relational Database add-on…well, I don’t really understand what you’re trying to accomplish. Relational records are just regular records that can have specific relationships to other records, it can’t establish relationships between the log entries that belong to those records.
The yellow overlay issue is due to problems with javascript and it must be resolved in order for the plugin to work. I can’t give you a solution to this because I don’t know the source of the problem. Issues with another plugin is only one of several possibilities there, another common reason for this issue is code that is designed to accelerate or minimize code or other assets on your site. In some cases, your theme is doing this. Features like that should be disabled while developing a website. I’m sorry, but without actually loading the page myself, I can’t be more specific about the problem.
You mention “tabs” in the context of this issue, whatever is generating those tabs could be the issue. I don’t know the exact context of the issue (is this frontend or backend, which shortcode is it…etc.) so I can’t be more specific.
I am referencing the DB with this code:
//Get the the participant’s record
$record_id = Participants_Db::get_record_id_by_term( ‘private_id’, $pid );
Now reference the items in the Array
$all-the-records = Participants_Db::get_participant($record_id );
How can I reference the Participant Log table in the same manner?
Thanks for help.
We don’t have comparable simple access methods set up for Participant Logs, when we need to access a record’s logs, we instantiate a class and use the class’s methods to interact with the data. For example:
$record_log = new \pdblog\log\log_db( $log_name, $record_id );
$record_log->get_entries(); // this will provide all the log entry data for the record
If you know the name of the log and the entry id, you can use
\pdblog\log\entry_db::values( $log_name, $entry_id )
I am having an issue with log entries apparently disappearing. They are added and then some time (maybe days, or weeks) later they are no longer in the log. The people adding the entries swear they are being added (even though sometimes they do hang when saving, and we do lose a few that way) and they have accessed them since they were entered, and have since disappeared. I backup all the logs every week by downloading the csv, and I cannot find them in the backup either. So either they were missing from the export and have since disappeared from the log, or the entries didn’t get saved in the first place. I know we had an issue with file uploads disappearing (I think that might have been a media library issue), but could there be something going on where log entries are vanishing, or is this just human error? We do definitely have times where the entries take a long time to save (probably due to the number of entries now, which is getting very large).
I am inclined to believe that they just aren’t saving and people aren’t noticing, but they are adamant they have accessed them after saving.
Thanks
Hi Laura, I understand that this is concerning, I’ll have to take a closer look at how this might happen. It is difficult to directly solve problems like this, as I’m sure you understand, with so little to go on. I will say that the number of entries should not be a problem to the function of saving new entries…it might slow things down when displaying lists of entries, but that would happen after the new entry is saved.
One thing that can definitely cause problems like this is page caching, since so much of the action is happening on the user’s browser.
There is something I would recommend you do and that is install a backup plugin (I like UpdraftPlus) that will back up your database on a daily basis. These backups don’t take up a lot of space, but it does provide you with a way to find and recover entries that are missing (with some investigative work). You will need to have some specifics from a user that is reporting a missing entry so you know where to look and what to look for. This could also provide a sanity check to confirm that entries really are disappearing.
Meanwhile, I will see what I can do to make the saving process more bulletproof.
I totally understand how hard it is, it’s hard enough to troubleshoot my end before I even get to pass it on to you. I usually just get ‘it doesn’t work’.
I do use Updraft to do monthly backups but I don’t think I can view/search entries without doing a restore? That’s why the csvs are so useful, I can look through them to find the issue. I may just have to take more frequent exports.
Thank you for looking at the saving process, it does definitely hang quite often, and I think that definitely has a big impact.
I’ve been looking into this and so far nothing looks like it’s likely to break in the saving process, but I don’t have anything specific to look for.
If the process hangs, that is a very specific circumstance and if you can test this, that’s helpful. A hangup that never stops in the save process usually means there is an error on the backend. This should show up in the php error logs, so if you can test this problem and check the logs, that should be quite helpful. Hangs that are temporary can happen if the server is unresponsive because it is overloaded. The actual request that happens when saving a log entry is pretty light (unless there are large uploads involved) so it’s unlikely to be just that overloading the server. In severe cases, the request could be lost, although I think the user would realize that there was a problem in saving the entry.
I have set up email notifications via the Email Templates addon to send an email when someone adds an entry to a log, in this case uploading an image or video. The trouble is, we get a notification even if the file doesn’t upload, for example if the video is too big. There is no entry in the log but the email has already been sent. Is there any way to make sure the entry is successfully added before the email is sent?
Thanks
Hi Laura,
Thanks for this, I didn’t realize that an unsuccessful upload would trigger an email. I’ll issue an update that fixes this.
That’s great, thanks
The latest update to the Participant Log (1.9.5) plugin has this change in it: it will only trigger the Entry Added action when the entry is successfully added to the log.