FlightPath 6.x-6.13

Referenced project: 
Release version: 
Release type: 
Bug fixes and new features
Release notes: 

Made an adjustment to system.module's function system_reload_and_cache_course_inventory(), such that we only get the 10 most recent catalog years
when building the course inventory file. We also limit it to 50,000 records, though this might be changed in the future. By making this
change, it keeps the files/cache_data/courses_serialized.info file relatively small and keeps it from growing out of control as more courses
are added and duplicated each year. This in turn uses up less RAM on the server.

On the Status page, the last cron run wasn't being displayed in the user's timezone.

Added small change to batch.js, to make it run slightly faster.

Fixed on-screen text for SMTP module settings page.

Added new property "extra_attribs" to Course object, so other modules can add extra data (as a string) to courses. Cannot contain a ~ as that is a reserved

When building semesters on the Degree or What If screen, made sure that their "req_by_degree_id" was set correctly.

Modifications to advise_init_screen() function, and others, for extended support for other modules.

In the popup group description function (in AdvisingScreen), we now include the group as a non-rendered object in the $render array, so that other
modules can act on it in hook_content_alter().

Added weights to render array for displaying view (Degree and What If), so other modules can more easily manipulate.

Created new hook: hook_init_flightpath_degree(). This allowes modules to act after FlightPath::init() has been called.

Added new method to ObjList, to refresh_indexes(). Should be called after we remove a course from a list manually.

Added new hidden variable to advising screen: reinit_fp_after_draft_save. If set to 'yes', then after a draft save the $fp variable with
perform a fresh init() after a draft save. This is primarily used by other modules which might be making changes to the degree plan in real time,
and do not want to reload the entire student. By default it is set to 'no', replicating existing functionlity that skips that step.

Converted the AdvisingScreen::build_footnotes function to use render array, so other modules can add footnotes if necessary.

Added extra class to pie chart rows-- the total number of intended rows. This lets us target with CSS with more precision.

Small change to popup course description, so repeat hours do not show excess zeroes.

Made changes so that you can have specified repeats in groups with branches.

Made modifications to student_priority module, so that tests can be pulled directly from user attributes, rather than having
the need to run an entire function. Both methods are documented in the .api.php file.

Made a small change in user.module, so that attributes with quotes in the title show dialog correctly.

Fixed documentation error.

Removed hard-coded student priority tests/calculations. Instead, added to the api.php file.

Updated some display code in student_search.

Altered checkbox for inactive students code in student_search submit function.

Small adjustment in engagments-- made email tracking token sha512, and based on microtime + extra randomness to try to ensure uniqueness.

Made it so the system only tries to trim the watchdog once every 7 days, rather than on every cron run.

Added extra wording to some watchdog entries for clarity.

Fixed small bug where CSS class was not being specified on left sidebar items.

During the "duplicate entire catalog year" function, there was a die() statement if a group couldn't be found. Changed
that to simply display a message.

Added new function to DatabaseHandler, where we can request a new advising_session_token, and be guaranteed that it does not already exist. Updated FlightPath class
to make use of it.

Modified user module to make it easier to filter for users. Made it function more like FP 5, where setting a filter actually shows you
all values under that filter, and you don't have to search by letter as well. For students, this is true, except we do not reset values
for "is_active" when searching by letter or other filter values.

Fixed bug when editing user attributes from the users screen, where if no "fields" index is set, we weren't correctly creating a default
field called "value" that's a textfield.

Small modifications to help eliminate bugs in menu items showing in a menu block.

Adjusted hook.api documentation.

Altered alerts to allow for targetting specific faculty/staff by CWID, and NOT sending the alert to the student's advisor. Also, if the student_id
field is left blank, it will show as "N/A" on the Alerts page. This is useful if you have alerts, sent to specific users, which do not
directly have anything to do with a student (ie, system alerts).

Adjusted displays to cope with new alerts setup.

Fixed bug with alert counts.

Fixed bug where hook_update() wouldn't be called if the module was under custom/modules/_dirname (beginning with underscore).

Modified when we render a menu item in HTML, to include more details about its title and path as CSS classes, making it easier
to theme or hide as needed.