Exemple #1
0
function attach_freeze($freeze)
{
    global $vars, $_attach_messages;
    foreach (array('refer', 'file', 'pass') as $var) {
        ${$var} = isset($vars[$var]) ? $vars[$var] : null;
    }
    if (empty($refer)) {
        // 呼び出し元のページが空の場合エラー
        return array('msg' => 'Page name is undefined.');
    }
    // ageが空白の時は0とする
    $age = isset($vars['age']) ? $vars['age'] : 0;
    // Wikiオブジェクト
    $wiki = Factory::Wiki($refer);
    if (!$wiki->has()) {
        // 呼び出し元のページが削除されている状態で
        // そのページに貼り付けられたファイルを凍結させようとするとエラー。
        // ※オリジナルとは異なる動作になる
        return array('msg' => 'Page is not exsists.');
    }
    if (!$wiki->isValied()) {
        // 無効なページ
        return array('msg' => $_attach_messages['err_nopage']);
    }
    if (!$wiki->isEditable()) {
        // ページが凍結されていたり認証がかかっているなどで編集できない場合
        return array('msg' => 'Page is not editable.');
    }
    // Attachオブジェクトを生成
    $obj = new Attach($refer, $file, $age);
    if (!$obj->has()) {
        // ファイルが存在しない
        return array('msg' => sprintf($_attach_messages['err_notfound'], Utility::htmlsc($refer)));
    }
    if ($freeze) {
        // 凍結させるときのメッセージ
        $msg = $_attach_messages['msg_freezed'];
        $err = $_attach_messages['msg_isfreeze'];
    } else {
        // 凍結解除させるときのメッセージ
        $msg = $_attach_messages['msg_unfreezed'];
        $err = $_attach_messages['msg_notfreeze'];
    }
    // ファイル凍結処理
    return $obj->freeze($freeze, $pass) ? array('msg' => $msg) : array('msg' => $err);
}