CHANGELOG.txt

  1. 5.x CHANGELOG.txt
  2. 4.x CHANGELOG.txt
FlightPath 5.x Changelog
========================

2019-12-17
  Fixed search by role on Users page. It was only recognizing the first selection, and not if you changed the role more than once.
  

2019-10-04
  Fixed display bug in _FlightPath.php, where if a student's catalog year was past the current_catalog_year, it was set to 99999.  This caused
  a message to display onscreen which read "Could not find degreee... in catalog year 99999-100000..."
  

2019-09-13
  Made it so legacy support for 4x style "concentrations" is DISABLED by default.  This is to help clear up confusion.  New
  language on the Add Degree form uses the new level-1, -2, and -3 terminology for consistency.
  
  Fixed a bug where previously-deleted tracks were showing as a blank degree_class to select from on the What If selection
  screen.  Make it simply where if the degree_class is blank, then skip over it.
  

2019-09-09
  Minor tweak to stop a warning from appearing.


2019-08-12
  Minor tweak in theme.inc, to fix menu icon bug which can happen sometimes.
  

2019-08-08
  But when adding new user; user isn't searchable.  Adding default lastname (username) if not entered.
  
  Fixed blocks module's administer_blocks permission.  Had typo preventing it from working.
  
  Updated format_date() function, so that the "short" format has am/pm at the end.
  

2019-08-07
  Fixed bug where when deleting a degree with a track, it wasn't being removed from the draft_degree_tracks table.


2019-07-23
  Adding better support for Graduate degrees & students.
  

2019-07-22
  Adding extra HTML and CSS when displaying degree titles on screen.
  

2019-06-14
  Patched a security bug whereby a user could theoretically try to view a system file, using a PHP Local File Include vulnerability.
  Special thanks to m.althibyani@gmail.com for finding and reporting!


2019-06-06
  Created a new core module: SMTP, as well as a helper function, fp_mail().  Now if you have the SMTP module
  enabled and configured, all mail is automatically routed through your SMTP server, instead of whatever
  the default setting is for PHP's mail() command.
  
  Added PHPMailer to the /inc/ directory (for the SMTP module).
  
  Moved some settings from the System Settings form and into the School settings form.
  
  Created a custom PHP error handler, so that we can display (and log if necessary, email, etc) PHP 
  warnings and errors.

  Added /icons/ folders and silk icons for admin/config menu entires for the core modules.
  
  Adjusted CSS in default themes to make new icons look nicer.


2019-04-30
  Fixed bug in _DegreePlan.php which caused tracks to not load correctly while viewing in draft mode (Thanks
  to Logan Buth from Morningside College).


2019-04-03
  Mitigated some possible XSS weaknesses in index.php (by using more secure headers and cookies), and in 
  render.inc.  When creating forms, the current path was not being santized sufficiently, which has now been
  corrected.


2019-03-20
  Added new system setting, letting you disable logins for all but admin.  Very helpful for
  maintenance tasks.
  

2019-03-19
  Fixed bug in _FlightPath, causing errors.
  
  Changed way I was forcing something to be numeric, to silence a warning in PHP 7.2
  
  Fixed code which causes a bug in MySQL 8+
    

2019-03-15
  Added a new option to System Settings: enable or disable display level-3 selection on what if selection screen.  If disabled,
  this has more of a feel for FlightPath 4, and might help schools which do not allow dynamic degrees, or who have so many level 3
  options that it causes confusion.
  
  Fixed a left-over $this in db.inc, which caused problems in specific situations.
  

2019-03-13
  Fixed another SQL bug in the course_search module.

  Fixed bug where outdated subs were being hidden.  Had to do with the way the _Course.php file was checking for if a course
  was substituted or not.
  
  Fixed several bugs in db.inc's fp_get_degree_title() function, which was causing it not to work at all.
  
  Modified the Administrator's Toolbox message so that outdated subs correctly state what degree they were from
  which is now outdated.
  

2019-03-07
  Removed mysql_* functions from course_search module.
  

2019-02-21
  Initial commit to new flightpath-5.x branch.  (instead of 5.x-dev)
  
  Continuing to test git config.
    

2019-02-20
  Fixed bug in advise.module, which was forcing a blank or empty current_student_id to be 0 (zero), which
  was causing problems in the logic.

  
2019-02-14
  Added new setting to calculate & show GPA for each pie chart on a student's degree plan.

  Fixed a bug in the Major Student Progress report (in the stats module).
  

2019-02-13
  Enforced integer constraint when adding a new student user (for is_disabled and is_active).
  
  Fixed bug in advise.module which was preventing alphabetic CWIDs from working.
  

2019-02-09
  Changed cumulative_hours in students table (as well as a couple other fields) to be
  varchar(20) instead of varchar(5).  This is because at only 5 characters, students
  with 123.45 hours were violating the constraint on the table, and causing routines
  to die.


2018-12-31
  Made small changes to advise.module and blank_degrees.module, so that if a blank degree plan
  is loaded with prereqs, they are not blocked.  Also, to make it easier for custom modules
  to use req_by_degree_id instead of blank_degree_id, if req is set.

  Made a change to _FlightPath.php, when marking substitutions as outdated.  Changed
  a simple "else" to an "else if" to make sure some logic doesn't get executed more
  than necessary.  (Thanks to Logan Buth #2316)
  
  Various QOL issues and fixes.  Thanks to Logan Buth #2488.
  

2018-12-18
  Added new hook: hook_alter_currently_advising_box.  This allows modules to modify or add to the "currently
  advising" box, which appears at the top of the screen when a student is selected for advising.


2018-12-15
  Modified core's display of the Urgent Message screen, to better allow other modules
  to make modifications.


2018-11-26
  Fixed bug where groups split over more than one semester block were not having courses assigned
  to them correctly.  Partially due to them not having req_by_degree_id set.


2018-11-13
  Added extra data to $form_state, when duplicating an entire year's worth of data.
  
  Added fix for issue #2455, thanks to Logan Buth.  This deals with repeatable courses still appearing
  in groups, even though a setting was set saying they should be advised once enrolled. 

  Also fixed issue with maintaining keys in array for _Group::get_course_id_array function.  Issue #2456,
  credit Logan Buth.

  Issue #2470, Logan Buth.  Fixed typo causing degree_id to always be set to zero in _Course::get_quality_points.
  

2018-10-17
  Added new hook: hook_menu_alter(), for editing menu items.


2018-10-09
  Fixed a theming issue which sometimes would occur in Chrome, on the Majors search page (of the student_search module).
  

2018-05-10
  Fixed display bug in user.module, found a mis-matched </div> tag.
  

2018-05-05
  Made the function Course::load_course_from_data_string_for_requirement_clone() set the course's display_status to "ellible"
  to match the behavior of the default constructor.  Re: issue #2317, thanks to Logan Buth.


2018-04-29
  Made "change term" link in the currently advising box nicer, with more CSS selectors available.
  

2018-04-26
  Small change in system.module, to make theme selection easier (radio buttons instead of having to type in location)


2018-04-22
  Fixed issue #2316 (special thanks to Logan Buth) in which outdated subs aren't always detected in cases
  of combined degrees.
  

2018-04-21
  Fixed small bug where sometimes "courses added by advisor" result in a mysql error while advising, due to
  the "degree_id" being blank and not "0".

 
2018-04-16
  Fixed bug in AdvisingScreen introduced by a previous commit, where I left off a line of code after rolling
  back changes.
  
  Restored a line of code I accidentally deleted in a previous commit, in _FlightPath.php.


2018-04-14   
  Rolled back a modification made to AdvisingScreen, as described in ticket 2291, comment #36, and implemented
  new changes from comment #42 (special thanks to Logan Buth).  This was to deal with a subtle bug involving a
  repeated course, where one of the attempts was substituted, the other not.

  Re: ticket #2311, added array of group id's to the form_state, when a year of degree data is being duplicated.
  
  Re: ticket #2312, fixed a bug where sometimes a group popup doesn't show the same branch as what the View screen
  does.  Special thanks to Logan Buth for discovering this issue and proposing the fix.
  
  Re: ticket #2294, fixed a bug where var hour courses were being advised for zero hours.  To fix this, had to add
  a new bit of javascript to advise.js, as well as a new hidden variable per course in _AdvisingScreen's draw_popup_group_course_row()
  

2018-04-11
  Fixed an issue with "clean URLs" when site is hosted on a bare domain.
  
  Updated install.php to have more instructions in the settings.php file for bare domain hosting.
  
  Fixed small issues causing PHP Notice's to show up.
  
  Fixed bug where substitutions were not displaying correctly in Display by Year view.
  

2018-04-07
  Fixed some small display issues in AdvisingScreen, to keep PHP notices from appearing.
  
  Added new hook, hook_theme_advise_degree_header_row, with special thanks to Logan Buth.


2018-03-29
  Made a bug fix to where a pie chart would display 99 if its value was above 100.  Instead, this was changed to 100.
  
  Fixed a bug in get_term_structure() where the abbreviation and long description were switched.

  Modified the CourseList::remove_previously_fulfilled() function, where it uses find_best_match() to find a match
  for a course, instead of the parent's find_match() function.  This allows for hooks to be used, as well as the
  school's sorting/matching policy to be used.  Special thanks to Logan Buth. 
  
  Added new methods & updated existing in CourseList: sort_largest_hours_first(), and made modifications to find_best_grade_match()
  and sort_best_grade_first().  This was to correct a subtle bug which appeared if a student took a non-repeatable course twice,
  and received the same grade both times, but had different hours.  For example, if a student earned 0 hours on one attempt,
  and 4 hours on the next.  Special thanks to Logan Buth.
  

2018-03-17
  Fixed subtle bug where substitutions are sometimes displayed more than once in a group.  Special thanks to Logan Buth.
  

2018-03-15
  Fixed bug with pie charts code (from older version of pchart) that was incompatible with PHP7.
  

2018-03-14
  Fixed bug where min grade requirements was being ignored for a newly-created course, when the original course was
  partially filled by a substitution.  Thanks to Logan Buth.
  
  Added new load_degree_plan_ancillary() method to _DegreePlan.  This lets us load just the 'ancillary' data for a degree-- title, advising weight, track
  configs, etc., without having to load the entire degree.  At the moment, it is used primarily on the What If selection form.
  
    
2018-03-11
  Fixed bug where track descriptions (when editing a degree) were having filter_markup applied twice, causing new lines to keep appearing.

  Fixed a non-clean URL issue in comments.js, where deletion was not possible unless clean URLs was enabled.
  

2018-03-09
  Updated hook_fp_get_student_majors to have the same (newly added) arguments as the DatabaseHandler function.  Similarly updated system.module's implentation
  of the hook.  Also updated student_search.module, to take advantage of this addition, to tell it not to join with the degrees table, as the student's listed
  degree might not be present in that catalog year in the degrees table.  This was to fix a bug.


2018-03-07
  Fixed bug where new_from_split courses were allowed to fill into other degrees, instead of going straight to 'excess credits', which is the
  expected behavior.
  
  Added $group_id to find_xyz_match functions in _CourseList.  This is not used by core code, but is passed along to hooks, so that modules
  can better decide to allow the course or not.
  
  Added get_group_name function to _DatabaseHandler for quick lookups of a group's name by its id.
  
  Fixed a bug where "combined" degree plans didn't retain their "db_allow_dynamic = 1" member variable.  Thanks to Logan Buth.
  
  Fixed typo for db_allow_dynamic in theme.inc.  Thanks to Kim Sangwin


2018-03-05
  Added a new hook, hook_courselist_find_match_allow_course.  This allows modules too hook in just before a "match" is found by _CourseList's match methods,
  to determine if it should really keep the course or skip it.  This was introduced to counter a bug.  Special thanks to Logan Buth for the concept.
  
  Added extra code to _Course::name_equals, to call load_descriptive_data if subject_id is not populated.    


2018-02-27
  Fixed bug where selecting a track for a degree which already had a | in it would have failed.
  
  Fixed bug for non-dynamic degrees and degree option (track) selection.  It now uses the first "editable"
  degree found for a student, if the primary non-editable degree is non-dynamic.
  
  Added function get_degree_allow_dynamic() to _DatabaseHandler.php.
  

2017-12-5
  To fix an issue where groups with branches were not respecting the grade sort order, I added
  a new method to _GroupList: sort_best_grade_first_by_student_grades().  This helps sort branches
  based on grades the student has earned.


2017-11-30
  Fixed bug where courses with inf. repeats were not respecting minimum grades.
  
  Fixed another bug with inf. repeats, where substitutions were interfering with inf. course logic.
  

2017-11-26
  Fixed missing child group issue, caused by previous work (special thanks to Logan Bluth)
  

2017-11-15
  Introduced concept of "infinite repeats" in groups, for courses with an excessive
  amount of repeats allowed.  This greaty helps speed up FlightPath's group logic when
  loading a student.
  
  Added various function caches, and re-wrote some queries, in an effort to speed
  load time for FlightPath (special thanks to Logan Buth)
  

2017-11-09
  Added extra filtering to the filter_markup() function, which would repair
  any mismatched or faulty HTML tags.  This can happen when people paste incomplete HTML
  from Word or an email into a Comment.
  

2017-11-07
  Fixed an issue related to how a GroupList creates a clone().
  
  Added #group field to render array for course info popup.
  
  Added get_course_id array to CourseList object.

  Added extra option for Group::get_course_id()


2017-10-30
  Removed functionality of having a course always get selected by default in a popup group listing.
  

2017-10-18
  Made groups' internal machine name a required field, and forced them to be unique, in preparation of
  functionality for the Conditional Requirements module, as well as any other module which needs to
  identify groups by human-readable names.


2017-10-15
  Fixed bug when duplicating entire catalog year (typo in variable name for catalog_repeat).
  
  Fixed bug where it 'Back to degrees' link was linking to the wrong year.


2017-10-11
  Fixed mysql error in system.module.


2017-10-03
  Added extra caching & other techniques to speed up load times.  In some situations, load time has been decreased by 300%.
  
  Added new function, fpmct(), which is short for fpm(fp_debug_ct($val));


2017-09-24
  Fixed notices on Not Found page.  Re-ordered weight system and added new markup elements to degree edit form (to make it easier
  for other modules, ie, Conditional Requirements, to form_alter).
  

2017-09-23
  Fixed PHP notices on update function
  

2017-09-19
  Fixing PHP warnings on install.
  

2017-09-18
  Fixed bug where "process all definitions" wasn't loading groups with branches correctly.


2017-09-14
  Added concept of "set catalog repeats" to groups, which will automatically set all repeatable courses to repeat.
  
  Fixed popup_description bug for "checkbox" form element type.


2017-08-22
  Fixed PDO mysql error in student search when searching by major.
  

2017-08-16
  Fixed a bug where the "prevent_course_assignment..." setting wasn't working for groups.  It involved fixing another bug I discovered,
  where advising_weight of a degree wasn't being applied when it came to group assignments.
  
  Added a new setting to School Settings screen, where you can decide to show a warning or not on the View screens, if a student's major
  cannot be found.
  

2017-08-09
  Added a new option to Configure School Settings -- "prevent_course_assignment_to_both_degree_and_track".  If set to "Yes", then
  a course cannot be assigned to both a Level-1 degree and one of its direct tracks.  Ex:  ENGL and ENGL|_track1.  It is set to "yes" by
  default.
  

2017-07-25
  Made all major_code fields in the database be varchar(100), just to cover any weird ones which may be above 20 chars (the old limit).
  
 
2017-07-18
  Added extra CSS classes to course rows which were created from split substitutions.


2017-07-05
  Modified the admin_copy_degree_submit function to store degree id's in the form_state, for
  other modules to use.  Same for the admin_duplicate_year_form

2017-07-02
  Added new hook for when a new degree plan is loaded:  hook_degree_plan_load(&$degree)
  

2017-06-30
  Large overhaul to the degree edit screen.  In addition to being 100% FAPI now, you can add new
  semester blocks on demand, rather than having to save and refresh the page for more.  You can
  also delete a semester block.  Also, when a new degree is created, the first four semester blocks
  are created by default.  
  

2017-06-27
  Fixed bug where form parameters not being stored as hidden variables in the form were causing
  the $form_state['values'] to be incomplete.  Specifically on the degree edit form.


2017-06-21
  Made it to where if the SESSION var "scroll_top" is set, the value will be respected.  This allows
  FAPI forms to set the scroll top (like the degree edit form)


2017-06-19
  Tweaked the reduce_whitespace function to make it slightly smarter.
  
  Working on new FormAPI form for editing degrees.
  

2017-06-17
  Fixed bug where remainder hours on a split substitution were showing as the full hours
  in Excess credit.


2017-04-21
  Added a new behavior to when FlightPath saves advising session from POST.  Instead of
  simply continuing execution, it can now reload the page via fp_goto().  This prevents
  certain bugs from appearing if the user hits "Refresh" on the browser, causing the
  POST to submit again.  


2017-03-27
  Fixed a bug where substitutions and moved courses were not showing up correctly
  immediately after changing a degree option (like adding or removing a track).  This
  was due to the FlightPath object not using the same reference to the student object
  after a non-cache load.
  
  Fixed an issue where hooks could not always be invoked from hook_init.  This was
  because hook_init was being called as soon as the module was loaded.  Instead, the logic
  was changed so that all modules are loaded first, THEN hook_init is called.


2017-03-15
  Fixed another bug where courses worth zero hours were not showing up in lists correctly.
  

2017-03-14
  Fixed bug where course->load_descriptive_data() actually reset bool_ghost_hour booleans
  for courses.  This meant that courses worth MORE than zero hours in the database would show up as worth
  1 hour, even if they earned zero hours.  Added a simple argument to disable that behavior, FALSE by default.
  
  The same bug was causing ghost hour courses to show as worth "1 hour" in popups.
    

2017-03-09
  Fixed bug where course repeats were not being excluded correctly.
  
  Fixed bug where a course could not be removed from a group if it was being used as a sub in a different degree's group.
  

2017-03-05
  Added new course sort policy (to be considered in 'beta' for the time being,
  which allows to select highest grade, exclude other attempts.


2017-02-19
  Fixed bug in duplicating degrees re: groups with var hours.

  Added a hook to allow modules to modify a term_id prior to getting its description.


2017-02-11
  Fixed another bug relating to the logic of pulling up a student when two advisors are
  working on the student at the same time.

  Modified some logic in _FlightPath to accomodate the double advisor issue bug.


2017-02-07
  Fixed advising session bug where advisors working at the same time on the same student might see
  each other's draft work.
  

2017-01-26
  Fixed bug where duplicating an entire year of courses was skipping over the max hours, if they were
  set to zero.
  

2017-01-19
  Fixed bug in duplicate degrees, where some of the new fields were not being included.
  

2017-01-18
  Fixed bug where advised identical courses in same semester, but in different degrees, FlightPath got confused about which
  course to check.
  
  Fixed bug where after clearing advising cache, an adviser showed invalid tabs.
  
  Fixed bug with variable hour courses not being selected after changing hour selector.
   
 
2017-01-14
  Made more changes, to ensure that users cannot access another student's data by manipulating
  URL variables. 
 
 
2017-01-04
  Handful of extra changes to logout function, again, for Safari browser bug. 
  
  Added more HTML comments to the course_search_display_courses render api call, to give
  more spots for custom modules to dig in and change/add content.
  

2017-01-03
  Added additional unsetting of SESSION vars when cache is cleared, to erase any potential problems.
  
  Working on logout function, to address issue from Safari browser where SESSION is not being
  destroyed correctly.
  

2017-01-02
  Altered the way the renderapi handles markup, so it always gets a CSS class we can
  use later.  Also, added weights to the AdvisingScreen's display_popup_course_descroption.
  
  Made minor CSS tweaks in other places too.
  
  Minor display bug in user module, list of majors for student
  

2016-12-28
  Minor changes to System to suppress PHP warnings in one area.


2016-12-22
  Fixed a bug with substitutions, where the required courses was the same in two different
  degrees, and the substituted courses was ALSO the same.  FlightPath was applying the sub
  to the first instance of the course requirement, and not necessarily the one the user selected.
  
  Worked on an issue where when two users are working on the same student, they should only pull up
  draft changes that THEY made, not that the other user made.
  
  To guarantee draft advising sessions aren't loaded inappropriately, when a faculty user loads
  a student's advising session, the draft versions are deleted.  This is to correct a bug.
  
  Fixed display bug of student's catalog year, in what if, when it is set to the Student mode in
  the settings.
  
  Fixed SQL bug in system.install, user_roles table didn't have primary key set up correctly.
  
  More work on advising sessions-- now saves a draft duplicate any time a new student is loaded.  This
  is to fix a bug which can occur when more than one advisor is working on a student in the same
  time period.
  

2016-12-16
  Added a new feature to let What If save & load with any catalog year.  Built into the system
  are the options "Current" and "Student".
  
  
2016-12-13
  Fixed bug where zero-hour courses were not allowing repeats correctly.
  
  Added more CSS classes and options to displaying degree titles.
  

2016-11-20
  Converted FlightPath and module licenses' to GNU AGPL Version 3.0.  Generally, it is compatible
  with the previous GPLv3 license, with one addition as it pertains to servers.
  See more here: http://getflightpath.com/gnu-agpl 
   

2016-11-16
  Added ability for a "locked" directive in the student_degrees table.  It lets you lock an entire
  degree classification from editing at a time.


2016-11-14
  Added minor CSS to "Change degree options" link.


2016-11-09
  Fixed minor PHP warning which pie charts were not enabled.
  

2016-11-05
  Made varius modifications to accomodate a student with no assigned major code, or, a major code which could
  not be found in the designated catalog year.


2016-11-01
  Fixed bug where identical courses which had all been advised were not correctly
  being counted as advised/fulfilled when only one was fulfilled, and before the advising term
  was advanced.
  

2016-10-28
  Added a setting to Configure School settings, to hide advising checkmarks if the student has enrolled
  in the course they were advised for (also works for completed as well).

  Added a new permission (in Admin module section) for user to be able to Delete courses, groups, or degrees.
  Also added those checks to the deletion functions for those forms.
  
  Fixed a bug in the course_search module, which was negating any effort to NOT have course names automatically
  capitalized.
  

2016-10-24
  Added new hook: hook_flightpath_can_assign_course_to_group().  It lets custom modules decide whether or not
  to allow a course into a particular group at all.
  

2016-10-19
  Fixed bug where a course over the min hours of a group was being skipped over.
  

2016-10-16
  Fixed a bug where groups with min hours weren't correctly being limited by substitutions.


2016-10-10
  Corrected logic on the min hours in groups code.


2016-10-08
  Added default setting to stop filling courses into a group once the min hours are met.
  
  Display of min hours correctly calculated in group select with min hours after advising.
  

2016-09-29
  Fixed a bug with pie charts where it was not taking a group's min_hours into account.  Also, told it to ignore
  the "hours_required_by_type" in pie chart calculations, since a group can only be assigned to one requirement type
  at a time.
  

2016-09-28
  Fixed bug where searching for lastname, firstname broke the search. 
  

2016-09-23
  Improved error handling for Execute PHP function.


2016-09-22
  Added extra documentation for the structure of term ID's setting, and an additional setting to the course search code to support the [Y+1]
  year adjust code.
  

2016-09-10
  Made various changes so that pie charts are rendered using a hook-able theme function, similar to Course Row, Footnot, etc.
  This allows outside modules to modify the pie charts.
  
  Also, the pie charts by default now list out progress for every degree the student is enrolled in.  
  

2016-08-24
  Changed system.install so that datetime field is given a real date (1970-01-01 00:00:01), not all zeros, by default.  This was
  necessary because on some MySQL configurations, zero dates are not allowed.
  
  Fixed bug in stats and batch modules, where they were not using constant names correctly (this is to make compatible with MySQL 5.7+)
  
  Made note in db errors that contain the text sql_mode= to see a documentation page regarding how to correct that.
  
  Adjusted install.php, settings.php, and _DatabaseHandler so that the db_port is its own value now.
  

2016-08-23
  Removed mysql_* functions from installation and settings files, to make PDO compatible and PHP 7 compatible.


2016-08-20
  Added setting for default 'allow dynamic' value.
  
  Fixed bug where draft mode wasn't being selected correctly when fetching degree_id.
  
  Added more CSS class names to elements on degree edit page.
  
  Adjusted CSS in packaged themes' style.css files for what if selection screen.
  
  Fixed What If selection so it pays attention to whether or not the degree was allowed
  to be combined with any other degree.
  

2016-08-04
  Fixed queries in admin (for viewing watchdog logs) to use better PDO system.
  
  Made variable_get/set respect NULL values, to ensure more effience caching and fewer db calls. 
  
  Fixed issue where identical transfer courses with different specific titles for the same student were not being retreived
  correctly.
    

2016-08-01
  Added jQuery includes in the print template files, in case they are needed for debugging.
  
  Fixed bug in History view, where "view/print all" wasn't correctly loading advising sessions
  in sequence.
  

2016-07-26
  Added ability to change popup window sizes in the System Settings form.  Popup window options are
  now stored in the FlightPath.settings javascript object.
  

2016-07-23
  Switched (much of) the course search module to use render arrays, so other modules can make changes.
  
  Added "back" link from Substitute popup


2016-07-16
  Fixed bug where sometimes subs in groups were not showing hours correctly, especially for transfer credits. Was
  fixed by ensuring the "req_by_degree_id" value was always passed along.
  
  Fixed bug in subs where "split sub hours" were being incorrectly reported.  This was because the course's data string
  was not being assembled correctly.

  Fixed issue where min/max hours for a group were not being displayed correctly.

  Added new theme hook, so modules can theme group select rows, to have custom messages.


2016-07-08
  Made tweaks to advising screen to make CSS re-themeing easier, and to make adding "extra html" easier to the group
  list popups as well as other areas.
  
  Made it so that function module_implements_hook() caches what it finds, at least for that one page load.  Helps speed up
  a little bit.
  
  Added new hook: hook_translate.  Called by t() function.
  
  

2016-06-29
  Fixed bug in Substitution system for split transfer subs, where hours were not being reported correctly.


2016-06-26
  Fixed bug in substitution reporting, where it wasn't correctly finding the split sub hours for transfer credits.
  
  Added new hook to core; to be able to alter footnotes.


2016-06-17
  Fixed bugs with substitution footnotes, in AdvisingScreenTypeView.  Substitutions were not being accurately displayed for footnotes.

  Added extra indexes to the box_array in AdvisingScreen, so it makes it easier to overwrite certain screen elements for other modules. 
  

2016-06-13
  Made alterations to fix a bug where the group a course was substituted into was not being reported correctly.
  

2016-05-25
  Converted the process that runs all group definitions for a year to a Batch API process, for better memory management and UI.
  

2016-05-24
  Added extra logic so that test scores with a date of null or 0000-00-00 will be given an "N/A" date, as well as extra CSS to help
  style the test scores.
  

2016-05-20
  Added setting to School Data form (system.module) for excluding degrees from "appears in" counts.
  
  Added method to DatabaseHandler-- get_degree_ids().
  

2016-05-19
  Adding "appears-in" counts for group select rows as well.


2016-05-16
  Added a new hook to let other modules decide if a course should be assigned to a particular degree or not.
  
  Removed some redundant database queries to help reduce queries per page load.


2016-05-11
  Added to AdvisingScreen so we add extra classes when a course appears in more than one degree.
    

2016-05-10
  Created an array in DegreePlan to keep track of every course that degree can possibly use.
  
  Added to $theme when drawing course rows, so we can move the degree_plan around as well.


2016-05-06
  Fixed bug in _CourseList.php, where min_grade wasn't being accurately taken into account when searching for find_best_match() courses.
  
  Added CSS class to the body tag to state what the student's rank is.
  
  Made it so any rendered button gets its title as its class, for extra CSS styling.
  

2016-04-22
  Added ability to "view/print all" advising histories, just like the comments.
  
  Added track descriptions to what if selection screen


2016-04-19
  Made various changes in AdvisingScreen, and added a new hook, so that course rows could be further themed by
  modules, before they are drawn on screen.  This is partially so that the prereqs module will more easily work.
  
  Added better CSS to admin.degrees.inc.

2016-04-14
  Added extra functionality to CourseList.
  

2016-04-09
  To prepare for dealing with prereqs, I changed the way the draw_course_row function is written in AdvisingScreen,
  to allow hooks to change elements of it.
  

2016-04-06
  Fixed isses with db queries which specified '?~?' or similar syntax, which is incompatible with the new PDO system.
  
  Changed checkboxes to use spans with classes for graphics, so we can easily overwrite as needed.
  

2016-04-05
  Replaced some hard-coded values with constants.
  
  Fixed bug with group titles in view and what if.

  Fixed mysql bug in course_search.module, fixed various issues which were causing "notices".
  

2016-04-04
  Fixed bug in what if selection screen for tracks.  Added new javascript function to create CSS-friendly strings.
  
  Added ability in System Settings to show group titles on View and What If screens, not just in print mode.
  

2016-04-01
  Fixed a bug in user.student.inc where major codes were not being read correctly from student_degrees table.
  

2016-03-31
  Added option to CourseList function sort_alphabetical_order, to include the degree's advising weight of the degree the course requires first, to make
  it also get sorted by degree.
  
  Changed the way semester blocks are drawn in AdvisingScreen, to group degrees together by advising weight, then name, alphabetically.
  Made similar changes to AdvisingScreenTypeView.  Also added more CSS classes to elements, making it easier to target.


2016-03-30
  Added extra class names when drawing courses and group selection rows.  Also, created new CSS class called "selection_highlight" that gets
  added and removed over certain items.  Updated theme css files to accomodate.
  

2016-03-29
  Fixed bug in what if selection screen.
  
  Cleaned up student search module a little, added extra CSS so that major codes more stylable.
  Also made student_search module PDO compliant, not relying on older mysql_real_escape_string function calls anymore.


2016-03-28
  Implemented hook for fp_get_student_majors().
  
  Added extra CSS classes to degrees in the currently advising box, making it easier to hide them through CSS. 

  Improved the fp_get_machine_readable() function, altered how form elements are rendered in render.inc so that
  elements with weird characters get safely handled.
  


2016-03-27
  Worked on What If selections screen, to work with new degree track selection configurations.
  

2016-03-20
  Fixed bug where permissions were not acting correctly in certain circumstances for viewing past advising sessions.


2016-03-17
  Added check on copy degree form to prevent accidental overwriting of existing degrees.
  

2016-03-14
  Added concept of min/max track selections to degrees.  Now, the user will be stopped if they select a number of tracks
  outside of the allowed range.
  
 
2016-03-08
  Added new permission checks to advise.module, and new permission-- limiting ability of user to only view their 
  specified advisee's advising sessions.  Needed to make that change for something to do with the student_files module.
   

2016-03-07
  Fixed bug where current draft catalog year wasn't being read correctly in _Course->load_descriptive_data()
  
  Fixed oversight where files input element didn't render attributes array, also added multiple=TRUE for files, too.
  

2016-03-02
  Made it to where if a group is worth more than 200 hours, its hour counts do not show in the group select row,
  or in the popup.
  
  
2016-03-01
  Fixed bug where courses were not reflecting the correct group they were assigned, in a multi-degree scenario.
  

2016-02-29
  Fixed bug where on install, the admin password wasn't set correctly.


2016-02-23
  Fixed issue with Course Search where faculty_id wasn't being saved as CWID, and where
  only first 20 rotation schedules were being returned instead of most recent 20.
  

2016-02-19
  Fixed bug in Copy Degree form submission, related to switch to PDO support.
  
  Fixed bug where min hours for a group weren't making it obtain the correct CSS class.
  

2016-02-18
  Fixed stray mysql_insert_id() command in _FlightPath.php.  Changed to db_insert_id().
  
  Made it to where if you skipped semesters on the degrees page, it will still show the blank
  boxes, at least before where you skipped.
  
  Fixed issue so that public notes (on degrees) show up correctly, no matter how many degrees
  are being combined.  


2016-02-17
  Fixed bug where group id was not being maintained for certain groups in popup window.
  
  Made various changes in an attempt to help speed up page loads.


2016-02-15
  Fixed bug in misc.inc which was causing a new database connection *every time* a connection was requested (instead of re-using the
  global one).
  

2016-02-13
  Fixed bug in install script so that track major codes can have up to 20 characters.
  
  Modified the add degree form, to check to make sure tracks and major codes don't contain spaces,
  as well as fall below the 20 character limit.
  
  Fixed but which was intruduced by removing submissions form sessions.  As a result, forms which didn't
  validate didn't retain values.  Instead made it so only password fields were hidden from the session.
  
  Added concept of an "advising weight" to degrees, and on the degree edit form.  This lets the admin set
  the order in which degrees are presented to a student.  Lower weights appear first.  Added new popup help
  topics to the degree edit page to help explain.
    

2016-02-11
  Made it to where combined degrees will overwrite semester block titles if they are set to.
  

2016-02-09
  Fixed MySQL bug when editing groups.  Fixed bug where group_min_hours_required should be group_min_hours_allowed in the database.
  Fixed bug in degree list filter when not using clean URLs.
  Fixed missing argument bug in db.inc for db_affected_rows().
  

2016-02-01
  Removed section from system.module where submissions were being temporarily stored in the session.  It wasn't being used anyway,
  and it presented a possible security issue on improperly secured servers.
  

2016-01-19
  Changed default password scheme to use new D7 inspired PHPass technique, instead of basic md5's.  Added new password.inc file, virtually identical to the
  one which ships with D7.
  

2016-01-14
  Converted the advising history tab to use the content render api, so other modules can add content to that page.
  Also made it so that past advising histories appear in a collapsible fieldset, to save space.
  

2016-01-11
  Changed course popup description to use new content render API system.
  
  Added "override_degree_hours" field to degrees and draft_degrees tables, and db_override_degree_hours in the _DegreeClass object,
  for future use.
  
  Made small tweaks to fix bugs so installation works correctly.
  

2016-01-07
  Workng on var hour groups, ie, "min_hours_allowed".  Also, added in mechanism for changing the name of FlightPath to something else, if desired.
  

2016-01-05
  Beginning work on optional min hours for groups.
  

2016-01-04
  Creating new render api system, for rendering arrays similar to form arrays.  This lets other modules hook in to make changes.
  
  Changed forms.inc to render.inc


2015-12-31
  Initial commit of 5.x branch, from 4.10-dev branch. Enough has changed to warrent naming this a new core version.

File

CHANGELOG.txt
View source
  1. FlightPath 5.x Changelog
  2. ========================
  3. 2019-12-17
  4. Fixed search by role on Users page. It was only recognizing the first selection, and not if you changed the role more than once.
  5. 2019-10-04
  6. Fixed display bug in _FlightPath.php, where if a student's catalog year was past the current_catalog_year, it was set to 99999. This caused
  7. a message to display onscreen which read "Could not find degreee... in catalog year 99999-100000..."
  8. 2019-09-13
  9. Made it so legacy support for 4x style "concentrations" is DISABLED by default. This is to help clear up confusion. New
  10. language on the Add Degree form uses the new level-1, -2, and -3 terminology for consistency.
  11. Fixed a bug where previously-deleted tracks were showing as a blank degree_class to select from on the What If selection
  12. screen. Make it simply where if the degree_class is blank, then skip over it.
  13. 2019-09-09
  14. Minor tweak to stop a warning from appearing.
  15. 2019-08-12
  16. Minor tweak in theme.inc, to fix menu icon bug which can happen sometimes.
  17. 2019-08-08
  18. But when adding new user; user isn't searchable. Adding default lastname (username) if not entered.
  19. Fixed blocks module's administer_blocks permission. Had typo preventing it from working.
  20. Updated format_date() function, so that the "short" format has am/pm at the end.
  21. 2019-08-07
  22. Fixed bug where when deleting a degree with a track, it wasn't being removed from the draft_degree_tracks table.
  23. 2019-07-23
  24. Adding better support for Graduate degrees & students.
  25. 2019-07-22
  26. Adding extra HTML and CSS when displaying degree titles on screen.
  27. 2019-06-14
  28. Patched a security bug whereby a user could theoretically try to view a system file, using a PHP Local File Include vulnerability.
  29. Special thanks to m.althibyani@gmail.com for finding and reporting!
  30. 2019-06-06
  31. Created a new core module: SMTP, as well as a helper function, fp_mail(). Now if you have the SMTP module
  32. enabled and configured, all mail is automatically routed through your SMTP server, instead of whatever
  33. the default setting is for PHP's mail() command.
  34. Added PHPMailer to the /inc/ directory (for the SMTP module).
  35. Moved some settings from the System Settings form and into the School settings form.
  36. Created a custom PHP error handler, so that we can display (and log if necessary, email, etc) PHP
  37. warnings and errors.
  38. Added /icons/ folders and silk icons for admin/config menu entires for the core modules.
  39. Adjusted CSS in default themes to make new icons look nicer.
  40. 2019-04-30
  41. Fixed bug in _DegreePlan.php which caused tracks to not load correctly while viewing in draft mode (Thanks
  42. to Logan Buth from Morningside College).
  43. 2019-04-03
  44. Mitigated some possible XSS weaknesses in index.php (by using more secure headers and cookies), and in
  45. render.inc. When creating forms, the current path was not being santized sufficiently, which has now been
  46. corrected.
  47. 2019-03-20
  48. Added new system setting, letting you disable logins for all but admin. Very helpful for
  49. maintenance tasks.
  50. 2019-03-19
  51. Fixed bug in _FlightPath, causing errors.
  52. Changed way I was forcing something to be numeric, to silence a warning in PHP 7.2
  53. Fixed code which causes a bug in MySQL 8+
  54. 2019-03-15
  55. Added a new option to System Settings: enable or disable display level-3 selection on what if selection screen. If disabled,
  56. this has more of a feel for FlightPath 4, and might help schools which do not allow dynamic degrees, or who have so many level 3
  57. options that it causes confusion.
  58. Fixed a left-over $this in db.inc, which caused problems in specific situations.
  59. 2019-03-13
  60. Fixed another SQL bug in the course_search module.
  61. Fixed bug where outdated subs were being hidden. Had to do with the way the _Course.php file was checking for if a course
  62. was substituted or not.
  63. Fixed several bugs in db.inc's fp_get_degree_title() function, which was causing it not to work at all.
  64. Modified the Administrator's Toolbox message so that outdated subs correctly state what degree they were from
  65. which is now outdated.
  66. 2019-03-07
  67. Removed mysql_* functions from course_search module.
  68. 2019-02-21
  69. Initial commit to new flightpath-5.x branch. (instead of 5.x-dev)
  70. Continuing to test git config.
  71. 2019-02-20
  72. Fixed bug in advise.module, which was forcing a blank or empty current_student_id to be 0 (zero), which
  73. was causing problems in the logic.
  74. 2019-02-14
  75. Added new setting to calculate & show GPA for each pie chart on a student's degree plan.
  76. Fixed a bug in the Major Student Progress report (in the stats module).
  77. 2019-02-13
  78. Enforced integer constraint when adding a new student user (for is_disabled and is_active).
  79. Fixed bug in advise.module which was preventing alphabetic CWIDs from working.
  80. 2019-02-09
  81. Changed cumulative_hours in students table (as well as a couple other fields) to be
  82. varchar(20) instead of varchar(5). This is because at only 5 characters, students
  83. with 123.45 hours were violating the constraint on the table, and causing routines
  84. to die.
  85. 2018-12-31
  86. Made small changes to advise.module and blank_degrees.module, so that if a blank degree plan
  87. is loaded with prereqs, they are not blocked. Also, to make it easier for custom modules
  88. to use req_by_degree_id instead of blank_degree_id, if req is set.
  89. Made a change to _FlightPath.php, when marking substitutions as outdated. Changed
  90. a simple "else" to an "else if" to make sure some logic doesn't get executed more
  91. than necessary. (Thanks to Logan Buth #2316)
  92. Various QOL issues and fixes. Thanks to Logan Buth #2488.
  93. 2018-12-18
  94. Added new hook: hook_alter_currently_advising_box. This allows modules to modify or add to the "currently
  95. advising" box, which appears at the top of the screen when a student is selected for advising.
  96. 2018-12-15
  97. Modified core's display of the Urgent Message screen, to better allow other modules
  98. to make modifications.
  99. 2018-11-26
  100. Fixed bug where groups split over more than one semester block were not having courses assigned
  101. to them correctly. Partially due to them not having req_by_degree_id set.
  102. 2018-11-13
  103. Added extra data to $form_state, when duplicating an entire year's worth of data.
  104. Added fix for issue #2455, thanks to Logan Buth. This deals with repeatable courses still appearing
  105. in groups, even though a setting was set saying they should be advised once enrolled.
  106. Also fixed issue with maintaining keys in array for _Group::get_course_id_array function. Issue #2456,
  107. credit Logan Buth.
  108. Issue #2470, Logan Buth. Fixed typo causing degree_id to always be set to zero in _Course::get_quality_points.
  109. 2018-10-17
  110. Added new hook: hook_menu_alter(), for editing menu items.
  111. 2018-10-09
  112. Fixed a theming issue which sometimes would occur in Chrome, on the Majors search page (of the student_search module).
  113. 2018-05-10
  114. Fixed display bug in user.module, found a mis-matched </div> tag.
  115. 2018-05-05
  116. Made the function Course::load_course_from_data_string_for_requirement_clone() set the course's display_status to "ellible"
  117. to match the behavior of the default constructor. Re: issue #2317, thanks to Logan Buth.
  118. 2018-04-29
  119. Made "change term" link in the currently advising box nicer, with more CSS selectors available.
  120. 2018-04-26
  121. Small change in system.module, to make theme selection easier (radio buttons instead of having to type in location)
  122. 2018-04-22
  123. Fixed issue #2316 (special thanks to Logan Buth) in which outdated subs aren't always detected in cases
  124. of combined degrees.
  125. 2018-04-21
  126. Fixed small bug where sometimes "courses added by advisor" result in a mysql error while advising, due to
  127. the "degree_id" being blank and not "0".
  128. 2018-04-16
  129. Fixed bug in AdvisingScreen introduced by a previous commit, where I left off a line of code after rolling
  130. back changes.
  131. Restored a line of code I accidentally deleted in a previous commit, in _FlightPath.php.
  132. 2018-04-14
  133. Rolled back a modification made to AdvisingScreen, as described in ticket 2291, comment #36, and implemented
  134. new changes from comment #42 (special thanks to Logan Buth). This was to deal with a subtle bug involving a
  135. repeated course, where one of the attempts was substituted, the other not.
  136. Re: ticket #2311, added array of group id's to the form_state, when a year of degree data is being duplicated.
  137. Re: ticket #2312, fixed a bug where sometimes a group popup doesn't show the same branch as what the View screen
  138. does. Special thanks to Logan Buth for discovering this issue and proposing the fix.
  139. Re: ticket #2294, fixed a bug where var hour courses were being advised for zero hours. To fix this, had to add
  140. a new bit of javascript to advise.js, as well as a new hidden variable per course in _AdvisingScreen's draw_popup_group_course_row()
  141. 2018-04-11
  142. Fixed an issue with "clean URLs" when site is hosted on a bare domain.
  143. Updated install.php to have more instructions in the settings.php file for bare domain hosting.
  144. Fixed small issues causing PHP Notice's to show up.
  145. Fixed bug where substitutions were not displaying correctly in Display by Year view.
  146. 2018-04-07
  147. Fixed some small display issues in AdvisingScreen, to keep PHP notices from appearing.
  148. Added new hook, hook_theme_advise_degree_header_row, with special thanks to Logan Buth.
  149. 2018-03-29
  150. Made a bug fix to where a pie chart would display 99 if its value was above 100. Instead, this was changed to 100.
  151. Fixed a bug in get_term_structure() where the abbreviation and long description were switched.
  152. Modified the CourseList::remove_previously_fulfilled() function, where it uses find_best_match() to find a match
  153. for a course, instead of the parent's find_match() function. This allows for hooks to be used, as well as the
  154. school's sorting/matching policy to be used. Special thanks to Logan Buth.
  155. Added new methods & updated existing in CourseList: sort_largest_hours_first(), and made modifications to find_best_grade_match()
  156. and sort_best_grade_first(). This was to correct a subtle bug which appeared if a student took a non-repeatable course twice,
  157. and received the same grade both times, but had different hours. For example, if a student earned 0 hours on one attempt,
  158. and 4 hours on the next. Special thanks to Logan Buth.
  159. 2018-03-17
  160. Fixed subtle bug where substitutions are sometimes displayed more than once in a group. Special thanks to Logan Buth.
  161. 2018-03-15
  162. Fixed bug with pie charts code (from older version of pchart) that was incompatible with PHP7.
  163. 2018-03-14
  164. Fixed bug where min grade requirements was being ignored for a newly-created course, when the original course was
  165. partially filled by a substitution. Thanks to Logan Buth.
  166. Added new load_degree_plan_ancillary() method to _DegreePlan. This lets us load just the 'ancillary' data for a degree-- title, advising weight, track
  167. configs, etc., without having to load the entire degree. At the moment, it is used primarily on the What If selection form.
  168. 2018-03-11
  169. Fixed bug where track descriptions (when editing a degree) were having filter_markup applied twice, causing new lines to keep appearing.
  170. Fixed a non-clean URL issue in comments.js, where deletion was not possible unless clean URLs was enabled.
  171. 2018-03-09
  172. Updated hook_fp_get_student_majors to have the same (newly added) arguments as the DatabaseHandler function. Similarly updated system.module's implentation
  173. of the hook. Also updated student_search.module, to take advantage of this addition, to tell it not to join with the degrees table, as the student's listed
  174. degree might not be present in that catalog year in the degrees table. This was to fix a bug.
  175. 2018-03-07
  176. Fixed bug where new_from_split courses were allowed to fill into other degrees, instead of going straight to 'excess credits', which is the
  177. expected behavior.
  178. Added $group_id to find_xyz_match functions in _CourseList. This is not used by core code, but is passed along to hooks, so that modules
  179. can better decide to allow the course or not.
  180. Added get_group_name function to _DatabaseHandler for quick lookups of a group's name by its id.
  181. Fixed a bug where "combined" degree plans didn't retain their "db_allow_dynamic = 1" member variable. Thanks to Logan Buth.
  182. Fixed typo for db_allow_dynamic in theme.inc. Thanks to Kim Sangwin
  183. 2018-03-05
  184. Added a new hook, hook_courselist_find_match_allow_course. This allows modules too hook in just before a "match" is found by _CourseList's match methods,
  185. to determine if it should really keep the course or skip it. This was introduced to counter a bug. Special thanks to Logan Buth for the concept.
  186. Added extra code to _Course::name_equals, to call load_descriptive_data if subject_id is not populated.
  187. 2018-02-27
  188. Fixed bug where selecting a track for a degree which already had a | in it would have failed.
  189. Fixed bug for non-dynamic degrees and degree option (track) selection. It now uses the first "editable"
  190. degree found for a student, if the primary non-editable degree is non-dynamic.
  191. Added function get_degree_allow_dynamic() to _DatabaseHandler.php.
  192. 2017-12-5
  193. To fix an issue where groups with branches were not respecting the grade sort order, I added
  194. a new method to _GroupList: sort_best_grade_first_by_student_grades(). This helps sort branches
  195. based on grades the student has earned.
  196. 2017-11-30
  197. Fixed bug where courses with inf. repeats were not respecting minimum grades.
  198. Fixed another bug with inf. repeats, where substitutions were interfering with inf. course logic.
  199. 2017-11-26
  200. Fixed missing child group issue, caused by previous work (special thanks to Logan Bluth)
  201. 2017-11-15
  202. Introduced concept of "infinite repeats" in groups, for courses with an excessive
  203. amount of repeats allowed. This greaty helps speed up FlightPath's group logic when
  204. loading a student.
  205. Added various function caches, and re-wrote some queries, in an effort to speed
  206. load time for FlightPath (special thanks to Logan Buth)
  207. 2017-11-09
  208. Added extra filtering to the filter_markup() function, which would repair
  209. any mismatched or faulty HTML tags. This can happen when people paste incomplete HTML
  210. from Word or an email into a Comment.
  211. 2017-11-07
  212. Fixed an issue related to how a GroupList creates a clone().
  213. Added #group field to render array for course info popup.
  214. Added get_course_id array to CourseList object.
  215. Added extra option for Group::get_course_id()
  216. 2017-10-30
  217. Removed functionality of having a course always get selected by default in a popup group listing.
  218. 2017-10-18
  219. Made groups' internal machine name a required field, and forced them to be unique, in preparation of
  220. functionality for the Conditional Requirements module, as well as any other module which needs to
  221. identify groups by human-readable names.
  222. 2017-10-15
  223. Fixed bug when duplicating entire catalog year (typo in variable name for catalog_repeat).
  224. Fixed bug where it 'Back to degrees' link was linking to the wrong year.
  225. 2017-10-11
  226. Fixed mysql error in system.module.
  227. 2017-10-03
  228. Added extra caching & other techniques to speed up load times. In some situations, load time has been decreased by 300%.
  229. Added new function, fpmct(), which is short for fpm(fp_debug_ct($val));
  230. 2017-09-24
  231. Fixed notices on Not Found page. Re-ordered weight system and added new markup elements to degree edit form (to make it easier
  232. for other modules, ie, Conditional Requirements, to form_alter).
  233. 2017-09-23
  234. Fixed PHP notices on update function
  235. 2017-09-19
  236. Fixing PHP warnings on install.
  237. 2017-09-18
  238. Fixed bug where "process all definitions" wasn't loading groups with branches correctly.
  239. 2017-09-14
  240. Added concept of "set catalog repeats" to groups, which will automatically set all repeatable courses to repeat.
  241. Fixed popup_description bug for "checkbox" form element type.
  242. 2017-08-22
  243. Fixed PDO mysql error in student search when searching by major.
  244. 2017-08-16
  245. Fixed a bug where the "prevent_course_assignment..." setting wasn't working for groups. It involved fixing another bug I discovered,
  246. where advising_weight of a degree wasn't being applied when it came to group assignments.
  247. Added a new setting to School Settings screen, where you can decide to show a warning or not on the View screens, if a student's major
  248. cannot be found.
  249. 2017-08-09
  250. Added a new option to Configure School Settings -- "prevent_course_assignment_to_both_degree_and_track". If set to "Yes", then
  251. a course cannot be assigned to both a Level-1 degree and one of its direct tracks. Ex: ENGL and ENGL|_track1. It is set to "yes" by
  252. default.
  253. 2017-07-25
  254. Made all major_code fields in the database be varchar(100), just to cover any weird ones which may be above 20 chars (the old limit).
  255. 2017-07-18
  256. Added extra CSS classes to course rows which were created from split substitutions.
  257. 2017-07-05
  258. Modified the admin_copy_degree_submit function to store degree id's in the form_state, for
  259. other modules to use. Same for the admin_duplicate_year_form
  260. 2017-07-02
  261. Added new hook for when a new degree plan is loaded: hook_degree_plan_load(&$degree)
  262. 2017-06-30
  263. Large overhaul to the degree edit screen. In addition to being 100% FAPI now, you can add new
  264. semester blocks on demand, rather than having to save and refresh the page for more. You can
  265. also delete a semester block. Also, when a new degree is created, the first four semester blocks
  266. are created by default.
  267. 2017-06-27
  268. Fixed bug where form parameters not being stored as hidden variables in the form were causing
  269. the $form_state['values'] to be incomplete. Specifically on the degree edit form.
  270. 2017-06-21
  271. Made it to where if the SESSION var "scroll_top" is set, the value will be respected. This allows
  272. FAPI forms to set the scroll top (like the degree edit form)
  273. 2017-06-19
  274. Tweaked the reduce_whitespace function to make it slightly smarter.
  275. Working on new FormAPI form for editing degrees.
  276. 2017-06-17
  277. Fixed bug where remainder hours on a split substitution were showing as the full hours
  278. in Excess credit.
  279. 2017-04-21
  280. Added a new behavior to when FlightPath saves advising session from POST. Instead of
  281. simply continuing execution, it can now reload the page via fp_goto(). This prevents
  282. certain bugs from appearing if the user hits "Refresh" on the browser, causing the
  283. POST to submit again.
  284. 2017-03-27
  285. Fixed a bug where substitutions and moved courses were not showing up correctly
  286. immediately after changing a degree option (like adding or removing a track). This
  287. was due to the FlightPath object not using the same reference to the student object
  288. after a non-cache load.
  289. Fixed an issue where hooks could not always be invoked from hook_init. This was
  290. because hook_init was being called as soon as the module was loaded. Instead, the logic
  291. was changed so that all modules are loaded first, THEN hook_init is called.
  292. 2017-03-15
  293. Fixed another bug where courses worth zero hours were not showing up in lists correctly.
  294. 2017-03-14
  295. Fixed bug where course->load_descriptive_data() actually reset bool_ghost_hour booleans
  296. for courses. This meant that courses worth MORE than zero hours in the database would show up as worth
  297. 1 hour, even if they earned zero hours. Added a simple argument to disable that behavior, FALSE by default.
  298. The same bug was causing ghost hour courses to show as worth "1 hour" in popups.
  299. 2017-03-09
  300. Fixed bug where course repeats were not being excluded correctly.
  301. Fixed bug where a course could not be removed from a group if it was being used as a sub in a different degree's group.
  302. 2017-03-05
  303. Added new course sort policy (to be considered in 'beta' for the time being,
  304. which allows to select highest grade, exclude other attempts.
  305. 2017-02-19
  306. Fixed bug in duplicating degrees re: groups with var hours.
  307. Added a hook to allow modules to modify a term_id prior to getting its description.
  308. 2017-02-11
  309. Fixed another bug relating to the logic of pulling up a student when two advisors are
  310. working on the student at the same time.
  311. Modified some logic in _FlightPath to accomodate the double advisor issue bug.
  312. 2017-02-07
  313. Fixed advising session bug where advisors working at the same time on the same student might see
  314. each other's draft work.
  315. 2017-01-26
  316. Fixed bug where duplicating an entire year of courses was skipping over the max hours, if they were
  317. set to zero.
  318. 2017-01-19
  319. Fixed bug in duplicate degrees, where some of the new fields were not being included.
  320. 2017-01-18
  321. Fixed bug where advised identical courses in same semester, but in different degrees, FlightPath got confused about which
  322. course to check.
  323. Fixed bug where after clearing advising cache, an adviser showed invalid tabs.
  324. Fixed bug with variable hour courses not being selected after changing hour selector.
  325. 2017-01-14
  326. Made more changes, to ensure that users cannot access another student's data by manipulating
  327. URL variables.
  328. 2017-01-04
  329. Handful of extra changes to logout function, again, for Safari browser bug.
  330. Added more HTML comments to the course_search_display_courses render api call, to give
  331. more spots for custom modules to dig in and change/add content.
  332. 2017-01-03
  333. Added additional unsetting of SESSION vars when cache is cleared, to erase any potential problems.
  334. Working on logout function, to address issue from Safari browser where SESSION is not being
  335. destroyed correctly.
  336. 2017-01-02
  337. Altered the way the renderapi handles markup, so it always gets a CSS class we can
  338. use later. Also, added weights to the AdvisingScreen's display_popup_course_descroption.
  339. Made minor CSS tweaks in other places too.
  340. Minor display bug in user module, list of majors for student
  341. 2016-12-28
  342. Minor changes to System to suppress PHP warnings in one area.
  343. 2016-12-22
  344. Fixed a bug with substitutions, where the required courses was the same in two different
  345. degrees, and the substituted courses was ALSO the same. FlightPath was applying the sub
  346. to the first instance of the course requirement, and not necessarily the one the user selected.
  347. Worked on an issue where when two users are working on the same student, they should only pull up
  348. draft changes that THEY made, not that the other user made.
  349. To guarantee draft advising sessions aren't loaded inappropriately, when a faculty user loads
  350. a student's advising session, the draft versions are deleted. This is to correct a bug.
  351. Fixed display bug of student's catalog year, in what if, when it is set to the Student mode in
  352. the settings.
  353. Fixed SQL bug in system.install, user_roles table didn't have primary key set up correctly.
  354. More work on advising sessions-- now saves a draft duplicate any time a new student is loaded. This
  355. is to fix a bug which can occur when more than one advisor is working on a student in the same
  356. time period.
  357. 2016-12-16
  358. Added a new feature to let What If save & load with any catalog year. Built into the system
  359. are the options "Current" and "Student".
  360. 2016-12-13
  361. Fixed bug where zero-hour courses were not allowing repeats correctly.
  362. Added more CSS classes and options to displaying degree titles.
  363. 2016-11-20
  364. Converted FlightPath and module licenses' to GNU AGPL Version 3.0. Generally, it is compatible
  365. with the previous GPLv3 license, with one addition as it pertains to servers.
  366. See more here: http://getflightpath.com/gnu-agpl
  367. 2016-11-16
  368. Added ability for a "locked" directive in the student_degrees table. It lets you lock an entire
  369. degree classification from editing at a time.
  370. 2016-11-14
  371. Added minor CSS to "Change degree options" link.
  372. 2016-11-09
  373. Fixed minor PHP warning which pie charts were not enabled.
  374. 2016-11-05
  375. Made varius modifications to accomodate a student with no assigned major code, or, a major code which could
  376. not be found in the designated catalog year.
  377. 2016-11-01
  378. Fixed bug where identical courses which had all been advised were not correctly
  379. being counted as advised/fulfilled when only one was fulfilled, and before the advising term
  380. was advanced.
  381. 2016-10-28
  382. Added a setting to Configure School settings, to hide advising checkmarks if the student has enrolled
  383. in the course they were advised for (also works for completed as well).
  384. Added a new permission (in Admin module section) for user to be able to Delete courses, groups, or degrees.
  385. Also added those checks to the deletion functions for those forms.
  386. Fixed a bug in the course_search module, which was negating any effort to NOT have course names automatically
  387. capitalized.
  388. 2016-10-24
  389. Added new hook: hook_flightpath_can_assign_course_to_group(). It lets custom modules decide whether or not
  390. to allow a course into a particular group at all.
  391. 2016-10-19
  392. Fixed bug where a course over the min hours of a group was being skipped over.
  393. 2016-10-16
  394. Fixed a bug where groups with min hours weren't correctly being limited by substitutions.
  395. 2016-10-10
  396. Corrected logic on the min hours in groups code.
  397. 2016-10-08
  398. Added default setting to stop filling courses into a group once the min hours are met.
  399. Display of min hours correctly calculated in group select with min hours after advising.
  400. 2016-09-29
  401. Fixed a bug with pie charts where it was not taking a group's min_hours into account. Also, told it to ignore
  402. the "hours_required_by_type" in pie chart calculations, since a group can only be assigned to one requirement type
  403. at a time.
  404. 2016-09-28
  405. Fixed bug where searching for lastname, firstname broke the search.
  406. 2016-09-23
  407. Improved error handling for Execute PHP function.
  408. 2016-09-22
  409. Added extra documentation for the structure of term ID's setting, and an additional setting to the course search code to support the [Y+1]
  410. year adjust code.
  411. 2016-09-10
  412. Made various changes so that pie charts are rendered using a hook-able theme function, similar to Course Row, Footnot, etc.
  413. This allows outside modules to modify the pie charts.
  414. Also, the pie charts by default now list out progress for every degree the student is enrolled in.
  415. 2016-08-24
  416. Changed system.install so that datetime field is given a real date (1970-01-01 00:00:01), not all zeros, by default. This was
  417. necessary because on some MySQL configurations, zero dates are not allowed.
  418. Fixed bug in stats and batch modules, where they were not using constant names correctly (this is to make compatible with MySQL 5.7+)
  419. Made note in db errors that contain the text sql_mode= to see a documentation page regarding how to correct that.
  420. Adjusted install.php, settings.php, and _DatabaseHandler so that the db_port is its own value now.
  421. 2016-08-23
  422. Removed mysql_* functions from installation and settings files, to make PDO compatible and PHP 7 compatible.
  423. 2016-08-20
  424. Added setting for default 'allow dynamic' value.
  425. Fixed bug where draft mode wasn't being selected correctly when fetching degree_id.
  426. Added more CSS class names to elements on degree edit page.
  427. Adjusted CSS in packaged themes' style.css files for what if selection screen.
  428. Fixed What If selection so it pays attention to whether or not the degree was allowed
  429. to be combined with any other degree.
  430. 2016-08-04
  431. Fixed queries in admin (for viewing watchdog logs) to use better PDO system.
  432. Made variable_get/set respect NULL values, to ensure more effience caching and fewer db calls.
  433. Fixed issue where identical transfer courses with different specific titles for the same student were not being retreived
  434. correctly.
  435. 2016-08-01
  436. Added jQuery includes in the print template files, in case they are needed for debugging.
  437. Fixed bug in History view, where "view/print all" wasn't correctly loading advising sessions
  438. in sequence.
  439. 2016-07-26
  440. Added ability to change popup window sizes in the System Settings form. Popup window options are
  441. now stored in the FlightPath.settings javascript object.
  442. 2016-07-23
  443. Switched (much of) the course search module to use render arrays, so other modules can make changes.
  444. Added "back" link from Substitute popup
  445. 2016-07-16
  446. Fixed bug where sometimes subs in groups were not showing hours correctly, especially for transfer credits. Was
  447. fixed by ensuring the "req_by_degree_id" value was always passed along.
  448. Fixed bug in subs where "split sub hours" were being incorrectly reported. This was because the course's data string
  449. was not being assembled correctly.
  450. Fixed issue where min/max hours for a group were not being displayed correctly.
  451. Added new theme hook, so modules can theme group select rows, to have custom messages.
  452. 2016-07-08
  453. Made tweaks to advising screen to make CSS re-themeing easier, and to make adding "extra html" easier to the group
  454. list popups as well as other areas.
  455. Made it so that function module_implements_hook() caches what it finds, at least for that one page load. Helps speed up
  456. a little bit.
  457. Added new hook: hook_translate. Called by t() function.
  458. 2016-06-29
  459. Fixed bug in Substitution system for split transfer subs, where hours were not being reported correctly.
  460. 2016-06-26
  461. Fixed bug in substitution reporting, where it wasn't correctly finding the split sub hours for transfer credits.
  462. Added new hook to core; to be able to alter footnotes.
  463. 2016-06-17
  464. Fixed bugs with substitution footnotes, in AdvisingScreenTypeView. Substitutions were not being accurately displayed for footnotes.
  465. Added extra indexes to the box_array in AdvisingScreen, so it makes it easier to overwrite certain screen elements for other modules.
  466. 2016-06-13
  467. Made alterations to fix a bug where the group a course was substituted into was not being reported correctly.
  468. 2016-05-25
  469. Converted the process that runs all group definitions for a year to a Batch API process, for better memory management and UI.
  470. 2016-05-24
  471. Added extra logic so that test scores with a date of null or 0000-00-00 will be given an "N/A" date, as well as extra CSS to help
  472. style the test scores.
  473. 2016-05-20
  474. Added setting to School Data form (system.module) for excluding degrees from "appears in" counts.
  475. Added method to DatabaseHandler-- get_degree_ids().
  476. 2016-05-19
  477. Adding "appears-in" counts for group select rows as well.
  478. 2016-05-16
  479. Added a new hook to let other modules decide if a course should be assigned to a particular degree or not.
  480. Removed some redundant database queries to help reduce queries per page load.
  481. 2016-05-11
  482. Added to AdvisingScreen so we add extra classes when a course appears in more than one degree.
  483. 2016-05-10
  484. Created an array in DegreePlan to keep track of every course that degree can possibly use.
  485. Added to $theme when drawing course rows, so we can move the degree_plan around as well.
  486. 2016-05-06
  487. Fixed bug in _CourseList.php, where min_grade wasn't being accurately taken into account when searching for find_best_match() courses.
  488. Added CSS class to the body tag to state what the student's rank is.
  489. Made it so any rendered button gets its title as its class, for extra CSS styling.
  490. 2016-04-22
  491. Added ability to "view/print all" advising histories, just like the comments.
  492. Added track descriptions to what if selection screen
  493. 2016-04-19
  494. Made various changes in AdvisingScreen, and added a new hook, so that course rows could be further themed by
  495. modules, before they are drawn on screen. This is partially so that the prereqs module will more easily work.
  496. Added better CSS to admin.degrees.inc.
  497. 2016-04-14
  498. Added extra functionality to CourseList.
  499. 2016-04-09
  500. To prepare for dealing with prereqs, I changed the way the draw_course_row function is written in AdvisingScreen,
  501. to allow hooks to change elements of it.
  502. 2016-04-06
  503. Fixed isses with db queries which specified '?~?' or similar syntax, which is incompatible with the new PDO system.
  504. Changed checkboxes to use spans with classes for graphics, so we can easily overwrite as needed.
  505. 2016-04-05
  506. Replaced some hard-coded values with constants.
  507. Fixed bug with group titles in view and what if.
  508. Fixed mysql bug in course_search.module, fixed various issues which were causing "notices".
  509. 2016-04-04
  510. Fixed bug in what if selection screen for tracks. Added new javascript function to create CSS-friendly strings.
  511. Added ability in System Settings to show group titles on View and What If screens, not just in print mode.
  512. 2016-04-01
  513. Fixed a bug in user.student.inc where major codes were not being read correctly from student_degrees table.
  514. 2016-03-31
  515. Added option to CourseList function sort_alphabetical_order, to include the degree's advising weight of the degree the course requires first, to make
  516. it also get sorted by degree.
  517. Changed the way semester blocks are drawn in AdvisingScreen, to group degrees together by advising weight, then name, alphabetically.
  518. Made similar changes to AdvisingScreenTypeView. Also added more CSS classes to elements, making it easier to target.
  519. 2016-03-30
  520. Added extra class names when drawing courses and group selection rows. Also, created new CSS class called "selection_highlight" that gets
  521. added and removed over certain items. Updated theme css files to accomodate.
  522. 2016-03-29
  523. Fixed bug in what if selection screen.
  524. Cleaned up student search module a little, added extra CSS so that major codes more stylable.
  525. Also made student_search module PDO compliant, not relying on older mysql_real_escape_string function calls anymore.
  526. 2016-03-28
  527. Implemented hook for fp_get_student_majors().
  528. Added extra CSS classes to degrees in the currently advising box, making it easier to hide them through CSS.
  529. Improved the fp_get_machine_readable() function, altered how form elements are rendered in render.inc so that
  530. elements with weird characters get safely handled.
  531. 2016-03-27
  532. Worked on What If selections screen, to work with new degree track selection configurations.
  533. 2016-03-20
  534. Fixed bug where permissions were not acting correctly in certain circumstances for viewing past advising sessions.
  535. 2016-03-17
  536. Added check on copy degree form to prevent accidental overwriting of existing degrees.
  537. 2016-03-14
  538. Added concept of min/max track selections to degrees. Now, the user will be stopped if they select a number of tracks
  539. outside of the allowed range.
  540. 2016-03-08
  541. Added new permission checks to advise.module, and new permission-- limiting ability of user to only view their
  542. specified advisee's advising sessions. Needed to make that change for something to do with the student_files module.
  543. 2016-03-07
  544. Fixed bug where current draft catalog year wasn't being read correctly in _Course->load_descriptive_data()
  545. Fixed oversight where files input element didn't render attributes array, also added multiple=TRUE for files, too.
  546. 2016-03-02
  547. Made it to where if a group is worth more than 200 hours, its hour counts do not show in the group select row,
  548. or in the popup.
  549. 2016-03-01
  550. Fixed bug where courses were not reflecting the correct group they were assigned, in a multi-degree scenario.
  551. 2016-02-29
  552. Fixed bug where on install, the admin password wasn't set correctly.
  553. 2016-02-23
  554. Fixed issue with Course Search where faculty_id wasn't being saved as CWID, and where
  555. only first 20 rotation schedules were being returned instead of most recent 20.
  556. 2016-02-19
  557. Fixed bug in Copy Degree form submission, related to switch to PDO support.
  558. Fixed bug where min hours for a group weren't making it obtain the correct CSS class.
  559. 2016-02-18
  560. Fixed stray mysql_insert_id() command in _FlightPath.php. Changed to db_insert_id().
  561. Made it to where if you skipped semesters on the degrees page, it will still show the blank
  562. boxes, at least before where you skipped.
  563. Fixed issue so that public notes (on degrees) show up correctly, no matter how many degrees
  564. are being combined.
  565. 2016-02-17
  566. Fixed bug where group id was not being maintained for certain groups in popup window.
  567. Made various changes in an attempt to help speed up page loads.
  568. 2016-02-15
  569. Fixed bug in misc.inc which was causing a new database connection *every time* a connection was requested (instead of re-using the
  570. global one).
  571. 2016-02-13
  572. Fixed bug in install script so that track major codes can have up to 20 characters.
  573. Modified the add degree form, to check to make sure tracks and major codes don't contain spaces,
  574. as well as fall below the 20 character limit.
  575. Fixed but which was intruduced by removing submissions form sessions. As a result, forms which didn't
  576. validate didn't retain values. Instead made it so only password fields were hidden from the session.
  577. Added concept of an "advising weight" to degrees, and on the degree edit form. This lets the admin set
  578. the order in which degrees are presented to a student. Lower weights appear first. Added new popup help
  579. topics to the degree edit page to help explain.
  580. 2016-02-11
  581. Made it to where combined degrees will overwrite semester block titles if they are set to.
  582. 2016-02-09
  583. Fixed MySQL bug when editing groups. Fixed bug where group_min_hours_required should be group_min_hours_allowed in the database.
  584. Fixed bug in degree list filter when not using clean URLs.
  585. Fixed missing argument bug in db.inc for db_affected_rows().
  586. 2016-02-01
  587. Removed section from system.module where submissions were being temporarily stored in the session. It wasn't being used anyway,
  588. and it presented a possible security issue on improperly secured servers.
  589. 2016-01-19
  590. Changed default password scheme to use new D7 inspired PHPass technique, instead of basic md5's. Added new password.inc file, virtually identical to the
  591. one which ships with D7.
  592. 2016-01-14
  593. Converted the advising history tab to use the content render api, so other modules can add content to that page.
  594. Also made it so that past advising histories appear in a collapsible fieldset, to save space.
  595. 2016-01-11
  596. Changed course popup description to use new content render API system.
  597. Added "override_degree_hours" field to degrees and draft_degrees tables, and db_override_degree_hours in the _DegreeClass object,
  598. for future use.
  599. Made small tweaks to fix bugs so installation works correctly.
  600. 2016-01-07
  601. Workng on var hour groups, ie, "min_hours_allowed". Also, added in mechanism for changing the name of FlightPath to something else, if desired.
  602. 2016-01-05
  603. Beginning work on optional min hours for groups.
  604. 2016-01-04
  605. Creating new render api system, for rendering arrays similar to form arrays. This lets other modules hook in to make changes.
  606. Changed forms.inc to render.inc
  607. 2015-12-31
  608. Initial commit of 5.x branch, from 4.10-dev branch. Enough has changed to warrent naming this a new core version.