Skip to content
Commits on Source (2)
......@@ -14,6 +14,7 @@ use Minds\Common\Access;
use Minds\Core;
use Minds\Helpers;
use Minds\Interfaces;
use Minds\Core\Blogs\Delegates\CreateActivity;
class blog implements Interfaces\Api
{
......@@ -333,11 +334,9 @@ class blog implements Interfaces\Api
}
if ($saved) {
$createActivity = new Core\Blogs\Delegates\CreateActivity();
if ($blog->isPublished() && $blog->getAccessId() == Access::PUBLIC) {
if (!$editing || ($editing && !$alreadyPublished) || ($editing && $oldAccessId == Access::UNLISTED)) {
$createActivity->save($blog);
(new CreateActivity())->save($blog);
}
}
......
......@@ -9,6 +9,7 @@
namespace Minds\Core\Blogs\Delegates;
use Minds\Core\Blogs\Blog;
use Minds\Core\Data\Call;
use Minds\Core\Entities\Actions\Save;
use Minds\Entities\Activity;
......@@ -17,22 +18,32 @@ class CreateActivity
/** @var Save */
protected $saveAction;
/** @var Call */
protected $db;
/**
* CreateActivity constructor.
* @param null $saveAction
*/
public function __construct($saveAction = null)
public function __construct($saveAction = null, Call $db=null)
{
$this->saveAction = $saveAction ?: new Save();
$this->db = $db ?? new Call('entities_by_time');
}
/**
* Creates a new activity for a blog
* @param Blog $blog
* @throws \Minds\Exceptions\StopEventException
* @return bool
*/
public function save(Blog $blog)
public function save(Blog $blog) : bool
{
$activities = $this->db->getRow("activity:entitylink:{$blog->getGuid()}");
if (!empty($activities)) {
return false;
}
$owner = $blog->getOwnerEntity();
$activity = (new Activity())
......@@ -53,5 +64,7 @@ class CreateActivity
$this->saveAction
->setEntity($activity)
->save();
return true;
}
}
......@@ -3,6 +3,7 @@
namespace Spec\Minds\Core\Blogs\Delegates;
use Minds\Core\Blogs\Blog;
use Minds\Core\Data\Call;
use Minds\Core\Entities\Actions\Save;
use Minds\Entities\Activity;
use Minds\Entities\User;
......@@ -14,12 +15,16 @@ class CreateActivitySpec extends ObjectBehavior
/** @var Save */
protected $saveAction;
/** @var Call */
protected $db;
function let(
Save $saveAction
Save $saveAction,
Call $db
) {
$this->beConstructedWith($saveAction);
$this->beConstructedWith($saveAction, $db);
$this->saveAction = $saveAction;
$this->db = $db;
}
function it_is_initializable()
......@@ -27,7 +32,7 @@ class CreateActivitySpec extends ObjectBehavior
$this->shouldHaveType('Minds\Core\Blogs\Delegates\CreateActivity');
}
function it_should_save(
function it_should_save_when_no_activity(
Blog $blog,
User $user
)
......@@ -64,6 +69,10 @@ class CreateActivitySpec extends ObjectBehavior
->shouldBeCalled()
->willReturn(false);
$blog->getGuid()
->shouldBeCalled()
->willReturn(9999);
$user->export()
->shouldBeCalled()
->willReturn([]);
......@@ -72,6 +81,10 @@ class CreateActivitySpec extends ObjectBehavior
->shouldBeCalled()
->willReturn(1000);
$this->db->getRow("activity:entitylink:9999")
->shouldBeCalled()
->willReturn([]);
$this->saveAction->setEntity(Argument::type(Activity::class))
->shouldBeCalled()
->willReturn($this->saveAction);
......@@ -82,7 +95,23 @@ class CreateActivitySpec extends ObjectBehavior
$this
->save($blog)
->shouldNotThrow();
->shouldReturn(true);
}
function it_should_not_save_when_previous_activity(
Blog $blog
)
{
$blog->getGuid()
->shouldBeCalled()
->willReturn(9999);
$this->db->getRow("activity:entitylink:9999")
->shouldBeCalled()
->willReturn(['activity1']);
$this
->save($blog)
->shouldReturn(false);
}
}