Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/upload/engine/inc/maharder/utils/composer.lock
2 changes: 1 addition & 1 deletion install_archive.bat
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ cd temp
set PATH=%PATH%;%ProgramFiles%\7-Zip\
7z a -mx0 -r -tzip -aoa dle_faker.zip *
cd ..
copy /Y temp\mhadmin.zip dle_faker_install.zip
copy /Y temp\dle_faker.zip dle_faker_install.zip
rd /s /q temp
exit;
10 changes: 6 additions & 4 deletions manifest.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
{
"version": "173.1.0",
"status": "dev",
"version": "180.1.2",
"status": "stable",
"dle": [
"17.x"
"17.x",
"18.0"
],
"php": [
"8.3"
],
"name": "DLE Faker",
"description": "Генератор фиктивных новостей на сайте"
"description": "Генератор фиктивных новостей на сайте",
"mhadmin": "180.3.5"
}
55 changes: 51 additions & 4 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,52 @@
просто шаблон для репозиториев
[![GitHub issues](https://img.shields.io/github/issues/DevCraftClub/dle_faker.svg?style=flat-square)](https://github.com/DevCraftClub/dle_faker/issues)[![GitHub forks](https://img.shields.io/github/forks/DevCraftClub/dle_faker.svg?style=flat-square)](https://github.com/DevCraftClub/dle_faker/network)[![GitHub license](https://img.shields.io/github/license/DevCraftClub/dle_faker.svg?style=flat-square)](https://github.com/DevCraftClub/dle_faker/blob/master/LICENSE)
# DLE Faker

1. Обновить значения в manifest.json
2. Удалить, если нет файлов локализации, файл crowdin.yml
3. Если не нужен скрипт обновления readme.md, то удаляем из .github/workflows/update-readme.yml
![Текущая версия](https://img.shields.io/github/manifest-json/v/DevCraftClub/dle_faker/main?style=for-the-badge&label=%D0%92%D0%B5%D1%80%D1%81%D0%B8%D1%8F)![Статус разработки](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2FDevCraftClub%2Fdle_faker%2Frefs%2Fheads%2Fmain%2Fmanifest.json&query=%24.status&style=for-the-badge&label=%D0%A1%D1%82%D0%B0%D1%82%D1%83%D1%81&color=orange)

![Версия DLE](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2FDevCraftClub%2Fdle_faker%2Frefs%2Fheads%2Fmain%2Fmanifest.json&query=%24.dle&style=for-the-badge&label=DLE)![Версия PHP](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2FDevCraftClub%2Fdle_faker%2Frefs%2Fheads%2Fmain%2Fmanifest.json&query=%24.php&style=for-the-badge&logo=php&logoColor=777BB4&label=PHP&color=777BB4)![Версия MHAdmin](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2FDevCraftClub%2Fdle_faker%2Frefs%2Fheads%2Fmain%2Fmanifest.json&query=%24.mhadmin&style=for-the-badge&label=MH-ADMIN&color=red)

DLE Faker - лагин, что позволяет вам генерировать случайные данные для DLE. На данный момент поддерживаются следующие компоненты: новости и пользователи.

## **Установка / Обновление**

**У вас три варианта для установки:**

### 1. **При помощи bat-Скрипта. Для пользователей Windows**

Для этого устанавливаем [7Zip](https://www.7-zip.org/download.html).
После установки запускаем скрипт install_archive.bat.
После завершения установки - загружаем install.zip в менеджер плагинов.

### 2. **При помощи sh-Скрипта. Для пользователей Linux/MacOS**

1. Устанавливаем права
```bash
chmod +x install_archive.sh
```
2. Запускаем скрипт
```bash
./install_archive.sh
```
3. Устанавливаем плагин через менеджер плагинов

### 3. **Упаковать самому**

Любым архиватором запаковать всё содержимое в папке upload (нужен формат zip!), причём так, чтобы в корне архива был
файл install.xml и папка engine.
Затем устанавливаем архив через менеджер плагинов.

### 4. **Просто залить**

Залейте папку engine в корень сайта и установите плагин через менеджер плагинов.

### 5. **Установка зависимостей** (Опционально)

Если в ходе использования выскочит ошибка связанная с `Faker` или / и `Faker\Factory` - установите зависимости через [композер](https://readme.devcraft.club/latest/dev/composer/).

Нужно установить следующую зависимость:

```bash
composer require fakerphp/faker
```

В теории она должна прописаться через файл `init.php`.
50 changes: 35 additions & 15 deletions upload/engine/ajax/maharder/dle_faker/generator_create_post.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

if (!$inputData['template']) {
echo (new ErrorResponseAjax())
->setData([__('dle_faker', 'Шаблон не может быть пустым')])->setMeta(['template'])->send();
->setData([__('Шаблон не может быть пустым')])->setMeta(['template'])->send();
exit;
}
if (!$inputData['count']) $inputData['count'] = 1;
Expand All @@ -29,14 +29,24 @@
$templateData = $MHDB->get(FakerTemplate::class, $inputData['template']);

if (!$templateData) {
echo (new ErrorResponseAjax(404))->setData([__('dle_faker', 'Такого шаблона не существует')])->send();
echo (new ErrorResponseAjax(404))->setData([__('Такого шаблона не существует')])->send();
exit;
}

$template = json_decode($templateData->template, true);

$parse = new ParseFilter();

if (empty($fakerConfig['users'])) {
echo (new ErrorResponseAjax())->setData([__("Не проставлена настройка для автора новости!")])->send();
exit;
}

if (empty($fakerConfig['categories'])) {
echo (new ErrorResponseAjax())->setData([__("Не проставлена настройка для категорий!")])->send();
exit;
}

$title = $parse->process(
filter_var(parseNewsValues($template['title']), FILTER_SANITIZE_FULL_SPECIAL_CHARS)
);
Expand All @@ -52,15 +62,10 @@
$date_to = !empty($template['date_to_alt']) ? $template['date_to_alt'] : $template['date_to'];
$date = getRandomDateBetween(parseNewsValues($date_from), parseNewsValues($date_to));

$short_story = $parse->process(
filter_var(parseNewsValues($template['short_story']), FILTER_SANITIZE_FULL_SPECIAL_CHARS)
);
$full_story = $parse->process(
filter_var(parseNewsValues($template['full_story']), FILTER_SANITIZE_FULL_SPECIAL_CHARS)
);
if (empty($full_story)) $full_story = $short_story;

$short_story = $parse->process(parseNewsValues($template['short_story']));
$full_story = $parse->process(parseNewsValues($template['full_story']));

if (empty($full_story)) $full_story = $short_story;

$xfields = [];

Expand Down Expand Up @@ -89,7 +94,7 @@

do {
// Используем подготовленные запросы для повышения безопасности
$stmt = $db->query("SELECT id FROM " . PREFIX . "_post WHERE alt_name = '" . $db->safesql($alt_name) . "'");
$stmt = $db->query("SELECT id FROM " . PREFIX . "_post WHERE alt_name = '{$db->safesql($alt_name)}'");

$foundNews = $db->get_row($stmt);

Expand All @@ -114,12 +119,12 @@
$catalog_url = $config['create_catalog'] ? $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( $title ) ), ENT_QUOTES, 'UTF-8' ), 0, 1 ) ) : '';

$user = $mh_admin->getUser($author);
$exclAuthor = [strval($author)];
$exclAuthor = [(string) $author];

while (!$user) {
$author = filter_var(getRandomValue(explode(',', $template['autor']), exclude: $exclAuthor), FILTER_VALIDATE_INT);
$user = $mh_admin->getUser($author);
$exclAuthor[] = strval($author);
$exclAuthor[] = (string) $author;
}

try {
Expand Down Expand Up @@ -150,7 +155,7 @@
}
}
$xfSearchWords = implode( ", ", $xfSearch );
$db->query( "INSERT INTO " . PREFIX . "_xfsearch (news_id, tagname, tagvalue) VALUES {$xfSearchWords}" );
if(!empty($xfSearchWords)) $db->query( "INSERT INTO " . PREFIX . "_xfsearch (news_id, tagname, tagvalue) VALUES {$xfSearchWords}" );


clear_cache( array('news_', 'tagscloud_', 'archives_', 'calendar_', 'topnews_', 'rss', 'stats') );
Expand All @@ -177,13 +182,28 @@

} catch (Exception $e) {
echo (new ErrorResponseAjax())->setData([$e->getMessage()])->send();
LogGenerator::generateLog(
'DLE Faker',
'ajax/generator_create_post/create_post',
$e->getMessage()
);
exit;
}


} catch (Exception $e) {
echo (new ErrorResponseAjax())->setData([$e->getMessage()])->send();
LogGenerator::generateLog(
'DLE Faker',
'ajax/generator_create_post/exception',
$e->getMessage()
);
} catch (Throwable $e) {
echo (new ErrorResponseAjax())->setData([$e->getMessage()])->send();
LogGenerator::generateLog(
'DLE Faker',
'ajax/generator_create_post/throwable',
$e->getMessage()
);
}
exit;
exit;
24 changes: 16 additions & 8 deletions upload/engine/ajax/maharder/dle_faker/generator_create_user.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,21 @@
$inputData = filter_var_array($parsedData, $filter);

if (empty($inputData['name'])) {
echo (new ErrorResponseAjax())->setData([__('dle_faker', 'Шаблон для псевдонима не может быть пустым')])
echo (new ErrorResponseAjax())->setData([__('Шаблон для псевдонима не может быть пустым')])
->setMeta(['name'])
->send();
exit;
}

if (empty($inputData['email'])) {
echo (new ErrorResponseAjax())->setData([__('dle_faker', 'Шаблон для электронной почты не может быть пустым')])
echo (new ErrorResponseAjax())->setData([__('Шаблон для электронной почты не может быть пустым')])
->setMeta(['email'])
->send();
exit;
}

if (empty($inputData['password'])) {
echo (new ErrorResponseAjax())->setData([__('dle_faker', 'Шаблон для пароля не может быть пустым')])
echo (new ErrorResponseAjax())->setData([__('Шаблон для пароля не может быть пустым')])
->setMeta(['password'])
->send();
exit;
Expand Down Expand Up @@ -79,19 +79,27 @@
]
)->send();
} else {
echo (new ErrorResponseAjax(404))->setData([__('dle_faker', 'Пользователь не был найден!')])->send();
echo (new ErrorResponseAjax(404))->setData([__('Пользователь не был найден!')])->send();
}
} elseif ($create_user === -1) {
echo (new ErrorResponseAjax())->setData([__('dle_faker', 'Псевдоним пользователя (:uname) уже занят!', [':uname' => $username])])->send();
echo (new ErrorResponseAjax())->setData([__('Псевдоним пользователя (:uname) уже занят!', [':uname' => $username])])->send();
} elseif ($create_user === -2) {
echo (new ErrorResponseAjax())->setData([__('dle_faker', 'Электронная почта (:email) пользователя уже занята!', [':email' => $email])])->send();
echo (new ErrorResponseAjax())->setData([__('Электронная почта (:email) пользователя уже занята!', [':email' => $email])])->send();
} elseif ($create_user === -3) {
echo (new ErrorResponseAjax())->setData([__('dle_faker', 'Электронная почта (:email) не подлежит нужному формату!', [':email' => $email])])->send();
echo (new ErrorResponseAjax())->setData([__('Электронная почта (:email) не подлежит нужному формату!', [':email' => $email])])->send();
} elseif ($create_user === -4) {
echo (new ErrorResponseAjax())->setData([__('dle_faker', 'Установленной группы (:group) не существует!', [':group' => $usergroup])])->send();
echo (new ErrorResponseAjax())->setData([__('Установленной группы (:group) не существует!', [':group' => $usergroup])])->send();
}

} catch (Exception $e) {
echo (new ErrorResponseAjax())->setData([$e->getMessage()])->send();
<<<<<<< HEAD
=======
LogGenerator::generateLog(
'DLE Faker',
'ajax/generator_create_users',
$e->getMessage()
);
>>>>>>> refs/remotes/origin/releases/173.1.0
}
exit;
16 changes: 12 additions & 4 deletions upload/engine/ajax/maharder/dle_faker/settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@
if (empty($filteredData['language']) || $filteredData['language'] === 'site') $filteredData['language'] = MhTranslation::getLocale();

if(empty($filteredData['users'])) {
echo (new ErrorResponseAjax())->setData([__('mhadmin', 'Нужно указать хотя бы одного пользователя!')])
echo (new ErrorResponseAjax())->setData([__('Нужно указать хотя бы одного пользователя!')])
->setMeta(['users'])
->send();
exit;
}

if(empty($filteredData['categories'])) {
echo (new ErrorResponseAjax())->setData([__('mhadmin', 'Нужно указать хотя бы одну категорию!')])
echo (new ErrorResponseAjax())->setData([__('Нужно указать хотя бы одну категорию!')])
->setMeta(['categories'])
->send();
exit;
Expand All @@ -41,9 +41,17 @@
file_put_contents($configFile, json_encode($filteredData, JSON_UNESCAPED_UNICODE));
clear_cache();

echo (new SuccessResponseAjax())->setData([__('mhadmin', 'Настройки сохранены')])->send();
echo (new SuccessResponseAjax())->setData([__('Настройки сохранены')])->send();
} catch (Exception $e) {
echo (new ErrorResponseAjax())->setData([__('mhadmin', 'Ошибка в сохранении настроек'), $e->getMessage()])->send();
echo (new ErrorResponseAjax())->setData([__('Ошибка в сохранении настроек'), $e->getMessage()])->send();
<<<<<<< HEAD
=======
LogGenerator::generateLog(
'DLE Faker',
'ajax/settings',
$e->getMessage()
);
>>>>>>> refs/remotes/origin/releases/173.1.0
}

exit;
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,21 @@
$id = filter_var($parsedData['id'], FILTER_VALIDATE_INT);

if (!$id) {
echo (new ErrorResponseAjax())->setData([__('dle_faker', 'Некорректные данные: :data.', [':data' => 'id'])])->send();
echo (new ErrorResponseAjax())->setData([__('Некорректные данные: :data.', [':data' => 'id'])])->send();
exit;
}

$template = $MHDB->get(FakerTemplate::class, $id);

if (!$template) {
echo (new ErrorResponseAjax(404))->setData([__('dle_faker', 'Такого шаблона не существует!')])->send();
echo (new ErrorResponseAjax(404))->setData([__('Такого шаблона не существует!')])->send();
exit;
}

try {
$template->active = $method == 'activate_template';
$MHDB->update($template);
echo (new SuccessResponseAjax(201))->setData([$method == 'activate_template' ? __('dle_faker', 'Шаблон был включён') : __('dle_faker', 'Шаблон был выключён')])->send();
echo (new SuccessResponseAjax(201))->setData([$method == 'activate_template' ? __('Шаблон был включён') : __('Шаблон был выключён')])->send();
} catch (Exception $e) {
echo (new ErrorResponseAjax())->setData([$e->getMessage()])->send();
}
Expand Down
26 changes: 18 additions & 8 deletions upload/engine/ajax/maharder/dle_faker/templates_create.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,27 +38,27 @@

if (empty($inputData['name'])) {
echo (new ErrorResponseAjax())
->setData([__('dle_faker', 'Название шаблона не может быть пустым')])->setMeta(['name'])->send();
->setData([__('Название шаблона не может быть пустым')])->setMeta(['name'])->send();
exit;
}
if (empty($inputData['autor'])) {
echo (new ErrorResponseAjax())
->setData([__('dle_faker', 'Автор не может быть пустым')])->setMeta(['autor'])->send();
->setData([__('Автор не может быть пустым')])->setMeta(['autor'])->send();
exit;
}
if (empty($inputData['title'])) {
echo (new ErrorResponseAjax())
->setData([__('dle_faker', 'Заголовок не может быть пустым')])->setMeta(['title'])->send();
->setData([__('Заголовок не может быть пустым')])->setMeta(['title'])->send();
exit;
}
if (empty($inputData['category'])) {
echo (new ErrorResponseAjax())
->setData([__('dle_faker', 'Категория не может быть пустой')])->setMeta(['category'])->send();
->setData([__('Категория не может быть пустой')])->setMeta(['category'])->send();
exit;
}
if (empty($inputData['short_story'])) {
echo (new ErrorResponseAjax())
->setData([__('dle_faker', 'Короткое описание не может быть пустой')])->setMeta(['short_story'])->send();
->setData([__('Короткое описание не может быть пустой')])->setMeta(['short_story'])->send();
exit;
}
if (empty($inputData['allow_main'])) $inputData['allow_main'] = 'random';
Expand Down Expand Up @@ -89,18 +89,28 @@
if ($id) {
$MHDB->update($template);
echo (new SuccessResponseAjax(201))
->setData([__('dle_faker', 'Шаблон успешно изменен')])->setRedirect(
->setData([__('Шаблон успешно изменен')])->setRedirect(
$mh_admin->getDleUrl() . '?mod=dle_faker&sites=template'
)->send();
} else {
$MHDB->create($template);
echo (new SuccessResponseAjax())
->setData([__('dle_faker', 'Шаблон успешно создан')])->setRedirect(
->setData([__('Шаблон успешно создан')])->setRedirect(
$mh_admin->getDleUrl() . '?mod=dle_faker&sites=template'
)->send();
}

} catch (Exception $e) {
echo (new ErrorResponseAjax())->setData([$e->getMessage()])->send();
<<<<<<< HEAD
}
exit;
exit;
=======
LogGenerator::generateLog(
'DLE Faker',
'ajax/templates_create',
$e->getMessage()
);
}
exit;
>>>>>>> refs/remotes/origin/releases/173.1.0
Loading
Loading