<?php
//=============================================================
// edit_conf_user.php で利用している関数
//=============================================================

/**
 * フォルト値 $conf_user_def と変更値 $_POST['conf_edit'] の両方が存在していて、
 * デフォルト値と変更値が異なる場合のみ設定保存対象となる（その他のデータは保存されず、破棄されることに注意）
 *
 * @return  array
 */
function _getConfSave()
{
    global $_conf, $conf_user_def;
    
    // ※特別なkey（edit_conf_user.php 以外でも設定されうるものは破棄せずにそのまま残す）
    // キーに命名規則（prefix）をつけた方がいいかも → キー名変更の必要があるのでひとまず保留
    $remain_keys = array('k_use_aas', 'maru_kakiko', 'index_menu_k', 'index_menu_k_from1');
    
    $conf_save = array();
    foreach ($conf_user_def as $k => $v) {
        if (isset($conf_user_def[$k]) && isset($_POST['conf_edit'][$k])) {
            if ($conf_user_def[$k] != $_POST['conf_edit'][$k]) {
                $conf_save[$k] = $_POST['conf_edit'][$k];
            }
            
        } elseif (in_array($k, $remain_keys)) {
            $conf_save[$k] = $_conf[$k];
        }
    }
    return $conf_save;
}

/**
 * ルール設定（$conf_user_rules）に基づいて、フィルタ処理（デフォルトセット）を行う
 * 2007/10/10 $conf_user_rules は $conf_user_filters に改名したい
 *
 * @return  void
 */
function _applyRules()
{
    global $conf_user_rules, $conf_user_def;
    
    if (is_array($conf_user_rules)) {
        foreach ($conf_user_rules as $k => $v) {
            if (isset($_POST['conf_edit'][$k])) {
                $def = isset($conf_user_def[$k]) ? $conf_user_def[$k] : null;
                foreach ($v as $func) {
                    $_POST['conf_edit'][$k] = call_user_func($func, $_POST['conf_edit'][$k], $def);
                }
            }
        }
    }
}

/**
 * 選択肢にない値はデフォルトセットする
 */
function _notSelToDef()
{
    global $conf_user_def, $conf_user_sel;
    
    $names = array_keys($conf_user_sel);
    
    if (is_array($names)) {
        foreach ($names as $n) {
            if (isset($_POST['conf_edit'][$n])) {
                if (!array_key_exists($_POST['conf_edit'][$n], $conf_user_sel[$n])) {
                    $_POST['conf_edit'][$n] = $conf_user_def[$n];
                }
            }
        }
    }
}
