Ejemplo n.º 1
0
function attach_info($err = '')
{
    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->isReadable()) {
        // ページが凍結されていたり認証がかかっているなどで編集できない場合
        return array('msg' => 'Page is not readable.');
    }
    // Attachオブジェクトを生成
    $obj = new Attach($refer, $file, $age);
    if (!$obj->has()) {
        // ファイルが存在しない
        return array('msg' => sprintf($_attach_messages['err_notfound'], Utility::htmlsc($refer)));
    }
    return $obj->has() ? $obj->info($err) : array('msg' => $_attach_messages['err_notfound'], 'http_code' => 404);
}