function parsevalues(&$conf, &$parse_log, &$task) { $colcount = count($conf['columns']); $conf['contents_parsed'] = array(); foreach ($conf['contents'] as $lineno => $fields) { if (count($fields) > $colcount) { $msg = "Redundadant columns at record row " . $lineno . ", Found # columns: " . count($fields) . " > expected: " . $colcount; JLog::add($msg); if ($task == 'testcsv') { $parse_log .= $msg; } } // Handle each field of the item //$conf['contents_parsed'][$lineno] = array(); // Prepare request variable used by the item's Model $data = array(); foreach ($fields as $col_no => $field_data) { if ($col_no >= $colcount) { break; } $fieldname = $conf['columns'][$col_no]; if (isset($conf['core_props'][$fieldname])) { $field_values = trim($field_data); } else { // Split multi-value field $vals = strlen($field_data) ? preg_split("/[\\s]*" . $conf['mval_separator'] . "[\\s]*/", $field_data) : array(); $vals = flexicontent_html::arrayTrim($vals); // Handle each value of the field $field_values = array(); foreach ($vals as $i => $val) { // Split multiple property fields $props = strlen($val) ? preg_split("/[\\s]*" . $conf['mprop_separator'] . "[\\s]*/", $val) : array(); $props = flexicontent_html::arrayTrim($props); unset($prop_arr); // Handle each property of the value foreach ($props as $j => $prop) { if (preg_match('/\\[-(.*)-\\]=(.*)/', $prop, $matches)) { $prop_arr[$matches[1]] = $matches[2]; } } $field_values[] = isset($prop_arr) ? $prop_arr : $val; } } //$conf['contents_parsed'][$lineno][$fieldname] = $field_values; // Assign array of field values to the item data row if ($fieldname == 'id') { if ($conf['id_col']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'title' || $fieldname == 'text' || $fieldname == 'alias') { $data[$fieldname] = $field_values; } else { if ($fieldname == 'language') { if (!$conf['language']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'state') { if (!strlen($conf['state'])) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'access') { if ($conf['access'] === 0) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'catid') { if ($conf['maincat_col']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'cid') { if ($conf['seccats_col']) { $data[$fieldname] = preg_split("/[\\s]*,[\\s]*/", $field_values); } } else { if ($fieldname == 'tags_names' || $fieldname == 'tags_raw') { $data[$fieldname] = $field_values; // *** TODO more during insertion ... check tags exist and create missing } else { if ($fieldname == 'created') { if ($conf['created_col']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'created_by') { if ($conf['created_by_col']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'modified') { if ($conf['modified_col']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'modified_by') { if ($conf['modified_by_col']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'metadesc') { if ($conf['metadesc_col']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'metakey') { if ($conf['metakey_col']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'publish_up') { if ($conf['publish_up_col']) { $data[$fieldname] = $field_values; } } else { if ($fieldname == 'publish_down') { if ($conf['publish_down_col']) { $data[$fieldname] = $field_values; } } else { // Custom Fields $data[$fieldname] = $field_values; } } } } } } } } } } } } } } } } } $conf['contents_parsed'][$lineno] = $data; } }