1
0
mirror of https://github.com/flarum/core.git synced 2025-08-01 14:10:37 +02:00

Store discussion slug in database table

In preparation for #646.
This commit is contained in:
Franz Liedke
2016-02-04 11:46:30 +01:00
parent a9fdbd02ae
commit 373452b395
5 changed files with 91 additions and 3 deletions

View File

@@ -34,7 +34,8 @@ class DiscussionBasicSerializer extends AbstractSerializer
}
return [
'title' => $discussion->title
'title' => $discussion->title,
'slug' => $discussion->slug,
];
}

View File

@@ -22,10 +22,12 @@ use Flarum\Event\DiscussionWasRestored;
use Flarum\Event\DiscussionWasStarted;
use Flarum\Event\PostWasDeleted;
use Flarum\Event\ScopePostVisibility;
use Flarum\Util\Str;
/**
* @property int $id
* @property string $title
* @property string $slug
* @property int $comments_count
* @property int $participants_count
* @property int $number_index
@@ -432,4 +434,17 @@ class Discussion extends AbstractModel
{
static::$stateUser = $user;
}
/**
* Set the discussion title.
*
* This automatically creates a matching slug for the discussion.
*
* @param string $title
*/
protected function setTitleAttribute($title)
{
$this->attributes['title'] = $title;
$this->slug = Str::slug($title);
}
}

View File

@@ -0,0 +1,32 @@
<?php
/*
* This file is part of Flarum.
*
* (c) Toby Zerner <toby.zerner@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Flarum\Util;
class Str
{
/**
* Create a slug out of the given string.
*
* Non-alphanumeric characters are converted to hyphens.
*
* @param string $str
* @return string
*/
public static function slug($str)
{
$str = strtolower($str);
$str = preg_replace('/[^a-z0-9]/i', '-', $str);
$str = preg_replace('/-+/', '-', $str);
$str = preg_replace('/-$|^-/', '', $str);
return $str ?: '-';
}
}