Download the PHP package drandin/closure-table-comments without Composer

On this page you can find all versions of the php package drandin/closure-table-comments. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package closure-table-comments

Commentator

Система управления иерархическими древовидными комментариями для Laravel.

Древовидная иерархия хранится в реляционной базе данных. Для получения узлов (элементов) дерева не используются SQL-запросы с рекурсией.

Для организации структуры комментариев применяется метод «Closure Table» совмещённым с «Adjacency List».

Схема связей элементов дерева «Closure Table»

Схема связей элементов дерева «Closure Table»

Метод хранения «Closure Table» обладает большим количеством преимуществ, не позволяет извлечь из базы данных узлы ветви иерархии и эффективно построить корректно отсортированное дерево. Для преодоления этого ограничения, метод «Closure Table» совмещён с «Adjacency List».

«Adjacency List» или список смежности — один из способов представления графа в виде коллекции списков вершин. Каждой вершине графа соответствует список, состоящий из «соседей» этой вершины.

Установка

composer require drandin/closure-table-comments
После установки пакета необходимо последовательно выполнить следующие действия:

Добавить в файл конфигурации приложения config/app.php сервис-провайдер. Строку указанную ниже следует внести в массив 'providers'.

Выполнить в консоли команду, которая скопирует файл конфигурации closure-table-comments.php в каталог config вашего приложения:

(!) После выполнения данной команды, в файле config/closure-table-comments.php вы можете изменить название базы данных и таблиц. Если это необходимо, то скорректируйте параметры конфигурации, прежде чем двигаться дальше.

Выполнить в консоли команду:

Выполнить в консоли команду, которая запустит выполнение миграций:

В результате будут созданы 2 таблицы в базе данных.

Использование

Каждый комментарий может относиться к определённому предмету и иметь ссылку на автора, который его написал. Например, если требуется организовать обсуждение статьи на новостном сайте, то уникальный целочисленный идентификатор сущности «Статья» следует использовать в качестве указания на принадлежность комментариев к обсуждаемому предмету, а целочисленный идентификатор пользователя — будет указывать на автора комментария.

subject_id — целочисленный идентификатор сущности «Статья». Может иметь значение NULL. Если subject_id равняется NULL, то комментарий не будет относиться к какому-либо предмету.

user_id — целочисленный идентификатор сущности «Автор статьи». Может иметь значение NULL. Если user_id равняется NULL, то комментарий не будет принадлежать какому-либо автору. Такие комментарии можно считать анонимными.

1. Создание корневого нового комментария.

Предположим, у нас есть сущность «Статья» с уникальным номером 5636 и пользователь с уникальным идентификатором 7 решил оставить комментарий к статье.

В базе данных будет создан комментарий с уникальным идентификатором $id, он будет принадлежать статье с кодом 5636. Автором комментария будет пользователь с идентификатором 7.

2. Ответ на комментарий, который был написан ранее.

Предположим, у нас есть сущность «Статья» с уникальным номером 5636 и пользователь с уникальным идентификатором 43 решил ответить на ранее написанный другим пользователем комментарий к статье.

Для этого нам нужно знать идентификатор комментария (или уникальный номер узла в древовидной иерархии комментариев Node), на который пользователь хочет написать ответ. Предположим, что уникальный идентификатор комментария равен 1.

В базе данных будет создан новый комментарий с уникальным идентификатором $id, он будет принадлежать статье с идентификатором 5636. Автором комментария будет пользователь с идентификатором 43.

Здесь важно то, что новый добавленный комментарий будет связан с родительским комментарием (с идентификатором равным 1). Кроме связи, уровень (level) нового комментария будет на единицу больше, чем уровень родительского комментария.

3. Редактирование текста комментария.

Для внесения изменения в текст комментарий нужно знать его уникальный идентификатор.

Если изменить комментарий удалось, то $res будет иметь значение true.

4. Проверка существования комментария

Вы можете узнать существует ли комментарий (узел в иерархии) по его уникальному идентификатору.

Если комментарий с уникальным идентификатором в древовидной структуре есть, то переменная $res будет равняться true.

5. Получение комментария (узла в иерархии) по уникальному идентификатору

Предположим, что мы хотим получить объект Node по уникальному идентификатору, который равен 2.

В случае, если комментарий с уникальным идентификатором 2 существует, метод getNode вернёт объект Node. Объект Node будет содержать информацию об узле иерархии комментариев.

6. Получение отсортированной ветки комментариев

Предположим у нас есть статья с уникальным идентификатором 5636, к этой статье разные пользователи написали комментарии. Некоторые комментаторы начали дискуссию между собой. То есть, у нас образовалась древовидная структура комментариев.

Но дискуссия возможна только если мы сможем корректно визуализировать структуру комментариев. Иначе пользователи просто не смогут общаться между собой. Для этого необходимо сформировать список отсортированных комментариев (узлов древовидной структуры). При этом в данном отсортированном списке узлов должен быть указан уровнь каждого узла, а так же идентификатор узла родителя.

Для решения этой задачи следует использовать метод getTreeBranch

В результате мы получим коллекцию объектов Node.

Если нужно получить узлы иерархии комментариев, начиная с узла с определённым идентификатором, то в метод getTreeBranch следует передать значение этого идентификатора.

Мы получим коллекцию объектов всех узлов иерархии начиная с узла 2.

7. Получение массива древовидной иерархии

Получить массив дерева комментариев можно при помощи метода getTreeBranchArray.

Если необходимо получить ветку комментариев, которая должна начинаться с определённого узла, то в метод getTreeBranchArray следует передать идентификатор этого узла иерархии.

8. Получение идентификаторов ветки комментариев

Предположим, мы хотим получить массив уникальных идентификаторов всех узлов ветки комментариев начиная с узла с идентификатором 23.

9. Получение уровня узла по уникальному идентификатору

Предположим, нам нужно узнать уровень узла 23 в иерархии, но извлекать объект Node методом getNode мы хотим, так как нам нужна лишь информация об уровне. Чтобы это сделать следует воспользоваться методом getLevel.

10. Удаление узла иерархии (листа) или ветки древовидной иерархии комментариев

Если нам нужно удалить ветку комментариев или только один последний комментарий в иерархии (лист в дереве комментариев), то это можно сделать при помощи метода delete.

Метод delete получает уникальный идентификатор узла и удаляет все комментарии, начиная с узла, идентификатор которого был передан этому методу.

В примере ниже мы удаляем узел 64 и всех его потомков, если они есть.

Будьте осторожны, удалённые комментарии восстановить невозможно.

Лицензия (License)

MIT license


All versions of closure-table-comments with dependencies

PHP Build Version
Package Version
Requires php Version ^7.3
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package drandin/closure-table-comments contains the following files

Loading the files please wait ....