@@ -96,7 +96,9 @@ public static function installBaseData(Migration $migration, $version)
9696 PRIMARY KEY (`id`),
9797 KEY `entities_id` (`entities_id`)
9898 ) ENGINE=InnoDB DEFAULT CHARSET= {$ default_charset } COLLATE= {$ default_collation } ROW_FORMAT=DYNAMIC; " ;
99- $ DB ->doQuery ($ query ) or die ($ DB ->error ());
99+ if (!$ DB ->doQuery ($ query )) {
100+ throw new \RuntimeException ('Error creating plugin_fields_containers table: ' . $ DB ->error ());
101+ }
100102 }
101103
102104 // multiple itemtype for one container
@@ -256,9 +258,10 @@ public static function installUserData(Migration $migration, $version)
256258 $ fieldsdata = $ fields ->find (['plugin_fields_containers_id ' => $ ostab ]);
257259
258260 $ classname = self ::getClassname (Computer::getType (), $ oscontainer ->fields ['name ' ]);
259- $ osdata = new $ classname ();
261+ $ dbu = new DbUtils ();
262+ $ osdata = $ dbu ->getItemForItemtype ($ classname );
260263 $ classname = self ::getClassname (Computer::getType (), $ compcontainer ->fields ['name ' ]);
261- $ compdata = new $ classname ( );
264+ $ compdata = $ dbu -> getItemForItemtype ( $ classname );
262265
263266 $ fieldnames = [];
264267 //add fields to compcontainer
@@ -278,7 +281,7 @@ public static function installUserData(Migration $migration, $version)
278281 ],
279282 );
280283 }
281- $ compdata:: addField ($ newname , $ field ['type ' ]);
284+ $ compdata-> addField ($ newname , $ field ['type ' ]);
282285 $ fieldnames [$ field ['name ' ]] = $ newname ;
283286 }
284287
@@ -768,7 +771,8 @@ public static function preItemPurge($item)
768771 $ itemtypes = json_decode ($ container ['itemtypes ' ]);
769772 if (in_array ($ itemtype , $ itemtypes )) {
770773 $ classname = 'PluginFields ' . $ itemtype . getSingular ($ container ['name ' ]);
771- $ fields = new $ classname ();
774+ $ dbu = new DbUtils ();
775+ $ fields = $ dbu ->getItemForItemtype ($ classname );
772776 $ fields ->deleteByCriteria (['items_id ' => $ item ->fields ['id ' ]], true );
773777 }
774778 }
@@ -892,7 +896,8 @@ public function showForm($ID, $options = [])
892896 if ($ ID > 0 && !empty ($ this ->fields ['subtype ' ])) {
893897 $ itemtypes = json_decode ($ this ->fields ['itemtypes ' ], true );
894898 $ itemtype = array_shift ($ itemtypes );
895- $ item = new $ itemtype ();
899+ $ dbu = new DbUtils ();
900+ $ item = $ dbu ->getItemForItemtype ($ itemtype );
896901 $ item ->getEmpty ();
897902 $ tabs = self ::getSubtypes ($ item );
898903 echo $ tabs [$ this ->fields ['subtype ' ]];
@@ -962,41 +967,44 @@ public static function showFormSubtype($params, $display = false)
962967 $ out = "<script type='text/javascript'>jQuery('#tab_tr').hide();</script> " ;
963968 if (isset ($ params ['type ' ]) && $ params ['type ' ] == 'domtab ' ) {
964969 if (class_exists ($ params ['itemtype ' ])) {
965- $ item = new $ params ['itemtype ' ]();
966- $ item ->getEmpty ();
967-
968- $ tabs = self ::getSubtypes ($ item );
970+ $ dbu = new DbUtils ();
971+ $ item = $ dbu ->getItemForItemtype ($ params ['itemtype ' ]);
972+ if ($ item !== false ) {
973+ $ item ->getEmpty ();
974+
975+ $ tabs = self ::getSubtypes ($ item );
976+
977+ if (count ($ tabs )) {
978+ // delete Log of array (don't work with this tab)
979+ $ tabs_to_remove = ['Log$1 ' , 'Document_Item$1 ' ];
980+ foreach ($ tabs_to_remove as $ tab_to_remove ) {
981+ if (isset ($ tabs [$ tab_to_remove ])) {
982+ unset($ tabs [$ tab_to_remove ]);
983+ }
984+ }
969985
970- if ( count ( $ tabs )) {
971- // delete Log of array (don't work with this tab)
972- $ tabs_to_remove = [' Log$1 ' , ' Document_Item$1 ' ];
973- foreach ( $ tabs_to_remove as $ tab_to_remove ) {
974- if ( isset ( $ tabs [ $ tab_to_remove ])) {
975- unset( $ tabs [ $ tab_to_remove ]);
986+ // For delete <sup class='tab_nb'>number</sup> :
987+ foreach ( $ tabs as & $ value ) {
988+ $ results = [];
989+ if ( preg_match_all ( ' #<sup.*>(.+)</sup># ' , $ value , $ results ) ) {
990+ $ value = str_replace ( $ results [ 0 ][ 0 ], '' , $ value );
991+ }
976992 }
977- }
978993
979- // For delete <sup class='tab_nb'>number</sup> :
980- foreach ($ tabs as &$ value ) {
981- $ results = [];
982- if (preg_match_all ('#<sup.*>(.+)</sup># ' , $ value , $ results )) {
983- $ value = str_replace ($ results [0 ][0 ], '' , $ value );
994+ if (!isset ($ params ['subtype ' ])) {
995+ $ params ['subtype ' ] = null ;
984996 }
985- }
986997
987- if (!isset ($ params ['subtype ' ])) {
988- $ params ['subtype ' ] = null ;
998+ $ out .= Dropdown::showFromArray (
999+ 'subtype ' ,
1000+ $ tabs ,
1001+ ['value ' => $ params ['subtype ' ],
1002+ 'width ' => '100% ' ,
1003+ 'display ' => false ,
1004+ ],
1005+ );
1006+ $ out .= "<script type='text/javascript'>jQuery('#tab_tr').show();</script> " ;
9891007 }
990-
991- $ out .= Dropdown::showFromArray (
992- 'subtype ' ,
993- $ tabs ,
994- ['value ' => $ params ['subtype ' ],
995- 'width ' => '100% ' ,
996- 'display ' => false ,
997- ],
998- );
999- $ out .= "<script type='text/javascript'>jQuery('#tab_tr').show();</script> " ;
10001008 }
10011009 }
10021010 }
@@ -1241,7 +1249,8 @@ public function updateFieldsValues($data, $itemtype, $massiveaction = false)
12411249 $ items_id = $ data ['items_id ' ];
12421250 $ classname = self ::getClassname ($ itemtype , $ container_obj ->fields ['name ' ]);
12431251
1244- $ obj = new $ classname ();
1252+ $ dbu = new DbUtils ();
1253+ $ obj = $ dbu ->getItemForItemtype ($ classname );
12451254 if ($ obj ->getFromDBByCrit (['items_id ' => $ items_id ]) === false ) {
12461255 // add fields data
12471256 $ obj ->add ($ data );
@@ -1315,7 +1324,8 @@ public static function constructHistory(
13151324 $ field_obj
13161325 ) {
13171326 // Don't log few itemtypes
1318- $ obj = new $ itemtype ();
1327+ $ dbu = new DbUtils ();
1328+ $ obj = $ dbu ->getItemForItemtype ($ itemtype );
13191329 if ($ obj ->dohistory == false ) {
13201330 return ;
13211331 }
@@ -1467,7 +1477,8 @@ public static function validateValues($data, $itemtype, $massiveaction)
14671477 if ($ container ->fields ['type ' ] === 'dom ' ) {
14681478 $ status_value = $ data [$ status_field_name ] ?? null ;
14691479 } else {
1470- $ relatedItem = new $ itemtype ();
1480+ $ dbu = new DbUtils ();
1481+ $ relatedItem = $ dbu ->getItemForItemtype ($ itemtype );
14711482 $ status_value = $ relatedItem ->fields [$ status_field_name ] ?? null ;
14721483 }
14731484 // Apply status overrides
0 commit comments