kb active status list
This commit is contained in:
+9
-3
@@ -29,6 +29,7 @@
|
||||
|
||||
namespace Espo\Modules\Crm\Classes\AclPortal\KnowledgeBaseArticle;
|
||||
|
||||
use Espo\Core\Utils\Metadata;
|
||||
use Espo\Entities\User;
|
||||
use Espo\Modules\Crm\Entities\KnowledgeBaseArticle;
|
||||
use Espo\ORM\Entity;
|
||||
@@ -45,8 +46,10 @@ class AccessChecker implements AccessEntityCREDChecker
|
||||
{
|
||||
use DefaultAccessCheckerDependency;
|
||||
|
||||
public function __construct(DefaultAccessChecker $defaultAccessChecker)
|
||||
{
|
||||
public function __construct(
|
||||
DefaultAccessChecker $defaultAccessChecker,
|
||||
private Metadata $metadata
|
||||
) {
|
||||
$this->defaultAccessChecker = $defaultAccessChecker;
|
||||
}
|
||||
|
||||
@@ -56,7 +59,10 @@ class AccessChecker implements AccessEntityCREDChecker
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($entity->get('status') !== KnowledgeBaseArticle::STATUS_PUBLISHED) {
|
||||
$statusList = $this->metadata->get("entityDefs.KnowledgeBaseArticle.fields.status.activeOptions") ??
|
||||
[KnowledgeBaseArticle::STATUS_PUBLISHED];
|
||||
|
||||
if (!in_array($entity->getStatus(), $statusList)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
+9
-5
@@ -30,6 +30,7 @@
|
||||
namespace Espo\Modules\Crm\Classes\Select\KnowledgeBaseArticle\AccessControlFilters;
|
||||
|
||||
use Espo\Core\Select\AccessControl\Filter;
|
||||
use Espo\Core\Utils\Metadata;
|
||||
use Espo\Modules\Crm\Entities\KnowledgeBaseArticle;
|
||||
use Espo\ORM\Query\SelectBuilder;
|
||||
|
||||
@@ -37,8 +38,10 @@ use Espo\Entities\User;
|
||||
|
||||
class Mandatory implements Filter
|
||||
{
|
||||
public function __construct(private User $user)
|
||||
{}
|
||||
public function __construct(
|
||||
private User $user,
|
||||
private Metadata $metadata
|
||||
) {}
|
||||
|
||||
public function apply(SelectBuilder $queryBuilder): void
|
||||
{
|
||||
@@ -46,10 +49,11 @@ class Mandatory implements Filter
|
||||
return;
|
||||
}
|
||||
|
||||
$statusList = $this->metadata->get("entityDefs.KnowledgeBaseArticle.fields.status.activeOptions") ??
|
||||
[KnowledgeBaseArticle::STATUS_PUBLISHED];
|
||||
|
||||
$queryBuilder
|
||||
->where([
|
||||
'status' => KnowledgeBaseArticle::STATUS_PUBLISHED,
|
||||
])
|
||||
->where(['status' => $statusList])
|
||||
->distinct()
|
||||
->leftJoin('portals', 'portalsAccess')
|
||||
->where([
|
||||
|
||||
+9
-3
@@ -30,15 +30,21 @@
|
||||
namespace Espo\Modules\Crm\Classes\Select\KnowledgeBaseArticle\PrimaryFilters;
|
||||
|
||||
use Espo\Core\Select\Primary\Filter;
|
||||
use Espo\Core\Utils\Metadata;
|
||||
use Espo\Modules\Crm\Entities\KnowledgeBaseArticle;
|
||||
use Espo\ORM\Query\SelectBuilder;
|
||||
|
||||
class Published implements Filter
|
||||
{
|
||||
public function __construct(
|
||||
private Metadata $metadata
|
||||
) {}
|
||||
|
||||
public function apply(SelectBuilder $queryBuilder): void
|
||||
{
|
||||
$queryBuilder->where([
|
||||
'status' => KnowledgeBaseArticle::STATUS_PUBLISHED,
|
||||
]);
|
||||
$statusList = $this->metadata->get("entityDefs.KnowledgeBaseArticle.fields.status.activeOptions") ??
|
||||
[KnowledgeBaseArticle::STATUS_PUBLISHED];
|
||||
|
||||
$queryBuilder->where(['status' => $statusList]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,11 @@ class KnowledgeBaseArticle extends Entity
|
||||
public const STATUS_PUBLISHED = 'Published';
|
||||
public const STATUS_ARCHIVED = 'Archived';
|
||||
|
||||
public function getStatus(): string
|
||||
{
|
||||
return (string) $this->get('status');
|
||||
}
|
||||
|
||||
public function getOrder(): ?int
|
||||
{
|
||||
return $this->get('order');
|
||||
|
||||
@@ -30,26 +30,28 @@
|
||||
namespace Espo\Modules\Crm\Jobs;
|
||||
|
||||
use Espo\Core\Utils\DateTime;
|
||||
use Espo\Core\Utils\Metadata;
|
||||
use Espo\Modules\Crm\Entities\KnowledgeBaseArticle;
|
||||
use Espo\Core\Job\JobDataLess;
|
||||
use Espo\Core\ORM\EntityManager;
|
||||
|
||||
class ControlKnowledgeBaseArticleStatus implements JobDataLess
|
||||
{
|
||||
private EntityManager $entityManager;
|
||||
|
||||
public function __construct(EntityManager $entityManager)
|
||||
{
|
||||
$this->entityManager = $entityManager;
|
||||
}
|
||||
public function __construct(
|
||||
private EntityManager $entityManager,
|
||||
private Metadata $metadata
|
||||
) {}
|
||||
|
||||
public function run(): void
|
||||
{
|
||||
$statusList = $this->metadata->get("entityDefs.KnowledgeBaseArticle.fields.status.activeOptions") ??
|
||||
[KnowledgeBaseArticle::STATUS_PUBLISHED];
|
||||
|
||||
$list = $this->entityManager
|
||||
->getRDBRepository(KnowledgeBaseArticle::ENTITY_TYPE)
|
||||
->where([
|
||||
'expirationDate<=' => date(DateTime::SYSTEM_DATE_FORMAT),
|
||||
'status' => KnowledgeBaseArticle::STATUS_PUBLISHED,
|
||||
'status' => $statusList,
|
||||
])
|
||||
->find();
|
||||
|
||||
|
||||
@@ -20,6 +20,13 @@
|
||||
},
|
||||
"view": "crm:views/knowledge-base-article/fields/status",
|
||||
"default": "Draft",
|
||||
"fieldManagerAdditionalParamList": [
|
||||
{
|
||||
"name": "activeOptions",
|
||||
"view": "views/admin/field-manager/fields/not-actual-options"
|
||||
}
|
||||
],
|
||||
"activeOptions": ["Published"],
|
||||
"customizationOptionsReferenceDisabled": true
|
||||
},
|
||||
"language": {
|
||||
|
||||
Reference in New Issue
Block a user