PluginProbe
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration / 2.2.0
FluentBoards – Project Management, Task Management, Goal Tracking, Kanban Board, and, Team Collaboration v2.2.0
2.2.0 2.1.0 2.0.15 2.0.12 2.0.10 2.0.4 2.0.1 2.0.0 1.95.3 1.95.2 1.95 1.91.6 trunk 1.11 1.12 1.13 1.20 1.21 1.22 1.23 1.30 1.31 1.32 1.35 1.40 All 43 releases
← All changes | app/Services/Helper.php +25 -2 2.0.10 → 2.2.0 View file →
@@ -198,8 +198,9 @@
198 198 {
199 199 $fieldMaps = [
200 200 'bg_color' => 'sanitize_text_field',
201 201 'color' => 'sanitize_text_field',
202 + 'color_preset' => 'sanitize_key',
202 203 'label' => 'sanitize_text_field',
203 204 'boardId' => 'intval',
204 205 'task_id' => 'intval',
205 206 'meta_value' => 'intval',
@@ -240,10 +241,23 @@
240 241
241 242 return $data;
242 243 }
243 244
245 + /** Store full custom-field messages in LONGTEXT while keeping legacy VARCHAR columns bounded. */
244 246 public static function createActivity($data)
245 247 {
248 + if (!empty($data['settings']['custom_field_id'])) {
249 + $payload = [];
250 + foreach (['column', 'old_value', 'new_value', 'description'] as $key) {
251 + $payload[$key] = $data[$key] ?? null;
252 + }
253 + $data['settings']['custom_field_activity_payload'] = true;
254 + $data['description'] = wp_json_encode($payload);
255 + $data['column'] = Constant::ACTIVITY_CUSTOM_FIELD;
256 + $data['old_value'] = null;
257 + $data['new_value'] = null;
258 + }
259 +
246 260 return Activity::create($data);
247 261 }
248 262
249 263 public static function sanitizeTaskMeta($data)
@@ -334,8 +348,9 @@
334 348 }
335 349 return fluent_boards_page_url() . 'boards/' . $boardId;
336 350 }
337 351
352 + /** Format a CRM contact, avoiding a database lookup for unassociated tasks. */
338 353 public static function crm_contact($id)
339 354 {
340 355 if (!defined('FLUENTCRM')) {
341 356 return '';
@@ -340,8 +355,12 @@
340 355 if (!defined('FLUENTCRM')) {
341 356 return '';
342 357 }
343 358
359 + if (!$id) {
360 + return null;
361 + }
362 +
344 363 $contact = \FluentCrm\App\Models\Subscriber::with(['tags', 'lists'])->find($id);
345 364
346 365 if (!$contact) {
347 366 return null;
@@ -434,9 +453,10 @@
434 453
435 454 return $users;
436 455 }
437 456
438 - public static function sanitizeUsersArray($users, $boardId = null)
457 + // Callers formatting multiple lists may supply a resolved board-manager result.
458 + public static function sanitizeUsersArray($users, $boardId = null, $isBoardManager = null)
439 459 {
440 460 if (current_user_can('list_users')) {
441 461 return $users;
442 462 }
@@ -442,9 +462,9 @@
442 462 }
443 463
444 464 $sanitizedUsers = [];
445 465
446 - if(!PermissionManager::isBoardManager($boardId)) //Todo: may create permission security issue, will be modified later
466 + if (!($isBoardManager ?? PermissionManager::isBoardManager($boardId)))
447 467 {
448 468 $currentUser = wp_get_current_user();
449 469 if($currentUser && isset($currentUser->user_email)){
450 470 $currentUserEmail = $currentUser->user_email;
@@ -704,11 +724,13 @@
704 724 'deleted' => __('deleted', 'fluent-boards'),
705 725 'archived' => __('archived', 'fluent-boards'),
706 726 'restored' => __('restored', 'fluent-boards'),
707 727 'set' => __('set', 'fluent-boards'),
728 + 'moved' => __('moved', 'fluent-boards'),
708 729 ];
709 730
710 731 $columnTranslations = [
732 + Constant::ACTIVITY_CUSTOM_FIELD => __('custom field', 'fluent-boards'),
711 733 'task' => __('task', 'fluent-boards'),
712 734 'description' => __('description', 'fluent-boards'),
713 735 'board' => __('board', 'fluent-boards'),
714 736 'assignee' => __('assignee', 'fluent-boards'),
@@ -725,8 +747,9 @@
725 747 'the associate email' => __('the associate email', 'fluent-boards'),
726 748 'attachment' => __('attachment', 'fluent-boards'),
727 749 'repeat task' => __('repeat task', 'fluent-boards'),
728 750 'Repeat Task' => __('Repeat Task', 'fluent-boards'),
751 + 'tasks' => __('tasks', 'fluent-boards'),
729 752 ];
730 753
731 754 foreach ($activities as $activity) {
732 755 $activity->action_key = $activity->action;