get('type') === 'Post' && $user->id === $entity->get('createdById')) { return true; } return false; } public function checkEntityCreate(EntityUser $user, Entity $entity, ScopeData $data): bool { if (!$entity->get('parentId') || !$entity->get('parentType')) { return true; } $parent = $this->entityManager->getEntity($entity->get('parentType'), $entity->get('parentId')); if ($parent && $this->aclManager->checkEntity($user, $parent, 'stream')) { return true; } return false; } public function checkEntityEdit(EntityUser $user, Entity $entity, ScopeData $data): bool { if ($user->isAdmin()) { return true; } if (!$this->checkEntity($user, $entity, $data, Table::ACTION_EDIT)) { return false; } if (!$this->checkIsOwner($user, $entity)) { return true; } $createdAt = $entity->get('createdAt'); if (!$createdAt) { return true; } $noteEditThresholdPeriod = '-' . $this->config->get('noteEditThresholdPeriod', $this->editThresholdPeriod); $dt = new DateTime(); $dt->modify($noteEditThresholdPeriod); try { if ($dt->format('U') > (new DateTime($createdAt))->format('U')) { return false; } } catch (Exception $e) { return false; } return true; } public function checkEntityDelete(EntityUser $user, Entity $entity, ScopeData $data): bool { if ($user->isAdmin()) { return true; } if (!$this->checkEntity($user, $entity, $data, Table::ACTION_DELETE)) { return false; } if (!$this->checkIsOwner($user, $entity)) { return true; } $createdAt = $entity->get('createdAt'); if (!$createdAt) { return true; } $deleteThresholdPeriod = '-' . $this->config->get('noteDeleteThresholdPeriod', $this->deleteThresholdPeriod); $dt = new DateTime(); $dt->modify($deleteThresholdPeriod); try { if ($dt->format('U') > (new DateTime($createdAt))->format('U')) { return false; } } catch (Exception $e) { return false; } return true; } }