Example #1
0
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))));
}
Example #2
0
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();
}