Fix discussion seeder not using the correct post subtypes.

Related to #67.
This commit is contained in:
Franz Liedke 2015-05-08 18:12:02 +02:00
parent 4b9055ca70
commit 00bf235809
2 changed files with 18 additions and 7 deletions

View File

@ -3,7 +3,7 @@
use Tobscure\Permissible\Permissible; use Tobscure\Permissible\Permissible;
use Flarum\Core\Events\PostWasDeleted; use Flarum\Core\Events\PostWasDeleted;
class Post extends Model abstract class Post extends Model
{ {
use Permissible; use Permissible;
@ -46,6 +46,17 @@ class Post extends Model
*/ */
protected static $types = []; protected static $types = [];
/**
* The type of post this is, to be stored in the posts table.
*
* Should be overwritten by subclasses with the value that is
* to be stored in the database, which will then be used for
* mapping the hydrated model instance to the proper subtype.
*
* @var string
*/
public static $type = '';
/** /**
* Raise an event when a post is deleted. Add an event listener to set the * Raise an event when a post is deleted. Add an event listener to set the
* post's number, and update the discussion's number index, when inserting * post's number, and update the discussion's number index, when inserting
@ -58,6 +69,7 @@ class Post extends Model
parent::boot(); parent::boot();
static::creating(function ($post) { static::creating(function ($post) {
$post->type = $post::$type;
$post->number = ++$post->discussion->number_index; $post->number = ++$post->discussion->number_index;
$post->discussion->save(); $post->discussion->save();
}); });

View File

@ -2,7 +2,9 @@
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use DB; use DB;
use Flarum\Core\Models\CommentPost;
use Flarum\Core\Models\Discussion; use Flarum\Core\Models\Discussion;
use Flarum\Core\Models\DiscussionRenamedPost;
use Flarum\Core\Models\Post; use Flarum\Core\Models\Post;
use Flarum\Core\Models\User; use Flarum\Core\Models\User;
use Flarum\Core\Models\DiscussionState; use Flarum\Core\Models\DiscussionState;
@ -33,12 +35,11 @@ class DiscussionsTableSeeder extends Seeder
]); ]);
$discussion->comments_count = $posts_count; $discussion->comments_count = $posts_count;
$post = Post::create([ $post = CommentPost::create([
'discussion_id' => $discussion->id, 'discussion_id' => $discussion->id,
'number' => 1, 'number' => 1,
'time' => $discussion->start_time, 'time' => $discussion->start_time,
'user_id' => $discussion->start_user_id, 'user_id' => $discussion->start_user_id,
'type' => 'comment',
'content' => $faker->realText(rand(100, 1000)) 'content' => $faker->realText(rand(100, 1000))
]); ]);
@ -60,11 +61,10 @@ class DiscussionsTableSeeder extends Seeder
if (rand(1, 100) == 1) { if (rand(1, 100) == 1) {
$discussion->comments_count--; $discussion->comments_count--;
$post = Post::create([ $post = DiscussionRenamedPost::create([
'discussion_id' => $discussion->id, 'discussion_id' => $discussion->id,
'time' => $startTime = date_add($startTime, date_interval_create_from_date_string('1 second')), 'time' => $startTime = date_add($startTime, date_interval_create_from_date_string('1 second')),
'user_id' => rand(1, $users), 'user_id' => rand(1, $users),
'type' => 'discussionRenamed',
'content' => json_encode(array($faker->realText(rand(20, 40)), $discussion->title)) 'content' => json_encode(array($faker->realText(rand(20, 40)), $discussion->title))
]); ]);
} else { } else {
@ -75,12 +75,11 @@ class DiscussionsTableSeeder extends Seeder
$discussion->comments_count--; $discussion->comments_count--;
} }
$post = Post::create([ $post = CommentPost::create([
'discussion_id' => $discussion->id, 'discussion_id' => $discussion->id,
'number' => $j + 2 + $numberOffset, 'number' => $j + 2 + $numberOffset,
'time' => $startTime = date_add($startTime, date_interval_create_from_date_string('1 second')), 'time' => $startTime = date_add($startTime, date_interval_create_from_date_string('1 second')),
'user_id' => rand(1, $users), 'user_id' => rand(1, $users),
'type' => 'comment',
'content' => $faker->realText(rand(50, 500)), 'content' => $faker->realText(rand(50, 500)),
'edit_time' => $edited ? $startTime = date_add($startTime, date_interval_create_from_date_string('1 second')) : null, 'edit_time' => $edited ? $startTime = date_add($startTime, date_interval_create_from_date_string('1 second')) : null,
'edit_user_id' => $edited ? rand(1, $users) : null, 'edit_user_id' => $edited ? rand(1, $users) : null,