Create TOC

레이블이 Moniwiki인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Moniwiki인 게시물을 표시합니다. 모든 게시물 표시

2009년 4월 23일

Moniwiki/1.1.3 버그 수정

plugin/RecentChanges.php에 버그가 있다. 아래와 같이 수정한다.

  1. $user = $DBInfo->user 를 $userinfo = $DBInfo->user 로 수정
  2. $user-> 부분을 $userinfo->로 수정

2006년 8월 3일

Moniwiki/로그인 사용자만 접근 가능한 페이지 설정

private/으로 시작하는 페이지는 로그인한 사용자만 접근하게 수정하는 방법을 기술한다.

wiki.php 수정

if ($DBInfo->control_read and !$DBInfo->security->is_allowed('read',$options))

이 줄을 찾아서 아래처럼 수정한다.

if (!$DBInfo->security->is_allowed('read',$options))

Security plugin 수정

사용중인 security pluin을 찾아서 아래 함수를 추가한다.

  function may_read($action,$options) {
    return 1;
  }

is_allow() 함수 를 아래처럼 수정한다.

  function is_allowed($action="read",$options) {
    if (eregi('private/',$options['page']))
    {
      if ($options['id'] == 'Anonymous') {
        $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
        return 0;
      }
    }

2004년 3월 13일

Moniwiki/SingleLogin 플러그인

Moniwiki의 기본 보안 플러그인을 살짝 수정해서 단일 사용자용 보안 플러그인을 작성했다.

수정에 관련된 내용은 로그인 한 후에만 할 수 있고, 로그인 하지 않은 상태에서도 기본적인 동작을 수행할 수 있다.

아래 소스를 plugin/security 디렉토리에 singlelogin.php로 저장하고 config.php

$security_class = 'singlelogin';

로 지정하면 된다.


소스 코드

<?php
# a singletologin security plugin for the MoniWiki

class Security_singlelogin extends Security {
  var $DB;

  function Security_singlelogin($DB="") {
    $this->DB=$DB;
  }

# $options[page]: pagename
# $options[id]: user id

  function writable($options="") {
    return $this->DB->_isWritable($options['page']);
  }

  function may_edit($action,$options) {
    $public_pages=array('WikiSandBox','WikiSandbox','GuestBook','SandBox');
    if (!$options['page']) return 0; # XXX
    //if (in_array($options['page'],$public_pages)) return 1;
    if ($options['id']=='Anonymous') {
      $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
      $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
      return 0;
    }
    return 1;
  }

  function may_blog($action,$options) {
    if (!$options['page']) return 0; # XXX
    if ($options['id']=='Anonymous') {
      $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
      $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
      return 0;
    }
    return 1;
  }

  function may_uploadfile($action,$options) {
    if (!$options['page']) return 0;
    if ($options['id']=='Anonymous') {
      $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
      $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
      return 0;
    }
    return 1;
  }

  function is_allowed($action="read",$options) {
    $allowed_actions=array("userform","download", "fullsearch", "goto", "blogchanges", "highlight", "titlesearch", "rss_rc", "info", "diff", "print");
    if (in_array($action,$allowed_actions)) return 1;
    $method='may_'.$action;
    if (method_exists($this, $method)) {
      return $this->$method ($action,&$options);
    }
    if ($options['id']=='Anonymous') {
      $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
      $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
      return 0;
    }
    return 1;
  }
}

?>

Monowiki/RecentChanges 매크로 수정

Moniwiki의 RecentChanges 매크로에는 이름만 표시하는 옵션이 없다. RecentChanges 매크로에 바뀐 글의 제목만 표시하는 옵션을 'nameonly' 로 해서 추가하는 방법에 대해 설명한다.

plugin/RecentChanges.phpmacro_RecentChanges() 함수에 아래 내용을 삽입한다.

} else if ($arg=="moztab") {

이 부분을 찾아서 위에 아래 코드를 추가해준다.

}else if (in_array ("nameonly", $args)) {
  $use_day = 0;
  $template='$out.= "$title<br />\n";';
}else if ($arg=="moztab") {

Moniwiki/가입 막기

1. plugin/userform.php에서

# create profile

이 있는 code block을 주석 처리 한다.

2. wikilib.phpmacro_UserPreferences 함수에서 아래 내용을 주석 처리한다.

FORM;

  if ($user->id == 'Anonymouse') {
이 블럭을 통채로 주석처리한다.
  } else {
    $button=_("Save");
    $css=$user->info['email'];
...