Files
resourcespace/plugins/csv_upload/include/meta_functions.php
2025-07-18 16:20:14 +07:00

49 lines
2.2 KiB
PHP
Executable File

<?php
function meta_get_map() // returns array of [resource_type][table][attributes], where attributes are (remote_table, remote_ref, required, missing, options[])
{
global $mysql_db;
$meta = array();
$fields = get_resource_type_fields();
foreach ($fields as $field) {
# Get translated - support i18n - upload columns must be in user's local language.
$field['name'] = trim(i18n_get_translated($field['name']));
$arr_fieldrestypes = explode(",", (string) $field['resource_types']);
foreach ($arr_fieldrestypes as $fieldrestype) {
$fieldrestype = (int) $fieldrestype;
if (!isset($meta[$fieldrestype])) {
$meta[$fieldrestype] = []; // make meta[<resource_type>] if does not exist
}
$meta[$fieldrestype][$field['name']]['remote_ref'] = $field['ref'];
$meta[$fieldrestype][$field['name']]['nicename'] = $field['title'];
$meta[$fieldrestype][$field['name']]['required'] = $field['required'];
$meta[$fieldrestype][$field['name']]['type'] = $field['type'];
$meta[$fieldrestype][$field['name']]['missing'] = false;
}
}
$columns = ps_query("SELECT upper(column_name) AS name, column_name AS nicename FROM information_schema.columns WHERE table_name = 'resource' AND table_schema = ?", ['s', $mysql_db]);
foreach (array_keys($meta) as $resource_type) {
foreach ($columns as $column) {
if (!isset($meta[$resource_type])) {
$meta[$resource_type] = array();
}
if (isset($meta[$resource_type][$column['name']]) || isset($meta[0][$column['name']])) {
continue; // important, we do not want to override an existing meta field defined in resource_field_type
}
$meta[$resource_type][$column['name']] = array();
$meta[$resource_type][$column['name']]['remote_table'] = "resource";
$meta[$resource_type][$column['name']]['remote_ref'] = null; // not required as mapping to resource table
$meta[$resource_type][$column['name']]['required'] = ($column == "resource_type");
$meta[$resource_type][$column['name']]['missing'] = false;
}
}
return $meta;
}