diff --git a/apps/Core/Components/Devtools/Modules/ModulesComponent.php b/apps/Core/Components/Devtools/Modules/ModulesComponent.php
index 4373ef18d..3a02cda21 100644
--- a/apps/Core/Components/Devtools/Modules/ModulesComponent.php
+++ b/apps/Core/Components/Devtools/Modules/ModulesComponent.php
@@ -290,7 +290,7 @@ public function viewAction()
if ($module['module_details']['module_type'] === 'components') {
$moduleLocation = 'apps/' . ucfirst($module['module_details']['app_type']) . '/Components/';
if ($module['module_details']['menu']) {
- $this->view->moduleMenu = $this->helper->encode($this->helper->decode($module['module_details']['menu'], true));
+ $this->view->moduleMenu = $this->helper->encode($module['module_details']['menu']);
$this->view->menuBaseStructure = $this->basepackages->menus->getMenusForAppType($module['module_details']['app_type']);
} else {
$this->view->moduleMenu = false;
diff --git a/apps/Core/Components/Errors/ErrorsComponent.php b/apps/Core/Components/Errors/ErrorsComponent.php
index 343c68b8e..9dae5d098 100644
--- a/apps/Core/Components/Errors/ErrorsComponent.php
+++ b/apps/Core/Components/Errors/ErrorsComponent.php
@@ -20,9 +20,16 @@ public function controllerNotFoundAction()
$this->addResponse('Component Not Found', 1);
}
- public function controllerDependencyErrorAction()
+ public function controllerPackageDependencyErrorAction()
{
- $this->view->pick('common/errors/controllerdependencyerror');
+ $this->view->pick('errors/controllerdependencyerror');
+
+ $this->addResponse('Component Dependency Error', 1);
+ }
+
+ public function controllerViewDependencyErrorAction()
+ {
+ $this->view->pick('errors/controllerdependencyerror');
$this->addResponse('Component Dependency Error', 1);
}
diff --git a/apps/Core/Components/System/Api/Client/Services/ServicesComponent.php b/apps/Core/Components/System/Api/Client/Services/ServicesComponent.php
index fe096f34f..56143d1c7 100644
--- a/apps/Core/Components/System/Api/Client/Services/ServicesComponent.php
+++ b/apps/Core/Components/System/Api/Client/Services/ServicesComponent.php
@@ -39,7 +39,9 @@ public function viewAction()
}
if (isset($api['used_by']) && $api['used_by'] !== '') {
- $api['used_by'] = $this->helper->decode($api['used_by'], true);
+ if (is_string($api['used_by'])) {
+ $api['used_by'] = $this->helper->decode($api['used_by'], true);
+ }
$api['used_by'] = implode(', ', $api['used_by']);
} else if (isset($api['used_by']) && $api['used_by'] === '') {
$api['used_by'] = '-';
@@ -138,7 +140,9 @@ protected function replaceColumns($dataArr)
$data['category'] = ucfirst($data['category']);
if (isset($data['used_by']) && $data['used_by'] !== '') {
- $data['used_by'] = $this->helper->decode($data['used_by'], true);
+ if (is_string($data['used_by'])) {
+ $data['used_by'] = $this->helper->decode($data['used_by'], true);
+ }
$data['used_by'] = implode(', ', $data['used_by']);
} else if (isset($data['used_by']) && $data['used_by'] === '') {
$data['used_by'] = '-';
diff --git a/apps/Core/Components/System/Email/Queue/QueueComponent.php b/apps/Core/Components/System/Email/Queue/QueueComponent.php
index 081e9086a..19eca1ac0 100644
--- a/apps/Core/Components/System/Email/Queue/QueueComponent.php
+++ b/apps/Core/Components/System/Email/Queue/QueueComponent.php
@@ -135,7 +135,9 @@ protected function formatSentOn($rowId, $data)
protected function formatToAddresses($rowId, $data)
{
- $data['to_addresses'] = $this->helper->decode($data['to_addresses'], true);
+ if (is_string($data['to_addresses'])) {
+ $data['to_addresses'] = $this->helper->decode($data['to_addresses'], true);
+ }
$data['to_addresses'] = implode(',', $data['to_addresses']);
diff --git a/apps/Core/Components/System/Filters/FiltersComponent.php b/apps/Core/Components/System/Filters/FiltersComponent.php
index 2f0beebce..545dcd230 100644
--- a/apps/Core/Components/System/Filters/FiltersComponent.php
+++ b/apps/Core/Components/System/Filters/FiltersComponent.php
@@ -3,7 +3,6 @@
namespace Apps\Core\Components\System\Filters;
use Apps\Core\Packages\Adminltetags\Traits\DynamicTable;
-use Apps\Core\Packages\Hrms\Employees\Employees;
use System\Base\BaseComponent;
class FiltersComponent extends BaseComponent
@@ -22,6 +21,20 @@ public function initialize()
*/
public function viewAction()
{
+ if ($this->request->isGet()) {
+ if ($this->app['id'] == 1) {
+ $components = $this->modules->components->components;
+ } else {
+ $components = $this->modules->components->getComponentsForAppType($this->app['app_type']);
+ }
+
+ foreach ($components as $key => $component) {
+ $components[$key]['name'] = $component['name'] . ' (' . $component['category'] . ')';
+ }
+
+ $this->view->components = $components;
+ }
+
if (isset($this->getData()['id'])) {
if ($this->getData()['id'] != 0) {
$filter = $this->filters->getById($this->getData()['id']);
@@ -36,18 +49,6 @@ public function viewAction()
$this->view->pick('filters/view');
return;
- } else {
- if ($this->app['id'] == 1) {
- $components = $this->modules->components->components;
- } else {
- $components = $this->modules->components->getComponentsForAppType($this->app['app_type']);
- }
-
- foreach ($components as $key => $component) {
- $components[$key]['name'] = $component['name'] . ' (' . $component['category'] . ')';
- }
-
- $this->view->components = $components;
}
if ($this->request->isPost()) {
@@ -206,4 +207,4 @@ public function getdefaultfilterAction()
$this->filters->packagesData->responseCode
);
}
-}
+}
\ No newline at end of file
diff --git a/apps/Core/Components/System/Notifications/NotificationsComponent.php b/apps/Core/Components/System/Notifications/NotificationsComponent.php
index 921281d63..340d258ec 100644
--- a/apps/Core/Components/System/Notifications/NotificationsComponent.php
+++ b/apps/Core/Components/System/Notifications/NotificationsComponent.php
@@ -134,7 +134,7 @@ protected function packageLinks()
foreach ($this->modules->packages->packages as $packageKey => $package) {
if ($package['settings'] && $package['settings'] !== '' && $package['settings'] !== '[]') {
- if (!is_array($package['settings'])) {
+ if (is_string($package['settings'])) {
$package['settings'] = $this->helper->decode($package['settings'], true);
}
if (isset($package['settings']['componentRoute'])) {
diff --git a/apps/Core/Components/System/Storages/StoragesComponent.php b/apps/Core/Components/System/Storages/StoragesComponent.php
index c22e5de14..77fd8ed56 100644
--- a/apps/Core/Components/System/Storages/StoragesComponent.php
+++ b/apps/Core/Components/System/Storages/StoragesComponent.php
@@ -36,9 +36,15 @@ public function viewAction()
return $this->throwIdNotFound();
}
- $storage['allowed_image_mime_types'] = $this->helper->decode($storage['allowed_image_mime_types']);
- $storage['allowed_image_sizes'] = $this->helper->decode($storage['allowed_image_sizes']);
- $storage['allowed_file_mime_types'] = $this->helper->decode($storage['allowed_file_mime_types']);
+ if (is_string($storage['allowed_image_mime_types'])) {
+ $storage['allowed_image_mime_types'] = $this->helper->decode($storage['allowed_image_mime_types']);
+ }
+ if (is_string($storage['allowed_image_sizes'])) {
+ $storage['allowed_image_sizes'] = $this->helper->decode($storage['allowed_image_sizes']);
+ }
+ if (is_string($storage['allowed_file_mime_types'])) {
+ $storage['allowed_file_mime_types'] = $this->helper->decode($storage['allowed_file_mime_types']);
+ }
$this->view->storage = $storage;
diff --git a/apps/Core/Components/System/Tools/Importexport/ImportexportComponent.php b/apps/Core/Components/System/Tools/Importexport/ImportexportComponent.php
index f31d588ae..0c90c15cd 100644
--- a/apps/Core/Components/System/Tools/Importexport/ImportexportComponent.php
+++ b/apps/Core/Components/System/Tools/Importexport/ImportexportComponent.php
@@ -50,19 +50,32 @@ public function viewAction()
$this->view->filters = $componentData['filters'];
}
- $importexport['fields'] = $this->helper->decode($importexport['fields'], true);
+ if (is_string($importexport['fields'])) {
+ $importexport['fields'] = $this->helper->decode($importexport['fields'], true);
+ }
+
+ if (is_string($importexport['email_to'])) {
+ $importexport['email_to'] = $this->helper->decode($importexport['email_to'], true);
+ }
- $importexport['email_to'] = implode(',', $this->helper->decode($importexport['email_to'], true));
+ $importexport['email_to'] = implode(',', $importexport['email_to']);
if ($importexport['file'] && $importexport['file'] !== '') {
$importexport['file'] = $this->links->url('system/storages/q/uuid/' . $importexport['file']);
}
} else if ($importexport['type'] === 'import' && isset($importexport['component_id'])) {
- $importexport['email_to'] = implode(',', $this->helper->decode($importexport['email_to'], true));
+ if (is_string($importexport['email_to'])) {
+ $importexport['email_to'] = $this->helper->decode($importexport['email_to'], true);
+ }
+
+ $importexport['email_to'] = implode(',', $importexport['email_to']);
if ($importexport['file'] && $importexport['file'] !== '') {
try {
- $importexport['file'] = $this->helper->decode($importexport['file'], true);
+ if (is_string($importexport['file'])) {
+ $importexport['file'] = $this->helper->decode($importexport['file'], true);
+ }
+
$importexport['file'] = $importexport['file'][0];
$this->view->file = $this->basepackages->storages->getFileInfo($importexport['file']);
@@ -167,8 +180,10 @@ protected function replaceColumns($dataArr)
$data['account_id'] = 'System (' . $data['account_id'] . ')';
}
- if ($data['email_to'] && $data['email_to'] !== '') {
- $data['email_to'] = $this->helper->decode($data['email_to'], true);
+ if ($data['email_to']) {
+ if (is_string($data['email_to']) && $data['email_to'] !== '') {
+ $data['email_to'] = $this->helper->decode($data['email_to'], true);
+ }
$data['email_to'] = implode(',', $data['email_to']);
}
diff --git a/apps/Core/Components/System/Users/Accounts/AccountsComponent.php b/apps/Core/Components/System/Users/Accounts/AccountsComponent.php
index cbe0c2650..94e5b4d83 100644
--- a/apps/Core/Components/System/Users/Accounts/AccountsComponent.php
+++ b/apps/Core/Components/System/Users/Accounts/AccountsComponent.php
@@ -183,7 +183,7 @@ protected function getProfilesData($data, $rowId = null)
}
if ($profilePackage) {
- if (!is_array($profilePackage['settings'])) {
+ if (is_string($profilePackage['settings'])) {
$profilePackage['settings'] = $this->helper->decode($profilePackage['settings'], true);
}
if (isset($profilePackage['settings']['componentRoute'])) {
diff --git a/apps/Core/Components/System/Workers/Schedules/SchedulesComponent.php b/apps/Core/Components/System/Workers/Schedules/SchedulesComponent.php
index 1e52ed3d8..b6ff539bb 100644
--- a/apps/Core/Components/System/Workers/Schedules/SchedulesComponent.php
+++ b/apps/Core/Components/System/Workers/Schedules/SchedulesComponent.php
@@ -33,7 +33,9 @@ public function viewAction()
return $this->throwIdNotFound();
}
- $schedule['schedule'] = $this->helper->decode($schedule['schedule'], true);
+ if (is_string($schedule['schedule'])) {
+ $schedule['schedule'] = $this->helper->decode($schedule['schedule'], true);
+ }
if ($schedule['schedule']['type'] === 'everyxseconds') {
$schedule['schedule']['params']['seconds'] = implode(',', $schedule['schedule']['params']['seconds']);
diff --git a/apps/Core/Middlewares/Acl/Acl.php b/apps/Core/Middlewares/Acl/Acl.php
index fea661eb6..f7a1f60cb 100644
--- a/apps/Core/Middlewares/Acl/Acl.php
+++ b/apps/Core/Middlewares/Acl/Acl.php
@@ -65,7 +65,7 @@ public function process($data)
}
if ($this->account) {
- if (!is_array($this->account['security']['permissions'])) {
+ if (is_string($this->account['security']['permissions'])) {
$this->account['security']['permissions'] = $this->helper->decode($this->account['security']['permissions'], true);
}
diff --git a/apps/Core/Packages/Adminltetags/Tags/Content/Listing/Table/DynamicTable.php b/apps/Core/Packages/Adminltetags/Tags/Content/Listing/Table/DynamicTable.php
index e652bd56e..e2fd3822b 100644
--- a/apps/Core/Packages/Adminltetags/Tags/Content/Listing/Table/DynamicTable.php
+++ b/apps/Core/Packages/Adminltetags/Tags/Content/Listing/Table/DynamicTable.php
@@ -375,137 +375,152 @@ protected function generateRowsContent()
if ($controlKey === 'view') {
if (is_array($control)) {
- $control = $control['link'];
+ $controlLink = $control['link'];
$title =
isset($control['title']) ?
strtoupper($control['title']) :
'VIEW';
$icon =
isset($control['icon']) ?
- strtoupper($control['icon']) :
+ $control['icon'] :
'eye';
$type =
isset($control['type']) ?
- strtoupper($control['type']) :
+ $control['type'] :
'info';
-
+ $additionalClass =
+ isset($control['additionalClass']) ?
+ $control['additionalClass'] :
+ $this->dtParams['dtControlsLinkClass'];
} else {
+ $controlLink = $control;
$title = 'VIEW';
$icon = 'eye';
$type = 'info';
+ $additionalClass = $this->dtParams['dtControlsLinkClass'];
}
-
- $controlButtons = array_merge($controlButtons,
- [
- $controlKey =>
- [
- 'title' => $title,
- 'additionalClass' => 'rowView ' . $this->dtParams['dtControlsLinkClass'],
- 'icon' => $icon,
- 'buttonType' => $type,
- 'link' => $control
- ]
- ]
- );
} else if ($controlKey === 'edit') {
if (is_array($control)) {
- $control = $control['link'];
+ $controlLink = $control['link'];
$title =
isset($control['title']) ?
strtoupper($control['title']) :
'EDIT';
$icon =
isset($control['icon']) ?
- strtoupper($control['icon']) :
+ $control['icon'] :
'edit';
$type =
isset($control['type']) ?
- strtoupper($control['type']) :
+ $control['type'] :
'primary';
-
+ $additionalClass =
+ isset($control['additionalClass']) ?
+ $control['additionalClass'] :
+ $this->dtParams['dtControlsLinkClass'];
} else {
+ $controlLink = $control;
$title = 'EDIT';
$icon = 'edit';
$type = 'primary';
+ $additionalClass = $this->dtParams['dtControlsLinkClass'];
}
-
- $controlButtons = array_merge($controlButtons,
- [
- $controlKey =>
- [
- 'title' => $title,
- 'additionalClass' => 'rowEdit ' . $this->dtParams['dtControlsLinkClass'],
- 'icon' => $icon,
- 'buttonType' => $type,
- 'link' => $control
- ]
- ]
- );
} else if ($controlKey === 'clone') {
if (is_array($control)) {
- $control = $control['link'];
+ $controlLink = $control['link'];
$title =
isset($control['title']) ?
strtoupper($control['title']) :
'CLONE';
$icon =
isset($control['icon']) ?
- strtoupper($control['icon']) :
+ $control['icon'] :
'clone';
$type =
isset($control['type']) ?
- strtoupper($control['type']) :
+ $control['type'] :
'primary';
-
+ $additionalClass =
+ isset($control['additionalClass']) ?
+ $control['additionalClass'] :
+ $this->dtParams['dtControlsLinkClass'];
} else {
+ $controlLink = $control;
$title = 'CLONE';
$icon = 'clone';
$type = 'primary';
+ $additionalClass = $this->dtParams['dtControlsLinkClass'];
}
-
- $controlButtons = array_merge($controlButtons,
- [
- $controlKey =>
- [
- 'title' => $title,
- 'additionalClass' => 'rowEdit ' . $this->dtParams['dtControlsLinkClass'],
- 'icon' => $icon,
- 'buttonType' => $type,
- 'link' => $control
- ]
- ]
- );
} else if ($controlKey === 'remove') {
if (is_array($control)) {
- $control = $control['link'];
+ $controlLink = $control['link'];
$title =
isset($control['title']) ?
strtoupper($control['title']) :
'REMOVE';
$icon =
isset($control['icon']) ?
- strtoupper($control['icon']) :
+ $control['icon'] :
'trash';
$type =
isset($control['type']) ?
- strtoupper($control['type']) :
+ $control['type'] :
'danger';
-
+ $additionalClass =
+ isset($control['additionalClass']) ?
+ $control['additionalClass'] :
+ '';
} else {
+ $controlLink = $control;
$title = 'REMOVE';
$icon = 'trash';
$type = 'danger';
+ $additionalClass = '';
+ }
+ } else {
+ if ($controlKey === 'divider') {
+ $control = '';
+ } else {
+ if (is_array($control)) {
+ $controlLink = $control['link'];
+ $title =
+ isset($control['title']) ?
+ strtoupper($control['title']) :
+ 'TITLE MISSING';
+ $icon =
+ isset($control['icon']) ?
+ $control['icon'] :
+ 'circle-dot';
+ $type =
+ isset($control['type']) ?
+ $control['type'] :
+ 'primary';
+ $additionalClass =
+ isset($control['additionalClass']) ?
+ $control['additionalClass'] :
+ '';
+ } else {
+ $controlLink = $control;
+ $title = 'TITLE MISSING';
+ $icon = 'circle-dot';
+ $type = 'primary';
+ $additionalClass = '';
+ }
}
+ }
+ if ($controlKey === 'divider') {
+ $controlButtons = array_merge($controlButtons, ['divider' => '
']);
+ } else {
$controlButtons = array_merge($controlButtons,
[
$controlKey =>
[
'title' => $title,
- 'additionalClass' => 'rowRemove',
+ 'additionalClass' => 'row' . ucfirst($controlKey) . ' ' . $additionalClass,
'icon' => $icon,
'buttonType' => $type,
- 'link' => $control
+ 'link' => $controlLink
]
]
);
@@ -544,8 +559,6 @@ protected function generateRowsContent()
}
$column = $controlbuttons;
-
- // $this->dtParams['dtShowRowControls'] = true;
}
$rowData = array_merge($rowData, [$columnKey => $column]);
@@ -620,4 +633,4 @@ protected function additionalControlButtons($controlButtons, $columns)
return $controlButtons;
}
-}
\ No newline at end of file
+}
diff --git a/apps/Core/Packages/Adminltetags/Tags/Fields/Input.php b/apps/Core/Packages/Adminltetags/Tags/Fields/Input.php
index 551c4758a..d5b3576b6 100644
--- a/apps/Core/Packages/Adminltetags/Tags/Fields/Input.php
+++ b/apps/Core/Packages/Adminltetags/Tags/Fields/Input.php
@@ -121,6 +121,11 @@ protected function generateContent()
$this->params['fieldGroupPreAddonTextAdditionalClass'] :
'';
+ $this->fieldParams['fieldGroupPostAddonTextAdditionalClass'] =
+ isset($this->params['fieldGroupPostAddonTextAdditionalClass']) ?
+ $this->params['fieldGroupPostAddonTextAdditionalClass'] :
+ '';
+
if (isset($this->params['fieldGroupPreAddonText']) ||
isset($this->params['fieldGroupPreAddonIcon']) ||
isset($this->params['fieldGroupPreAddonDropdown']) ||
@@ -370,14 +375,14 @@ protected function select()
protected function postAddon()
{
if (isset($this->params['fieldGroupPostAddonText'])) {
-
$this->content .=
'
- {{fieldGroupPostAddonText|raw}}
+ ' . $this->params['fieldGroupPostAddonText'] . '
';
+
}
- if (isset($this->params['fieldGroupPostAddonIcon'])) {
+ if (isset($this->params['fieldGroupPostAddonIcon'])) {
$this->content .=
'
@@ -385,8 +390,8 @@ protected function postAddon()
';
}
- if (isset($this->params['fieldGroupPostAddonDropdown'])) {
+ if (isset($this->params['fieldGroupPostAddonDropdown'])) {
$this->fieldParams['fieldGroupPostAddonDropdownButtonClass'] =
isset($this->params['fieldGroupPostAddonDropdownButtonClass']) ?
$this->params['fieldGroupPostAddonDropdownButtonClass'] :
diff --git a/apps/Core/Packages/Adminltetags/Traits/DynamicTable.php b/apps/Core/Packages/Adminltetags/Traits/DynamicTable.php
index d8b8295f9..b64b85a82 100644
--- a/apps/Core/Packages/Adminltetags/Traits/DynamicTable.php
+++ b/apps/Core/Packages/Adminltetags/Traits/DynamicTable.php
@@ -179,10 +179,6 @@ public function generateDTContent(
return;
}
- if ($dtAdditionControlButtons && is_callable($dtAdditionControlButtons)) {
- $dtAdditionControlButtons = $dtAdditionControlButtons($rows);
- }
-
if ($controlActions && is_callable($controlActions)) {
$rows = $controlActions($rows);
} else if ($controlActions) {
@@ -197,9 +193,19 @@ public function generateDTContent(
) {
if (!in_array($row['id'], $controlActions['disableActionsForIds'][$key])) {
if (isset($controlActions['includeQ']) && $controlActions['includeQ'] == true) {
- $actions[$key] = $this->links->url($action . '/id/' . $row['id']);
+ if (is_array($action) && isset($action['link'])) {
+ $actions[$key] = $action;
+ $actions[$key]['link'] = $this->links->url($action['link'] . '/id/' . $row['id']);
+ } else {
+ $actions[$key] = $this->links->url($action . '/id/' . $row['id']);
+ }
} else {
- $actions[$key] = $this->links->url($action . '/q/id/' . $row['id']);
+ if (is_array($action) && isset($action['link'])) {
+ $actions[$key] = $action;
+ $actions[$key]['link'] = $this->links->url($action['link'] . '/q/id/' . $row['id']);
+ } else {
+ $actions[$key] = $this->links->url($action . '/q/id/' . $row['id']);
+ }
}
}
} else if (isset($controlActions['enableActionsForIds'][$key]) &&
@@ -208,21 +214,46 @@ public function generateDTContent(
) {
if (in_array($row['id'], $controlActions['enableActionsForIds'][$key])) {
if (isset($controlActions['includeQ']) && $controlActions['includeQ'] == true) {
- $actions[$key] = $this->links->url($action . '/id/' . $row['id']);
+ if (is_array($action) && isset($action['link'])) {
+ $actions[$key] = $action;
+ $actions[$key]['link'] = $this->links->url($action['link'] . '/id/' . $row['id']);
+ } else {
+ $actions[$key] = $this->links->url($action . '/id/' . $row['id']);
+ }
} else {
- $actions[$key] = $this->links->url($action . '/q/id/' . $row['id']);
+ if (is_array($action) && isset($action['link'])) {
+ $actions[$key] = $action;
+ $actions[$key]['link'] = $this->links->url($action['link'] . '/q/id/' . $row['id']);
+ } else {
+ $actions[$key] = $this->links->url($action . '/q/id/' . $row['id']);
+ }
}
}
} else {
if (isset($controlActions['includeQ']) && $controlActions['includeQ'] == true) {
- $actions[$key] = $this->links->url($action . '/id/' . $row['id']);
+ if (is_array($action) && isset($action['link'])) {
+ $actions[$key] = $action;
+ $actions[$key]['link'] = $this->links->url($action['link'] . '/id/' . $row['id']);
+ } else {
+ $actions[$key] = $this->links->url($action . '/id/' . $row['id']);
+ }
} else {
- $actions[$key] = $this->links->url($action . '/q/id/' . $row['id']);
+ if (is_array($action) && isset($action['link'])) {
+ $actions[$key] = $action;
+ $actions[$key]['link'] = $this->links->url($action['link'] . '/q/id/' . $row['id']);
+ } else {
+ $actions[$key] = $this->links->url($action . '/q/id/' . $row['id']);
+ }
}
}
if ($key === 'clone') {
- $actions[$key] = $actions[$key] . '/clone/true';
+ if (is_array($action) && isset($action['link'])) {
+ $actions[$key] = $action;
+ $actions[$key]['link'] = $actions[$key]['link'] . '/clone/true';
+ } else {
+ $actions[$key] = $actions[$key] . '/clone/true';
+ }
}
}
@@ -230,6 +261,10 @@ public function generateDTContent(
}
}
+ if ($dtAdditionControlButtons && is_callable($dtAdditionControlButtons)) {
+ $dtAdditionControlButtons = $dtAdditionControlButtons($rows);
+ }
+
if ($this->api->isApi()) {
return ['rows' => $rows, 'counters' => $package->packagesData->paginationCounters];
}
diff --git a/apps/Core/Views/Default/html/common/errors/controllerdependencyerror.html b/apps/Core/Views/Default/html/common/errors/controllerdependencyerror.html
index 75cd06b5c..14758c3a1 100644
--- a/apps/Core/Views/Default/html/common/errors/controllerdependencyerror.html
+++ b/apps/Core/Views/Default/html/common/errors/controllerdependencyerror.html
@@ -1,4 +1,10 @@
{% set sectionId = 'controllerDependencyError' %}
+{% set moduleName = '' %}
+{% if dispatcher.getParams()['module']['display_name'] is defined %}
+ {% set moduleName = dispatcher.getParams()['module']['display_name'] %}
+{% elseif dispatcher.getParams()['module']['name'] is defined %}
+ {% set moduleName = dispatcher.getParams()['module']['name'] %}
+{% endif %}
@@ -6,7 +12,8 @@
Server Error! (Error:Controller Dependency Error)
-
The component's controller is returning an internal error.
+
The component's controller is returning an internal error due to missing component dependency.
+
Missing dependency {{moduleName}}.
Try Again
diff --git a/apps/Core/Views/Default/html/devtools/modules/changes/view.html b/apps/Core/Views/Default/html/devtools/modules/changes/view.html
index 59c89dddb..1803a4875 100644
--- a/apps/Core/Views/Default/html/devtools/modules/changes/view.html
+++ b/apps/Core/Views/Default/html/devtools/modules/changes/view.html
@@ -1,4 +1,4 @@
-
+
{% set changesHtml = '' %}
{% if modules|length > 0 %}
{% for moduleType, modulesArr in modules %}
@@ -24,8 +24,14 @@
{% if moduleArr['isModified'] != false %}
{% set moduleModified = 'Yes' %}
{% endif %}
+ {% set moduleName = moduleArr['name'] %}
+ {% if moduleArr['display_name'] is defined %}
+ {% set moduleName = moduleArr['display_name'] ~ ' (' ~ moduleArr['name'] ~ ')' %}
+ {% elseif moduleArr['route'] is defined %}
+ {% set moduleName = moduleArr['name'] ~ ' (' ~ moduleArr['route'] ~ ')' %}
+ {% endif %}
{% set changesHtml = changesHtml ~ '
' ~
- ' | ' ~ moduleArr['name'] ~ ' | ' ~
+ ' ' ~ moduleName ~ ' | ' ~
' ' ~ moduleArr['module_type'] ~ ' | ' ~
' ' ~ moduleUrl ~ ' | ' ~
' ' ~ moduleVersion ~ ' | ' ~
@@ -208,4 +214,3 @@
dataCollectionSectionForm['funcs']['init']();
});
-
\ No newline at end of file
diff --git a/apps/Core/Views/Default/html/devtools/modules/module/info.html b/apps/Core/Views/Default/html/devtools/modules/module/info.html
index a9ea4757e..1b0c353aa 100644
--- a/apps/Core/Views/Default/html/devtools/modules/module/info.html
+++ b/apps/Core/Views/Default/html/devtools/modules/module/info.html
@@ -35,6 +35,9 @@
{% endif %}
{% if type !== 'core' %}
{% set moduleApps = module['module_details']['apps'] %}
+ {% if is_array(moduleApps) %}
+ {% set moduleApps = json_encode(moduleApps) %}
+ {% endif %}
{% endif %}
{% if clone is defined and clone == true %}
{% set moduleId = '' %}
diff --git a/apps/Core/Views/Default/html/errors/controllerPackageDependencyError.html b/apps/Core/Views/Default/html/errors/controllerPackageDependencyError.html
new file mode 100644
index 000000000..fa5706d10
--- /dev/null
+++ b/apps/Core/Views/Default/html/errors/controllerPackageDependencyError.html
@@ -0,0 +1 @@
+Placeholder file. Do not remove
\ No newline at end of file
diff --git a/apps/Core/Views/Default/html/errors/controllerViewDependencyError.html b/apps/Core/Views/Default/html/errors/controllerViewDependencyError.html
new file mode 100644
index 000000000..fa5706d10
--- /dev/null
+++ b/apps/Core/Views/Default/html/errors/controllerViewDependencyError.html
@@ -0,0 +1 @@
+Placeholder file. Do not remove
\ No newline at end of file
diff --git a/apps/Core/Views/Default/html/system/workers/tasks/form.html b/apps/Core/Views/Default/html/system/workers/tasks/form.html
index 039d03a47..9211a3c3c 100644
--- a/apps/Core/Views/Default/html/system/workers/tasks/form.html
+++ b/apps/Core/Views/Default/html/system/workers/tasks/form.html
@@ -270,7 +270,7 @@
'fieldBazPostOnUpdate' : true,
'fieldDataSelect2Options' : calls,
'fieldDataSelect2OptionsKey' : 'id',
- 'fieldDataSelect2OptionsValue' : 'name:package_name',
+ 'fieldDataSelect2OptionsValue' : 'name|package_name',
'fieldDataSelect2OptionsArray' : true,
'fieldDataSelect2OptionsSelected' : taskCall
]
diff --git a/public/core/default/js/footer/core/Baz/BazContentFields.js b/public/core/default/js/footer/core/Baz/BazContentFields.js
index 5d206b475..739fe4f49 100644
--- a/public/core/default/js/footer/core/Baz/BazContentFields.js
+++ b/public/core/default/js/footer/core/Baz/BazContentFields.js
@@ -1,5 +1,5 @@
/* exported BazContentFields */
-/* globals PNotify flatpickr */
+/* globals paginatedPNotify flatpickr */
/*
* @title : BazContentFields
* @description : Baz Lib for Content (Sections With Form)
@@ -444,9 +444,13 @@ var BazContentFields = function() {
var url = dataCollection.env.httpScheme + '://' + dataCollection.env.httpHost + '/' + dataCollection.env.appRoute + '/auth/generatePw'
$.post(url, postData, function(response) {
if (response.responseCode == 0) {
- PNotify.success(response.responseMessage);
+ paginatedPNotify('success',{
+ title : response.responseMessage
+ });
} else {
- PNotify.error(response.responseMessage);
+ paginatedPNotify('error',{
+ title : response.responseMessage
+ });
}
if (response.responseData.password) {
$(fieldId).val(response.responseData.password).trigger('change');
@@ -741,7 +745,7 @@ var BazContentFields = function() {
// Check if node are selected and only 1 is selected
if ($(selectedNode).length !== 1) {
$('.ui-pnotify').remove();
- PNotify.notice({
+ paginatedPNotify('notice', {
title: 'None or Multiple ' + options.bazJstreeOptions.treeName + ' selected!',
text: 'Please select only 1 ' + options.bazJstreeOptions.treeName + ' to create a new node under it'
});
@@ -781,7 +785,7 @@ var BazContentFields = function() {
// Check if node are selected and only 1 is selected
if ($(selectedNode).length !== 1) {
$('.ui-pnotify').remove();
- PNotify.notice({
+ paginatedPNotify('notice', {
title: 'None or Multiple ' + options.bazJstreeOptions.treeName + ' selected!',
text: 'Please select only 1 ' + options.bazJstreeOptions.treeName + ' to rename',
});
diff --git a/public/core/default/js/footer/core/Baz/BazContentSectionWithFormToDatatable.js b/public/core/default/js/footer/core/Baz/BazContentSectionWithFormToDatatable.js
index 3b1573a7c..21984fce1 100644
--- a/public/core/default/js/footer/core/Baz/BazContentSectionWithFormToDatatable.js
+++ b/public/core/default/js/footer/core/Baz/BazContentSectionWithFormToDatatable.js
@@ -1,4 +1,4 @@
-/* globals define exports BazContentFieldsValidator BazContentFields PNotify */
+/* globals define exports BazContentFieldsValidator BazContentFields paginatedPNotify */
/*
* @title : BazContentSectionWithFormToDatatable
* @description : Baz Lib for Content (Sections With Form)
@@ -521,7 +521,7 @@
}
if (found) {
- PNotify.notice({
+ paginatedPNotify('notice', {
title: 'Input data already exists in table!'
});
diff --git a/public/core/default/js/footer/core/Baz/BazContentSectionWithListing.js b/public/core/default/js/footer/core/Baz/BazContentSectionWithListing.js
index 23cb8a766..962773fef 100644
--- a/public/core/default/js/footer/core/Baz/BazContentSectionWithListing.js
+++ b/public/core/default/js/footer/core/Baz/BazContentSectionWithListing.js
@@ -1,4 +1,4 @@
-/* globals define exports BazContentLoader BazContentFields Swal PNotify */
+/* globals define exports BazContentLoader BazContentFields Swal paginatedPNotify */
/*
* @title : BazContentSectionWithListing
* @description : Baz Lib for Content (Sections With Form)
@@ -222,14 +222,14 @@
// //Update Filter
$.post(url, postData, function(response) {
if (response.responseCode === 0) {
- PNotify.success({
+ paginatedPNotify('success', {
'title' : response.responseMessage
});
if (response.filters) {
redoFiltersOptions(query, sectionId, response);
}
} else {
- PNotify.error({
+ paginatedPNotify('error', {
'title' : response.responseMessage
});
}
@@ -305,7 +305,9 @@
var selectedFilter = $('#' + sectionId + '-filter-filters option:selected');
if ($(selectedFilter).data()['conditions'] === '') {
- PNotify.error({'title': 'Show All filter cannot be cloned'});
+ paginatedPNotify('error', {
+ 'title': 'Show All filter cannot be cloned'
+ });
return;
}
@@ -319,7 +321,7 @@
$.post(url, postData, function(response) {
if (response.responseCode === 0) {
- PNotify.success({
+ paginatedPNotify('success', {
'title' : response.responseMessage
});
if (response.filters) {
@@ -328,7 +330,7 @@
resetFilters();
toggleFilterButtons(sectionId + '-filter');
} else {
- PNotify.error({
+ paginatedPNotify('error', {
'title' : response.responseMessage
});
}
@@ -488,7 +490,7 @@
$('#' + sectionId + '-edit, #' + sectionId + '-share').attr("disabled", true);
$('#' + sectionId + '-delete').addClass('disabled');
- PNotify.success({
+ paginatedPNotify('success', {
'title' : selectedFilter.data()['name'] + ' deleted successfully.'
});
resetFilters();
@@ -502,7 +504,7 @@
$.post(url, postData, function(response) {
if (response.responseCode === 0) {
- PNotify.success({
+ paginatedPNotify('success', {
'title' : selectedFilter.data()['name'] + ' deleted successfully.'
});
if (response.filters) {
@@ -510,7 +512,7 @@
}
resetFilters();
} else {
- PNotify.error({
+ paginatedPNotify('error', {
'title' : 'Cannot delete filter.'
});
}
@@ -763,14 +765,14 @@
//Update Filter
$.post(url, postData, function(response) {
if (response.responseCode === 0) {
- PNotify.success({
+ paginatedPNotify('success', {
'title' : response.responseMessage
});
if (response.filters) {
redoFiltersOptions(query, sectionId, response);
}
} else {
- PNotify.error({
+ paginatedPNotify('error', {
'title' : response.responseMessage
});
}
@@ -1191,7 +1193,7 @@
data : postData,
success : function(response) {
if (response.responseCode != 0) {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage
});
}
@@ -1458,14 +1460,14 @@
// dataType : 'json',
// success : function(response) {
// if (response.responseCode === 0) {
- // PNotify.success({
+ // paginatedPNotify('success', {
// title : notificationText,
// cornerClass : 'ui-pnotify-sharp'
// });
// $(rowSwitchInput).attr('checked', status);
// document.getElementById(rowSwitchInputId).checked = true;
// } else {
- // PNotify.error({
+ // paginatedPNotify('error', {
// title : 'Error!',
// cornerClass : 'ui-pnotify-sharp'
// });
@@ -1561,8 +1563,8 @@
// dataType : 'json',
// success : function(response) {
// if (response.responseCode === 1) {
- // PNotify.removeAll()
- // PNotify.success({
+ // PNotify.removeAll();
+ // paginatedPNotify('success', {
// title : notificationText,
// cornerClass : 'ui-pnotify-sharp'
// });
@@ -1571,7 +1573,7 @@
// $('#' + thisId).attr('checked', true);
// document.getElementById(thisId).checked = true;
// } else {
- // PNotify.error({
+ // paginatedPNotify('error', {
// title : 'Error!',
// cornerClass : 'ui-pnotify-sharp'
// });
@@ -1639,7 +1641,7 @@
$('#security-token').val(response.token);
}
if (response.responseCode != 0) {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage,
});
}
diff --git a/public/core/default/js/footer/core/Baz/BazContentSectionWithWizard.js b/public/core/default/js/footer/core/Baz/BazContentSectionWithWizard.js
index e4834c81e..619338be7 100644
--- a/public/core/default/js/footer/core/Baz/BazContentSectionWithWizard.js
+++ b/public/core/default/js/footer/core/Baz/BazContentSectionWithWizard.js
@@ -1,5 +1,5 @@
/* exported BazContentSectionWithWizard */
-/* globals PNotify */
+/* globals paginatedPNotify */
/*
* @title : BazContentSectionWithWizard
* @description : Baz Core Lib
@@ -463,7 +463,7 @@ var BazContentSectionWithWizard = function() {
success = true;
$('#' + sectionId + '-' + step + '-accordioncard-header').removeClass('bg-danger').addClass('bg-success');
} else {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage,
});
$('#' + sectionId + '-next').children('i').attr('hidden', true);
diff --git a/public/core/default/js/footer/core/Baz/BazMessenger.js b/public/core/default/js/footer/core/Baz/BazMessenger.js
index fb7fd7626..3112dfcc9 100644
--- a/public/core/default/js/footer/core/Baz/BazMessenger.js
+++ b/public/core/default/js/footer/core/Baz/BazMessenger.js
@@ -1,5 +1,5 @@
/* exported BazMessenger */
-/* globals PNotify EmojiPicker autoComplete dayjs Swal */
+/* globals paginatedPNotify EmojiPicker autoComplete dayjs Swal */
/*
* @title : BazMessenger
* @description : Baz Messenger Lib
@@ -212,7 +212,7 @@ var BazMessenger = function() {
getUnreadMessagesCount();
}
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -259,7 +259,7 @@ var BazMessenger = function() {
$('#messenger-main-unmute').attr('hidden', false);
$('#messenger-button').children('i').removeClass('fa-comment').addClass('fa-comment-slash');
} else {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage,
});
}
@@ -288,7 +288,7 @@ var BazMessenger = function() {
$('#messenger-main-mute').attr('hidden', false);
$('#messenger-button').children('i').removeClass('fa-comment-slash').addClass('fa-comment');
} else {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage,
});
}
@@ -339,7 +339,9 @@ var BazMessenger = function() {
} else if (currentMessengerWindows > 1 && currentMessengerWindows < 3) {
fromLeft = (5 * currentMessengerWindows) + (currentMessengerWindows * 473) + 5;
} else {
- PNotify.error({text: "Only 3 chat windows can be opened at a given time. Please close other chat windows to allow this window to open."});
+ paginatedPNotify('error', {
+ text: "Only 3 chat windows can be opened at a given time. Please close other chat windows to allow this window to open."
+ });
return;
}
@@ -485,7 +487,7 @@ var BazMessenger = function() {
markAllMessagesRead(user);
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -606,7 +608,7 @@ var BazMessenger = function() {
$('#messenger-messages-load-more-' + toUser.user).closest('div.row').remove();
populateMessages(toUser, response.responseData.messages, response.responseData.paginationCounters, true);
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -669,7 +671,7 @@ var BazMessenger = function() {
if (response.responseCode == 0) {
//
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -749,7 +751,7 @@ var BazMessenger = function() {
$('#messenger-no-messages-' + user.user).attr('hidden', true);
$('#direct-chat-messages-' + user.user).scrollTop($('#direct-chat-messages-' + user.user).get(0).scrollHeight);
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -830,7 +832,7 @@ var BazMessenger = function() {
$('#messenger-message-' + postData['id'] + ' .messenger-message-remove').attr('hidden', true);
$('#messenger-message-' + postData['id']).off();
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -1060,7 +1062,7 @@ var BazMessenger = function() {
}
}
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -1083,7 +1085,7 @@ var BazMessenger = function() {
if (response.responseCode == 0) {
//
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
diff --git a/public/core/default/js/footer/jsFooterCore.js b/public/core/default/js/footer/jsFooterCore.js
index 8146c4d58..80ff8e7e3 100644
--- a/public/core/default/js/footer/jsFooterCore.js
+++ b/public/core/default/js/footer/jsFooterCore.js
@@ -4362,7 +4362,7 @@ exports.BazContentSectionWithForm = BazContentSectionWithForm;
Object.defineProperty(exports, '__esModule', { value: true });
}));
-/* globals define exports BazContentFieldsValidator BazContentFields PNotify */
+/* globals define exports BazContentFieldsValidator BazContentFields paginatedPNotify */
/*
* @title : BazContentSectionWithFormToDatatable
* @description : Baz Lib for Content (Sections With Form)
@@ -4885,7 +4885,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
}
if (found) {
- PNotify.notice({
+ paginatedPNotify('notice', {
title: 'Input data already exists in table!'
});
@@ -5583,7 +5583,7 @@ exports.BazContentSectionWithFormToDatatable = BazContentSectionWithFormToDatata
Object.defineProperty(exports, '__esModule', { value: true });
}));
-/* globals define exports BazContentLoader BazContentFields Swal PNotify */
+/* globals define exports BazContentLoader BazContentFields Swal paginatedPNotify */
/*
* @title : BazContentSectionWithListing
* @description : Baz Lib for Content (Sections With Form)
@@ -5807,14 +5807,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
// //Update Filter
$.post(url, postData, function(response) {
if (response.responseCode === 0) {
- PNotify.success({
+ paginatedPNotify('success', {
'title' : response.responseMessage
});
if (response.filters) {
redoFiltersOptions(query, sectionId, response);
}
} else {
- PNotify.error({
+ paginatedPNotify('error', {
'title' : response.responseMessage
});
}
@@ -5890,7 +5890,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
var selectedFilter = $('#' + sectionId + '-filter-filters option:selected');
if ($(selectedFilter).data()['conditions'] === '') {
- PNotify.error({'title': 'Show All filter cannot be cloned'});
+ paginatedPNotify('error', {
+ 'title': 'Show All filter cannot be cloned'
+ });
return;
}
@@ -5904,7 +5906,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
$.post(url, postData, function(response) {
if (response.responseCode === 0) {
- PNotify.success({
+ paginatedPNotify('success', {
'title' : response.responseMessage
});
if (response.filters) {
@@ -5913,7 +5915,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
resetFilters();
toggleFilterButtons(sectionId + '-filter');
} else {
- PNotify.error({
+ paginatedPNotify('error', {
'title' : response.responseMessage
});
}
@@ -6073,7 +6075,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
$('#' + sectionId + '-edit, #' + sectionId + '-share').attr("disabled", true);
$('#' + sectionId + '-delete').addClass('disabled');
- PNotify.success({
+ paginatedPNotify('success', {
'title' : selectedFilter.data()['name'] + ' deleted successfully.'
});
resetFilters();
@@ -6087,7 +6089,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
$.post(url, postData, function(response) {
if (response.responseCode === 0) {
- PNotify.success({
+ paginatedPNotify('success', {
'title' : selectedFilter.data()['name'] + ' deleted successfully.'
});
if (response.filters) {
@@ -6095,7 +6097,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
}
resetFilters();
} else {
- PNotify.error({
+ paginatedPNotify('error', {
'title' : 'Cannot delete filter.'
});
}
@@ -6348,14 +6350,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
//Update Filter
$.post(url, postData, function(response) {
if (response.responseCode === 0) {
- PNotify.success({
+ paginatedPNotify('success', {
'title' : response.responseMessage
});
if (response.filters) {
redoFiltersOptions(query, sectionId, response);
}
} else {
- PNotify.error({
+ paginatedPNotify('error', {
'title' : response.responseMessage
});
}
@@ -6776,7 +6778,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
data : postData,
success : function(response) {
if (response.responseCode != 0) {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage
});
}
@@ -7043,14 +7045,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
// dataType : 'json',
// success : function(response) {
// if (response.responseCode === 0) {
- // PNotify.success({
+ // paginatedPNotify('success', {
// title : notificationText,
// cornerClass : 'ui-pnotify-sharp'
// });
// $(rowSwitchInput).attr('checked', status);
// document.getElementById(rowSwitchInputId).checked = true;
// } else {
- // PNotify.error({
+ // paginatedPNotify('error', {
// title : 'Error!',
// cornerClass : 'ui-pnotify-sharp'
// });
@@ -7146,8 +7148,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
// dataType : 'json',
// success : function(response) {
// if (response.responseCode === 1) {
- // PNotify.removeAll()
- // PNotify.success({
+ // PNotify.removeAll();
+ // paginatedPNotify('success', {
// title : notificationText,
// cornerClass : 'ui-pnotify-sharp'
// });
@@ -7156,7 +7158,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
// $('#' + thisId).attr('checked', true);
// document.getElementById(thisId).checked = true;
// } else {
- // PNotify.error({
+ // paginatedPNotify('error', {
// title : 'Error!',
// cornerClass : 'ui-pnotify-sharp'
// });
@@ -7224,7 +7226,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
$('#security-token').val(response.token);
}
if (response.responseCode != 0) {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage,
});
}
@@ -8125,7 +8127,7 @@ $(document).on('libsLoadComplete bazContentLoaderAjaxComplete bazContentLoaderMo
});
/* exported BazContentSectionWithWizard */
-/* globals PNotify */
+/* globals paginatedPNotify */
/*
* @title : BazContentSectionWithWizard
* @description : Baz Core Lib
@@ -8589,7 +8591,7 @@ var BazContentSectionWithWizard = function() {
success = true;
$('#' + sectionId + '-' + step + '-accordioncard-header').removeClass('bg-danger').addClass('bg-success');
} else {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage,
});
$('#' + sectionId + '-next').children('i').attr('hidden', true);
@@ -8640,7 +8642,7 @@ $(document).on('libsLoadComplete bazContentLoaderAjaxComplete', function() {
});
/* exported BazContentFields */
-/* globals PNotify flatpickr */
+/* globals paginatedPNotify flatpickr */
/*
* @title : BazContentFields
* @description : Baz Lib for Content (Sections With Form)
@@ -9085,9 +9087,13 @@ var BazContentFields = function() {
var url = dataCollection.env.httpScheme + '://' + dataCollection.env.httpHost + '/' + dataCollection.env.appRoute + '/auth/generatePw'
$.post(url, postData, function(response) {
if (response.responseCode == 0) {
- PNotify.success(response.responseMessage);
+ paginatedPNotify('success',{
+ title : response.responseMessage
+ });
} else {
- PNotify.error(response.responseMessage);
+ paginatedPNotify('error',{
+ title : response.responseMessage
+ });
}
if (response.responseData.password) {
$(fieldId).val(response.responseData.password).trigger('change');
@@ -9382,7 +9388,7 @@ var BazContentFields = function() {
// Check if node are selected and only 1 is selected
if ($(selectedNode).length !== 1) {
$('.ui-pnotify').remove();
- PNotify.notice({
+ paginatedPNotify('notice', {
title: 'None or Multiple ' + options.bazJstreeOptions.treeName + ' selected!',
text: 'Please select only 1 ' + options.bazJstreeOptions.treeName + ' to create a new node under it'
});
@@ -9422,7 +9428,7 @@ var BazContentFields = function() {
// Check if node are selected and only 1 is selected
if ($(selectedNode).length !== 1) {
$('.ui-pnotify').remove();
- PNotify.notice({
+ paginatedPNotify('notice', {
title: 'None or Multiple ' + options.bazJstreeOptions.treeName + ' selected!',
text: 'Please select only 1 ' + options.bazJstreeOptions.treeName + ' to rename',
});
@@ -10619,7 +10625,7 @@ var BazNotifications = function() {
return bazNotificationsConstructor;
}();
/* exported BazMessenger */
-/* globals PNotify EmojiPicker autoComplete dayjs Swal */
+/* globals paginatedPNotify EmojiPicker autoComplete dayjs Swal */
/*
* @title : BazMessenger
* @description : Baz Messenger Lib
@@ -10832,7 +10838,7 @@ var BazMessenger = function() {
getUnreadMessagesCount();
}
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -10879,7 +10885,7 @@ var BazMessenger = function() {
$('#messenger-main-unmute').attr('hidden', false);
$('#messenger-button').children('i').removeClass('fa-comment').addClass('fa-comment-slash');
} else {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage,
});
}
@@ -10908,7 +10914,7 @@ var BazMessenger = function() {
$('#messenger-main-mute').attr('hidden', false);
$('#messenger-button').children('i').removeClass('fa-comment-slash').addClass('fa-comment');
} else {
- PNotify.error({
+ paginatedPNotify('error', {
title : response.responseMessage,
});
}
@@ -10959,7 +10965,9 @@ var BazMessenger = function() {
} else if (currentMessengerWindows > 1 && currentMessengerWindows < 3) {
fromLeft = (5 * currentMessengerWindows) + (currentMessengerWindows * 473) + 5;
} else {
- PNotify.error({text: "Only 3 chat windows can be opened at a given time. Please close other chat windows to allow this window to open."});
+ paginatedPNotify('error', {
+ text: "Only 3 chat windows can be opened at a given time. Please close other chat windows to allow this window to open."
+ });
return;
}
@@ -11105,7 +11113,7 @@ var BazMessenger = function() {
markAllMessagesRead(user);
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -11226,7 +11234,7 @@ var BazMessenger = function() {
$('#messenger-messages-load-more-' + toUser.user).closest('div.row').remove();
populateMessages(toUser, response.responseData.messages, response.responseData.paginationCounters, true);
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -11289,7 +11297,7 @@ var BazMessenger = function() {
if (response.responseCode == 0) {
//
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -11369,7 +11377,7 @@ var BazMessenger = function() {
$('#messenger-no-messages-' + user.user).attr('hidden', true);
$('#direct-chat-messages-' + user.user).scrollTop($('#direct-chat-messages-' + user.user).get(0).scrollHeight);
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -11450,7 +11458,7 @@ var BazMessenger = function() {
$('#messenger-message-' + postData['id'] + ' .messenger-message-remove').attr('hidden', true);
$('#messenger-message-' + postData['id']).off();
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -11680,7 +11688,7 @@ var BazMessenger = function() {
}
}
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
@@ -11703,7 +11711,7 @@ var BazMessenger = function() {
if (response.responseCode == 0) {
//
} else {
- PNotify.error({
+ paginatedPNotify('error', {
text : response.responseMessage,
textTrusted : true
});
diff --git a/system/Base/BaseComponent.php b/system/Base/BaseComponent.php
index 074992f29..fcbff4136 100644
--- a/system/Base/BaseComponent.php
+++ b/system/Base/BaseComponent.php
@@ -305,7 +305,7 @@ protected function checkComponentDependencies($component = null)
)
)
) {
- $this->setErrorDispatcher('controllerDependencyError', ['error' => true]);
+ $this->setErrorDispatcher('controllerPackageDependencyError', ['error' => true, 'module' => $packageModule]);
return false;
}
@@ -330,7 +330,7 @@ protected function checkComponentDependencies($component = null)
($viewModule['installed'] == false || $viewModule['apps'][$this->app['id']]['enabled'] == false)
)
) {
- $this->setErrorDispatcher('controllerDependencyError', ['error' => true]);
+ $this->setErrorDispatcher('controllerViewDependencyError', ['error' => true, 'module' => $viewModule]);
return false;
}
@@ -961,14 +961,15 @@ protected function usePackage($packageClass)
$packageName = implode('', $packageClass);
}
} else {
- if ($this->checkPackage($packageClass)) {
- $package = (new $packageClass())->init();
- $packageName = $this->helper->last(explode('\\', $packageClass));
- } else {
- throw new \Exception(
- 'Package class : ' . $packageClass .
- ' not available for app ' . $this->app['name']
- );
+ $package = (new $packageClass())->init();
+ $packageName = $this->helper->last(explode('\\', $packageClass));
+
+ if (!$this->checkPackage($packageClass)) {
+ $this->setErrorDispatcher('appPackagePermissionDenied', ['error' => true, 'module_name' => $packageName]);
+ // throw new \Exception(
+ // 'Package class : ' . $packageClass .
+ // ' not available for app ' . $this->app['name']
+ // );
}
}
@@ -1042,15 +1043,15 @@ protected function checkPackage($packageClass)
protected function useComponent($componentClass)
{
- if ($this->checkComponent($componentClass)) {
- $component = new $componentClass();
-
- $componentName = $this->helper->last(explode('\\', $componentClass));
- } else {
- throw new \Exception(
- 'Component class : ' . $componentClass .
- ' not available for app ' . $this->app['name']
- );
+ $component = new $componentClass();
+ $componentName = $this->helper->last(explode('\\', $componentClass));
+
+ if (!$this->checkComponent($componentClass)) {
+ $this->setErrorDispatcher('appComponentPermissionDenied', ['error' => true, 'module_name' => $componentName]);
+ // throw new \Exception(
+ // 'Component class : ' . $componentClass .
+ // ' not available for app ' . $this->app['name']
+ // );
}
if (!isset($this->usedModules['components'])) {
diff --git a/system/Base/BasePackage.php b/system/Base/BasePackage.php
index 2991a7e6d..9f495542d 100644
--- a/system/Base/BasePackage.php
+++ b/system/Base/BasePackage.php
@@ -199,7 +199,7 @@ public function getById(int $id, bool $resetCache = false, bool $enableCache = t
$this->setFfStoreToUse();
if (is_array($this->ffData) && count($this->ffData) > 0) {
- return $this->ffData;
+ return $this->jsonData($this->ffData, true);
}
return false;
@@ -254,11 +254,11 @@ public function getFirst($by = null, $value = null, bool $resetCache = false, bo
}
if ($by === 'id') {
- $value = (int) $value;
+ $this->ffData = $this->jsonData($this->ffStore->findById((int) $value, $this->ffRelations, $this->ffRelationsConditions), true);
+ } else {
+ $this->ffData = $this->jsonData($this->ffStore->findOneBy([$by, '=', $value], $this->ffRelations, $this->ffRelationsConditions), true);
}
- $this->ffData = $this->ffStore->findOneBy([$by, '=', $value], $this->ffRelations, $this->ffRelationsConditions);
-
$this->setFfStoreToUse();
if (is_array($this->ffData) && count($this->ffData) > 0) {
@@ -451,7 +451,7 @@ public function getByParams(array $params, bool $resetCache = false, bool $enabl
}
}
- return $this->ffData;
+ return $this->jsonData($this->ffData, true);
}
return false;
@@ -2302,6 +2302,21 @@ public function getDbCount($recount = false)
return $this->ffStore->count($recount);
}
}
+
+ public function getLastInsertedId()
+ {
+ if ($this->config->databasetype === 'db') {
+ $data = $this->modelToUse::find();
+
+ return $data->getLast()['id'];
+ } else {
+ if (!$this->ffStore) {
+ $this->ffStore = $this->ff->store($this->ffStoreToUse);
+ }
+
+ return $this->ffStore->getLastInsertedId();
+ }
+ }
// protected function addRefId($data)
// {
// if (!isset($data['ref_id'])) {
diff --git a/system/Base/Helpers.php b/system/Base/Helpers.php
index 3ca32cf8f..535340283 100644
--- a/system/Base/Helpers.php
+++ b/system/Base/Helpers.php
@@ -269,7 +269,7 @@ function checkCtype($str, $ctype = 'alnum', $ignoreChars = null) {
}
if (!function_exists('msort')) {
- function msort($array, $key, $sort_flags = SORT_REGULAR, $order = SORT_ASC) {
+ function msort($array, $key, $sort_flags = SORT_REGULAR, $order = SORT_ASC, $preserveKey = false) {
if (is_array($array) && count($array) > 0) {
if (!empty($key)) {
$mapping = array();
@@ -294,7 +294,11 @@ function msort($array, $key, $sort_flags = SORT_REGULAR, $order = SORT_ASC) {
}
$sorted = array();
foreach ($mapping as $k => $v) {
- $sorted[] = $array[$k];
+ if ($preserveKey) {
+ $sorted[$k] = $array[$k];
+ } else {
+ $sorted[] = $array[$k];
+ }
}
return $sorted;
}
@@ -643,3 +647,21 @@ function getRemoteFilesize($url, $formatSize = false, $useHead = false) {
return $size;
}
}
+
+if (!function_exists('numberFormatPrecision')) {
+ function numberFormatPrecision($number, $precision = 2, $separator = '.') {
+ $numberParts = explode($separator, $number);
+ $response = $numberParts[0];
+
+ if (count($numberParts) > 1 && $precision > 0) {
+ $response .= $separator;
+ $response .= substr($numberParts[1], 0, $precision);
+ }
+
+ if ($response == '-0') {
+ $response = 0;
+ }
+
+ return (float) $response;
+ }
+}
\ No newline at end of file
diff --git a/system/Base/Providers/BasepackagesServiceProvider/Packages/ApiClientServices/ApiClientServices.php b/system/Base/Providers/BasepackagesServiceProvider/Packages/ApiClientServices/ApiClientServices.php
index df0812cfe..9d1b60c84 100644
--- a/system/Base/Providers/BasepackagesServiceProvider/Packages/ApiClientServices/ApiClientServices.php
+++ b/system/Base/Providers/BasepackagesServiceProvider/Packages/ApiClientServices/ApiClientServices.php
@@ -179,7 +179,7 @@ protected function switchApiModel($api = null)
$this->packageName = 'apiApis' . $api['category'] . $api['provider'];
} else {
- $this->setModelToUse($modelToUse = BasepackagesApiClientServices::class);
+ $this->setModelToUse($this->modelToUse = BasepackagesApiClientServices::class);
$this->packageName = 'apiClientServices';
}
diff --git a/system/Base/Providers/BasepackagesServiceProvider/Packages/Filters.php b/system/Base/Providers/BasepackagesServiceProvider/Packages/Filters.php
index 6396eb868..2ffe1d46c 100644
--- a/system/Base/Providers/BasepackagesServiceProvider/Packages/Filters.php
+++ b/system/Base/Providers/BasepackagesServiceProvider/Packages/Filters.php
@@ -522,6 +522,10 @@ public function addFilter(array $data)
}
}
+ if (!isset($data['app_type'])) {
+ $data['app_type'] = $this->app['app_type'];
+ }
+
if ($this->checkDefaultFilter($data)) {
$add = $this->add($data);
diff --git a/system/Base/Providers/BasepackagesServiceProvider/Packages/Menus.php b/system/Base/Providers/BasepackagesServiceProvider/Packages/Menus.php
index f282eb5be..2b0c04edd 100644
--- a/system/Base/Providers/BasepackagesServiceProvider/Packages/Menus.php
+++ b/system/Base/Providers/BasepackagesServiceProvider/Packages/Menus.php
@@ -123,13 +123,17 @@ public function updateMenus(array $data)
foreach ($menus as $menuId => $value) {
$menu = $this->getById($menuId);
- $menu['apps'] = $this->helper->decode($menu['apps'], true);
+ if (is_string($menu['apps'])) {
+ $menu['apps'] = $this->helper->decode($menu['apps'], true);
+ }
$menu['apps'] = array_replace($menu['apps'], $value);
$menu['apps'] = $this->helper->encode($menu['apps']);
- $menu['menu'] = $this->helper->decode($menu['menu'], true);
+ if (is_string($menu['menu'])) {
+ $menu['menu'] = $this->helper->decode($menu['menu'], true);
+ }
$menu['menu'] = $this->helper->encode($menu['menu'], JSON_UNESCAPED_SLASHES);
$this->update($menu);
diff --git a/system/Base/Providers/BasepackagesServiceProvider/Packages/Progress.php b/system/Base/Providers/BasepackagesServiceProvider/Packages/Progress.php
index 9a7e493fc..b850df981 100644
--- a/system/Base/Providers/BasepackagesServiceProvider/Packages/Progress.php
+++ b/system/Base/Providers/BasepackagesServiceProvider/Packages/Progress.php
@@ -548,7 +548,10 @@ public function terminatePid($progressFile)
exec('ps -aux | grep ' . $progressFile['pid'], $output, $result);
if ($result === 0 && count($output) > 0) {
- if (str_contains($output[0], 'php')) {
+ if (str_contains($output[0], 'php') &&
+ str_contains($output[0], ' ' . $progressFile['pid'] . ' ') &&
+ str_starts_with($output[0], get_current_user())//Make sure we only remove the PID that is assigned via PHP User
+ ) {
exec('kill -9 ' . $progressFile['pid'], $output, $result);
if ($result !== 0) {
@@ -557,12 +560,16 @@ public function terminatePid($progressFile)
return false;
}
- $this->writeProgressFile(methods: [],progressFile: $progressFile);
+ $progressFile['pid'] = null;
+ } else {//We assume that PID does not exists and we remove it from file.
+ $progressFile['pid'] = null;
+ }
+
+ $this->writeProgressFile(methods: [],progressFile: $progressFile);
- $this->addResponse('Successfully terminating process');
+ $this->addResponse('Successfully terminating process');
- return $this->resetProgress();
- }
+ return $this->resetProgress();
}
return true;
diff --git a/system/Base/Providers/BasepackagesServiceProvider/Packages/Storages/Local.php b/system/Base/Providers/BasepackagesServiceProvider/Packages/Storages/Local.php
index beeb75fa2..f65fed1b9 100644
--- a/system/Base/Providers/BasepackagesServiceProvider/Packages/Storages/Local.php
+++ b/system/Base/Providers/BasepackagesServiceProvider/Packages/Storages/Local.php
@@ -83,24 +83,21 @@ public function initLocal(array $storage)
$this->dataPath = $this->storagePath . '/' . $this->settingsDataPath . '/';
- $this->storage['allowed_image_mime_types'] =
- isset($this->storage['allowed_image_mime_types']) ?
- $this->helper->decode($this->storage['allowed_image_mime_types']) :
- [];
+ if (!isset($this->storage['allowed_image_mime_types'])) {
+ $this->storage['allowed_image_mime_types'] = [];
+ }
$this->imageMimeTypes = $this->storage['allowed_image_mime_types'];
- $this->storage['allowed_image_sizes'] =
- isset($this->storage['allowed_image_sizes']) ?
- $this->helper->decode($this->storage['allowed_image_sizes']) :
- [30, 80, 200, 800, 1200, 2000];
+ if (!isset($this->storage['allowed_image_sizes'])) {
+ $this->storage['allowed_image_sizes'] = [30, 80, 200, 800, 1200, 2000];
+ }
$this->allowedImageSizes = $this->storage['allowed_image_sizes'];
- $this->storage['allowed_file_mime_types'] =
- isset($this->storage['allowed_file_mime_types']) ?
- $this->helper->decode($this->storage['allowed_file_mime_types']) :
- [];
+ if (!isset($this->storage['allowed_file_mime_types'])) {
+ $this->storage['allowed_file_mime_types'] = [];
+ }
$this->fileMimeTypes = $this->storage['allowed_file_mime_types'];
@@ -258,7 +255,6 @@ protected function processStore()
$this->storeFile();
return true;
-
} else {
$this->addResponse('File Type Not Accepted', 1);
@@ -537,7 +533,7 @@ public function getPublicLink(string $uuid, $width = null)
if (isset($file[0]['links']) &&
($file[0]['links'] !== null && $file[0]['links'] !== '')
) {
- $file[0]['links'] = $this->helper->decode($file[0]['links'], true);
+ $file[0]['links'] = $file[0]['links'];
}
if ($width) {
@@ -583,7 +579,7 @@ public function getPublicLink(string $uuid, $width = null)
protected function updateFileLink($file, $link, $width = null)
{
if ($file['links'] && !is_array($file['links'])) {
- $file['links'] = $this->helper->decode($file['links'], true);
+ $file['links'] = $file['links'];
}
if ($width) {
@@ -758,7 +754,7 @@ public function changeOrphanStatus(string $newUUID = null, string $oldUUID = nul
{
if ($array) {
if ($oldUUID) {
- $olduuids = $this->helper->decode($oldUUID, true);
+ $olduuids = $oldUUID;
foreach ($olduuids as $olduuidKey => $olduuid) {
if (!$status) {
@@ -770,7 +766,7 @@ public function changeOrphanStatus(string $newUUID = null, string $oldUUID = nul
}
if ($newUUID) {
- $uuids = $this->helper->decode($newUUID, true);
+ $uuids = $newUUID;
foreach ($uuids as $uuidKey => $newuuid) {
if (!$status) {
$status = 0;
diff --git a/system/Base/Providers/BasepackagesServiceProvider/Packages/Utils.php b/system/Base/Providers/BasepackagesServiceProvider/Packages/Utils.php
index 8c4baacc9..a7ec71e0a 100644
--- a/system/Base/Providers/BasepackagesServiceProvider/Packages/Utils.php
+++ b/system/Base/Providers/BasepackagesServiceProvider/Packages/Utils.php
@@ -537,8 +537,12 @@ public function validateJson($data)
return $data['json'];
}
- public function setMicroTimer($reference, $calculateMemoryUsage = false)
+ public function setMicroTimer($reference, $calculateMemoryUsage = false, $resetMicroTimers = false)
{
+ if ($resetMicroTimers) {
+ $this->resetMicroTimers();
+ }
+
$microtime['reference'] = $reference;
if ($this->microtime === 0) {
diff --git a/system/Base/Providers/CacheServiceProvider/OpCache.php b/system/Base/Providers/CacheServiceProvider/OpCache.php
index 381c49617..1ad941dd7 100644
--- a/system/Base/Providers/CacheServiceProvider/OpCache.php
+++ b/system/Base/Providers/CacheServiceProvider/OpCache.php
@@ -52,7 +52,7 @@ public function removeCache($key = null, $directory = null)
$this->setDirectory($directory);
if ($key) {
- if (opcache_is_script_cached(base_path($this->storagePath . $this->directory . '/' . $key . '.php'))) {
+ if ($this->checkCache($key, $directory)) {
if (!opcache_invalidate(base_path($this->storagePath . $this->directory . '/' . $key . '.php'), true)) {
return false;
}
@@ -127,4 +127,11 @@ public function setDirectory($directory = null)
$this->checkCachePath($this->directory);
}
+
+ public function checkCache($key, $directory = null)
+ {
+ $this->setDirectory($directory);
+
+ return file_exists(base_path($this->storagePath . $this->directory . '/' . $key . '.php'));
+ }
}
\ No newline at end of file
diff --git a/system/Base/Providers/DatabaseServiceProvider/Ff/Store.php b/system/Base/Providers/DatabaseServiceProvider/Ff/Store.php
index f2d345965..2ae1b7899 100644
--- a/system/Base/Providers/DatabaseServiceProvider/Ff/Store.php
+++ b/system/Base/Providers/DatabaseServiceProvider/Ff/Store.php
@@ -29,6 +29,7 @@ class Store
protected $indexesPath = '';
protected $readIndex = false;
protected $indexing = false;
+ protected $validateData = true;
protected $minIndexChars = 3;
protected $multiWords = true;
protected $multiWordsSeparator = ' ';
@@ -1438,14 +1439,16 @@ public function getStoreConfiguration()
protected function writeNewDocumentToStore(array $storeData): array
{
- if (isset($storeData[$this->primaryKey]) && $storeData[$this->primaryKey] != 0) {
+ $storeData = $this->validateData($storeData);
+
+ if (isset($storeData[$this->primaryKey]) &&
+ ($storeData[$this->primaryKey] != 0 || (is_string($storeData[$this->primaryKey]) && strlen($storeData[$this->primaryKey]) !== 0))
+ ) {
throw new IdNotAllowedException(
"The $this->primaryKey\" index is reserved, please delete the $this->primaryKey key and try again"
);
}
- $storeData = $this->validateData($storeData);
-
$id = $this->increaseCounterAndGetNextId();
$storeData[$this->primaryKey] = $id;
@@ -1476,6 +1479,12 @@ protected function writeNewDocumentToStore(array $storeData): array
protected function validateData(array $data)
{
+ if (!$this->validateData) {
+ $data = $this->normalizeData($data);
+
+ return $data;
+ }
+
if (!isset($data['id']) && count($this->uniqueFields) > 0) {
$criteria = [];
@@ -1821,6 +1830,10 @@ protected function checkAndStripId($id): int
if (is_string($id)) {
$id = IoHelper::secureStringForFileAccess($id);
+
+ if (strlen($id) == 0) {
+ return 0;
+ }
}
if (!is_numeric($id)) {
@@ -1870,4 +1883,16 @@ public function setReadIndex($index)
return $this->getReadIndex();
}
+
+ public function getValidateData()
+ {
+ return $this->validateData;
+ }
+
+ public function setValidateData($validateData)
+ {
+ $this->validateData = $validateData;
+
+ return $this->getValidateData();
+ }
}
\ No newline at end of file
diff --git a/system/Base/Providers/ErrorServiceProvider/ErrorsComponent.php b/system/Base/Providers/ErrorServiceProvider/ErrorsComponent.php
index 64309aaef..a70182e5c 100644
--- a/system/Base/Providers/ErrorServiceProvider/ErrorsComponent.php
+++ b/system/Base/Providers/ErrorServiceProvider/ErrorsComponent.php
@@ -20,7 +20,14 @@ public function controllerNotFoundAction()
$this->addResponse('Component Not Found', 1);
}
- public function controllerDependencyErrorAction()
+ public function controllerPackageDependencyErrorAction()
+ {
+ $this->view->pick('errors/controllerdependencyerror');
+
+ $this->addResponse('Component Dependency Error', 1);
+ }
+
+ public function controllerViewDependencyErrorAction()
{
$this->view->pick('errors/controllerdependencyerror');
diff --git a/system/Base/Providers/ModulesServiceProvider/Modules/Components.php b/system/Base/Providers/ModulesServiceProvider/Modules/Components.php
index 6935e2b22..d8e171398 100644
--- a/system/Base/Providers/ModulesServiceProvider/Modules/Components.php
+++ b/system/Base/Providers/ModulesServiceProvider/Modules/Components.php
@@ -119,7 +119,9 @@ public function getComponentByRouteForAppId($route, $appId = null)
}
foreach($this->components as $component) {
- $component['apps'] = $this->helper->decode($component['apps'], true);
+ if (is_string($component['apps'])) {
+ $component['apps'] = $this->helper->decode($component['apps'], true);
+ }
if (isset($component['apps'][$appId])) {
if (isset($component['apps'][$appId]['enabled']) &&
@@ -137,7 +139,9 @@ public function getComponentByRouteForAppId($route, $appId = null)
public function getComponentByNameForAppId($name, $appId)
{
foreach($this->components as $component) {
- $component['apps'] = $this->helper->decode($component['apps'], true);
+ if (is_string($component['apps'])) {
+ $component['apps'] = $this->helper->decode($component['apps'], true);
+ }
if (isset($component['apps'][$appId])) {
if (isset($component['apps'][$appId]['enabled']) &&
@@ -180,7 +184,9 @@ public function getComponentByClassForAppId($class, $appId = null)
$classArr = explode('\\', $class);
foreach($this->components as $component) {
- $component['apps'] = $this->helper->decode($component['apps'], true);
+ if (is_string($component['apps'])) {
+ $component['apps'] = $this->helper->decode($component['apps'], true);
+ }
if (count($classArr) === 1) {//Only Class Name Given
if (!str_contains($component['class'], $classArr[0])) {
@@ -211,7 +217,9 @@ public function getComponentsForAppId($appId)
$components = [];
foreach($this->components as $component) {
- $component['apps'] = $this->helper->decode($component['apps'], true);
+ if (is_string($component['apps'])) {
+ $component['apps'] = $this->helper->decode($component['apps'], true);
+ }
if (isset($component['apps'][$appId]['enabled']) &&
$component['apps'][$appId]['enabled'] === true
@@ -391,7 +399,9 @@ public function updateComponents(array $data)
$package = $this->modules->packages->getPackageByNameForRepo($dependencyPackage['name'], $dependencyPackage['repo']);
if ($package) {
- $package['apps'] = $this->helper->decode($package['apps'], true);
+ if (is_string($package['apps'])) {
+ $package['apps'] = $this->helper->decode($package['apps'], true);
+ }
$package['apps'][$data['id']]['enabled'] = true;
@@ -411,7 +421,9 @@ public function updateComponents(array $data)
if (!$status && array_key_exists('is_subview', $view) && $view['is_subview'] == false) {
continue;
}
- $view['apps'] = $this->helper->decode($view['apps'], true);
+ if (is_string($view['apps'])) {
+ $view['apps'] = $this->helper->decode($view['apps'], true);
+ }
$view['apps'][$data['id']]['enabled'] = (bool) $status;
diff --git a/system/Base/Providers/ModulesServiceProvider/Modules/Middlewares.php b/system/Base/Providers/ModulesServiceProvider/Modules/Middlewares.php
index 13a15afab..ce0d5e3d7 100644
--- a/system/Base/Providers/ModulesServiceProvider/Modules/Middlewares.php
+++ b/system/Base/Providers/ModulesServiceProvider/Modules/Middlewares.php
@@ -244,7 +244,9 @@ public function updateMiddlewares(array $data)
foreach ($middlewares['middlewares'] as $middlewareId => $status) {
$middleware = $this->getById($middlewareId);
- $middleware['apps'] = $this->helper->decode($middleware['apps'], true);
+ if (is_string($middleware['apps'])) {
+ $middleware['apps'] = $this->helper->decode($middleware['apps'], true);
+ }
if ($status === true) {
$middleware['apps'][$data['id']]['enabled'] = true;
@@ -271,7 +273,9 @@ public function updateMiddlewares(array $data)
foreach ($middlewares['sequence'] as $sequence => $middlewareId) {
$middleware = $this->getById($middlewareId);
- $middleware['apps'] = $this->helper->decode($middleware['apps'], true);
+ if (is_string($middleware['apps'])) {
+ $middleware['apps'] = $this->helper->decode($middleware['apps'], true);
+ }
//System Middlewares
if ($middleware['name'] === 'IpFilter') {
diff --git a/system/Base/Providers/ModulesServiceProvider/Modules/Packages.php b/system/Base/Providers/ModulesServiceProvider/Modules/Packages.php
index 260b8d04f..8df82c9e7 100644
--- a/system/Base/Providers/ModulesServiceProvider/Modules/Packages.php
+++ b/system/Base/Providers/ModulesServiceProvider/Modules/Packages.php
@@ -29,7 +29,9 @@ public function getPackageByNameForAppId($name, $appId = null)
}
foreach($this->packages as $package) {
- $package['apps'] = $this->helper->decode($package['apps'], true);
+ if (is_string($package['apps'])) {
+ $package['apps'] = $this->helper->decode($package['apps'], true);
+ }
if (isset($package['apps'][$appId])) {
if (strtolower($package['name']) === strtolower($name) &&
@@ -54,7 +56,9 @@ public function getPackageByClassForAppId($class, $appId = null)
}
foreach($this->packages as $package) {
- $package['apps'] = $this->helper->decode($package['apps'], true);
+ if (is_string($package['apps'])) {
+ $package['apps'] = $this->helper->decode($package['apps'], true);
+ }
if ($package['class'] !== $class) {
continue;
@@ -218,7 +222,9 @@ public function getPackagesForAppId($appId)
$packages = [];
foreach($this->packages as $package) {
- $package['apps'] = $this->helper->decode($package['apps'], true);
+ if (is_string($package['apps'])) {
+ $package['apps'] = $this->helper->decode($package['apps'], true);
+ }
if (isset($package['apps'][$appId]['enabled']) &&
$package['apps'][$appId]['enabled'] == 'true'
@@ -278,7 +284,7 @@ public function updateNotificationSubscriptions(array $subscriptions)
}
if ($this->packages[$packageId]['notification_subscriptions']) {
- if (!is_array($this->packages[$packageId]['notification_subscriptions'])) {
+ if (is_string($this->packages[$packageId]['notification_subscriptions'])) {
$this->packages[$packageId]['notification_subscriptions'] = $this->helper->decode($this->packages[$packageId]['notification_subscriptions'], true);
}
@@ -390,7 +396,9 @@ public function msupdate(array $data)//module settings update
$settingsData !== $this->security->getRequestToken()
) {
if (isset($package['settings'][$key])) {
- $settingsData = $this->helper->decode($settingsData, true);
+ if (is_string($settingsData)) {
+ $settingsData = $this->helper->decode($settingsData, true);
+ }
$package['settings'][$key] = $settingsData;
}
diff --git a/system/Base/Providers/ModulesServiceProvider/Modules/Views.php b/system/Base/Providers/ModulesServiceProvider/Modules/Views.php
index 9c8840400..2e3138281 100644
--- a/system/Base/Providers/ModulesServiceProvider/Modules/Views.php
+++ b/system/Base/Providers/ModulesServiceProvider/Modules/Views.php
@@ -289,7 +289,9 @@ protected function checkTagsPackage($packageName)
public function getViewByNameForAppId($name, $appId)
{
foreach($this->views as $view) {
- $view['apps'] = $this->helper->decode($view['apps'], true);
+ if (is_string($view['apps'])) {
+ $view['apps'] = $this->helper->decode($view['apps'], true);
+ }
if ((isset($view['apps'][$appId]['enabled']) &&
$view['apps'][$appId]['enabled'] == true) &&
@@ -308,7 +310,9 @@ public function getViewsForAppId($appId, $includeSubViews = true)
$views = [];
foreach($this->views as $view) {
- $view['apps'] = $this->helper->decode($view['apps'], true);
+ if (is_string($view['apps'])) {
+ $view['apps'] = $this->helper->decode($view['apps'], true);
+ }
if (isset($view['apps'][$appId]['enabled']) &&
$view['apps'][$appId]['enabled'] == 'true'
@@ -464,7 +468,9 @@ public function updateViews(array $data)
foreach ($views as $viewId => $status) {
$view = $this->getById($viewId);
- $view['apps'] = $this->helper->decode($view['apps'], true);
+ if (is_string($view['apps'])) {
+ $view['apps'] = $this->helper->decode($view['apps'], true);
+ }
if ($status === true) {
$view['apps'][$data['id']]['enabled'] = true;