-
Notifications
You must be signed in to change notification settings - Fork 9
Release 1.0.0 #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: release-1.0.1
Are you sure you want to change the base?
Release 1.0.0 #18
Changes from all commits
a19167d
a89059f
4ba67fd
984ac6e
d4eff8b
248822f
bd293d6
b81b0df
5cc9683
e489367
b0ce829
ef93b1b
1a26a5b
0bc94de
763d5cb
47895d9
ede348e
9b17e41
52306bd
ccafbba
7e41a94
a19e2b7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
language: "en" | ||
|
||
early_access: false | ||
|
||
reviews: | ||
request_changes_workflow: true | ||
high_level_summary: true | ||
poem: false | ||
review_status: true | ||
collapse_walkthrough: false | ||
path_filters: | ||
# Exclude XML files for manifest and configuration | ||
- "!**/*.xml" | ||
# Exclude language files (translations) | ||
- "!**/language/**/*.ini" | ||
# Exclude asset files that don’t need review | ||
- "!**/*.svg" | ||
- "!**/*.png" | ||
- "!**/*.jpg" | ||
- "!**/*.jpeg" | ||
- "!**/*.gif" | ||
- "!**/*.ico" | ||
# Exclude compiled and minified files | ||
- "!**/*.min.js" | ||
- "!**/*.min.css" | ||
# Exclude SCSS files if they are intermediate and do not need review | ||
- "!**/templates/**/*.scss" | ||
# Exclude libraries and vendor code (third-party dependencies) | ||
- "!**/node_modules/**" | ||
- "!**/vendor/**" | ||
# Exclude build files | ||
- "!**/build/**" | ||
# Exclude configuration files that are environment-specific | ||
- "!**/configuration.php" | ||
path_instructions: | ||
# JavaScript files: front-end interactivity and functionality | ||
- path: "**/*.js" | ||
instructions: | | ||
"Review JavaScript code to ensure: | ||
- Adherence to Google JavaScript style guide. | ||
- Efficient DOM manipulation suitable for Joomla’s frontend. | ||
- Use of Joomla’s core JavaScript libraries where applicable (e.g., jQuery compatibility). | ||
- Best practices for asynchronous requests if AJAX is used." | ||
- path: "**/*.php" | ||
instructions: | | ||
"Review the PHP code for Joomla coding standards compliance, ensuring: | ||
- Code follows Joomla's coding standards, validated using PHPCS with the Joomla standard. | ||
- Adherence to Joomla’s MVC structure for extensions. | ||
- Proper use of Joomla’s built-in functions (e.g., Input, Factory). | ||
- SQL queries use Joomla’s database API to prevent SQL injection. | ||
- Code is well-documented, with clear function and class descriptions." | ||
- path: "**/*.ts" | ||
instructions: | | ||
"Review the JavaScript code for conformity with the Google JavaScript style guide, highlighting any deviations. Ensure that: | ||
- The code adheres to best practices associated with nodejs. | ||
- The code adheres to best practices associated with nestjs framework. | ||
- The code adheres to best practices recommended for performance. | ||
- The code adheres to similar naming conventions for controllers, models, services, methods, variables." | ||
auto_review: | ||
enabled: true | ||
ignore_title_keywords: | ||
- "WIP" | ||
- "DO NOT MERGE" | ||
drafts: false | ||
base_branches: | ||
- "master" | ||
- "dev" | ||
- "j4x" | ||
- "feat/*" | ||
- "feat-*" | ||
- "release-*" | ||
|
||
chat: | ||
auto_reply: true |
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
@@ -92,3 +92,6 @@ COM_CLUSTER_PAGE_VIEW_USER = "Cluster user: View" | |||||||||
COM_CLUSTER_USER_LIST_VIEW_NAME="User" | ||||||||||
COM_CLUSTER_USER_LIST_VIEW_CLUSTER="Cluster Name" | ||||||||||
COM_CLUSTER_USERLIST_VIEW_ID="ID" | ||||||||||
|
||||||||||
JACTION_MANAGE_ALL_CLUSTER="Manage All Clusters" | ||||||||||
JACTION_MANAGE_ALL_CLUSTER_DESC="Manage All Clusters" | ||||||||||
Comment on lines
+96
to
+97
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Enhance clarity of language strings The new language strings could be improved in the following ways:
Consider applying these changes: -JACTION_MANAGE_ALL_CLUSTER="Manage All Clusters"
-JACTION_MANAGE_ALL_CLUSTER_DESC="Manage All Clusters"
+JACTION_MANAGE_ALL_CLUSTERS="Manage All Clusters"
+JACTION_MANAGE_ALL_CLUSTERS_DESC="Allows users to perform all management operations on clusters including creation, modification, and deletion" 📝 Committable suggestion
Suggested change
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -11,6 +11,7 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
use Joomla\CMS\Factory; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
use Joomla\CMS\Object\CMSObject; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
use Joomla\CMS\Language\Text; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Cluster class. Handles all application interaction with a Cluster | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -192,15 +193,15 @@ public function bind(&$array) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (empty($array)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->setError(JText::_('COM_CLUSTER_EMPTY_DATA')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->setError(Text::_('COM_CLUSTER_EMPTY_DATA')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Bind the array | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!$this->setProperties($array)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->setError(\JText::_('COM_CLUSTER_BINDING_ERROR')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$this->setError(Text::_('COM_CLUSTER_BINDING_ERROR')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -231,4 +232,38 @@ public function isOwner($userId = null) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* Function isMember to check user associated with passed cluster_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @param INT $userId User Id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @return boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
* @since __DEPLOY_VERSION__ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
public function isMember($userId = null) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$userId = Factory::getuser($userId)->id; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (empty($userId)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$ClusterModel = ClusterFactory::model('ClusterUsers', array('ignore_request' => true)); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$ClusterModel->setState('filter.published', 1); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$ClusterModel->setState('filter.cluster_id', (int) $this->id); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$ClusterModel->setState('filter.user_id', $userId); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// Check user associated with passed cluster_id | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$clusters = $ClusterModel->getItems(); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (!empty($clusters)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return true; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+245
to
+268
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Improve code structure and naming conventions. Consider these improvements:
public function isMember($userId = null)
{
$userId = Factory::getuser($userId)->id;
if (empty($userId))
{
return false;
}
- $ClusterModel = ClusterFactory::model('ClusterUsers', array('ignore_request' => true));
- $ClusterModel->setState('filter.published', 1);
- $ClusterModel->setState('filter.cluster_id', (int) $this->id);
- $ClusterModel->setState('filter.user_id', $userId);
+ $clusterModel = ClusterFactory::model('ClusterUsers', array('ignore_request' => true));
+ $clusterModel->setState('list.filter', array(
+ 'published' => 1,
+ 'cluster_id' => (int) $this->id,
+ 'user_id' => $userId
+ ));
// Check user associated with passed cluster_id
- $clusters = $ClusterModel->getItems();
+ $clusters = $clusterModel->getItems();
- if (!empty($clusters))
- {
- return true;
- }
-
- return false;
+ return !empty($clusters);
} 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -12,6 +12,7 @@ | |||||||||||||||||||||||||||||||||||||
use Joomla\CMS\Factory; | ||||||||||||||||||||||||||||||||||||||
use Joomla\CMS\MVC\Model\AdminModel; | ||||||||||||||||||||||||||||||||||||||
use Joomla\CMS\Table\Table; | ||||||||||||||||||||||||||||||||||||||
use Joomla\CMS\Component\ComponentHelper; | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||
* Item Model for an Cluster. | ||||||||||||||||||||||||||||||||||||||
|
@@ -110,4 +111,78 @@ public function save($data) | |||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
return parent::save($data); | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||
* Method to get the list of clusters to which user have access | ||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||
* @param INT $userId Users Id. | ||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||
* @return ARRAY List of clusters. | ||||||||||||||||||||||||||||||||||||||
* | ||||||||||||||||||||||||||||||||||||||
* @since 1.0.0 | ||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||
Comment on lines
+115
to
+123
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Correct DocBlock type declarations and grammatical errors. The DocBlock for the
Apply this diff to correct the DocBlock: /**
- * Method to get the list of clusters to which user have access
+ * Method to get the list of clusters to which the user has access
*
- * @param INT $userId Users Id.
+ * @param int $userId User ID.
*
- * @return ARRAY List of clusters.
+ * @return array List of clusters.
*
* @since 1.0.0
*/ 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||
public function getUsersClusters($userId = null) | ||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||
$user = empty($userId) ? Factory::getUser() : Factory::getUser($userId); | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
$clusters = array(); | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
// Load cluster library file | ||||||||||||||||||||||||||||||||||||||
JLoader::import("/components/com_cluster/includes/cluster", JPATH_ADMINISTRATOR); | ||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Use dot notation in Joomla coding standards recommend using dot notation for paths in Apply this diff: -JLoader::import("/components/com_cluster/includes/cluster", JPATH_ADMINISTRATOR);
+JLoader::import("components.com_cluster.includes.cluster", JPATH_ADMINISTRATOR); 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
// If user is not allowed to view all the clusters then return the clusters in which user is a part else return al cluster | ||||||||||||||||||||||||||||||||||||||
if (!$user->authorise('core.manageall', 'com_cluster')) | ||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||
$clusterUsersModel = ClusterFactory::model('ClusterUsers', array('ignore_request' => true)); | ||||||||||||||||||||||||||||||||||||||
$clusterUsersModel->setState('list.group_by_client_id', 1); | ||||||||||||||||||||||||||||||||||||||
$clusterUsersModel->setState('filter.published', 1); | ||||||||||||||||||||||||||||||||||||||
$clusterUsersModel->setState('list.ordering', 'cl.name'); | ||||||||||||||||||||||||||||||||||||||
$clusterUsersModel->setState('list.direction', 'ASC'); | ||||||||||||||||||||||||||||||||||||||
$clusterUsersModel->setState('filter.user_id', $user->id); | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
// Get all assigned cluster entries | ||||||||||||||||||||||||||||||||||||||
$clusters = $clusterUsersModel->getItems(); | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
else | ||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||
$clusterModel = ClusterFactory::model('Clusters', array('ignore_request' => true)); | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
// Get all cluster entries | ||||||||||||||||||||||||||||||||||||||
$clusterModel->setState('filter.state', 1); | ||||||||||||||||||||||||||||||||||||||
$clusterModel->setState('list.ordering', 'cl.name'); | ||||||||||||||||||||||||||||||||||||||
$clusterModel->setState('list.direction', 'ASC'); | ||||||||||||||||||||||||||||||||||||||
$clusters = $clusterModel->getItems(); | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
// Get com_subusers component status | ||||||||||||||||||||||||||||||||||||||
$subUserExist = ComponentHelper::getComponent('com_subusers', true)->enabled; | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
if ($subUserExist) | ||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||
JLoader::import("/components/com_subusers/includes/rbacl", JPATH_ADMINISTRATOR); | ||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Use dot notation in Similarly, adjust the path to use dot notation for consistency. Apply this diff: -JLoader::import("/components/com_subusers/includes/rbacl", JPATH_ADMINISTRATOR);
+JLoader::import("components.com_subusers.includes.rbacl", JPATH_ADMINISTRATOR); 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
$usersClusters = array(); | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
if (!empty($clusters)) | ||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||
if ($subUserExist && (!$user->authorise('core.manageall', 'com_cluster'))) | ||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||
foreach ($clusters as $cluster) | ||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||
// Check user has permission for mentioned cluster | ||||||||||||||||||||||||||||||||||||||
if (RBACL::authorise($user->id, 'com_cluster', 'core.manage', $cluster->cluster_id)) | ||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||
$usersClusters[] = $cluster; | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
else | ||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||
$usersClusters = $clusters; | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
return $usersClusters; | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Enhance security considerations in JavaScript/TypeScript instructions.
While PHP instructions include security considerations (SQL injection), similar security aspects should be addressed for JavaScript/TypeScript.
📝 Committable suggestion