diff --git a/CHANGELOG.md b/CHANGELOG.md index ed1d12e..b2343cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,22 @@ CHANGELOG ========================== +## 1.1.0 Alpha 4 (`1010014`) + +- **New:** Seed for threadmark category (#37) +- **New:** Seed for post threadmark (#38) +- **New:** Seed for conversation message threadmark (#39) +- **New:** Seed for discouraged IP addresses (#41) +- **New:** Seed for banned users (#43) +- **New:** Seed for IP address bans (#44) +- **New:** Seed for rejected users (#42) +- **New:** Seed for server error logs (#45) +- **New:** Seed for spam trigger log (#46) +- **New:** Seed for spam cleaner log (#47) +- **New:** Seed for email bounce log (#48) +- **Fix:** Threads cannot be seeded (#36) +- **Fix:** Master template is not created for page nodes (#49) + ## 1.1.0 Alpha 3 (`1010013`) - **Fix:** Updated license and readme files are not copied correctly to add-on archives (#29) diff --git a/Cli/Command/Seed/SeedConversationMessageThreadmark.php b/Cli/Command/Seed/SeedConversationMessageThreadmark.php new file mode 100644 index 0000000..92f0aec --- /dev/null +++ b/Cli/Command/Seed/SeedConversationMessageThreadmark.php @@ -0,0 +1,18 @@ +faker(); + $randomContentAndContainer = $this->findRandomContentAndContainer(); + if (!$randomContentAndContainer) + { + return false; + } + [$content, $container] = $randomContentAndContainer; + + $threadmarkCreatorSvc = $this->getThreadmarkCreatorSvc($content, $container); + $threadmarkCreatorSvc->setLabel(\implode(' ', Lorem::words())); + $threadmarkCreatorSvc->setCategory($this->findRandomThreadmarkCategory()); + $threadmarkCreatorSvc->setPosition(false); + $threadmarkCreatorSvc->resetNesting($faker->boolean); + + if (!$threadmarkCreatorSvc->validate($errors)) + { + return false; + } + $threadmarkCreatorSvc->save(); + + return true; + } + + protected function getThreadmarkCreatorSvc( + ThreadmarkContentEntityInterface $content, + ThreadmarkContainerEntityInterface $container + ) : ThreadmarkCreatorSvc + { + return $this->service('SV\Threadmarks:Threadmark\Creator', $content, $container); + } + + protected function findRandomThreadmarkCategory() : ThreadmarkCategoryEntity + { + return $this->finderWithRandomOrder('SV\Threadmarks:ThreadmarkCategory')->fetchOne(); + } +} \ No newline at end of file diff --git a/Seed/AbstractNode.php b/Seed/AbstractNode.php index 273300d..e81a797 100644 --- a/Seed/AbstractNode.php +++ b/Seed/AbstractNode.php @@ -4,6 +4,9 @@ use Faker\Provider\Lorem; use XF\Entity\Node as NodeEntity; +use XF\Entity\Page as PageEntity; +use XF\Mvc\FormAction; +use XF\Entity\AbstractNode as AbstractNodeEntity; abstract class AbstractNode extends AbstractSeed { @@ -30,6 +33,21 @@ protected function getNodeInput() : array ]; } + /** + * @since 1.1.0 Alpha 4 + * + * @param NodeEntity $node + * @param AbstractNodeEntity $data + * @param FormAction $formAction + */ + protected function setupFormAction( + NodeEntity $node, + AbstractNodeEntity $data, + FormAction $formAction + ) : void + { + } + /** * @throws \XF\PrintableException */ @@ -45,6 +63,8 @@ protected function seed(array $params = []) : bool $node->addCascadedSave($data); $form->basicEntitySave($node, $this->getNodeInput()); + $this->setupFormAction($node, $data, $form); + if (!$form->run(false)) { return false; diff --git a/Seed/AbstractSeed.php b/Seed/AbstractSeed.php index 36bdd38..e24524d 100644 --- a/Seed/AbstractSeed.php +++ b/Seed/AbstractSeed.php @@ -14,8 +14,10 @@ use XF\App as BaseApp; use Faker\Generator as FakerGenerator; use Faker\Factory as FakerFactory; +use XF\Mvc\FormAction; use XF\Phrase; use XF\Repository\Attachment as AttachmentRepo; +use XF\Repository\UserGroup as UserGroupRepo; use XF\Service\AbstractService; use Bluemmb\Faker\PicsumPhotosProvider as PicsumFakerProvider; use Faker\Provider\Youtube as YouTubeFakerProvider; @@ -404,6 +406,14 @@ protected function getRandomCostAmount(int $max = null) : float return $amount; } + protected function getRandomUserGroupIds() : array + { + $userGroupIds = $this->getUserGroupRepo()->findUserGroupsForList()->fetch()->keys(); + \shuffle($userGroupIds); + + return \array_slice($userGroupIds, $this->faker()->numberBetween(1, \count($userGroupIds))); + } + protected function service(string $class, ...$arguments) : AbstractService { return $this->app()->service($class, ...$arguments); @@ -437,6 +447,11 @@ protected function em() : EntityManager return $this->app()->em(); } + protected function formAction(bool $inTransaction = true) : FormAction + { + return $this->app()->formAction($inTransaction); + } + protected function app() : BaseApp { return $this->app; @@ -451,4 +466,9 @@ protected function getAttachmentHandler(string $contentType) : AttachmentHandler { return $this->getAttachmentRepo()->getAttachmentHandler($contentType); } + + protected function getUserGroupRepo() : UserGroupRepo + { + return $this->repository('XF:UserGroup'); + } } \ No newline at end of file diff --git a/Seed/ConversationMessageThreadmark.php b/Seed/ConversationMessageThreadmark.php new file mode 100644 index 0000000..bcf5347 --- /dev/null +++ b/Seed/ConversationMessageThreadmark.php @@ -0,0 +1,31 @@ +finderWithRandomOrder('XF:ConversationMessage') + ->where('Threadmark.threadmark_id', null) + ->where('user_id', \XF::visitor()->user_id) + ->with('Conversation', true) + ->fetchOne(); + + if (!$conversationMessage) + { + return null; + } + + return [ + $conversationMessage, + $conversationMessage->Conversation + ]; + } +} \ No newline at end of file diff --git a/Seed/DiscouragedIpAddress.php b/Seed/DiscouragedIpAddress.php new file mode 100644 index 0000000..84648a1 --- /dev/null +++ b/Seed/DiscouragedIpAddress.php @@ -0,0 +1,26 @@ +faker(); + + $ip = $faker->boolean ? $faker->ipv4 : $faker->ipv6; + $reason = $faker->boolean ? $faker->text : ''; + + return $this->getBanningRepo()->discourageIp( + $ip, + $reason + ); + } + + protected function getBanningRepo() : BanningRepo + { + return $this->repository('XF:Banning'); + } +} \ No newline at end of file diff --git a/Seed/EmailBounceLog.php b/Seed/EmailBounceLog.php new file mode 100644 index 0000000..9b88edf --- /dev/null +++ b/Seed/EmailBounceLog.php @@ -0,0 +1,60 @@ +faker(); + + /** @var EmailBounceLogEntity $emailBounceLog */ + $emailBounceLog = $this->em()->create('XF:EmailBounceLog'); + $emailBounceLog->user_id = \XF::visitor()->user_id; + $emailBounceLog->email_date = $faker->dateTime()->getTimestamp(); + $emailBounceLog->log_date = $faker->dateTime()->getTimestamp(); + $emailBounceLog->recipient = $faker->name; + $emailBounceLog->raw_message = $faker->text; + + if ($faker->boolean) + { + $emailBounceLog->action_taken = 'hard'; + } + else if ($faker->boolean) + { + $emailBounceLog->action_taken = 'soft'; + } + else if ($faker->boolean) + { + $emailBounceLog->action_taken = 'soft_hard'; + } + else if ($faker->boolean) + { + $emailBounceLog->action_taken = 'untrusted'; + } + else if ($faker->boolean) + { + $emailBounceLog->action_taken = ''; + } + else if ($faker->boolean) + { + $emailBounceLog->action_taken = $faker->word; + } + + return $emailBounceLog->save(); + } +} \ No newline at end of file diff --git a/Seed/ErrorLog.php b/Seed/ErrorLog.php new file mode 100644 index 0000000..81890c8 --- /dev/null +++ b/Seed/ErrorLog.php @@ -0,0 +1,121 @@ +faker(); + + /** @var ErrorLogEntity $errorLog */ + $errorLog = $this->em()->create('XF:ErrorLog'); + $errorLog->exception_date = $faker->dateTime()->getTimestamp(); + $errorLog->user_id = $this->getRegisteredUserOrGuest()->user_id; + $errorLog->ip_address = $faker->boolean ? (IpUtil::convertIpStringToBinary($faker->boolean ? $faker->ipv4 : $faker->ipv6)) : ''; + $errorLog->exception_type = $this->getRandomExceptionType(); + $errorLog->message = $faker->text; + $errorLog->request_state = $faker->randomElements(); + $errorLog->trace_string = $faker->text; + $errorLog->filename = $this->getRandomFile(); + $errorLog->line = $this->getRandomLineFromFilename($errorLog->filename); + + return $errorLog->save(); + } + + protected function getRegisteredUserOrGuest() : UserEntity + { + $faker = $this->faker(); + if ($faker->boolean) + { + return \XF::visitor(); + } + + return $this->getUserRepo()->getGuestUser($faker->boolean ? $faker->name : null); + } + + protected function getExceptionTypes() : array + { + return [ + 'InvalidArgumentException', + 'BadFunctionCallException', + 'DomainException', + 'LengthException', + 'OutOfRangeException', + 'RuntimeException', + 'OutOfBoundsException', + 'OverflowException', + 'RangeException', + 'UnderflowException', + 'UnexpectedValueException', + 'Exception', + 'Error', + ]; + } + + protected function getRandomExceptionType() : string + { + $exceptionTypes = $this->getExceptionTypes(); + $exceptionTypeIndex = \array_rand($exceptionTypes); + + return $exceptionTypes[$exceptionTypeIndex]; + } + + protected function getFileList() : array + { + if ($this->filesList === null) + { + $filesList = []; + + foreach (FileUtil::getRecursiveDirectoryIterator(\XF::getSourceDirectory()) AS $fileInfo) + { + if ($fileInfo->isDir()) + { + continue; + } + + $filesList[] = $fileInfo->getRealPath(); + } + + $this->filesList = $filesList; + } + + return $this->filesList; + } + + protected function getRandomFile() : string + { + $sourceDir = \XF::getSourceDirectory() . \XF::$DS; + + $fileList = $this->getFileList(); + $fileIndex = \array_rand($fileList); + $file = $fileList[$fileIndex]; + + return \substr($file, utf8_strlen($sourceDir)); + } + + protected function getRandomLineFromFilename(string $filePath) : int + { + $filePath = \XF::getSourceDirectory() . \XF::$DS . $filePath; + return $this->faker()->numberBetween(0, \count(\file($filePath))); + } + + protected function getUserRepo() : UserRepo + { + return $this->repository('XF:User'); + } +} \ No newline at end of file diff --git a/Seed/IpAddressBan.php b/Seed/IpAddressBan.php new file mode 100644 index 0000000..75d73ca --- /dev/null +++ b/Seed/IpAddressBan.php @@ -0,0 +1,26 @@ +faker(); + + $ip = $faker->boolean ? $faker->ipv4 : $faker->ipv6; + $reason = $faker->boolean ? $faker->text : ''; + + return $this->getBanningRepo()->banIp( + $ip, + $reason + ); + } + + protected function getBanningRepo() : BanningRepo + { + return $this->repository('XF:Banning'); + } +} \ No newline at end of file diff --git a/Seed/MediaGalleryItem.php b/Seed/MediaGalleryItem.php index 03127b3..bbb90f5 100644 --- a/Seed/MediaGalleryItem.php +++ b/Seed/MediaGalleryItem.php @@ -31,14 +31,7 @@ protected function seed(array $params = []): bool do { - if ($faker->boolean) - { - $container = $this->findRandomAlbum(); - } - else - { - $container = $this->findRandomAlbum(); - } + $container = $faker->boolean ? $this->findRandomAlbum() : $this->findRandomCategory(); } while ($container === null); diff --git a/Seed/Page.php b/Seed/Page.php index 74ef69f..f56297a 100644 --- a/Seed/Page.php +++ b/Seed/Page.php @@ -3,6 +3,9 @@ namespace TickTackk\Seeder\Seed; use XF\Entity\AbstractNode as AbstractNodeEntity; +use XF\Entity\Node as NodeEntity; +use XF\Mvc\FormAction; +use XF\Entity\Page as PageEntity; class Page extends AbstractNode { @@ -20,6 +23,28 @@ protected function getNodeInput() : array return $nodeInput; } + /** + * @param NodeEntity $node + * @param AbstractNodeEntity|PageEntity $data + * @param FormAction $formAction + */ + protected function setupFormAction( + NodeEntity $node, + AbstractNodeEntity $data, + FormAction $formAction + ): void + { + $template = $data->getMasterTemplate(); + + $faker = $this->faker(); + $template->template = $faker->boolean ? $faker->randomHtml() : $faker->text(); + + $formAction->apply(function () use($template) + { + $template->save(); + }); + } + protected function getRandomParentNode() :? AbstractNodeEntity { $faker = $this->faker(); diff --git a/Seed/PostThreadmark.php b/Seed/PostThreadmark.php new file mode 100644 index 0000000..6dfe2f7 --- /dev/null +++ b/Seed/PostThreadmark.php @@ -0,0 +1,29 @@ +finderWithRandomOrder('XF:Post') + ->where('Threadmark.threadmark_id', null) + ->with('Thread', true) + ->fetchOne(); + if (!$post) + { + return null; + } + + return [ + $post, + $post->Thread + ]; + } +} \ No newline at end of file diff --git a/Seed/SpamCleanerLog.php b/Seed/SpamCleanerLog.php new file mode 100644 index 0000000..2ba1a76 --- /dev/null +++ b/Seed/SpamCleanerLog.php @@ -0,0 +1,83 @@ +where('is_admin', false) + ->where('is_moderator', false) + ->where('is_staff', false) + ->where('is_banned', false); + } + + protected function findRandomModOrAdmin() : UserEntity + { + return $this->finderWithRandomOrder('XF:User') + ->whereOr(['is_admin', true], ['is_moderator', true]) + ->fetchOne(); + } + + /** + * @param array $params + * + * @return bool + * + * @throws \XF\PrintableException + */ + protected function seed(array $params = []): bool + { + $randomContent = $this->findRandomContent(); + if (!$randomContent) + { + return false; + } + + $faker = $this->faker(); + + /** @var SpamCleanerLogEntity $spamCleanerLog */ + $spamCleanerLog = $this->em()->create('XF:SpamCleanerLog'); + $spamCleanerLog->data = $faker->randomElements(); + $spamCleanerLog->application_date = $faker->dateTime->getTimestamp(); + $spamCleanerLog->restored_date = $faker->boolean ? $faker->dateTime->getTimestamp() : 0; + + $visitor = \XF::visitor(); + $spamCleanerLog->user_id = $visitor->user_id; + $spamCleanerLog->username = $visitor->username; + + $applyingUser = $this->findRandomModOrAdmin(); + $spamCleanerLog->applying_user_id = $applyingUser->user_id; + $spamCleanerLog->applying_username = $applyingUser->username; + + try + { + return $spamCleanerLog->save(); + } + catch (DuplicateKeyException $exception) + { + return false; + } + } + + protected function findRandomContent() :? Entity + { + $contentTypes = $this->app()->getContentTypeField('spam_handler_class'); + $contentType = \array_rand($contentTypes); + $identifier = $this->app()->getContentTypeFieldValue($contentType, 'entity'); + if ($identifier === null) + { + return null; + } + + return $this->finderWithRandomOrder($identifier)->fetchOne(); + } +} \ No newline at end of file diff --git a/Seed/SpamTrigger.php b/Seed/SpamTrigger.php new file mode 100644 index 0000000..326377e --- /dev/null +++ b/Seed/SpamTrigger.php @@ -0,0 +1,68 @@ +where('is_admin', false) + ->where('is_moderator', false) + ->where('is_staff', false) + ->where('is_banned', false); + } + + /** + * @throws \XF\PrintableException + */ + protected function seed(array $params = []): bool + { + $randomContent = $this->findRandomContent(); + if (!$randomContent) + { + return false; + } + + $faker = $this->faker(); + + /** @var SpamTriggerLogEntity $spamTriggerLog */ + $spamTriggerLog = $this->em()->create('XF:SpamTriggerLog'); + $spamTriggerLog->content_type = $randomContent->getEntityContentType(); + $spamTriggerLog->content_id = $randomContent->getEntityId(); + $spamTriggerLog->log_date = $faker->dateTime->getTimestamp(); + $spamTriggerLog->user_id = \XF::visitor()->user_id; + $spamTriggerLog->result = $faker->text(25); + $spamTriggerLog->details = $faker->randomElements(); + $spamTriggerLog->request_state = $faker->randomElements(); + $spamTriggerLog->ip_address = IpUtil::convertIpStringToBinary($faker->boolean ? $faker->ipv6 : $faker->ipv4); + + try + { + return $spamTriggerLog->save(); + } + catch (DuplicateKeyException $exception) + { + return false; + } + } + + protected function findRandomContent() :? Entity + { + $contentTypes = $this->app()->getContentTypeField('spam_handler_class'); + $contentType = \array_rand($contentTypes); + $identifier = $this->app()->getContentTypeFieldValue($contentType, 'entity'); + if ($identifier === null) + { + return null; + } + + return $this->finderWithRandomOrder($identifier)->fetchOne(); + } +} \ No newline at end of file diff --git a/Seed/Thread.php b/Seed/Thread.php index 9444adf..0761793 100644 --- a/Seed/Thread.php +++ b/Seed/Thread.php @@ -40,7 +40,7 @@ protected function seed(array $params = []): bool $threadCreator->setTags($faker->words($faker->numberBetween(10, 15))); $threadCreator->setContent(Lorem::sentence(), $faker->text); - if ($threadCreator->validate($errors)) + if (!$threadCreator->validate($errors)) { return false; } diff --git a/Seed/ThreadmarkCategory.php b/Seed/ThreadmarkCategory.php new file mode 100644 index 0000000..ec10df8 --- /dev/null +++ b/Seed/ThreadmarkCategory.php @@ -0,0 +1,46 @@ +em()->create('SV\Threadmarks:ThreadmarkCategory'); + + $faker = $this->faker(); + $input = [ + 'display_order' => $faker->randomNumber(), + 'is_always_filtered_in_whats_new' => $faker->boolean, + 'is_selected_in_whats_new_by_default' => $faker->boolean, + 'is_selected_in_search_by_default' => $faker->boolean, + 'allowed_user_group_ids' => $faker->boolean ? [-1] : $this->getRandomUserGroupIds() + ]; + + $form = $this->formAction(); + $form->basicEntitySave($threadmarkCategory, $input); + + $form->apply(function () use($threadmarkCategory, $faker) + { + $masterTitle = $threadmarkCategory->getMasterPhrase(); + $masterTitle->phrase_text = implode(' ', Lorem::words()); + $masterTitle->save(); + }); + + if (!$form->run(false)) + { + return false; + } + + return true; + } +} \ No newline at end of file diff --git a/Seed/UserBan.php b/Seed/UserBan.php new file mode 100644 index 0000000..6b66cf3 --- /dev/null +++ b/Seed/UserBan.php @@ -0,0 +1,45 @@ +where('is_admin', false) + ->where('is_moderator', false) + ->where('is_staff', false) + ->where('is_banned', false); + } + + protected function findRandomModOrAdmin() : UserEntity + { + return $this->finderWithRandomOrder('XF:User') + ->whereOr(['is_admin', true], ['is_moderator', true]) + ->fetchOne(); + } + + protected function seed(array $params = []): bool + { + $faker = $this->faker(); + $error = null; + + return $this->getBanningRepo()->banUser( + \XF::visitor(), + $faker->boolean ? $faker->dateTimeInInterval('+' . $faker->numberBetween(1, 10) . ' years')->getTimestamp() : 0, + $faker->boolean ? $faker->text : '', + $error, + $this->findRandomModOrAdmin() + ); + } + + protected function getBanningRepo() : BanningRepo + { + return $this->repository('XF:Banning'); + } +} \ No newline at end of file diff --git a/Seed/UserReject.php b/Seed/UserReject.php new file mode 100644 index 0000000..2164573 --- /dev/null +++ b/Seed/UserReject.php @@ -0,0 +1,43 @@ +where('is_admin', false) + ->where('is_moderator', false) + ->where('is_staff', false) + ->where('is_banned', false) + ->where('user_state', '!=', 'rejected'); + } + + protected function findRandomModOrAdmin() : UserEntity + { + return $this->finderWithRandomOrder('XF:User') + ->whereOr(['is_admin', true], ['is_moderator', true]) + ->fetchOne(); + } + + protected function seed(array $params = []): bool + { + $faker = $this->faker(); + $user = \XF::visitor(); + + $rejected = $user->rejectUser($faker->boolean ? $faker->text : '', $this->findRandomModOrAdmin()); + + if ($rejected && $faker->boolean) + { + $dateTimeObj = $faker->dateTimeInInterval('-' . $faker->numberBetween(1, 20) . ' years'); + $user->Reject->fastUpdate('reject_date', $dateTimeObj->getTimestamp()); + } + + return $rejected; + } +} \ No newline at end of file diff --git a/_dev/resource_description.html b/_dev/resource_description.html index 5d99c75..81d05e9 100644 --- a/_dev/resource_description.html +++ b/_dev/resource_description.html @@ -1,2 +1,2 @@ -

Seeder for XenForo 2.1.0+

Description

This add-on helps in filling development board with dummy data.

Requirements

CLI Commands

CommandDescription
tck-seeder:seed-userSeeds users
tck-seeder:seed-media-gallery-albumSeeds media gallery albums
tck-seeder:seed-resource-manager-updateSeeds resource manager updates
tck-seeder:seed-media-gallery-comment-reactionSeeds media gallery comment reactions
tck-seeder:seed-media-gallery-commentSeeds media gallery comments
tck-seeder:seed-post-reactionSeeds post reactions
tck-seeder:seed-conversationSeeds conversations
tck-seeder:seed-forumSeeds forums
tck-seeder:seed-pageSeeds pages
tck-seeder:seed-profile-post-reactionSeeds profile post reactions
tck-seeder:seed-threadSeeds threads
tck-seeder:seed-profile-post-commentSeeds profile post comments
tck-seeder:seed-media-gallery-item-reactionSeeds media gallery item reactions
tck-seeder:seed-media-gallery-categorySeeds media gallery categories
tck-seeder:seed-conversation-messageSeeds conversation messages
tck-seeder:seed-postSeeds posts
tck-seeder:seed-profile-postSeeds profile posts
tck-seeder:seed-categorySeeds categories
tck-seeder:seed-media-gallery-itemSeeds media gallery media items
tck-seeder:seed-resource-manager-categorySeeds resource manager categories
tck-seeder:seed-resource-manager-itemSeeds resource manager items
tck-seeder:seed-profile-post-comment-reactionSeeds profile post comment reactions
tck-seeder:seed-media-gallery-album-reactionSeeds media gallery album reactions

License

+

Seeder for XenForo 2.1.0+

Description

This add-on helps in filling development board with dummy data.

Requirements

CLI Commands

CommandDescription
tck-seeder:seed-conversationSeeds conversations
tck-seeder:seed-media-gallery-itemSeeds media gallery media items
tck-seeder:seed-user-rejectSeeds user rejects
tck-seeder:seed-profile-post-comment-reactionSeeds profile post comment reactions
tck-seeder:seed-spam-cleaner-logSeeds spam cleaner log
tck-seeder:seed-resource-manager-updateSeeds resource manager updates
tck-seeder:seed-media-gallery-item-reactionSeeds media gallery item reactions
tck-seeder:seed-media-gallery-comment-reactionSeeds media gallery comment reactions
tck-seeder:seed-media-gallery-albumSeeds media gallery albums
tck-seeder:seed-threadSeeds threads
tck-seeder:seed-spam-triggerSeeds spam triggers
tck-seeder:seed-error-logSeeds error logs
tck-seeder:seed-pageSeeds pages
tck-seeder:seed-post-reactionSeeds post reactions
tck-seeder:seed-post-threadmarkSeeds post threadmarks
tck-seeder:seed-postSeeds posts
tck-seeder:seed-categorySeeds categories
tck-seeder:seed-media-gallery-commentSeeds media gallery comments
tck-seeder:seed-conversation-messageSeeds conversation messages
tck-seeder:seed-ip-address-banSeeds ip address bans
tck-seeder:seed-media-gallery-categorySeeds media gallery categories
tck-seeder:seed-forumSeeds forums
tck-seeder:seed-user-banSeeds user bans
tck-seeder:seed-userSeeds users
tck-seeder:seed-discouraged-ip-addressSeeds discouraged ip addresses
tck-seeder:seed-conversation-message-threadmarkSeeds conversation message threadmarks
tck-seeder:seed-email-bounce-logSeeds email bounce logs
tck-seeder:seed-profile-post-commentSeeds profile post comments
tck-seeder:seed-resource-manager-itemSeeds resource manager items
tck-seeder:seed-media-gallery-album-reactionSeeds media gallery album reactions
tck-seeder:seed-profile-postSeeds profile posts
tck-seeder:seed-resource-manager-categorySeeds resource manager categories
tck-seeder:seed-threadmark-categorySeeds threadmark categories
tck-seeder:seed-profile-post-reactionSeeds profile post reactions

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

\ No newline at end of file diff --git a/_dev/resource_description.txt b/_dev/resource_description.txt index 20fa76d..a2ac7b3 100644 --- a/_dev/resource_description.txt +++ b/_dev/resource_description.txt @@ -13,97 +13,141 @@ This add-on helps in filling development board with dummy data. [TH]Description[/TH] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-user[/ICODE][/TD] -[TD]Seeds users[/TD] +[TD][ICODE]tck-seeder:seed-conversation[/ICODE][/TD] +[TD]Seeds conversations[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-media-gallery-album[/ICODE][/TD] -[TD]Seeds media gallery albums[/TD] +[TD][ICODE]tck-seeder:seed-media-gallery-item[/ICODE][/TD] +[TD]Seeds media gallery media items[/TD] +[/TR] +[TR] +[TD][ICODE]tck-seeder:seed-user-reject[/ICODE][/TD] +[TD]Seeds user rejects[/TD] +[/TR] +[TR] +[TD][ICODE]tck-seeder:seed-profile-post-comment-reaction[/ICODE][/TD] +[TD]Seeds profile post comment reactions[/TD] +[/TR] +[TR] +[TD][ICODE]tck-seeder:seed-spam-cleaner-log[/ICODE][/TD] +[TD]Seeds spam cleaner log[/TD] [/TR] [TR] [TD][ICODE]tck-seeder:seed-resource-manager-update[/ICODE][/TD] [TD]Seeds resource manager updates[/TD] [/TR] [TR] +[TD][ICODE]tck-seeder:seed-media-gallery-item-reaction[/ICODE][/TD] +[TD]Seeds media gallery item reactions[/TD] +[/TR] +[TR] [TD][ICODE]tck-seeder:seed-media-gallery-comment-reaction[/ICODE][/TD] [TD]Seeds media gallery comment reactions[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-media-gallery-comment[/ICODE][/TD] -[TD]Seeds media gallery comments[/TD] +[TD][ICODE]tck-seeder:seed-media-gallery-album[/ICODE][/TD] +[TD]Seeds media gallery albums[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-post-reaction[/ICODE][/TD] -[TD]Seeds post reactions[/TD] +[TD][ICODE]tck-seeder:seed-thread[/ICODE][/TD] +[TD]Seeds threads[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-conversation[/ICODE][/TD] -[TD]Seeds conversations[/TD] +[TD][ICODE]tck-seeder:seed-spam-trigger[/ICODE][/TD] +[TD]Seeds spam triggers[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-forum[/ICODE][/TD] -[TD]Seeds forums[/TD] +[TD][ICODE]tck-seeder:seed-error-log[/ICODE][/TD] +[TD]Seeds error logs[/TD] [/TR] [TR] [TD][ICODE]tck-seeder:seed-page[/ICODE][/TD] [TD]Seeds pages[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-profile-post-reaction[/ICODE][/TD] -[TD]Seeds profile post reactions[/TD] +[TD][ICODE]tck-seeder:seed-post-reaction[/ICODE][/TD] +[TD]Seeds post reactions[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-thread[/ICODE][/TD] -[TD]Seeds threads[/TD] +[TD][ICODE]tck-seeder:seed-post-threadmark[/ICODE][/TD] +[TD]Seeds post threadmarks[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-profile-post-comment[/ICODE][/TD] -[TD]Seeds profile post comments[/TD] +[TD][ICODE]tck-seeder:seed-post[/ICODE][/TD] +[TD]Seeds posts[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-media-gallery-item-reaction[/ICODE][/TD] -[TD]Seeds media gallery item reactions[/TD] +[TD][ICODE]tck-seeder:seed-category[/ICODE][/TD] +[TD]Seeds categories[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-media-gallery-category[/ICODE][/TD] -[TD]Seeds media gallery categories[/TD] +[TD][ICODE]tck-seeder:seed-media-gallery-comment[/ICODE][/TD] +[TD]Seeds media gallery comments[/TD] [/TR] [TR] [TD][ICODE]tck-seeder:seed-conversation-message[/ICODE][/TD] [TD]Seeds conversation messages[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-post[/ICODE][/TD] -[TD]Seeds posts[/TD] +[TD][ICODE]tck-seeder:seed-ip-address-ban[/ICODE][/TD] +[TD]Seeds ip address bans[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-profile-post[/ICODE][/TD] -[TD]Seeds profile posts[/TD] +[TD][ICODE]tck-seeder:seed-media-gallery-category[/ICODE][/TD] +[TD]Seeds media gallery categories[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-category[/ICODE][/TD] -[TD]Seeds categories[/TD] +[TD][ICODE]tck-seeder:seed-forum[/ICODE][/TD] +[TD]Seeds forums[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-media-gallery-item[/ICODE][/TD] -[TD]Seeds media gallery media items[/TD] +[TD][ICODE]tck-seeder:seed-user-ban[/ICODE][/TD] +[TD]Seeds user bans[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-resource-manager-category[/ICODE][/TD] -[TD]Seeds resource manager categories[/TD] +[TD][ICODE]tck-seeder:seed-user[/ICODE][/TD] +[TD]Seeds users[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-resource-manager-item[/ICODE][/TD] -[TD]Seeds resource manager items[/TD] +[TD][ICODE]tck-seeder:seed-discouraged-ip-address[/ICODE][/TD] +[TD]Seeds discouraged ip addresses[/TD] [/TR] [TR] -[TD][ICODE]tck-seeder:seed-profile-post-comment-reaction[/ICODE][/TD] -[TD]Seeds profile post comment reactions[/TD] +[TD][ICODE]tck-seeder:seed-conversation-message-threadmark[/ICODE][/TD] +[TD]Seeds conversation message threadmarks[/TD] +[/TR] +[TR] +[TD][ICODE]tck-seeder:seed-email-bounce-log[/ICODE][/TD] +[TD]Seeds email bounce logs[/TD] +[/TR] +[TR] +[TD][ICODE]tck-seeder:seed-profile-post-comment[/ICODE][/TD] +[TD]Seeds profile post comments[/TD] +[/TR] +[TR] +[TD][ICODE]tck-seeder:seed-resource-manager-item[/ICODE][/TD] +[TD]Seeds resource manager items[/TD] [/TR] [TR] [TD][ICODE]tck-seeder:seed-media-gallery-album-reaction[/ICODE][/TD] [TD]Seeds media gallery album reactions[/TD] [/TR] +[TR] +[TD][ICODE]tck-seeder:seed-profile-post[/ICODE][/TD] +[TD]Seeds profile posts[/TD] +[/TR] +[TR] +[TD][ICODE]tck-seeder:seed-resource-manager-category[/ICODE][/TD] +[TD]Seeds resource manager categories[/TD] +[/TR] +[TR] +[TD][ICODE]tck-seeder:seed-threadmark-category[/ICODE][/TD] +[TD]Seeds threadmark categories[/TD] +[/TR] +[TR] +[TD][ICODE]tck-seeder:seed-profile-post-reaction[/ICODE][/TD] +[TD]Seeds profile post reactions[/TD] +[/TR] [/TABLE] [HEADING=1]License[/HEADING] This project is licensed under the MIT License - see the [URL='https://github.com/ticktackk/SeederForXF2/blob/master/LICENSE.md']LICENSE.md[/URL] file for details. \ No newline at end of file diff --git a/addon.json b/addon.json index 47e9502..9fc577f 100644 --- a/addon.json +++ b/addon.json @@ -2,8 +2,8 @@ "legacy_addon_id": "", "title": "Seeder", "description": "This add-on helps in filling development board with dummy data.", - "version_id": 1010013, - "version_string": "1.1.0 Alpha 3", + "version_id": 1010014, + "version_string": "1.1.0 Alpha 4", "dev": "TickTackk", "dev_url": "https://xenforo.com/community/members/batpool52.90375/", "faq_url": "", diff --git a/composer.lock b/composer.lock index 27e7d22..43269a4 100644 --- a/composer.lock +++ b/composer.lock @@ -49,6 +49,10 @@ "provider", "youtube" ], + "support": { + "issues": "https://github.com/aalaap/faker-youtube/issues", + "source": "https://github.com/aalaap/faker-youtube/tree/1.2.1" + }, "time": "2018-02-15T06:24:43+00:00" }, { @@ -94,20 +98,24 @@ "picsum.photos", "provider" ], + "support": { + "issues": "https://github.com/bluemmb/Faker-PicsumPhotos/issues", + "source": "https://github.com/bluemmb/Faker-PicsumPhotos/tree/master" + }, "time": "2018-08-18T10:17:02+00:00" }, { "name": "fzaninotto/faker", - "version": "v1.9.1", + "version": "v1.9.2", "source": { "type": "git", "url": "https://github.com/fzaninotto/Faker.git", - "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f" + "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f", - "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/848d8125239d7dbf8ab25cb7f054f1a630e68c2e", + "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e", "shasum": "" }, "require": { @@ -144,7 +152,12 @@ "faker", "fixtures" ], - "time": "2019-12-12T13:22:17+00:00" + "support": { + "issues": "https://github.com/fzaninotto/Faker/issues", + "source": "https://github.com/fzaninotto/Faker/tree/v1.9.2" + }, + "abandoned": true, + "time": "2020-12-11T09:56:16+00:00" } ], "packages-dev": [], @@ -157,5 +170,5 @@ "ext-fileinfo": "*" }, "platform-dev": [], - "plugin-api-version": "1.1.0" + "plugin-api-version": "2.0.0" }