? ORDER BY `ref`", array_merge(ps_param_fill($FIXED_LIST_FIELD_TYPES, 'i'), ['i', $last_check_field]) ); foreach ($resource_type_fields as $resource_type_field) { $resource_data_entries = ps_query("SELECT `resource`,`value` FROM `resource_data` WHERE resource_type_field= ?", ['i', $resource_type_field['ref']]); $datarowcount = count($resource_data_entries); $out = PHP_EOL . "Updating resource_node values for resource_type_field {$resource_type_field['ref']}:{$resource_type_field['name']}" . " (" . $datarowcount . " rows found)" . PHP_EOL; set_sysvar(SYSVAR_UPGRADE_PROGRESS_SCRIPT, $out); if ($cli) { echo $out; } else { echo nl2br(str_pad($out, 4096)); } ob_flush(); flush(); $limit = floor($datarowcount / 100); $n = 0; $fieldnodes = get_nodes($resource_type_field['ref']); foreach ($resource_data_entries as $resource_data_entry) { $resourceid = $resource_data_entry["resource"]; $nodes_to_add = array(); $node_names = array(); // Add any values that match but are not currently in resource_node $resource_nodes = get_resource_nodes($resourceid, $resource_type_field['ref']); $datavalues = explode(",", $resource_data_entry["value"]); foreach ($datavalues as $datavalue) { $datavalue = trim($datavalue); if ($datavalue == "") { continue; } // Add any values that match but are not currently in resource_node foreach ($fieldnodes as $fieldnode) { if ( ( $datavalue == trim($fieldnode["name"]) || $datavalue == trim(i18n_get_translated($fieldnode["name"])) ) && !in_array($fieldnode["ref"], $resource_nodes) // This is a valid node, is the corresponding resource_node set ) { $nodes_to_add[] = $fieldnode["ref"]; $node_names[] = $fieldnode["name"]; } } } if (count($nodes_to_add) > 0) { add_resource_nodes($resourceid, $nodes_to_add); } if ($n > $limit) { if ($cli) { echo "+"; } else { echo str_pad("+", 4096); } ob_flush(); flush(); $n = 0; } $n++; } set_sysvar("resource_node_check_field", $resource_type_field['ref']); }