function test_get_span_info_from_field_ids() { $data = array("field-0-1-1-1" => 0); assert(get_span_info_from_field_ids($data) === array()); $data = array("field-0-1-1-1" => 0, "field-0-1-2-1" => 0); assert(get_span_info_from_field_ids($data) === array("colspan" => array(1 => array(1 => 2)))); $data = array("field-0-1-1-1" => 0, "field-0-2-1-1" => 0); assert(get_span_info_from_field_ids($data) === array("rowspan" => array(1 => array(1 => 2)))); $data = array("field-0-1-1-1" => 0, "field-0-1-2-1" => 0, "field-0-1-3-1" => 0); assert(get_span_info_from_field_ids($data) === array("colspan" => array(1 => array(1 => 3)))); $data = array("field-0-0-1-1" => 0, "field-0-0-2-1" => 0, "field-0-0-3-1" => 0, "field-0-1-1-1" => 0, "field-0-1-2-1" => 0, "field-0-1-3-1" => 0); assert(get_span_info_from_field_ids($data) === array("colspan" => array(0 => array(1 => 3)), "rowspan" => array(0 => array(1 => 2)))); $data = array("field-0-1-1-1" => 0, "field-0-1-2-1" => 0, "field-0-1-3-1" => 0, "field-0-3-2-1" => 0, "field-0-3-3-1" => 0, "field-0-3-4-1" => 0); assert(get_span_info_from_field_ids($data) === array("colspan" => array(1 => array(1 => 3), 3 => array(2 => 3)))); $data = array("field-0-3-3-1" => 0, "field-0-1-3-1" => 0, "field-0-1-1-1" => 0, "field-0-1-2-1" => 0, "field-0-3-4-1" => 0, "field-0-3-2-1" => 0); assert(get_span_info_from_field_ids($data) === array("colspan" => array(1 => array(1 => 3), 3 => array(2 => 3)))); }
function put_config($file_id, $REQUEST, $target, $sheet_name, &$list_colspan) { $str_type = array(0 => "number", 1 => "number", 2 => "rating", 3 => "image"); $conf = new FileConf($file_id); $list_requests = array(); foreach ($REQUEST as $item => $val) { preg_match("/field-(\\d+)-(\\d+)-(\\d+)-(\\d+)/", $item, $loc); if ($loc && $loc[0]) { $location = "{$loc[1]}-{$loc[2]}-{$loc[3]}"; $list_requests[$location] = $val; } } uksort($list_requests, 'strnatcmp'); foreach ($list_requests as $item => $val) { if (!isset($list_colspan[$item])) { $list_colspan[$item] = 0; } } $array_counts = array_count_values($list_requests); foreach ($array_counts as $key => $val) { $l = array_search($key, $list_requests, FALSE); if ($list_colspan[$l] == 0) { $list_colspan[$l] = $val; } } // XLSフィールド情報REQUEST取得 $conf->array_destroy("field"); $span_info = get_span_info_from_field_ids($REQUEST); foreach ($REQUEST as $item => $val) { preg_match("/field-(\\d+)-(\\d+)-(\\d+)-(\\d+)/", $item, $loc); if ($loc && $loc[0]) { $xls_fields = array(); $xls_fields["sheet_num"] = $loc[1]; $xls_fields["row"] = $loc[2]; $xls_fields["col"] = $loc[3]; $xls_fields["item_name"] = $val; # number, rating, image $xls_fields["type"] = $str_type[$loc[4]]; $location = "{$loc[1]}-{$loc[2]}-{$loc[3]}"; if (isset($list_colspan[$location])) { if ($list_colspan[$location] == 0) { continue; } $xls_fields["colspan"] = $list_colspan[$location]; } if (isset($span_info["colspan"][$xls_fields["row"]][$xls_fields["col"]])) { $xls_fields["colspan"] = $span_info["colspan"][$xls_fields["row"]][$xls_fields["col"]]; } // XLSフィールド情報保存 $conf->array_set("field", $xls_fields); } } $conf->array_commit(); if (isset($target) && strlen($target) > 0) { $conf->set("target", $target); } if (isset($sheet_name) && strlen($sheet_name) > 0) { $conf->set("name", $sheet_name); } $conf->set("selectedFieldDataJson", $_REQUEST["selectedFieldData"]); $conf->commit(); }