]> Kevux Git Server - koopa/log
koopa
6 years agoCleanup: previous commit forgot to unset error message
Kevin Day [Sat, 3 Feb 2018 22:10:17 +0000 (16:10 -0600)]
Cleanup: previous commit forgot to unset error message

6 years agoUpdate: 'handle peer authentication failed for user' postgresql as an access denied...
Kevin Day [Sat, 3 Feb 2018 22:06:06 +0000 (16:06 -0600)]
Update: 'handle peer authentication failed for user' postgresql as an access denied login error

6 years agoFeature: add 'database_user_public_default' option to not use public/anonymous accoun...
Kevin Day [Sat, 3 Feb 2018 21:38:59 +0000 (15:38 -0600)]
Feature: add 'database_user_public_default' option to not use public/anonymous account access to the database

This allows for database-less connections by default.
Some sites may use this, but the primary design of the project focuses on public/anonymous database access.
More work may be necessary.

6 years agoUpdate: partial improvements to error presentation, including passing error_message...
Kevin Day [Sat, 3 Feb 2018 21:09:47 +0000 (15:09 -0600)]
Update: partial improvements to error presentation, including passing error_message to now reserved ':{error_message}' replacement parameter

Process and pass the error message to the string.
It seems that this was not happening.

There are a few other issues:
- arrays were being passed, increasing complexity (unnecessarily).
- use preg_match() instead of direct string comparisons on postgresql error messages to be consistent.
- ':{failure_reasons} array is no longer neded with this change.

While reviewing and making these changes, I noticed that the entire error message process is a bit inconsistent.
I suspect that I had changed how I was processing errors along the process.
More work needs to be done, but that is being put off to later.

6 years agoUpdate: specifically handle known database errors for public account
Kevin Day [Sat, 3 Feb 2018 21:00:52 +0000 (15:00 -0600)]
Update: specifically handle known database errors for public account

This may be useful for diagnosing a mis-configured public account.
Generally, public account access (aka: anonymous) does not use a password.

6 years agoBugfix: inconsistency in c_base_error's s_false() and s_true() NULL value handling
Kevin Day [Sat, 3 Feb 2018 18:39:13 +0000 (12:39 -0600)]
Bugfix: inconsistency in c_base_error's s_false() and s_true() NULL value handling

The comments designate that when NULL is specified, no error should be assigned.
The previous behavior was instead creating a new, empty error.

The error classes also seem to accept NULL values, which will create an empty error array (clearing existing values).
By passing NULL instead of creating an error object makes the behavior consistent with other code.

6 years agoUpdate: provide a temporary/quick-fix solution for displaying an array of error details
Kevin Day [Sat, 3 Feb 2018 06:30:01 +0000 (00:30 -0600)]
Update: provide a temporary/quick-fix solution for displaying an array of error details

6 years agoUpdate: display error messages on server error page
Kevin Day [Sat, 3 Feb 2018 06:13:06 +0000 (00:13 -0600)]
Update: display error messages on server error page

6 years agoBugfix: error message for current user is using incorrect/non-existent variable
Kevin Day [Sat, 3 Feb 2018 06:12:49 +0000 (00:12 -0600)]
Bugfix: error message for current user is using incorrect/non-existent variable

6 years agoUpdate: add list item markup generation support to standard path handlers
Kevin Day [Sat, 3 Feb 2018 06:05:19 +0000 (00:05 -0600)]
Update: add list item markup generation support to standard path handlers

6 years agoBugfix: regular expression parsing logic for error message translation is incorrect
Kevin Day [Sat, 3 Feb 2018 05:56:06 +0000 (23:56 -0600)]
Bugfix: regular expression parsing logic for error message translation is incorrect

preg_replace() may return a non-string, so validate its value before replacing.
- if something goes wrong, then keep original string.

With the use of arguments that begin with ':{' and end with '}', the '/b' command is preventing the regular expressions from working.

If the detail value is not a string, instread provide an empty string for replacement.

6 years agoUpdate: implement account not available or access not available in database
Kevin Day [Sat, 3 Feb 2018 03:56:14 +0000 (21:56 -0600)]
Update: implement account not available or access not available in database

When the account is not in the database or the account has insufficient privileges to access the database, an error needs to be reported.
A new error category is created to handle this with a separate message.

6 years agoBugfix: set_error() must accept an array of errors
Kevin Day [Sat, 3 Feb 2018 03:51:46 +0000 (21:51 -0600)]
Bugfix: set_error() must accept an array of errors

This is considered a bug because the current design of get_error() returns an array if errors.
Prior to this, calling set_error($some_class->get_error()) would result in no error being reported because the array value gets ignored.

With this change, the entire array contents are appended, only if the given array value is a valid error class instance.

6 years agoUpdate: standard path output format test should be available at the standard path...
Kevin Day [Sat, 3 Feb 2018 02:21:49 +0000 (20:21 -0600)]
Update: standard path output format test should be available at the standard path level

The output format is not specific to the user-level pages.
The output format check should be a standard page-level check.

6 years agoBugfix: a few unhandled or improperly error cases
Kevin Day [Sat, 3 Feb 2018 01:51:57 +0000 (19:51 -0600)]
Bugfix: a few unhandled or improperly error cases

6 years agoSecurity: make sure socket file and directory has configurable permissions
Kevin Day [Fri, 2 Feb 2018 00:00:57 +0000 (18:00 -0600)]
Security: make sure socket file and directory has configurable permissions

6 years agoUpdate: add necessary defines to fix problems with ldap deprecation and <sched.h...
Kevin Day [Wed, 31 Jan 2018 04:36:04 +0000 (22:36 -0600)]
Update: add necessary defines to fix problems with ldap deprecation and <sched.h> include issues

On some systems, including <sched.h> does not result in all of tbe necessary defines being enabled without additional defines.
Newer versions of ldap deprecatd and removed currently used functions.

7 years agoProgress: organize some files and some additional markup generation
Kevin Day [Tue, 31 Oct 2017 21:22:21 +0000 (16:22 -0500)]
Progress: organize some files and some additional markup generation

Move some of the user login code to the parent class.
- I can see reason for moving it to the parent's parent class, but I decided to hold off for now until I implement more classes.

Added additional markup generation classes.
- Some other constants where expanded from their HTML names to be more verbose.

7 years agoCleanup: use [] syntax for creating arrays instead of array() syntax
Kevin Day [Wed, 27 Sep 2017 02:38:08 +0000 (21:38 -0500)]
Cleanup: use [] syntax for creating arrays instead of array() syntax

This is now well supported by PHP and simplifies code, slightly.
I tested the code with PHP lint, so there should be no regressions.

7 years agoUpdate: Use PHP namespaces
Kevin Day [Fri, 22 Sep 2017 01:21:33 +0000 (20:21 -0500)]
Update: Use PHP namespaces

This enables the use of PHP namespaces.
The namespaces must be prefixed with 'n_'.
The parent namespace for koopa is 'n_koopa'.

I intend to only use a single depth namespace of n_koopa to keep it simple.
All other names remain unchanged.

This introduces a few problems/caveats:
1) Functions being stored as strings to be called dynamically now need to have '/n_koopa/' in front of them.
2) The standard index file in implementing projects, such as reservations, must still use namespace 'n_koopa' even if their project is different.
- This is because the base classes will call the c_base_defaults_global class.
- All other implementing project files can have their own namespace.
3) Core PHP classes very likely need to have '\' prefixed to them (will update as I encounter them).

This introduced new resolutions:
1) Using namespaces revealed a bug in my code where a class function get_roles() is called on an object that may potentially be a c_base_return_false object.
- I have to review the code and confirm whether or not the code should always be returning the appropriate class or allow other returns.
- For now, I am just adding a quick instance check.

7 years agoProgress: url paths
Kevin Day [Tue, 5 Sep 2017 03:37:24 +0000 (22:37 -0500)]
Progress: url paths

In particular, begin initial work on output formats other than HTML.
- This is initial work and is subject to change (currently a brainstorm).

Add more common paths and appropriate files and classes.
- Most of these classes are stubs and will be populated eventually.

Cleanup the c_base_html class.

Move pr_process_arguments() to c_standard_path where it resides alongside the $arguments class variable.

Be more verbose with the function name pr_paths_create() (now called pr_paths_create_always()).

Add additional columns to the file database table.

7 years agoProgress: User Profile / User View Page
Kevin Day [Mon, 4 Sep 2017 11:17:22 +0000 (06:17 -0500)]
Progress: User Profile / User View Page

The profile images should be file ids and not byteas.
- These columns should also be foreign keys to the file table.

Enable use of profile image in the user object.

Update/Fix the Japanese related translations.

The User Profile / User View page is intended to be a simpler version of the User Settings page with a focus on user information and less focus on user settings values.

7 years agoProgress: user page settings
Kevin Day [Mon, 4 Sep 2017 03:57:35 +0000 (22:57 -0500)]
Progress: user page settings

Fix a logic flaw in the regular expression handling of wildcard paths.
- paths with multiple '/%' where not being properly stripped and such paths (like 'u/view/%/%' where being incorrectly stripped into 'u/view%').
- This resulted in incorrect 'path not found' issues.

Move repeated user content into the core path, adding new class variables as necessary.

Make the default behavior in 'c_standard_path' to include $output_format as well as $arguments.
- $output_format represents the requested output format, the standard being 'html'.
  - mime type integers are used, but strings are supported for non-mimetype presentations, such as 'print' for printer-friendly html.
  - This will allow for every single path to potentially be presented in other formats.
  - The most common formats being 'html', 'print', and 'pdf'.
  - More advanced usage can be used via 'json', which is essentially for AJAX.
  - Because all content may be represented in 'json', it also makes it possible for 3rd-party clients to render a complete page following a standard format without having to parse HTML.
    - This allows for incredibly advanced functionality which can be later utilized by custom clients such as phone-apps that wish to present the data to the user.
    - Furthermore, more advanced accessibility (in the context of ADA) can be used so that HTML does not need to be parsed and more content-specific material may be used with less overhead.
      - This includes allowing for a client, such as a screen-reader, to make explicit content requests.
      - I may, in the near future, implement a raspberry pi screen reader that utilizes this as a proof of concept.
- $arguments represents the processed arguments.

7 years agoProgress: work on user pages
Kevin Day [Sun, 3 Sep 2017 03:38:27 +0000 (22:38 -0500)]
Progress: work on user pages

This makes the PATH_SELF constant for c_standard_path public.
Add new user session handling class.
Add a generic user-specific version of the c_standard_path and have most user path classes extend it.
Populate a basic version of the content menu for user paths.
User paths should accept user ids, handle the arguments.
The print, pdf, and ps paths are also in the url arguments as well as in a separate class path (I need to review the possibilities and pick only 1 method).
Just about all of the user paths, in their current form, are stubs and need to be implemented.

7 years agoUpdate: use late static binding for class constants
Kevin Day [Thu, 31 Aug 2017 23:07:34 +0000 (18:07 -0500)]
Update: use late static binding for class constants

This is done to encourage the use of classes that extend a parent class that only need to change a single constant.
This is done by replacing self:: with static:: for class constants.

see: http://php.net/manual/en/language.oop5.late-static-bindings.php

7 years agoProgress: continued work on user settings
Kevin Day [Thu, 31 Aug 2017 21:16:44 +0000 (16:16 -0500)]
Progress: continued work on user settings

Remove meaningless trailing semicolon.
Organize user page handler constants in alphabetic order.
Add missing user page handler constants, classes, and files.
Use static:: in place of self:: (more to come on why in a follow up commit).
Move the user_view.php contents into user_settings.php and have the user_view class extend the user_settings class.

7 years agoCleanup: restructure user dashboard, login, and logout links to be more consistent...
Kevin Day [Thu, 31 Aug 2017 07:59:10 +0000 (02:59 -0500)]
Cleanup: restructure user dashboard, login, and logout links to be more consistent with the 'user_*' naming

Having all the dashboards called just 'dashboard' is convenient in the general sense, but is more inconsistent when I have a notable amount of 'user_*' names.
Be consistent with the 'user_*' names and have the login, logout, and (user) dashboard files renamed to user_login, user_logout, and user_dashboard.

The other users of 'dashboard' will be updated as needed and as I get to them.

7 years agoCleanup: add missing class object comments for user path classes
Kevin Day [Thu, 31 Aug 2017 07:38:03 +0000 (02:38 -0500)]
Cleanup: add missing class object comments for user path classes

7 years agoBugfix: preserve current login path instead of always redirecting to /u/dashboard
Kevin Day [Thu, 31 Aug 2017 07:19:37 +0000 (02:19 -0500)]
Bugfix: preserve current login path instead of always redirecting to /u/dashboard

If at a given path, such as '/u/view', on login, the default behavior should be to login at that location instead of redirecting to the dashboard.
Add missing include file.
Use c_standard_paths::URI_DASHBOARD_USER instead of the string '/u/dashboard'.

7 years agoProgress: continue working on user view and related
Kevin Day [Wed, 26 Jul 2017 22:13:09 +0000 (17:13 -0500)]
Progress: continue working on user view and related

Add missing functions to relevant tag generation functions.
Add additional text and translations.
Add user access history.
Error handling in user view generation is incomplete.

7 years agoSecurity: sanitize all markup 'text' as plain text before output
Kevin Day [Wed, 26 Jul 2017 22:12:35 +0000 (17:12 -0500)]
Security: sanitize all markup 'text' as plain text before output

7 years agoProgress: continued work on user and login, also miscellaneous fixes
Kevin Day [Wed, 26 Jul 2017 17:24:58 +0000 (12:24 -0500)]
Progress: continued work on user and login, also miscellaneous fixes

Be sure to write to the connection log only after the session information has been loaded so that a valid session expires value is used.
The public user log table needs to have database-specific role and not standard role for insert access checks.
Process the database password failure string on login.
The table caption and caption tag code was not fully completed.
Style cleanups.

7 years agoProgress: add table markup, populate user history information, fix time-related issue...
Kevin Day [Wed, 26 Jul 2017 02:17:47 +0000 (21:17 -0500)]
Progress: add table markup, populate user history information, fix time-related issues, and other fixes

Add basic support for generating table markup.
- This might be extra unnecessary code, but then again it allows for the functions to be extended so that <table> could potentially be replaced with <div>.
- Some of the markup tags are being renamed to improve readability.

Build a basic history information using the table markup.
- This is initially created as an example/concept and I intend to come back and finish it in the future.

Functions like s_get_date() should render localtime from a UTC timestamp, instead of UTC time from a UTC timestamp.

7 years agoCleanup: rename and relocate request path statistics database table
Kevin Day [Tue, 25 Jul 2017 21:30:32 +0000 (16:30 -0500)]
Cleanup: rename and relocate request path statistics database table

The context of the statistics is misleading, so rename the database and all related content to have HTTP in the name.
Move the code into the standard statistics sql file.

7 years agoProgress: continue to develop logging and fix other issues
Kevin Day [Tue, 25 Jul 2017 19:14:15 +0000 (14:14 -0500)]
Progress: continue to develop logging and fix other issues

Corrected typo in c_base_return_arrray (removing the extra 'r').

Add get_request_headers() function to c_base_http.

Fix problems in return value of c_base_http::get_request_uri_relative().

Add get_request_uri_query() function to c_base_http.

Incorrect constant name used in p_load_request_accept_datetime().

Add function pr_do_log_user_activity() to c_standard_index to log access logs and responses to the database.

7 years agoBugfix: problems with cookies and related functions
Kevin Day [Tue, 25 Jul 2017 18:11:06 +0000 (13:11 -0500)]
Bugfix: problems with cookies and related functions

The get_max_age() and get_expires() functions should support returning NULL.
The set_expires() function parameter tests are incorrect.

Try to return 0 for max age and expires.
- My documentation states that if both expires and max age are 0, then a session cookie is used.
- Therefore, avoid that until I have to double check the standards and my code.

I missed a few underscore to dash conversions in the HTTP header processing code.

Added a 'response_encoding' parameter so that I could quickly test and confirm if the encoding is causing any problems.

7 years agoBugfix: The global s_get_timestamp() function is returning current time instead of...
Kevin Day [Thu, 13 Jul 2017 03:04:23 +0000 (22:04 -0500)]
Bugfix: The global s_get_timestamp() function is returning current time instead of requested time

It looks like I copied the s_get_date() function and forgot to properly updated it (or got confused and forgot what I was working on).
Either way, the implementation is incorrect and does not produce the correct timestamp.

The function is rewritten to only support a time string to be formatted into a unix timestamp float.

The base_defaults_global implementation is also not consistent with the one in reservation_defaults_global.
The base_defaults_global is intended to be a default example implementation where reservation_defaults_global is an implementation specific to the reservation system.

The postgresql default datetime string format is provided as a global constant in the database class for consistency.

7 years agoUpdate: Do not force '-' into '_' in HTTP Header names, handle extra names, update...
Kevin Day [Thu, 13 Jul 2017 02:07:38 +0000 (21:07 -0500)]
Update: Do not force '-' into '_' in HTTP Header names, handle extra names, update comments

Apache may provide header names with '_' in place of '-', causing problems.
The standard allows for '_' and as such '_' and '-' should be mutually exclusive.

My previous behavior is to force all '-' to '_', but I believe this to be bad practice as a default behavior.
I may come back and either provide commented out code, apache-specific tests, or an example patch to apache source code.
Each approach has its problems and advantages.
I will address that issue at a later time.

Handle additional known PHP-provided HTTP headers when getallheaders() is unavailable.

Update the comments in the header processing function.

7 years agoUpdate: provide breadcrumbs at current path and plan on having login-specific path...
Kevin Day [Thu, 15 Jun 2017 05:08:11 +0000 (00:08 -0500)]
Update: provide breadcrumbs at current path and plan on having login-specific path handling

This provides breadcrumbs 'at feet' instead of 'behind feet'.
The idea is that the breadcrumbs will show the current path as well as the path history (based on site structure, not browser/navigation history).

Plan on having the login handler provide (and possibly conditionally so) the path of the current page instead of the login page.
The login handler will show up on different pages than just 'u/login'.
Those pages should display their breadcrumb path instead of the login path (unless otherwise hidden).
One possible method is to pass the parent handler's path to the child path.

7 years agoProgress: work on view pages, numerous bugfixes and cleanups
Kevin Day [Thu, 15 Jun 2017 03:44:50 +0000 (22:44 -0500)]
Progress: work on view pages, numerous bugfixes and cleanups

7 years agoUpdate: remove currently unused or incorrect sql data
Kevin Day [Wed, 31 May 2017 03:46:41 +0000 (22:46 -0500)]
Update: remove currently unused or incorrect sql data

7 years agoProgress: rolling out the roler, the "can manage roles" role
Kevin Day [Sat, 27 May 2017 02:40:52 +0000 (21:40 -0500)]
Progress: rolling out the roler, the "can manage roles" role

Using "can manage roles" was inconsistent with how I use the "is_X" role behavior but it is also similar enough that I feel that it should be an "is_X".
To try to make it consistent, I decided to invent a new word that fits the behavior: roler (Not to be confused with roller).

Just like how I abused the word "administrator" as "administer", I am abusing the words "role manager" as "roler".

7 years agoProgress: further work on user view page, documentation changes, more global constant...
Kevin Day [Sat, 27 May 2017 02:05:41 +0000 (21:05 -0500)]
Progress: further work on user view page, documentation changes, more global constants, try to get more consistent return types

One of the downsides of my design is the complex return type handling.
The code because easier when tests do not have to be performed.

I want to provide a way to return a class as a default but provide a way to say that there was no value stored.
Instead of returning the NULL return type class, return the preferred class with an error flag set to "not defined".

This simplifies the code, especially some of the code used on the user view page.

7 years agoProgress: work on user administration pages
Kevin Day [Fri, 26 May 2017 04:02:25 +0000 (23:02 -0500)]
Progress: work on user administration pages

7 years agoBugfix: add missing column 'can_manage_roles' in public.v_users_self
Kevin Day [Tue, 23 May 2017 02:15:10 +0000 (21:15 -0500)]
Bugfix: add missing column 'can_manage_roles' in public.v_users_self

I originally intended to only provide the necessary columns.
However, in an attempt to simplify the PHP end of this, I decided to add NULL columns for such cases.
When I did this, I overlooked the 'can_manage_roles' column.

Looking at this, I might also be better of setting the values to FALSE instead of null::bool where is can be easily determined to be FALSE.

7 years agoProgress: finish implementing basic breadcrumb functionality, add initial user settin...
Kevin Day [Tue, 23 May 2017 02:12:34 +0000 (21:12 -0500)]
Progress: finish implementing basic breadcrumb functionality, add initial user settings pages

I ended up creating a new class called c_base_array when implementing the breadcrumb functionality.
I plan to eventually convert all related/similar types into this class.

User setting pages have some initial work completed.

7 years agoBugfix: mistakes in path parameters and return values, also add a return value to...
Kevin Day [Tue, 16 May 2017 04:48:51 +0000 (23:48 -0500)]
Bugfix: mistakes in path parameters and return values, also add a return value to breadcrumb processing function

7 years agoProgress: work on breadcrumbs and related
Kevin Day [Fri, 12 May 2017 21:13:01 +0000 (16:13 -0500)]
Progress: work on breadcrumbs and related

7 years agoProgress: path, breadcrumbs, and menus
Kevin Day [Wed, 10 May 2017 15:57:13 +0000 (10:57 -0500)]
Progress: path, breadcrumbs, and menus

Continuing work on paths, now starting to add support for breadcrumbs and menus.

7 years agoCleanup: add documentation about loops and this projects design practices regarding...
Kevin Day [Thu, 4 May 2017 19:38:35 +0000 (14:38 -0500)]
Cleanup: add documentation about loops and this projects design practices regarding them

7 years agoProgress: minor cleanups and bugfixes, prepare management and administration dashboards
Kevin Day [Thu, 4 May 2017 04:24:15 +0000 (23:24 -0500)]
Progress: minor cleanups and bugfixes, prepare management and administration dashboards

7 years agoProgress: standard path structure and functionality and other changes
Kevin Day [Wed, 3 May 2017 21:01:21 +0000 (16:01 -0500)]
Progress: standard path structure and functionality and other changes

Made changes to the standard path structure and functionality.
It should be more extensible because the create html function has been exploded into multiple sub-parts via protected functions.

Additional changes and fixes.

7 years agoCleanup: make sure stylesheet/external/ and related directories are ignored by git...
Kevin Day [Wed, 3 May 2017 13:17:51 +0000 (08:17 -0500)]
Cleanup: make sure stylesheet/external/ and related directories are ignored by git repository

THe stylesheet/external/ directory will be for storing 3rd-party (aka: external) css.

I am currently investigating different css libraries to include, such as:
- full_calendar
- jquery_mobile
- html5_shiv

The same goes for the images/external/ directory.

7 years agoCleanup: make sure javascript/external/ directory is ignored by git repository
Kevin Day [Wed, 3 May 2017 04:04:59 +0000 (23:04 -0500)]
Cleanup: make sure javascript/external/ directory is ignored by git repository

THe javascript/external/ directory will be for storing 3rd-party (aka: external) javascript.

I am currently investigating different javascript libraries to include, such as:
- fullcalendar
- jquery_mobile

7 years agoCleanup: re-structure the database sql for standard and reservation
Kevin Day [Wed, 3 May 2017 02:54:16 +0000 (21:54 -0500)]
Cleanup: re-structure the database sql for standard and reservation

To avoid having duplicate queries, I moved all the permission related information for standard into a separate sql file.
- This allows for referencing the standard sql files as part of the install, without having to modify them for name changes.

The only files that should need to be replaced from standard are standard-first.sql, standard-permissions.sql, and standard-last.sql.

I changed all references of u_standard and r_standard to u_reservation and r_reservation to generate the reservation specific versions of standard-first.sql, standard-permissions.sql, and standard-last.
- These changes were saved in their respective reservation equivalent files: reservation-first.sql, reservation-permissions.sql, and reservation-last.

While making these changes, I noticed that there is a way to disable all triggers for a table so that I can alter content without a trigger being 'triggered'.
- This made it easy for me to move some special cases to the standard-permissions.sql file.

7 years agoProgress: standard path design, database accounts, database logging, and other fixes
Kevin Day [Tue, 2 May 2017 21:42:03 +0000 (16:42 -0500)]
Progress: standard path design, database accounts, database logging, and other fixes

Move all of the execute parameters into the c_standard_path class so that it does not have to be passed to every function.
- Down the road, I may just have the execution function without parameters and use a separate function for assigning the parameters to the class.

Make sure the database accounts exist in the user table.
- Ldap synchronization on login is now functioning.
- Non-LDAP does not synchronize or change account settings on login.
- There is currently no 3rd-party database/structure/design to use as a basis for auto-assigning roles, therefore roles must be manually assigned to the each user.
  - This manual assignment will still auto-update the postgresql roles, so only the is_* columns need to be altered and postgresql roles will automatically follow via triggers.

The first part of the database logging is setup and working.
- There is much more work to do.

Other fixes and changes.

7 years agoCleanup: do not explicitly specify public when referencing v_users_self_locked_not
Kevin Day [Tue, 2 May 2017 19:25:55 +0000 (14:25 -0500)]
Cleanup: do not explicitly specify public when referencing v_users_self_locked_not

7 years agoCleanup: remove some debug code accidentally committed
Kevin Day [Tue, 2 May 2017 19:14:57 +0000 (14:14 -0500)]
Cleanup: remove some debug code accidentally committed

7 years agoProgress: log tables and related code out of sync and other fixes
Kevin Day [Tue, 2 May 2017 19:12:14 +0000 (14:12 -0500)]
Progress: log tables and related code out of sync and other fixes

The log settings became noticably out of date between the code and the database.
Significant changes are made, dealing with the database and its usage.
Switched to timezone that supports timezone by default and then set standard behavior to use UTC timezone.

7 years agoBugfix: incorrect session name in use
Kevin Day [Tue, 2 May 2017 06:00:50 +0000 (01:00 -0500)]
Bugfix: incorrect session name in use

7 years agoProgress: move code from reservation to standard and other fixes
Kevin Day [Tue, 2 May 2017 05:08:52 +0000 (00:08 -0500)]
Progress: move code from reservation to standard and other fixes

I've now determined what would be a good basis for using a 'standard' structure.
Standard would be a minimal website used by most of my projects here, but it is not part of the base so that other developers do not have to use it at all.
This allows for more development flexibility while still providing a common default.

Most of the reservation example program code was moved into standard, including sql code.

7 years agoCleanup: use 'minute' and 'second' (without s) for time- css class
Kevin Day [Fri, 28 Apr 2017 04:34:16 +0000 (23:34 -0500)]
Cleanup: use 'minute' and 'second' (without s) for time- css class

7 years agoProgress: more development with paths, additional html processing,
Kevin Day [Fri, 28 Apr 2017 03:28:43 +0000 (22:28 -0500)]
Progress: more development with paths, additional html processing,

More work with paths.
Add additional data to HTML, restructuring code as necessary.
- Now includes class names by date and path (assigned to <body>).
- Add sanitizer, I used drupal 7's css sanitizer as a reference (just their preg_replace() part).

Functions like get_is_root() is a bit awkward, change the behavior and name to be more suitable.
- get_is_root() and set_is_root() are both now is_root() such that is_root() functions as get_is_root() when no parameters are specified and functions as set_is_root() when parameters are specified.
- this is repeated for all other similar functions.

I decided to separate /a/ paths into two paths:
- /a/ - administrative paths (for advanced and technical administration).
- /m/ - management paths (which is where most of the non-user related website logged in access will be involved in).

Other fixes and changes.

7 years agoUpdate: put logged in status inside of c_base_session and cleanup function ordering
Kevin Day [Thu, 27 Apr 2017 12:48:10 +0000 (07:48 -0500)]
Update: put logged in status inside of c_base_session and cleanup function ordering

7 years agoProgress: work on http request processing, path processing, and other fixes
Kevin Day [Thu, 27 Apr 2017 05:07:06 +0000 (00:07 -0500)]
Progress: work on http request processing, path processing, and other fixes

Process the HTTP request methods, such as GET, POST, HEAD, OPTIONS, etc...
Add validation against these request methods on a per path basis.

Improve path processing logic (there is still more work to do).

Other fixes and improvements.
I specifically added an nginx example configuration file (it still requires separate PHP-fcgi configuration).

7 years agoBugfix: http request uri and http response location fixes
Kevin Day [Wed, 26 Apr 2017 16:10:41 +0000 (11:10 -0500)]
Bugfix: http request uri and http response location fixes

The request uri should include the scheme and authority where possible.
Fix a syntax error containing '$$' instead of '$'.

The response location needs to fully support an array.

7 years agoBugfix: uri processing code is not handling authority correctly
Kevin Day [Wed, 26 Apr 2017 16:01:29 +0000 (11:01 -0500)]
Bugfix: uri processing code is not handling authority correctly

The authority is now being processed after scheme is found in a url.
The authority now properly returns success when a forward slash is found.

7 years agoUpdate: implement custom language support in regular paths in the same way internal...
Kevin Day [Wed, 26 Apr 2017 15:09:57 +0000 (10:09 -0500)]
Update: implement custom language support in regular paths in the same way internal paths implement custom languages

7 years agoBugfix: redirect arguments in c_reservation_path_user_login() are incorrect
Kevin Day [Wed, 26 Apr 2017 15:06:34 +0000 (10:06 -0500)]
Bugfix: redirect arguments in c_reservation_path_user_login() are incorrect

7 years agoUpdate: add s_return() as a non-valued alternative to s_value() for error handling
Kevin Day [Wed, 26 Apr 2017 15:04:31 +0000 (10:04 -0500)]
Update: add s_return() as a non-valued alternative to s_value() for error handling

7 years agoBugfix: internal pages were not processing language after redesign and use fix paths...
Kevin Day [Wed, 26 Apr 2017 13:21:32 +0000 (08:21 -0500)]
Bugfix: internal pages were not processing language after redesign and use fix paths output handling

When I wrote the language handling into the initial setting load function and then changed the output handling to be more dynamic, I forgot to update p_include_path().
Get rid of the loop when deciding the language include file suffix and only use the last entry in the aliases array (generally the shortest).
There were some cases where I was still using $this->html instead of $this->content.
Be more consistent by using $this->output instead of $this->content.

7 years agoProgress: more path management changes, imrpove languages support, and other fixes
Kevin Day [Wed, 26 Apr 2017 03:25:00 +0000 (22:25 -0500)]
Progress: more path management changes, imrpove languages support, and other fixes

Continue developing path handling functionality.
I've decided to implement language handling as sub-classes, using japanese as the first language to test with.
Other bugfixes and tweaks.

7 years agoProgress: designing path handling, designing form processing, and other fixes.
Kevin Day [Mon, 24 Apr 2017 21:26:39 +0000 (16:26 -0500)]
Progress: designing path handling, designing form processing, and other fixes.

Path management is done via classes.
The form processing code is just a rough draft of ideas and is subject to massive changes.

7 years agoUpdate: add basic documentation on my url path naming practices
Kevin Day [Wed, 19 Apr 2017 19:36:16 +0000 (14:36 -0500)]
Update: add basic documentation on my url path naming practices

7 years agoProgress: improve language support when using global data, add headers in some tests...
Kevin Day [Wed, 19 Apr 2017 18:53:47 +0000 (13:53 -0500)]
Progress: improve language support when using global data, add headers in some tests programs, and fix language related issues

When I moved languages into the global defaults class, I missed a few chunks of code that needed to be updated.
I noticed that some of the tests were not printing any headers.
Allow for setting content-language with multiple languages, as is the case with one of the tests using japanese and english.

7 years agoUpdate: implement and use more global values, simplify http response return values...
Kevin Day [Wed, 19 Apr 2017 14:52:33 +0000 (09:52 -0500)]
Update: implement and use more global values, simplify http response return values, implement content-range, other changes/fixes

The time functions have been moved into the global default class.
The http language class has been moved into the global default class.

The return values for HTTP response functions have been set to their specific type, instead of always FALSE.
This makes it easier to handle the return value without caring about errors.
Any unsupported functionality continues to return FALSE until such time I read the appropriate part of the standards and implement the functionality.

Content-Range response is now implemented.

I noticed that I have been inconsistently using $ps_ and $s_ for private static class variables.
I removed $ps_ that in favor of $s_ only because it was the simpler change.
I may end up coming back later and changing all private static to $ps_ (or not..).

While making the time values global, I noticed that PHP does not always guarantee microseconds to be populated.
Special handling is necessary and so I created more global static functions to handle this complicated situation.

I've observed and fixed some simple mistakes, bugs, typos, etc...

7 years agoProgress: work on path handling, other minor changes
Kevin Day [Fri, 7 Apr 2017 05:32:59 +0000 (00:32 -0500)]
Progress: work on path handling, other minor changes

I changed my approach half-way through this and will need to come back and clean out a lot of unecessary code.
Some decisions still need to be made on certain aspects.

7 years agoProgress: more work on path libary, fix problems with some return values
Kevin Day [Thu, 6 Apr 2017 03:18:14 +0000 (22:18 -0500)]
Progress: more work on path libary, fix problems with some return values

Did a small amount of grunt work in setting up the path class.

I noticed that I had, in a good number of cases, forgot to include the 'new' reserved word when returning c_base_return_false().

7 years agoCleanup: set the default examples and program settings for connecting to the database...
Kevin Day [Wed, 5 Apr 2017 02:56:01 +0000 (21:56 -0500)]
Cleanup: set the default examples and program settings for connecting to the database to non-ssl

This simplifies the work necessary for testing and initial setups.
Setting up a cert is extra work, so do no use it by default for database calls.

7 years agoUpdate: improve return values used in c_base_utf8 class functions (and related)
Kevin Day [Wed, 5 Apr 2017 02:52:23 +0000 (21:52 -0500)]
Update: improve return values used in c_base_utf8 class functions (and related)

I believe I was returning TRUE/FALSE types out of habit and for consistency.
For string processing functions, it makes far more sense to always return a c_base_return_string.
This simplifies the code the caller has to write.

The caller can still identify errors using the c_base_return::s_has_error() function.
The caller need only to call ->get_value_exact() if they do not care whether an error occured.
This will always return a string (and on error, it returns an empty string).

7 years agoProgress: major database work, begin adding path handling, and other changes
Kevin Day [Tue, 4 Apr 2017 03:50:50 +0000 (22:50 -0500)]
Progress: major database work, begin adding path handling, and other changes

More focus on database changes.
Begin adding path handling.
Custom utf8 function changes.
Other changes.

7 years agoCleanup: improve wording of the project description in the github readme file
Kevin Day [Mon, 3 Apr 2017 01:03:43 +0000 (20:03 -0500)]
Cleanup: improve wording of the project description in the github readme file

7 years agoUpdate: rework access control to be automatic based on is_* roles in the t_users...
Kevin Day [Sat, 1 Apr 2017 06:05:11 +0000 (01:05 -0500)]
Update: rework access control to be automatic based on is_* roles in the t_users table

Instead of trying to use select queries on every statement based on a users role, have the database automatical grant/revoke roles based on column settings in the s_tables.t_users table.
u_public and r_public have been renamed to be u_reservation_public and r_reservation_public to keep all roles self-contained.
name_machine fields should now only allow word characters.

7 years agoProgress: improve access control database structure and other changes
Kevin Day [Thu, 30 Mar 2017 17:34:35 +0000 (12:34 -0500)]
Progress: improve access control database structure and other changes

Numerous changes, but there has been a huge focus on access control changes.
It occurred to me that if an account was locked or deleted, then they should be denied access to all of the views (with exception of the current user views).
This required a notable structural change.

The tables are now stored in the s_table schema.
In case accounts get locked, even administer accounts, access should be disabled.
I did not get the time to convert all of the administer and manager roles to be restricted to views but will eventually do so.

7 years agoProgress: major database work and other changes
Kevin Day [Thu, 23 Mar 2017 04:54:24 +0000 (23:54 -0500)]
Progress: major database work and other changes

7 years agoProgress: continuing development, http headers work
Kevin Day [Wed, 8 Mar 2017 05:48:31 +0000 (23:48 -0600)]
Progress: continuing development, http headers work

More progress with writing HTTP header processing code.

Other minor bugfixes and changes.

7 years agoProgress: continuing development, http headers work
Kevin Day [Mon, 6 Mar 2017 03:23:04 +0000 (21:23 -0600)]
Progress: continuing development, http headers work

Fixed some syntax and logic issues.
Implemented more functionality (there still a lot more to finish).

Began added a little more documentation.

I've noticed some incomplete code in places and marked them with @todo.

Other minor fixes/changes.

7 years agoBugfix: operating on non-existent array index in p_s_split() of c_base_utf8
Kevin Day [Mon, 6 Mar 2017 00:50:15 +0000 (18:50 -0600)]
Bugfix: operating on non-existent array index in p_s_split() of c_base_utf8

This causes PHP to crash as it does not like operating against non-existant indexes.

7 years agoProgress: continuing development, http headers work
Kevin Day [Sat, 4 Mar 2017 04:45:15 +0000 (22:45 -0600)]
Progress: continuing development, http headers work

There is still a lot more to go, but this resolves some of the @todo's in the http headers class.

I have noticed that in some cases I called a prepare_token function and the return value has parsed in the name.
- The parsed name is used for parsing functions and generally returns an array.
- Based on the name, I could easily mistake the purpose of the return value for the prepare_token (or similar) functions.
- These prepare functions now use prepared in place of parsed to make reading the code more consistent.
- There are some functions that make this incorrect interpretation and they must be rewritten accordingly.

There are also other minor changes.

7 years agoProgress: continuing development, updated test example, added language testing, misce...
Kevin Day [Fri, 3 Mar 2017 07:23:53 +0000 (01:23 -0600)]
Progress: continuing development, updated test example, added language testing, miscellaneous fixes

Did some testing and made sure the test example was working.

Added some languages for testing.
- I specifically added japanese as a language to test for error messages because it is so different from english.
- It is not practical to implement the error messages class for many languages right now because I expect major refactoring as I continue coding.
- Another simple language test is added, testing the languages: russian, spanish, japanese, and english.

More work done on in developing the database.

Other fixes and changes.

7 years agoProgress: continuing development, database work, use c_base_return on more classes...
Kevin Day [Sat, 25 Feb 2017 01:18:28 +0000 (19:18 -0600)]
Progress: continuing development, database work, use c_base_return on more classes, and fix inconsistencies

Further work on building the database structure.

Added some missing roles:
- Requester
- Editor

A number of inconsistencies have been identified and resolved.

After reviewing my use of c_base_cookie as extending the class c_base_return, I have decided that to do that everywhere possible.
This simplifies the return structure that I complicated when I decided to use the c_base_return return type development design.

I noticed that there is still some cookie functionality that I could implement.
This adds support for 'same site' and 'host only'.
These are functionally equivalent except that I think 'same site' is a little more granular.

This also adds one of my test scripts under examples.
It is very likely not completely up to date with the database changes.

Many other changes.

7 years agoProgress: continuing development, more http header support, implemented error reporting
Kevin Day [Wed, 22 Feb 2017 04:55:04 +0000 (22:55 -0600)]
Progress: continuing development, more http header support, implemented error reporting

I noticed that there are a lot of incomplete functions in the http class.
This, in particular, implements cookie support.
There is still a lot more incomplete code in the http class.

My initial error reporting work is done.
Expect major refactoring as I continue developing.

After some testing, I have foind the php-xz module to be lacking and defunct.
I also noticed that there are multiple relevant repositories to choose from (added both to documentation).

Numerous other changes.

7 years agoProgress: continuing development, more documentation and database work
Kevin Day [Tue, 21 Feb 2017 04:45:00 +0000 (22:45 -0600)]
Progress: continuing development, more documentation and database work

Begin working on the database for the reservation program.

Write some documentation.

I am just starting to get work done on adding error messages (multi-lingual friendly at that).

Many other changes.

7 years agoBugfix: silence socket_connect() warnings/errors
Kevin Day [Mon, 20 Feb 2017 04:18:58 +0000 (22:18 -0600)]
Bugfix: silence socket_connect() warnings/errors

7 years agoCleanup: reservation_session.php is not following programming style
Kevin Day [Mon, 20 Feb 2017 04:17:19 +0000 (22:17 -0600)]
Cleanup: reservation_session.php is not following programming style

The referenced code is not calling unset() as necessary according to this projects coding practices.

7 years agoCleanup: remove extra/unecessary postgresql comments for create_ldap_users
Kevin Day [Mon, 20 Feb 2017 04:17:04 +0000 (22:17 -0600)]
Cleanup: remove extra/unecessary postgresql comments for create_ldap_users

7 years agoBugfix: database user 'public users' should instead be 'public_user'
Kevin Day [Mon, 20 Feb 2017 03:09:27 +0000 (21:09 -0600)]
Bugfix: database user 'public users' should instead be 'public_user'

7 years agoUpdate: add custom/experimental sessionize accounts and postgresql account auto-creat...
Kevin Day [Sat, 18 Feb 2017 23:00:09 +0000 (17:00 -0600)]
Update: add custom/experimental sessionize accounts and postgresql account auto-creation programs/scripts

This adds some experimental helpers for either creating postgresql accounts via ldap or providing session management independent of PHP.

Some of the C code is not using threads but likely should.
I will eventually come back and make a threaded version.

7 years agoProgress: continuing development, adding examples and example program: reservation
Kevin Day [Sat, 18 Feb 2017 22:41:18 +0000 (16:41 -0600)]
Progress: continuing development, adding examples and example program: reservation

For the sake of functionality and time, I implemented a straight-forward HTML class.
I will come back later to work on CML that will be an attempt to separate the context from the content, even in the code.

There is a (currently) experimental program called reservation.
This is a reservation/scheduling system that is currently under design and will be used as a functional example for using this site.
It currently requires LDAP and a few other custom/experimental software that is to follow.
The sql code is postgresql-specific.

Other examples are included in the example direction.

There are some theme files that I am probably not going to use and may remove in the future.

7 years agoUpdate: initial import, including incomplete work
Kevin Day [Sat, 17 Dec 2016 20:24:08 +0000 (14:24 -0600)]
Update: initial import, including incomplete work

I wanted to complete all of the common/base work first, but I ended up getting side-tracked.
With the holidays, I realize that I would not finish this in time and I needed to at the very least ensure all of my hard work is not lost.

Much of the base work is complete except for the following:
- HTML and HTML tag related processing.
- Form processing.

I have not decided how I want to design forms and I expect this to be the weakest part of my code design.
How this will end up being developed will directly affect how the HTML processing code is built.