aboutsummaryrefslogtreecommitdiffstats
path: root/core/application.php
AgeCommit message (Collapse)AuthorFilesLines
2021-08-29Check for "is_file" in the SPL class autoloaderThomas Lange1-4/+8
2021-08-04Use "strpos" to validate "If-None-Match" headerThomas Lange1-14/+5
Remove those "trim" calls and use "strpos" to check if the ETag value generated by the system is contained somewhere in the "If-None-Match" request header sent by the client (if present). With this commit, the ETag header validation now also works with nginx. The nginx web server prefixes the "ETag" header generated by the system with the string "W/" which caused the previous validation code to fail. Instead of using multiple "trim" calls or "preg_replace", we now use a single, simple and fast "strpos" call to check if the system generated Etag hash value is contained in the "If-None-Match" request header.
2021-07-28Migrator: Don't recreate Language object anymoreThomas Lange1-12/+12
Do not force the recreation of the Language object in the migrations.php file anymore by changing the include position of the migrations.php (and the functions.php) in the application.php file a bit to the top.
2021-07-24Remove configuration option "POST.FEED_GUID"Thomas Lange1-2/+1
Remove the configuration option "POST.FEED_GUID" that contained the name of the columns from the database which were passed to the SHA1 function for generating the pseudo GUID for the items in the RSS feed.
2021-07-24Rename configuration options "*.SINGLE_REDIRECT"Thomas Lange1-4/+4
Rename the config options "(CATEGORY|PAGE|POST|USER).SINGLE_REDIRECT" to to "(CATEGORY|PAGE|POST|USER).REDIRECT_SINGLE".
2021-07-23Decrease default feed size from 25 to 10 itemsThomas Lange1-1/+1
2021-07-22Rename: Append "Repository" to repository classesThomas Lange1-4/+4
Rename the repository classes and append the name with "Repository" to prevent naming confusions with the entity classes.
2021-07-19Replace option $ITEM.EMOTICONS with WRAP_EMOTICONSThomas Lange1-4/+1
This commit adds the configuration option "WRAP_EMOTICONS" to supersede the configuration options "(CATEGORY|PAGE|POST|USER).EMOTICONS". If the value of "WRAP_EMOTICONS" evaluates to TRUE, the emoticons found in the content of an item will be wrapped into a "<span>" element which gives the user a description of the emoticon in the "title" attribute.
2021-07-10Remove pages from the RSS feed (readme)Thomas Lange1-3/+0
This commit removes the pages from the RSS feed. I decided so because a page is a "timeless" object intended for things like the imprint, about page, privacy policy and similar stuff. It also makes things easier. The new primary feed URL is "/feed/" and shows only posts. The page feed ("/feed/page/") has been removed and will throw a 404 Not Found error. The visitors who already subscribed to the old post feed ("/feed/post/") are automatically 301-redirected to the new location ("/feed/"). The following system language variables have been removed: * feed_name_items * feed_name_pages * feed_name_posts The following configuration options have been removed: * PAGE.FEED_SIZE * PAGE.FEED_SORT * PAGE.FEED_GUID Furthermore, the template file "feed/item_post.php" has been renamed to "feed/item.php" since there is now only one type of feed item. If the system cannot find the "feed/item.php", it tries "feed/item_post.php" instead (for backward compatibility with older themes).
2021-07-02Include category timestamp in ETag response headerThomas Lange1-12/+13
This commit adds the timestamp of the last modified category to the HTTP ETag response header. Additionally, the code has been optimized.
2021-07-01Add option CATEGORY.LIST_SORT to application.phpThomas Lange1-0/+1
The option CATEGORY.LIST_SORT is currently only used for sorting the children categories of a category, not for sorting the categories on the category overview page. This is because the sorting of the categories in the category overview is handelnd internally with a virtual table column "_depth" which sorts the categories by name *and* its sub categories (like a tree). Thus, there is currently no user option to sort the category overview.
2021-07-01Add category system to categorize posts (readme)Thomas Lange1-0/+7
This commit implements a new category system to categorize posts. Each category can have an unlimited number of nested children categories. A single post don't necessarily need to be in a category, but it can. Each category can have a full content body like posts or pages, so you have enough space to describe the content of your categories. Please note that you need to have at least the following MySQL/MariaDB versions to use the category system, because it uses "WITH RECURSIVE" database queries, the so-called "Common-Table-Expressions (CTE)". MariaDB: 10.2.2 MySQL: 8.0 See: https://mariadb.com/kb/en/with/ See: https://dev.mysql.com/doc/refman/8.0/en/with.html
2021-07-01Add PHP version checkThomas Lange1-0/+7
2021-06-25Reorganize namespacesThomas Lange1-3/+3
2021-06-24Add configuration option MIGRATOR.ENABLEDThomas Lange1-1/+4
2021-06-24Implement database schema MigratorThomas Lange1-0/+5
This commit implements the new database schema Migrator which keeps track of the on-disk schema and the schema used by the codebase. It tries to makes future database schema upgrades user-friendlier.
2021-06-24Set Database attribute in Application classThomas Lange1-13/+0
2021-06-22Implement new Repository and Entity classesThomas Lange1-3/+7
This commit adds new Repository and Entity classes which are better abstracted from the rest of the application. They dont know anymore about configuration options or how to parse to HTML because this is not the job for the ORM but for other parts of the application. The previous commits were a preparation for this big change. An entity now represents just a single record from a specific table of the database – nothing more. The repositories job is it to fetch or update records of the database and instantiate the entities. Another problem that was solved is the high amount of database queries that was needed before. For example, on the blogs home page first were all 10 latest post IDs fetched from the database and then another query was executed with "WHERE id = :id" for *each* single post?! ... This problem is solved with the new repository classes; they now use a single query to fetch and build the entities of the 10 latest posts. This change also solves the problem with database queries spread across the application and limits the exzessive use of try/catch blocks which were used before. The new classes make the whole code much cleaner. :)
2021-06-17Pass configuration array directly to foreachThomas Lange1-8/+3
2021-06-14Remove redundant try/catch blockThomas Lange1-12/+13
Remove the redundant exception handler from core/application.php. The exception handling in the catch block did not differ from the default handler already defined by "set_exception_handler".
2021-06-13Use grid layout for items in administration areaThomas Lange1-2/+2
Introduce a new 1/2/3-column CSS grid layout in the administration area for items on overview pages and in the search results. The column count of the grid depends on the users viewport width. In addition, the default value of the following configuration settings has been changed to 12 because 12 can also be divided by 2 and 3 which is useful for the 1/2/3-column grid layout. ADMIN.PAGE.LIST_SIZE = 12 ADMIN.POST.LIST_SIZE = 12
2021-06-13Add configuration settings (admin prefixes)Thomas Lange1-0/+14
Introduce the following configuration settings to make it possible to use different settings for the number of displayed items and ordering on the administration areas overview pages. ADMIN.PAGE.LIST_SIZE ADMIN.POST.LIST_SIZE ADMIN.USER.LIST_SIZE ADMIN.PAGE.LIST_SORT ADMIN.POST.LIST_SORT ADMIN.USER.LIST_SORT
2019-10-29Remove PHP closing tags and add LF to text filesThomas Lange1-1/+0
Remove the unnecessary PHP closing tags and ensure that *all* text files ending with a LF character.
2019-04-26Rename "standard" template to "default"Thomas Lange1-1/+1
2018-02-14Add configuration option "$ITEM.SINGLE_REDIRECT"Thomas Lange1-0/+3
Each option can be set to "TRUE" or "FALSE" (the default value is "FALSE"). For example, if you only have one user and "USER.SINGLE_REDIRECT" is set to "TRUE", then requests to "/user/" will be automatically redirected to "/user/username/".
2018-01-09Fix spelling mistake in commentsThomas Lange1-2/+2
2017-11-24Fixed a spelling mistake in several comments:Thomas Lange1-2/+2
It's called "override" instead of "overwrite" in those contexts.
2017-11-13The default value for "PATHINFO.PROT" is now "https" if ↵Thomas Lange1-2/+2
$_SERVER['REQUEST_SCHEME'] is not defined (https://github.com/Nerdmind/Blog/issues/8). In addition, the default value for "PATHINFO.HOST" is now "localhost" if $_SERVER['HTTP_HOST'] is not defined.
2017-10-23There was a tiny mistake in the previous commit which has been fixed.Thomas Lange1-1/+2
2017-10-23An overwrite mechanism for the application's configuration has been ↵Thomas Lange1-2/+57
implemented. This makes the configuration.php much cleaner and you only have to define configuration values if the default values doesn't satisfy you. In addition, it makes it easier to implement new configuration values to the core without the need, that the users have to update their personal configuration.php files manually.
2017-09-02Some code optimizations has been made in admin/index.php to prevent ↵Thomas Lange1-2/+2
duplicate definitions of the same SQL query. Additionally, the default database fetch mode was changed to FETCH_ASSOC.
2017-09-02An unnecessary "else" block in admin/auth.php was removed and spelling ↵Thomas Lange1-1/+1
mistakes and inconsistencies in some comments were corrected.
2017-08-10The SQL queries for the HTTP ETag header generation have been combined into ↵Thomas Lange1-11/+8
one single query. In addition, some meaningless code was removed.
2017-04-24Parameter type declaration changed to "Throwable" because this parameter can ↵Thomas Lange1-1/+1
also be an "Error" which is not a child of "Exception" but each type implements the interface "Throwable".
2017-04-12The file "application.php" has been modified.Thomas Lange1-2/+1
2017-04-12Catch block for PDOException was modified.Thomas Lange1-2/+1
2017-04-12The function "set_exception_handler" was modified.Thomas Lange1-3/+2
2017-04-11The control structures "require_once" have been replaced by a simple ↵Thomas Lange1-3/+3
"require" (except within the 403.php and 404.php where it makes sense, because these files can be directly called or included).
2017-03-10Several changes have been made in this commit, which together with the ↵v1.1Thomas Lange1-1/+1
previous commits result in version 1.1: + The rules for the Apache and nginx configuration have been changed and redirects now all requests to the index.php. + A router class has been added which now handles all requests that arrives at the application on the index.php. + Short-hand functions "PAGE", "POST" and "USER" for use in templates added to get specific item data by ID. + More language variables have been added to the core language.
2017-02-24Initial commit.v1.0Thomas Lange1-0/+136