@@ -57,6 +57,11 @@ function widgets_diff($expected, $current)
5757 return IntegrityChecker::widgetsDiff ($ expected , $ current );
5858}
5959
60+ function widgets_added ($ current , $ expected )
61+ {
62+ return IntegrityChecker::widgetsAdded ($ current , $ expected );
63+ }
64+
6065// Inizializzazione del modulo corrente
6166$ module = Module::find ($ id_module );
6267
@@ -847,29 +852,20 @@ function editGroupErrorsByTable($results, $results_added, $premium_fields, $prem
847852 $ premium_settings = $ settings_reference_data ['premium_settings ' ];
848853
849854 $ settings = Update::getSettings ();
855+ $ current_premium_settings = aggiornamentiGetCurrentPremiumSettings ($ settings , $ premium_settings , $ data_settings );
850856 $ results_settings = settings_diff ($ data_settings , $ settings );
851857 $ results_settings_added = settings_diff ($ settings , $ data_settings );
852858
853859 $ contents_widgets = file_get_contents (base_dir ().'/widgets.json ' );
854860 $ data_widgets = json_decode ($ contents_widgets , true );
855-
856- // Carica e accoda i widgets dai file widgets.json presenti nelle sottocartelle di moduli e plugin
857- $ widgets_json_files = aggiornamentiGetReferenceJsonFiles ('widgets.json ' );
858-
859- if (!empty ($ widgets_json_files )) {
860- foreach ($ widgets_json_files as $ widgets_json_file ) {
861- $ widgets_data = aggiornamentiReadJsonFile ($ widgets_json_file );
862-
863- if (!empty ($ widgets_data ) && is_array ($ widgets_data )) {
864- // Accoda i widgets del componente a quelli principali
865- $ data_widgets = array_merge ($ data_widgets , $ widgets_data );
866- }
867- }
868- }
861+ $ widgets_reference_data = aggiornamentiMergeWidgetsReferenceData ($ data_widgets );
862+ $ data_widgets = $ widgets_reference_data ['data ' ];
863+ $ premium_widgets = $ widgets_reference_data ['premium_widgets ' ];
869864
870865 $ widgets = Update::getWidgets ();
866+ $ current_premium_widgets = aggiornamentiGetCurrentPremiumWidgets ($ widgets , $ premium_widgets , $ data_widgets );
871867 $ results_widgets = widgets_diff ($ data_widgets , $ widgets );
872- $ results_widgets_added = widgets_diff ($ widgets , $ data_widgets );
868+ $ results_widgets_added = widgets_added ($ widgets , $ data_widgets );
873869
874870 // Raggruppa gli errori per tabella (stessa logica di database.php)
875871 $ grouped_errors = editGroupErrorsByTable ($ results , $ results_added , $ premium_fields , $ premium_foreign_keys , $ data );
@@ -943,7 +939,7 @@ function editGroupErrorsByTable($results, $results_added, $premium_fields, $prem
943939 </div> ' ;
944940
945941 // Card Impostazioni personalizzate
946- $ has_settings_data_issues = !empty ($ results_settings ) || !empty ($ results_settings_added );
942+ $ has_settings_data_issues = !empty ($ results_settings ) || !empty ($ results_settings_added ) || ! empty ( $ current_premium_settings ) ;
947943
948944 // Conta gli avvisi per tipo
949945 $ settings_danger_count = 0 ;
@@ -953,6 +949,10 @@ function editGroupErrorsByTable($results, $results_added, $premium_fields, $prem
953949
954950 if ($ has_settings_data_issues ) {
955951 foreach ($ results_settings as $ key => $ setting ) {
952+ if (isset ($ premium_settings [$ key ])) {
953+ continue ;
954+ }
955+
956956 if (!$ setting ['current ' ]) {
957957 ++$ settings_danger_count ;
958958 } else {
@@ -961,14 +961,16 @@ function editGroupErrorsByTable($results, $results_added, $premium_fields, $prem
961961 }
962962
963963 foreach ($ results_settings_added as $ key => $ setting ) {
964+ if (isset ($ premium_settings [$ key ])) {
965+ continue ;
966+ }
967+
964968 if ($ setting ['current ' ] == null ) {
965- if (isset ($ premium_settings [$ key ])) {
966- ++$ settings_premium_count ;
967- } else {
968- ++$ settings_info_count ;
969- }
969+ ++$ settings_info_count ;
970970 }
971971 }
972+
973+ $ settings_premium_count = count ($ current_premium_settings );
972974 }
973975
974976 // Determina il colore della card in base all'avviso più grave
@@ -1022,17 +1024,22 @@ function editGroupErrorsByTable($results, $results_added, $premium_fields, $prem
10221024 </div> ' ;
10231025
10241026 // Card Widgets personalizzati
1025- $ has_widgets_data_issues = !empty ($ results_widgets ) || !empty ($ results_widgets_added );
1027+ $ has_widgets_data_issues = !empty ($ results_widgets ) || !empty ($ results_widgets_added ) || ! empty ( $ current_premium_widgets ) ;
10261028
10271029 // Conta gli avvisi per tipo
10281030 $ widgets_danger_count = 0 ;
10291031 $ widgets_warning_count = 0 ;
10301032 $ widgets_info_count = 0 ;
1033+ $ widgets_premium_count = 0 ;
10311034
10321035 if ($ has_widgets_data_issues ) {
10331036 foreach ($ results_widgets as $ module_key => $ module_widgets ) {
10341037 if (is_array ($ module_widgets )) {
10351038 foreach ($ module_widgets as $ widget_name => $ widget ) {
1039+ if (aggiornamentiFindPremiumWidgetReference ($ module_key , $ widget_name , $ premium_widgets , $ data_widgets ) !== null ) {
1040+ continue ;
1041+ }
1042+
10361043 if (!$ widget ['current ' ]) {
10371044 ++$ widgets_danger_count ;
10381045 } else {
@@ -1045,12 +1052,20 @@ function editGroupErrorsByTable($results, $results_added, $premium_fields, $prem
10451052 foreach ($ results_widgets_added as $ module_key => $ module_widgets ) {
10461053 if (is_array ($ module_widgets )) {
10471054 foreach ($ module_widgets as $ widget_name => $ widget ) {
1048- if ($ widget ['current ' ] == null ) {
1055+ if (aggiornamentiFindPremiumWidgetReference ($ module_key , $ widget_name , $ premium_widgets , $ data_widgets ) !== null ) {
1056+ continue ;
1057+ }
1058+
1059+ if ($ widget ['expected ' ] == null ) {
10491060 ++$ widgets_info_count ;
10501061 }
10511062 }
10521063 }
10531064 }
1065+
1066+ foreach ($ current_premium_widgets as $ module_widgets ) {
1067+ $ widgets_premium_count += count ((array ) $ module_widgets );
1068+ }
10541069 }
10551070
10561071 // Determina il colore della card in base all'avviso più grave
@@ -1061,6 +1076,11 @@ function editGroupErrorsByTable($results, $results_added, $premium_fields, $prem
10611076 $ widgets_icon = $ widgets_colors ['icon ' ];
10621077
10631078 $ widgets_badge_html = Utils::generateBadgeHtml ($ widgets_danger_count , $ widgets_warning_count , $ widgets_info_count );
1079+
1080+ // Aggiungi badge per i widgets premium
1081+ if ($ widgets_premium_count > 0 ) {
1082+ $ widgets_badge_html .= '<span class="badge badge-primary ml-2"> ' .$ widgets_premium_count .'</span> ' ;
1083+ }
10641084
10651085 echo '
10661086 <div class="card card-outline card- ' .$ widgets_card_color .' requirements-card mb-2 collapsable collapsed-card">
0 commit comments