$success_msg = gettext("Your vote has been cleared"); } } if (isset($_POST['addcomment'])) { if (isset($_POST['comment']) && strlen(trim($_POST['comment'])) > 0) { $comment = trim($_POST['comment']); links_add_comment($lid, $_SESSION['UID'], $comment); $success_msg = gettext("Your comment was added."); } else { $error_msg_array[] = gettext("You must type a comment!"); $valid = false; } } if (isset($_POST['update']) && ($user_perm_links_moderate || $creator_uid == $_SESSION['UID'])) { if (isset($_POST['delete']) && $_POST['delete'] == "confirm") { links_delete($lid); if (session::check_perm(USER_PERM_FOLDER_MODERATE, 0) && $link['UID'] != $_SESSION['UID']) { admin_add_log_entry(DELETE_LINK, array($link['LID'], $link['TITLE'], $link['URI'])); } header_redirect("links.php?webtag={$webtag}&fid={$parent_fid}"); exit; } else { if (isset($_POST['fid']) && is_numeric($_POST['fid'])) { $fid = $_POST['fid']; } else { $error_msg_array[] = gettext("No Folder ID specified"); $valid = false; } if (isset($_POST['uri']) && preg_match('/\\b([a-z]+:\\/\\/([-\\p{L}]{2,}\\.)*[-\\p{L}]{2,}(:\\d+)?(([^\\s;,.?"\'[\\]() {}<>]|\\S[^\\s;,.?"\'[\\]() {}<>])*)?)/iu', $_POST['uri'])) { $uri = $_POST['uri']; } else {
admin_add_log_entry(APPROVED_LINK, array($lid)); if (preg_match("/^links_detail.php/u", $ret) > 0) { header_redirect("links_detail.php?webtag={$webtag}&lid={$lid}&link_approve_success={$lid}"); exit; } else { html_draw_top(sprintf('title=%s', gettext("Approve Link")), 'class=window_title'); html_display_msg(gettext("Approve Link"), sprintf(gettext("Successfully approved link"), $lid), "admin_link_approve.php", 'get', array('back' => gettext("Back")), array('ret' => $ret), '_self', 'center'); html_draw_bottom(); exit; } } else { $error_msg_array[] = gettext("Link approval failed"); } } else { if (isset($_POST['delete'])) { if (links_delete($lid)) { if (session::check_perm(USER_PERM_FOLDER_MODERATE, 0) && $link['UID'] != session::get_value('UID')) { admin_add_log_entry(DELETE_LINK, array($lid)); } if (preg_match("/^links_detail.php/u", $ret) > 0) { header_redirect("links_detail.php?webtag={$webtag}&lid={$lid}&link_approve_success={$lid}"); exit; } else { html_draw_top(sprintf('title=%s', gettext("Approve Link")), 'class=window_title'); html_display_msg(gettext("Approve Link"), sprintf(gettext("Successfully deleted link"), $lid), "admin_link_approve.php", 'get', array('back' => gettext("Back")), array('ret' => $ret), '_self', 'center'); html_draw_bottom(); exit; } } else { $error_msg_array[] = gettext("Error deleting link"); }
function links_update($page) { // if (PKWK_READONLY) return; // Do nothing if (auth::check_role('readonly')) { return; } // Do nothing if (ini_get('safe_mode') == '0') { set_time_limit(0); } $time = is_page($page, TRUE) ? get_filetime($page) : 0; $rel_old = array(); $rel_file = CACHE_DIR . encode($page) . '.rel'; $rel_file_exist = file_exists($rel_file); if ($rel_file_exist === TRUE) { $lines = file($rel_file); unlink($rel_file); if (isset($lines[0])) { $rel_old = explode("\t", rtrim($lines[0])); } } $rel_new = array(); // 参照先 $rel_auto = array(); // オートリンクしている参照先 $links = links_get_objects($page, TRUE); foreach ($links as $_obj) { if (!isset($_obj->type) || $_obj->type != 'pagename' || $_obj->name == $page || $_obj->name == '') { continue; } if (is_a($_obj, 'Link_autolink')) { // 行儀が悪い $rel_auto[] = $_obj->name; } else { if (is_a($_obj, 'Link_autoalias')) { $_aliases = get_autoaliases($_obj->name); foreach ($_aliases as $_alias) { if (is_pagename($_alias)) { $rel_auto[] = $_alias; } } } else { $rel_new[] = $_obj->name; } } } $rel_new = array_unique($rel_new); // autolinkしか向いていないページ $rel_auto = array_diff(array_unique($rel_auto), $rel_new); // 全ての参照先ページ $rel_new = array_merge($rel_new, $rel_auto); // .rel:$pageが参照しているページの一覧 if ($time) { // ページが存在している if (!empty($rel_new)) { $fp = fopen($rel_file, 'w') or die_message('cannot write ' . htmlspecialchars($rel_file)); fputs($fp, join("\t", $rel_new)); fclose($fp); } } // .ref:$_pageを参照しているページの一覧 links_add($page, array_diff($rel_new, $rel_old), $rel_auto); links_delete($page, array_diff($rel_old, $rel_new)); global $WikiName, $autolink, $nowikiname, $search_non_list; // $pageが新規作成されたページで、AutoLinkの対象となり得る場合 if ($time && !$rel_file_exist && $autolink && (preg_match("/^{$WikiName}\$/", $page) ? $nowikiname : strlen($page) >= $autolink)) { // $pageを参照していそうなページを一斉更新する(おい) $search_non_list = 1; $pages = do_search($page, 'AND', TRUE, TRUE); foreach ($pages as $_page) { if ($_page != $page) { links_update($_page); } } } $ref_file = CACHE_DIR . encode($page) . '.ref'; // $pageが削除されたときに、 if (!$time && file_exists($ref_file)) { foreach (file($ref_file) as $line) { list($ref_page, $ref_auto) = explode("\t", rtrim($line)); // $pageをAutoLinkでしか参照していないページを一斉更新する(おいおい) if ($ref_auto) { links_delete($ref_page, array($page)); } } } }
} if (sizeof($process_links) > 0) { if (isset($_POST['delete_confirm']) && $_POST['delete_confirm'] == 'Y') { $valid = true; foreach ($process_links as $delete_lid) { $process_valid = true; if ($process_valid && !session::check_perm(USER_PERM_LINKS_MODERATE, 0)) { $process_valid = false; } if ($process_valid && !($link = links_get_single($delete_lid, false))) { $process_valid = false; } if ($process_valid && isset($link['DELETED']) && $link['DELETED'] > 0) { $process_valid = false; } if ($process_valid && links_delete($delete_lid)) { admin_add_log_entry(DELETE_LINK, array($delete_lid)); } else { $valid = false; } } if ($valid) { header_redirect("admin_link_approve.php?webtag={$webtag}&page={$page}&delete_success=true"); exit; } else { $error_msg_array[] = gettext("Failed to delete some links"); } } else { html_draw_top(array('title' => gettext('Delete Links'), 'class' => 'window_title')); html_display_msg(gettext("Delete"), gettext("Are you sure you want to delete all of the selected links?"), "admin_link_approve.php", 'post', array('delete_links' => gettext("Yes"), 'back' => gettext("No")), array('page' => $page, 'process' => $process_links, 'delete_confirm' => 'Y'), '_self', 'center'); html_draw_bottom();