Age | Commit message (Collapse) | Author | Files | Lines |
|
Follow PSR-12 and use lowercase variants of PHP reserved keywords.
See: https://www.php-fig.org/psr/psr-12/#25-keywords-and-types
Find all uppercase occurrences of "or", "and", "null", "true" and
"false" and change them to the lowercase variant.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
Rename the config options "(CATEGORY|PAGE|POST|USER).SINGLE_REDIRECT" to
to "(CATEGORY|PAGE|POST|USER).REDIRECT_SINGLE".
|
|
|
|
Rename the repository classes and append the name with "Repository" to
prevent naming confusions with the entity classes.
|
|
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.
|
|
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).
|
|
This commit adds the timestamp of the last modified category to the HTTP
ETag response header. Additionally, the code has been optimized.
|
|
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.
|
|
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
|
|
|
|
|
|
|
|
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.
|
|
|
|
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. :)
|
|
|
|
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".
|
|
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
|
|
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
|
|
Remove the unnecessary PHP closing tags and ensure that *all* text files ending with a LF character.
|
|
|
|
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/".
|
|
|
|
It's called "override" instead of "overwrite" in those contexts.
|
|
$_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.
|
|
|
|
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.
|
|
duplicate definitions of the same SQL query. Additionally, the default database fetch mode was changed to FETCH_ASSOC.
|
|
mistakes and inconsistencies in some comments were corrected.
|
|
one single query. In addition, some meaningless code was removed.
|
|
also be an "Error" which is not a child of "Exception" but each type implements the interface "Throwable".
|
|
|
|
|
|
|
|
"require" (except within the 403.php and 404.php where it makes sense, because these files can be directly called or included).
|
|
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.
|
|
|