Skip to content
Snippets Groups Projects
  1. Sep 27, 2014
    • Jared Hancock's avatar
      orm: Fix MySQL occasional "Commands OOS" error · aeffcb73
      Jared Hancock authored
      Under certain intermittent circumstances (usually a significant number of
      ORM queries), the ORM will trigger a MySQL error:
      
      Commands out of sync; you can't run this command now
      
      Usually this MySQL error is related to buffered versus unbuffered queries.
      However, the ORM already uses buffered queries (MySQL calls it
      "store_result"). In this case, it appears there is some sort of race between
      fetching the result metadata before configuring the statement for buffering.
      (By "race" I mean that the error is not reliably triggered).
      
      This patch seems to fix the issue by configuring buffering before fetching
      result metadata — necessary to configure the fetching (output) phase of the
      statement.
      aeffcb73
  2. Jun 19, 2014
    • Jared Hancock's avatar
      oops: Fix crash on installation · ba0b54e3
      Jared Hancock authored
      User::fromVars in class ticket was the root. Eventually, in
      DynamicForm::getDynamicFields(), isset($this->id) was used to detect
      unsaved, new forms that have not been committed to the database; however,
      the isset() method was not implemented for the ORM.
      v1.8.4
      ba0b54e3
  3. Jun 18, 2014
    • Jared Hancock's avatar
      orm: Fix issues surrounding MySQL commands OoS · 8dc4f379
      Jared Hancock authored
      Several places in the code initialize a list of objects from the database
      and only fetch one item. In certain instances (which seem almost like a race
      condition), MySQL will feel like there are more records available in the
      database and will complain with "Commands out of sync, you can't run the
      command now".
      
      This patch addresses the issue by utilizing the ::one() method of the
      QuerySet where only one record is expected. The ::one() method is further
      designed to fetch all one results (which satisfies the MySQL client library)
      and return the first item.
      8dc4f379
  4. May 28, 2014
  5. May 22, 2014
  6. May 03, 2014
  7. Apr 22, 2014
  8. Apr 14, 2014
  9. Apr 02, 2014
  10. Apr 01, 2014
  11. Mar 25, 2014
  12. Mar 20, 2014
  13. Feb 25, 2014
  14. Jan 20, 2014
  15. Dec 31, 2013
    • Jared Hancock's avatar
      perf: Use a materialized view to speed queue views · 1bc05945
      Jared Hancock authored
      This patch introduces an automatic materialized view to speed database
      performance when querying and displaying the ticket views. This can
      eventually be extended to the search and advanced search features to speed
      them as well.
      
      The data from the dynamic form entries related to ticket details is copied
      to a %ticket__cdata table. The %ticket__cdata table is then joined directly
      to the other tables in the query for the ticket view. MySQL is magically
      and dramatically faster using this method.
      
      The downside is that the disk usage for the custom data is doubled, and the
      time needed to update the dynamic data is at least doubled as the form
      entries and the materialized view must both be updated.
      
      This method should also extend well to other database platforms in the
      future. It will be likely that most other database query optimizers will
      have difficulty joining, scanning, and sorting the table models we have for
      custom data fields.
      1bc05945
  16. Dec 17, 2013
  17. Nov 26, 2013
  18. Nov 25, 2013
  19. Nov 24, 2013
  20. Oct 25, 2013
  21. Oct 14, 2013
  22. Oct 10, 2013
  23. Oct 09, 2013
    • Jared Hancock's avatar
      Completion of dynamic forms concept · 43b74f4a
      Jared Hancock authored
      Moved to an initial form which specifies the ticket's priority and issue and
      changed the rendering to render things properly. Now the user can decide
      where priority shows on the client side, and the priority privacy setting is
      placed in the dynamic form wizard.
      
      The standard form is added to every ticket without option. Extra forms can
      be defined and associated with help topics which can additionally be added
      to tickets upon creation. This allows for standardization of the dynamic
      data location for searches and filtering.
      
      Implemented advanced search for dynamic data. Along with reinstating the
      basic ticket search on keywords
      
      Implemented ticket filtering on dynamic data for both keyword searches as
      well as searches for special fields (drop-down lists, etc.)
      
      Phone number for users is now completely optional
      43b74f4a
    • Jared Hancock's avatar
      Move client information to separate formset · 53666db6
      Jared Hancock authored
      This moves client information like name and email address out of the general
      dynamic forms data for a ticket. It really paves the way for the first-class
      user of the future.
      53666db6
    • Jared Hancock's avatar
      Better implementation of joins in ORM · 1ce20852
      Jared Hancock authored
      Use an internal hash table of join information to prevent multiple joins
      over the same path. Also use table aliases in order to support self joins or
      otherwise multiple joins to the same table using different paths.
      1ce20852
    • Jared Hancock's avatar
      Dynamic data for osTicket · 9e75169e
      Jared Hancock authored
      *This is a major redesign / rework of the osTicket base*
      
      This patch drops the concept of static ticket metadata and allows for an
      admin-configurable arbitrary data that is attachable to tickets
      
      The system is architected such that the base osTicket install now comes with
      a "default" form that has fields for subject, name, email, and phone number.
      This form is editable to allow for the addition of arbitrary other fields;
      however, the basic fields must remain in order to be associated with a
      help-topic and attached to a ticket.
      
      This concept can be expanded to allow for arbitrary data associated with
      registered clients or ticket thread items.
      
      Forms are comprised of sections. Sections have a title and instructions
      properties and a list of fields. Fields have various implementations to
      represent different data such as text, long answer, phone number, datetime,
      yes/no, and selections, and are configurable to define the look and feel and
      interpretation of the respective form field.
      
      Dropdown lists are represented as "Dynamic Lists", which are
      admin-configurable lists of items. Dropdowns can be optionally represented
      as Bootstrap typeahead fields.
      
      This also adds the start of a simple ORM which will hopefully be expanded in
      the future to support multiple database platforms. Currently, only MySQL is
      implemented.
      9e75169e
Loading