Fixed #192
This commit is contained in:
parent
48b182b2f6
commit
b009bb77ad
@ -9,7 +9,7 @@ class TagSubscription extends Rails\ActiveRecord\Base
|
|||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function callbacks()
|
protected function callbacks()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
@ -21,7 +21,7 @@ class TagSubscription extends Rails\ActiveRecord\Base
|
|||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function scopes()
|
protected function scopes()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
@ -30,7 +30,7 @@ class TagSubscription extends Rails\ActiveRecord\Base
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function normalize_name()
|
public function normalize_name()
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@ -40,26 +40,26 @@ class TagSubscription extends Rails\ActiveRecord\Base
|
|||||||
*/
|
*/
|
||||||
$this->name = preg_replace(['/\P{L}/', '/_{2,}/'], '_', mb_convert_encoding($this->name, 'ISO-8859-2'));
|
$this->name = preg_replace(['/\P{L}/', '/_{2,}/'], '_', mb_convert_encoding($this->name, 'ISO-8859-2'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function initialize_post_ids()
|
public function initialize_post_ids()
|
||||||
{
|
{
|
||||||
if ($this->user->is_privileged_or_higher()) {
|
if ($this->user->is_privileged_or_higher()) {
|
||||||
$this->cached_post_ids = join(',', array_unique(Post::find_by_tags($this->tag_query, ['limit' => ceil(CONFIG()->tag_subscription_post_limit / 3), 'select' => 'p.id', 'order' => 'p.id desc'])->getAttributes('id')));
|
$this->cached_post_ids = join(',', array_unique(Post::find_by_tags($this->tag_query, ['limit' => ceil(CONFIG()->tag_subscription_post_limit / 3), 'select' => 'p.id', 'order' => 'p.id desc'])->getAttributes('id')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static public function find_post_ids($user_id, $name = null, $limit = null)
|
static public function find_post_ids($user_id, $name = null, $limit = null)
|
||||||
{
|
{
|
||||||
if (!$limit) {
|
if (!$limit) {
|
||||||
$limit = CONFIG()->tag_subscription_post_limit;
|
$limit = CONFIG()->tag_subscription_post_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$post_ids = self::select('cached_post_ids')->where(['user_id' => $user_id]);
|
$post_ids = self::select('cached_post_ids')->where(['user_id' => $user_id]);
|
||||||
if ($name) {
|
if ($name) {
|
||||||
$post_ids->where('name LIKE ?', $name . '%');
|
$post_ids->where('name LIKE ?', $name . '%');
|
||||||
}
|
}
|
||||||
$post_ids = $post_ids->take();
|
$post_ids = $post_ids->take();
|
||||||
|
|
||||||
$parsed_ids = [];
|
$parsed_ids = [];
|
||||||
foreach ($post_ids as $subs) {
|
foreach ($post_ids as $subs) {
|
||||||
$ids = explode(',', $subs->cached_post_ids);
|
$ids = explode(',', $subs->cached_post_ids);
|
||||||
@ -69,15 +69,15 @@ class TagSubscription extends Rails\ActiveRecord\Base
|
|||||||
$parsed_ids = array_merge($parsed_ids, $ids);
|
$parsed_ids = array_merge($parsed_ids, $ids);
|
||||||
}
|
}
|
||||||
sort($parsed_ids);
|
sort($parsed_ids);
|
||||||
|
|
||||||
return array_slice(array_reverse(array_unique($parsed_ids)), 0, $limit);
|
return array_slice(array_reverse(array_unique($parsed_ids)), 0, $limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public function find_posts($user_id, $name = null, $limit = null)
|
static public function find_posts($user_id, $name = null, $limit = null)
|
||||||
{
|
{
|
||||||
return Post::available()->where('id IN (?)', self::find_post_ids($user_id, $name, $limit))->order('id DESC')->take();
|
return Post::available()->where('id IN (?)', self::find_post_ids($user_id, $name, $limit))->order('id DESC')->take();
|
||||||
}
|
}
|
||||||
|
|
||||||
static public function process_all()
|
static public function process_all()
|
||||||
{
|
{
|
||||||
foreach (self::all() as $tag_subscription) {
|
foreach (self::all() as $tag_subscription) {
|
||||||
@ -110,4 +110,16 @@ class TagSubscription extends Rails\ActiveRecord\Base
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function validations()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => [
|
||||||
|
'length' => ['minimum' => 1]
|
||||||
|
],
|
||||||
|
'tag_query' => [
|
||||||
|
'length' => ['minimum' => 1]
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<tr id="tag-subscription-row-<?= $this->tag_subscription->id ?>">
|
<tr id="tag-subscription-row-<?= $this->tag_subscription->id ?>">
|
||||||
<td><input onclick="new Ajax.Request('<?= $this->urlFor(['tag_subscription#destroy', 'id' => $this->tag_subscription->id, 'format' => 'js']) ?>', {asynchronous:true, evalScripts:true});" type="button" value="<?= '-' ?>"></td>
|
<td><input onclick="new Ajax.Request('<?= $this->urlFor(['tag_subscription#destroy', 'id' => $this->tag_subscription->id, 'format' => 'js']) ?>', {asynchronous:true, evalScripts:true});" type="button" value="<?= '-' ?>"></td>
|
||||||
<td><?= $this->textFieldTag("tag_subscription[".$this->tag_subscription->id."][name]", $this->tag_subscription->name, ['size' => 20]) ?></td>
|
<td><?= $this->textFieldTag("tag_subscription[".$this->tag_subscription->id."][name]", $this->tag_subscription->name, ['size' => 20, 'required']) ?></td>
|
||||||
<td><?= $this->textFieldTag("tag_subscription[".$this->tag_subscription->id."][tag_query]", $this->tag_subscription->tag_query, ['size' => 70]) ?></td>
|
<td><?= $this->textFieldTag("tag_subscription[".$this->tag_subscription->id."][tag_query]", $this->tag_subscription->tag_query, ['size' => 70, 'required']) ?></td>
|
||||||
<td>
|
<td>
|
||||||
<?= $this->selectTag("tag_subscription[".$this->tag_subscription->id."][is_visible_on_profile]", $this->optionsForSelect(["Visible" => 1, "Hidden" => 0], $this->tag_subscription->is_visible_on_profile)) ?>
|
<?= $this->selectTag("tag_subscription[".$this->tag_subscription->id."][is_visible_on_profile]", $this->optionsForSelect(["Visible" => 1, "Hidden" => 0], $this->tag_subscription->is_visible_on_profile)) ?>
|
||||||
</td>
|
</td>
|
||||||
|
Reference in New Issue
Block a user