Age | Commit message (Collapse) | Author | Files | Lines |
|
Add a user and category filter option for the post search in the
administration area. Filter on default theme is followed later.
|
|
Move the methods for the search functionality of the abstract Repository
class into a separate trait and use it in the Page and Post repository.
The reason because of this is that only the Page and Post repositories
having a search functionality, while the other repositories have not.
|
|
Add pagination for search results in the admin and default theme.
|
|
|
|
Do not redefine properties that are already defined in the Entity class.
|
|
Rename the repository classes and append the name with "Repository" to
prevent naming confusions with the entity classes.
|
|
This commit implements a new feature called *content functions* that is
similar but much more powerful than the already existing *content tags*
which you may have already used (`{POST[1]}`, for example).
You now can also add your own *content functions* to do some interesting
things like embedding a YouTube video or other things to prevent typing
repetitive lines of text or code in your entities content.
Read the corresponding wiki page to learn more about this:
https://github.com/Nerdmind/Blog/wiki/Content-functions
|
|
|
|
Classes:
* Parsers\ArgumentParser
* Parsers\EmoticonParser
* Parsers\MarkdownParser
Interfaces:
* Parsers\ParserInterface
|
|
Reduce the redundant mapping logic in the repository classes by using
the new methods "fetchEntity" and "fetchEntities".
|
|
|
|
Reuse the already defined prepared statement in the update method of
the Category repository instead of creating a new one.
|
|
If the migration table does not yet exist, the user sits *either* at 0,
1, 2, 3 or 4; not *between* 0 and 4 (which would be 1, 2 or 3).
|
|
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 updates the database schema and adds a new migration for the
upcoming category system. Please note that you need to have at least the
following MySQL/MariaDB versions to use the category system later:
MariaDB: 10.2.2
MySQL: 8.0
|
|
Explicitly check for boolean FALSE because the result can be string "0"
when directly upgrading from release v1.0 which has schema version "0".
|
|
This commit updates the database schema and adds a new migration to
modify the signed integer columns to make them unsigned.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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. :)
|
|
|
|
|
|
|
|
|
|
|
|
This commit replaces all calls to "$Item->getURL()" with calls to the
previously added "getEntityURL" method of the "Application" class.
|
|
This commit adds the method "getEntityURL" to the "Application" class.
This method takes an instance of "Item" as parameter and then builds
the absolute URL of the item from its attribute data.
|
|
|
|
|
|
|
|
This commit removes the "getRandomValue" function. In addition, the
Application class now calls PHPs "random_bytes" function directly.
|
|
This commit updates the Parsedown library to version 1.7.4. The patch to
prevent tab indentations in code blocks from being converted to spaces
is already applied here.
See: 78c5974cd34559d0130d8be509935e2c992cd9ca
|
|
In addition to the last commit, remove the unnecessary PHP closing tags from the end of the files and ensure that the files ending with an LF character.
|
|
Remove the unnecessary PHP closing tags and ensure that *all* text files ending with a LF character.
|
|
This commit renames the "template" directory to "theme" because "theme" is the more correct term here.
|
|
We will now use this function (in addition to "parseEmoticons") to parse already UTF-8 encoded unicode emoticons (instead of the ASCII emoticons for which "parseEmoticons" is responsible) from the markdown content.
|
|
This commit updates the Parsedown library to the latest version 1.7.1. The patch to prevent that tab indentations in code blocks are being converted to spaces (see 78c5974cd34559d0130d8be509935e2c992cd9ca) is already applied here. In addition, the patch file itself is now shipped within the same directory where the Parsedown.php resides.
|
|
being converted to spaces:
For example, if you had used the markdown syntax for displaying source code in your post, Parsedown had replaced your semantically correct tab indentations with hard spaces. This behavior meant that the code that was displayed after parsing was no longer exactly the code you inserted into the content editor. If someone had copied source code from your post into his IDE, then your tab indentations were gone because of the spaces.
That's why I hacked the Parsedown library and created a patch:
https://github.com/erusev/parsedown/issues/508
|
|
|
|
administration area. In addition, some markup within the "/*/index.php" files of the admin template was re-formatted.
|
|
mistakes and inconsistencies in some comments were corrected.
|
|
previous commits result in version 2.3:
+ Optimization: Originally, the core and template languages were completely separated in the logic of the Language class and you had to use "$Language->text()" to get a core language string and "$Language->template()" to get a template language string. Since this commit, the core and template language strings are still located in different files, but you now have to use "$Language->text()" for core and template language strings both. Thus, you can now even overwrite a core language string from the language file of a template if the core language string does not satisfy you.
+ Deprecated: The method "$Language->template()" was marked as deprecated and will be removed in further versions (currently, it's just an alias for "$Language->text()").
Template upgrade to version 2.3 (only for customized templates):
SEARCH: $Language->template
REPLACE: $Language->text
|
|
+ Update [core]: Parsedown has been updated to version 1.6.2.
+ Optimization [admin template]: The markdown buttons have been placed directly above the content editor.
+ Optimization [admin template]: The content editor has been visually embellished (padding from the parent was removed).
|