function do_block($page, $param1, $param2) { $prefix = resolvepath(trim($param1)); if ($prefix == '') { $prefix = $page->getpagename(); } $prefix .= '/'; $db = DataBase::getinstance(); $query = "SELECT pagename FROM page"; $query .= " WHERE pagename like '{$prefix}%'"; $query .= " ORDER BY pagename ASC"; $result = $db->query($query); $list = array(); while ($row = $db->fetch($result)) { $list[] = $row['pagename']; } if ($list == array()) { return ''; } natsort($list); $len = strlen($prefix); foreach ($list as $pagename) { $link[] = '<li>' . makelink(Page::getinstance($pagename), substr($pagename, $len)) . '</li>'; } return "<ul>\n" . join("\n", $link) . "\n</ul>\n"; }
protected function showform($page, $newname = null) { $smarty = $this->getSmarty(); $smarty->assign('pagename', $page->getpagename()); if ($newname != null) { $smarty->assign('newname', resolvepath($newname)); } $ret['body'] = $smarty->fetch('rename.tpl.htm'); $ret['title'] = 'ページ名の変更'; return $ret; }
/** * コンストラクタ。 * * @param string $pagename ページ名。 */ protected function __construct($pagename) { $this->pagename = resolvepath($pagename); }
function visitT_BlacketName($e) { $pagename = $e->getpagename(); $alias = $e->getalias() != '' ? $e->getalias() : $e->getpagename(); if (mb_ereg('^' . EXP_URL . '$', $pagename)) { $alias = htmlspecialchars($alias); return "<a class=\"externallink\" href=\"{$pagename}\">{$alias}</a>"; } else { if (mb_ereg('^' . EXP_MAIL . '$', $pagename)) { $address = protectmail_url($pagename); $alias = protectmail_html($alias); return "<a class=\"maillink\" href=\"mailto:{$address}\">{$alias}</a>"; } else { if (mb_ereg('^(.+?):(.+)$', $pagename, $m) && !Page::getinstance($pagename)->isexist()) { return makeinterwikilink($m[1], $m[2], $alias); } else { $fullname = resolvepath($pagename, $e->getcontext()->pagename); return makelink(Page::getinstance($fullname), $alias); } } } }
protected function checkpostdata() { $error = array(); //タイトルの入力チェック if (!isset(Vars::$post['subject']) || trim(Vars::$post['subject']) == '') { $error[] = 'タイトルがありません。'; } $this->subject = Vars::$post['subject']; //本文の入力チェック if (!isset(Vars::$post['text']) || trim(Vars::$post['text']) == '') { $error[] = '本文がありません。'; } $this->text = Vars::$post['text']; //カテゴリの入力チェック if (!isset(Vars::$post['category']) || !mb_ereg("[^ \\s|]", Vars::$post['category'])) { $error[] = 'カテゴリがありません。'; } $this->categories = array_unique(array_map('trim', explode('|', Vars::$post['category']))); $i = array_search('', $this->categories); if ($i !== false) { unset($this->categories[$i]); } //array_unique()により空文字列の要素は1つだけしか存在しないので、1つ削除すればOK //「続き」の元記事のチェック if (!isset(Vars::$post['continue']) || trim(Vars::$post['continue']) != '' && !Page::getinstance(trim(Vars::$post['continue']))->isexist()) { $error[] = 'つづきの元のページがありません。'; } $this->continuefrom = resolvepath(Vars::$post['continue']); //入力された日付のチェック if (!isset(Vars::$post['date']) || trim(Vars::$post['date']) == '') { $error[] = '日付がありません。'; } else { if (!mb_ereg('^\\s*(\\d{4})[-/](\\d{1,2})[-/](\\d{1,2})\\s*$', Vars::$post['date'], $m)) { $error[] = '日付の書式が正しくありません。'; } else { if (!checkdate($m[2], $m[3], $m[1])) { $error[] = '日付が正しくありません。'; } else { $this->date = sprintf('%4d-%02d-%02d', $m[1], $m[2], $m[3]); } } } //パスワードのチェック if (!isset(Vars::$post['password'])) { $error[] = 'パスワードがありません。'; setcookie('plugin_blog', '', -3600); //パスワードが無いときはクッキーを削除 } else { $pass = isset($this->passwordlist[$this->blogname]) ? md5($this->passwordlist[$this->blogname]) : ADMINPASS; if (md5(Vars::$post['password']) != $pass) { $error[] = 'パスワードが正しくありません。'; } else { $this->password = Vars::$post['password']; if ($this->cookie > 0) { setcookie('plugin_blog', Vars::$post['password'], time() + $this->cookie); } } } //TrackBack送信可否のチェック $this->sendingtrackback = isset(Vars::$post['sendingtrackback']) && Vars::$post['sendingtrackback'] == 'on' ? true : false; //入力から他変数の組み立て if ($this->date != '') { $this->datepagename = $this->blogname . '/' . $this->date; if ($this->subject != '') { $this->pagename = $this->datepagename . '/' . $this->subject; } } //すでに存在するページに書くのはNG if (Page::getinstance($this->pagename)->isexist()) { $error[] = 'ページがすでに存在します。タイトルを変更してください。'; } return $error; }
protected function __construct($alias, $context, $pagename) { $this->source = $alias; $this->context = $context; $this->pagename = resolvepath($pagename); }
function visitT_BlacketName($e) { $pagename = $e->getpagename(); if (mb_ereg('^' . EXP_URL . '$', $pagename)) { //URLにヒット。何もしない。 } else { if (mb_ereg('^' . EXP_MAIL . '$', $pagename)) { //Mailにヒット。何もしない。 } else { if (mb_ereg('^(.+?):(.+)$', $pagename)) { //InterWikiNameにヒット。何もしない。 } else { //のこるはサイト内リンク。 $fullname = resolvepath($pagename, $this->currentpage->getpagename()); $this->add($fullname); } } } }
/** * ページ名中のディレクトリ名の部分を返す。 * * @param string $pagename ページ名 * @return string ディレクトリ部分がない場合は空文字列。 */ function getdirname($pagename) { $path = explode('/', resolvepath($pagename)); array_pop($path); return join('/', $path); }