Example #1
0
 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";
 }
Example #2
0
 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;
 }
Example #3
0
 /**
  * コンストラクタ。
  * 
  * @param	string	$pagename	ページ名。
  */
 protected function __construct($pagename)
 {
     $this->pagename = resolvepath($pagename);
 }
Example #4
0
 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);
             }
         }
     }
 }
Example #5
0
 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;
 }
Example #6
0
 protected function __construct($alias, $context, $pagename)
 {
     $this->source = $alias;
     $this->context = $context;
     $this->pagename = resolvepath($pagename);
 }
Example #7
0
 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);
             }
         }
     }
 }
Example #8
0
/**
 * ページ名中のディレクトリ名の部分を返す。
 * 
 * @param	string	$pagename	ページ名
 * @return	string	ディレクトリ部分がない場合は空文字列。
 */
function getdirname($pagename)
{
    $path = explode('/', resolvepath($pagename));
    array_pop($path);
    return join('/', $path);
}