Fixed post safety user settings

This commit is contained in:
Marcin Kurczewski 2014-05-12 15:15:23 +02:00
parent c377ac8216
commit 0e6ed74682
4 changed files with 7 additions and 35 deletions

View file

@ -50,34 +50,6 @@ $.fn.bindOnce = function(name, eventName, callback)
//safety trigger
$(function()
{
$('.safety a').click(function(e)
{
e.preventDefault();
var aDom = $(this);
if (aDom.hasClass('inactive'))
return;
aDom.addClass('inactive');
var url = $(this).attr('href') + '?json';
$.get(url).success(function(data)
{
window.location.reload();
}).error(function(xhr)
{
alert(xhr.responseJSON
? xhr.responseJSON.message
: 'Fatal error');
aDom.removeClass('inactive');
});
});
});
//basic event listeners //basic event listeners
$(function() $(function()
{ {

View file

@ -83,7 +83,7 @@ class UserController
if (!is_array($suppliedSafety)) if (!is_array($suppliedSafety))
$suppliedSafety = []; $suppliedSafety = [];
foreach (PostSafety::getAll() as $safety) foreach (PostSafety::getAll() as $safety)
$user->enableSafety($safety, in_array($safety, $suppliedSafety)); $user->enableSafety($safety, in_array($safety->toInteger(), $suppliedSafety));
$user->enableEndlessScrolling(InputHelper::get('endless-scrolling')); $user->enableEndlessScrolling(InputHelper::get('endless-scrolling'));
$user->enablePostTagTitles(InputHelper::get('post-tag-titles')); $user->enablePostTagTitles(InputHelper::get('post-tag-titles'));

View file

@ -48,6 +48,9 @@ final class UserEntity extends AbstractEntity implements IValidatable
$this->validateAccessRank(); $this->validateAccessRank();
$this->validateEmails(); $this->validateEmails();
if (!$this->getSetting(UserModel::SETTING_SAFETY))
$this->setSetting(UserModel::SETTING_SAFETY, (new PostSafety(PostSafety::Safe))->toFlag());
if (empty($this->getAccessRank())) if (empty($this->getAccessRank()))
throw new Exception('No access rank detected'); throw new Exception('No access rank detected');
@ -275,8 +278,8 @@ final class UserEntity extends AbstractEntity implements IValidatable
{ {
$all = $this->getSetting(UserModel::SETTING_SAFETY); $all = $this->getSetting(UserModel::SETTING_SAFETY);
if (!$all) if (!$all)
return $safety->toInteger() == PostSafety::Safe; return $safety->toInteger() == (new PostSafety(PostSafety::Safe))->toInteger();
return $all & $safety->toFlag(); return ($all & $safety->toFlag()) == $safety->toFlag();
} }
public function enableSafety(PostSafety $safety, $enabled) public function enableSafety(PostSafety $safety, $enabled)
@ -293,9 +296,6 @@ final class UserEntity extends AbstractEntity implements IValidatable
$new |= $safety->toFlag(); $new |= $safety->toFlag();
} }
if (!$new)
$new = (new PostSafety(PostSafety::Safe))->toFlag();
$this->setSetting(UserModel::SETTING_SAFETY, $new); $this->setSetting(UserModel::SETTING_SAFETY, $new);
} }

View file

@ -19,7 +19,7 @@ class PostSafety extends Enum implements IValidatable
public function toFlag() public function toFlag()
{ {
return pow(2, $this->safety); return pow(2, $this->safety - 1);
} }
public function toString() public function toString()