<?xml version="1.0" ?>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel rdf:about="https://www.bugs.ulabequipment.com/">
    <title>Flyspray::</title>
    <link>https://www.bugs.ulabequipment.com/</link>
    <description>Feed for all projects</description>
    <dc:date>2026-03-26T16:42:56Z</dc:date>
    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=80" />
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=79" />
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=78" />
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=77" />
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=76" />
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=75" />
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=74" />
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=73" />
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=72" />
                <rdf:li rdf:resource="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=71" />
              </rdf:Seq>
    </items>
    		
  </channel>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=80">
    <title>FS#80: object_booking month view taking 60+ seconds to render</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=80</link>
    <dc:date>2026-03-26T16:42:56Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

The function day_summary() was calling check_no_overlap() for every hour of every day in the calendar.This resulted in approximately 30 days × up to 24 hours ≈ 700+ calls per page load.Each call to check_no_overlap() executed multiple database queries (booking_object, lab_equipment, labs, proximity checks, overlap checks, etc.), leading to an estimated 5,000–6,000 database queries per page render.



The function check_no_overlap() is intended for booking validation, not for display logic.



Resolution:Replaced calls to check_no_overlap() in the calendar rendering with a lightweight in-memory overlap check - function has_overlap($entriesForDay, $start, $end).



Changes made:Refactored/replaced showMonth() with showMonth_2() to minimise queries (old code still present for checking if needed)Added has_overlap() to check booking clashes using the preloaded $entries arrayUpdated day_summary_2() to use has_overlap() instead of check_no_overlap()Updated calling code to pass daily booking entries into day_summary_2()



Result:Page load time reduced from approximately 75 seconds to 0.2 seconds, redundant database queries eliminated.Month view now uses a single query with in-memory processing.

</description>
    <content:encoded><![CDATA[
<p>
The function day_summary() was calling check_no_overlap() for every hour of every day in the calendar.<br />This resulted in approximately 30 days × up to 24 hours ≈ 700+ calls per page load.<br />Each call to check_no_overlap() executed multiple database queries (booking_object, lab_equipment, labs, proximity checks, overlap checks, etc.), leading to an estimated 5,000–6,000 database queries per page render.
</p>

<p>
The function check_no_overlap() is intended for booking validation, not for display logic.
</p>

<p>
Resolution:<br />Replaced calls to check_no_overlap() in the calendar rendering with a lightweight in-memory overlap check - function has_overlap($entriesForDay, $start, $end).
</p>

<p>
Changes made:<br />Refactored/replaced showMonth() with showMonth_2() to minimise queries (old code still present for checking if needed)<br />Added has_overlap() to check booking clashes using the preloaded $entries array<br />Updated day_summary_2() to use has_overlap() instead of check_no_overlap()<br />Updated calling code to pass daily booking entries into day_summary_2()
</p>

<p>
Result:<br />Page load time reduced from approximately 75 seconds to 0.2 seconds, redundant database queries eliminated.<br />Month view now uses a single query with in-memory processing.
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=79">
    <title>FS#79: multiday bookings crossing months were being overcharged in BIF report</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=79</link>
    <dc:date>2026-03-05T16:14:18Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

multi-day bookings that were &amp;gt; month, or crossed the month boundary were given an hours value for the entire booking instead of the time used in the month (or date range) requested for the BIF report.  Code updated to limit the charge/hours to the max in the month.

</description>
    <content:encoded><![CDATA[
<p>
multi-day bookings that were &gt; month, or crossed the month boundary were given an hours value for the entire booking instead of the time used in the month (or date range) requested for the BIF report.  Code updated to limit the charge/hours to the max in the month.<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=78">
    <title>FS#78: include custom booking fields to email confirmation</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=78</link>
    <dc:date>2026-02-23T14:23:36Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

update email confirmation sent to booking manager to include any custom booking fields

</description>
    <content:encoded><![CDATA[
<p>
update email confirmation sent to booking manager to include any custom booking fields<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=77">
    <title>FS#77: mark equipment as invisible</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=77</link>
    <dc:date>2026-02-11T14:59:01Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

add a flag to allow kit to be hidden from regular users, but still visible to equipment owner/editors - allow kit history/data to remain but regular users no longer see it.



- combo of hide from search/unbookable?- clear any entries in user watchlists

</description>
    <content:encoded><![CDATA[
<p>
add a flag to allow kit to be hidden from regular users, but still visible to equipment owner/editors - allow kit history/data to remain but regular users no longer see it.
</p>

<p>
- combo of hide from search/unbookable?<br />- clear any entries in user watchlists<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=76">
    <title>FS#76: BIF reports wrong contents</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=76</link>
    <dc:date>2026-02-05T12:00:07Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

BIF reports containing wrong data.  The cleanFileName function was cutting the filename off at 35 characters, so longer lab names were being shortened and as Bath have similar, long-named labs, this was resulting in the same filename for multiple facilities and cached files resulting in the wrong data in BIF downloads.



Fix: updated cleanFileName to default to 120 chars - 39 limit was from legacy need to restrice filename length elsewhere.Fix: updated charging.php as it was stripping the / from tempFiles/filename.csv resulting in files being stored outside of the tempFiles directory

</description>
    <content:encoded><![CDATA[
<p>
BIF reports containing wrong data.  The cleanFileName function was cutting the filename off at 35 characters, so longer lab names were being shortened and as Bath have similar, long-named labs, this was resulting in the same filename for multiple facilities and cached files resulting in the wrong data in BIF downloads.
</p>

<p>
Fix: updated cleanFileName to default to 120 chars - 39 limit was from legacy need to restrice filename length elsewhere.<br />Fix: updated charging.php as it was stripping the / from tempFiles/filename.csv resulting in files being stored outside of the tempFiles directory<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=75">
    <title>FS#75: Batch service orders - flag any project code that has expired</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=75</link>
    <dc:date>2026-01-30T11:39:26Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

Batch service orders - flag any project code that has expired



When a user does a batch upload, check each project is still valid, else highlight it so the user can change it.

</description>
    <content:encoded><![CDATA[
<p>
Batch service orders - flag any project code that has expired
</p>

<p>
When a user does a batch upload, check each project is still valid, else highlight it so the user can change it.<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=74">
    <title>FS#74: booking not showing on calendar</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=74</link>
    <dc:date>2025-11-05T13:01:24Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

https://www.ulabequipment.com/equipment.php?ID=6506



had a booking on 26/10/2025 18:00 to 00:00 that wasn&amp;#039;t displaying so user couldn&amp;#039;t delete it.  Booking was immediately after booking from 08:00 to 18:00.  Changing the end time to 23:00 or earlier will make the booking display again.



Fixed for user by manually deleting from the database so they can run BIF report



same happens on DEV:https://www.dev.ulabequipment.com/booking/weekview.php?object=3889 (view 26th Oct 2025)

</description>
    <content:encoded><![CDATA[
<p>
<a href="https://www.ulabequipment.com/equipment.php?ID=6506" class="urlextern" title="https://www.ulabequipment.com/equipment.php?ID=6506"  rel="nofollow">https://www.ulabequipment.com/equipment.php?ID=6506</a>
</p>

<p>
had a booking on 26/10/2025 18:00 to 00:00 that wasn&#039;t displaying so user couldn&#039;t delete it.  Booking was immediately after booking from 08:00 to 18:00.  Changing the end time to 23:00 or earlier will make the booking display again.
</p>

<p>
Fixed for user by manually deleting from the database so they can run BIF report
</p>

<p>
same happens on DEV:<br /><a href="https://www.dev.ulabequipment.com/booking/weekview.php?object=3889" class="urlextern" title="https://www.dev.ulabequipment.com/booking/weekview.php?object=3889"  rel="nofollow">https://www.dev.ulabequipment.com/booking/weekview.php?object=3889</a> (view 26th Oct 2025)<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=73">
    <title>FS#73: BIF report by analysis code</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=73</link>
    <dc:date>2025-10-24T13:30:22Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

add tool that allows users to generate BIF report using analysis code - use substring of internal ID on each equipment item e.g.CRFCTMSS0001 



User may want all CRFCTMSSxxxx equipment bookings→ generate BIF



Can re-use charging.php - add new branch to _GET[&amp;#039;lab&amp;#039;] /  _GET[&amp;#039;object&amp;#039;]  / _GET[&amp;#039;multi&amp;#039;] to check for _GET[&amp;#039;analysis_code&amp;#039;] - rest of code should work without too much modification



need page/tool to get user to select analysis code substring to generate the BIF

</description>
    <content:encoded><![CDATA[
<p>
add tool that allows users to generate BIF report using analysis code - use substring of internal ID on each equipment item e.g.<br />CRFCTMSS0001 
</p>

<p>
User may want all CRFCTMSSxxxx equipment bookings<br />→ generate BIF
</p>

<p>
Can re-use charging.php<br /> - add new branch to _GET[&#039;lab&#039;] /  _GET[&#039;object&#039;]  / _GET[&#039;multi&#039;] to check for _GET[&#039;analysis_code&#039;]<br /> - rest of code should work without too much modification
</p>

<p>
need page/tool to get user to select analysis code substring to generate the BIF<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=72">
    <title>FS#72: Add charity option as cost category</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=72</link>
    <dc:date>2025-10-17T15:20:51Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

extends FEC option previous asked for so now have 3 cost categories (for Bath/ Fin module users)



 $costCategory=array(&amp;quot;0&amp;quot;⇒&amp;quot;Internal&amp;quot;, &amp;quot;1&amp;quot;⇒&amp;quot;FEC&amp;quot;, &amp;quot;2&amp;quot;⇒&amp;quot;Charity&amp;quot;);



updates to - project_codes.php [done dev/live]- make_bookable.php &amp;gt; charging tab [done on dev]- project_codes/charging.php [done on dev]



 needs testing before going to live [testing complete]



moved to live [done]

</description>
    <content:encoded><![CDATA[
<p>
extends FEC option previous asked for so now have 3 cost categories (for Bath/ Fin module users)
</p>

<p>
 $costCategory=array(&quot;0&quot;⇒&quot;Internal&quot;, &quot;1&quot;⇒&quot;FEC&quot;, &quot;2&quot;⇒&quot;Charity&quot;);
</p>

<p>
updates to <br />- project_codes.php [done dev/live]<br />- make_bookable.php &gt; charging tab [done on dev]<br />- project_codes/charging.php [done on dev]
</p>

<p>
 needs testing before going to live [testing complete]
</p>

<p>
moved to live [done]<br />
</p>
]]></content:encoded>
  </item>
    <item rdf:about="https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=71">
    <title>FS#71: booking list for non-finance user</title>
    <link>https://www.bugs.ulabequipment.com/index.php?do=details&amp;task_id=71</link>
    <dc:date>2025-08-15T13:28:17Z</dc:date>
    <dc:creator>Ian Thompson</dc:creator>
     <description>

Bath have non-Finance users who want to have a &amp;#039;list&amp;#039; view of all bookings on an item of equipment, including the project code. Need ability to modify the project code in the list - driven by need to update any/all TMP_UNKNOWN project codes used at time of booking to actual project codes at month end prior to running BIF report.



Would be useful for other users to have a list view of bookings?

</description>
    <content:encoded><![CDATA[
<p>
Bath have non-Finance users who want to have a &#039;list&#039; view of all bookings on an item of equipment, including the project code. Need ability to modify the project code in the list - driven by need to update any/all TMP_UNKNOWN project codes used at time of booking to actual project codes at month end prior to running BIF report.
</p>

<p>
Would be useful for other users to have a list view of bookings?<br />
</p>
]]></content:encoded>
  </item>
  </rdf:RDF>
