{
        return MW_VERSION;
    }
    function get_description()
    {
        return "Upload page.";
    }
    function initialize()
    {
        register_page_handler(new MW_SpecialUploadPageHandler());
        $dataspace_def = new MW_DataSpaceDefinition(MW_DS_UPLOADS, true, MW_RESOURCE_CONTENT_TYPE_BINARY);
        register_dataspace($dataspace_def);
        return true;
    }
}
register_extension(new MW_CoreSpecialUploadExtension());
class MW_SpecialUploadPageHandler extends MW_PageHandler
{
    function get_page($tag, $name, $revision)
    {
        if ($tag === null) {
            if (strpos($name, MW_PAGE_NAME_PREFIX_UPLOAD) === 0) {
                return new MW_SpecialUploadPage($name, $revision);
            } elseif (strpos($name, MW_PAGE_NAME_PREFIX_DATA) === 0) {
                return new MW_SpecialUploadPage($name, $revision);
            }
        } elseif ($tag == MW_PAGE_TAG_UPLOAD) {
            return new MW_SpecialUploadPage(MW_PAGE_NAME_PREFIX_UPLOAD . $name, $revision);
        } elseif ($tag == MW_PAGE_TAG_DATA) {
            return new MW_SpecialUploadPage(MW_PAGE_NAME_PREFIX_DATA . $name, $revision);
        }
    function get_version()
    {
        return MW_VERSION;
    }
    function get_description()
    {
        return "Filesystem storage.";
    }
    function initialize()
    {
        register_storage(new MW_FilesystemStorage());
        register_datetime_class("MW_FilesystemDateTime");
        return true;
    }
}
register_extension(new MW_CoreFilesystemStorageExtension());
class MW_FilesystemDateTime extends MW_DateTime
{
    var $unix_timestamp;
    function MW_FilesystemDateTime($unix_timestamp)
    {
        $this->unix_timestamp = $unix_timestamp;
    }
    function as_unix_timestamp()
    {
        return $this->unix_timestamp;
    }
    /** [static] */
    function &from_unix_timestamp($ts)
    {
        $datetime = new MW_FilesystemDateTime($ts);
Exemple #3
0
        return "Wiki function user_info.";
    }
    function initialize()
    {
        register_wiki_function('user_info', array($this, 'wiki_fn_user_info'));
        return true;
    }
    /** returns user information */
    function wiki_fn_user_info()
    {
        $auth =& get_auth();
        if ($auth->is_logged) {
            $cb = config('user_info_file_callback');
            if ($cb === null) {
                trigger_error(_t("Config value user_info_file_callback not set"), E_USER_ERROR);
            }
            $f = call_user_func($cb, $auth->user);
            if (!file_exists($f)) {
                return null;
            }
            $user_info = file_get_contents($f);
            if ($user_info === false) {
                return null;
            }
            return $user_info;
        }
        return null;
    }
}
register_extension(new MW_UserInfoExtension());
Exemple #4
0
        return "[http://www.mysql.com MySQL]: {$version}";
    }
    function initialize()
    {
        register_storage(new MW_MySQLStorage());
        register_datetime_class("MW_MySQLDateTime");
        set_default_config('db_host', 'localhost');
        set_default_config('db_user', 'miniwiki');
        set_default_config('db_pass', 'miniwiki');
        set_default_config('db_name', 'miniwiki');
        set_default_config('db_use_server_collation', true);
        set_default_config('db_encoding', 'utf8');
        return true;
    }
}
register_extension(new MW_CoreMySQLStorageExtension());
define("MW_RESOURCE_KEY_AUTHOR_0_2", "user");
class MW_MySQLDateTime extends MW_DateTime
{
    /** MySQL formatted timestamp (all formats supported) in GMT */
    var $mysql_timestamp;
    function MW_MySQLDateTime($mysql_timestamp)
    {
        $this->mysql_timestamp = $mysql_timestamp;
    }
    function as_unix_timestamp()
    {
        # detect whether we have MySQL's "INTERNAL" or "ISO" (or similar) timestamp format - default changed in MySQL 4.1.x
        if (strlen($this->mysql_timestamp) == 14) {
            $year = substr($this->mysql_timestamp, 0, 4);
            $month = substr($this->mysql_timestamp, 4, 2);
Exemple #5
0
        return MW_VERSION;
    }
    function get_description()
    {
        return "Users manager operating on top of storage.";
    }
    function initialize()
    {
        $dataspace_def = new MW_DataSpaceDefinition(MW_DS_USERS, false, MW_RESOURCE_CONTENT_TYPE_NONE);
        $dataspace_def->add_custom_key(MW_RESOURCE_KEY_PASSWORD, MW_RESOURCE_CUSTOM_KEY_TYPE_TEXT . "32");
        register_dataspace($dataspace_def);
        register_users_manager(new MW_CoreUsersManager());
        return true;
    }
}
register_extension(new MW_CoreUsersManagerExtension());
class MW_CoreUsersManager extends MW_UsersManager
{
    function get_all_usernames()
    {
        $storage =& get_storage();
        return $storage->get_resource_names(MW_DS_USERS);
    }
    function create_user($user)
    {
        $storage =& get_storage();
        $res = new MW_Resource(MW_DS_USERS);
        $res->set(MW_RESOURCE_KEY_NAME, $user);
        $storage->create_resource(MW_DS_USERS, $res);
    }
    function delete_user($user)
    function get_version()
    {
        return MW_VERSION;
    }
    function get_description()
    {
        return "Redirects Special/* to MW/Special/* if no specific page is found.";
    }
    function initialize()
    {
        register_page_handler(new MW_SpecialPageRedirectorPageHandler());
        register_page_handler(new MW_SpecialPageTagPageHandler());
        return true;
    }
}
register_extension(new MW_CoreSpecialPageRedirectorExtension());
class MW_SpecialPageRedirectorPageHandler extends MW_PageHandler
{
    function get_priority()
    {
        return 50;
    }
    function get_page($tag, $name, $revision)
    {
        $wrap = false;
        if ($tag === null && strpos($name, MW_PAGE_NAME_PREFIX_SPECIAL) === 0) {
            $wrap_name = $name;
            $name = MW_PAGE_NAME_PREFIX_MINIWIKI . $name;
            $wrap = true;
        }
        $page = $this->next->get_page($tag, $name, $revision);
Exemple #7
0
        return $name;
    }
    function wiki_fn_page_attr($args, $renderer_state)
    {
        $page_name = array_shift($args);
        $attr_name = array_shift($args);
        $page = new_page($page_name, MW_REVISION_HEAD);
        $page->load();
        return $page->get_attr($attr_name);
    }
    function wiki_fn_list_extensions($args, $renderer_state)
    {
        $ret = array();
        $exts = get_extensions();
        foreach ($exts as $ext) {
            $ret[] = "====" . $ext->get_name() . ' ' . $ext->get_version() . "====\n\n" . $ext->get_description() . "\n\n";
        }
        sort($ret);
        return $ret;
    }
    function wiki_fn_mw_version($args, $renderer_state)
    {
        return MW_VERSION;
    }
    function wiki_fn_php_version($args, $renderer_state)
    {
        return phpversion();
    }
}
register_extension(new MW_CoreFunctionsExtension());
Exemple #8
0
        return "Core Layout";
    }
    function get_version()
    {
        return MW_VERSION;
    }
    function get_description()
    {
        return "Customizable layout.";
    }
    function initialize()
    {
        register_page_handler(new MW_LayoutPageHandler());
        return true;
    }
}
register_extension(new MW_CoreLayoutExtension());
class MW_LayoutPageHandler extends MW_PageHandler
{
    function get_page($tag, $name, $revision)
    {
        if ($tag == MW_PAGE_TAG_LAYOUT) {
            $name = MW_PAGE_NAME_PREFIX_LAYOUT . $name;
            $tag = null;
        } elseif ($tag == MW_PAGE_TAG_LAYOUT_DATA) {
            $name = MW_PAGE_NAME_PREFIX_DATA . MW_PAGE_NAME_PREFIX_LAYOUT . $name;
            $tag = null;
        }
        return $this->next->get_page($tag, $name, $revision);
    }
}
Exemple #9
0
    }
    function get_version()
    {
        return MW_VERSION;
    }
    function get_description()
    {
        return "Default Wiki renderer implementation.";
    }
    function initialize()
    {
        register_renderer(new MW_CoreRenderer());
        return true;
    }
}
register_extension(new MW_CoreRendererExtension());
/** internal Wiki renderer state */
class MW_CoreRendererState extends MW_RendererState
{
    # [read-only] attributes
    var $headings;
    /** headings counter (current number) */
    var $headings_counter;
    /** @protected
     * constructor (do not call)
     * @param renderer MW_Renderer
     * @param page MW_Page or null
     * @param raw raw text to render
     * @param super_wiki_variables super MW_Variables to use
     * @param curpage MW_Page or null for the same value as page
     */
Exemple #10
0
    function get_version()
    {
        return MW_VERSION;
    }
    function get_description()
    {
        return "XML import/export.";
    }
    function initialize()
    {
        register_importer(new MW_XMLImporter());
        register_exporter(new MW_XMLExporter());
        return true;
    }
}
register_extension(new MW_CoreXMLImportExportExtension());
define('MW_XML_FORMAT', 'XML');
define('MW_XML_TYPE_TEXT', 'text');
define('MW_XML_TYPE_BINARY', 'binary');
define('MW_XML_TYPE_DATETIME', 'datetime');
define('MW_XML_EXTENSION', 'xml');
/*
  XML format (if miniWiki's encoding is not UTF-8 and iconv() is not available, internal encoding is used):

  <?xml version="1.0" encoding="utf-8"?>
  <resources>
    <resource dataspace="DATASPACE_NAME" name="RESOURCE_NAME">
      <key name="RESOURCE_KEY_NAME" type="RESOURCE_KEY_TYPE">RESOURCE_KEY_VALUE</key>
      ...
    </resource>
    ...
    }
    function get_version()
    {
        return MW_VERSION;
    }
    function get_description()
    {
        return "User page.";
    }
    function initialize()
    {
        register_page_handler(new MW_SpecialUserPageHandler());
        return true;
    }
}
register_extension(new MW_CoreSpecialUserExtension());
class MW_SpecialUserPageHandler extends MW_PageHandler
{
    function get_page($tag, $name, $revision)
    {
        $overlay = false;
        if ($tag === null && strpos($name, MW_PAGE_NAME_PREFIX_USER) === 0) {
            $overlay = true;
        }
        if ($tag == MW_PAGE_TAG_USER) {
            $overlay = true;
            $name = MW_PAGE_NAME_PREFIX_USER . $name;
            $tag = null;
        }
        $page = $this->next->get_page($tag, $name, $revision);
        if ($overlay && $page !== null) {
Exemple #12
0
            } elseif (isset($resp['header']['server'])) {
                $server = $resp['header']['server'];
            }
        }
        return "WebDAV: {$server}";
    }
    function initialize()
    {
        register_storage(new MW_WebDAVStorage());
        register_datetime_class("MW_WebDAVDateTime");
        register_users_manager(new MW_WebDAVUsersManager());
        return true;
    }
}
require_once "class_webdav_client.php";
register_extension(new MW_WebDAVStorageExtension());
class MW_WebDAVDateTime extends MW_DateTime
{
    var $rfc1123_time;
    function MW_WebDAVDateTime($rfc1123_time)
    {
        $this->rfc1123_time = $rfc1123_time;
    }
    function as_unix_timestamp()
    {
        return strtotime($this->rfc1123_time);
    }
    /** [static] */
    function &from_unix_timestamp($ts)
    {
        $datetime = new MW_WebDAVDateTime(gmdate('D, d M Y H:i:s O', $ts));
Exemple #13
0
    {
        return MW_VERSION;
    }
    function get_description()
    {
        return "Wiki page.";
    }
    function initialize()
    {
        register_page_handler(new MW_CorePagePageHandler());
        $dataspace_def = new MW_DataSpaceDefinition(MW_DS_PAGES, true, MW_RESOURCE_CONTENT_TYPE_TEXT);
        register_dataspace($dataspace_def);
        return true;
    }
}
register_extension(new MW_CorePageExtension());
class MW_CorePagePageHandler extends MW_PageHandler
{
    function get_priority()
    {
        return 100;
    }
    function get_page($tag, $name, $revision)
    {
        if ($tag === null) {
            return new MW_DBPage($name, $revision);
        }
        return $this->next->get_page($tag, $name, $revision);
    }
}
define("MW_PAGE_ATTR_REDIRECT", "redirect");
Exemple #14
0
    }
    function get_version()
    {
        return MW_VERSION;
    }
    function get_description()
    {
        return "Obsolete functionality.";
    }
    function initialize()
    {
        register_page_handler(new MW_ObsoletePageHandler());
        return true;
    }
}
register_extension(new MW_CoreObsoleteExtension());
class MW_ObsoletePageHandler extends MW_PageHandler
{
    function get_priority()
    {
        return -100;
    }
    function get_page($tag, $name, $revision)
    {
        if ($tag === null && strpos($name, MW_PAGE_NAME_PREFIX_DATA_0_2) === 0) {
            $name = str_replace(MW_PAGE_NAME_PREFIX_DATA_0_2, MW_PAGE_NAME_PREFIX_DATA, $name);
        }
        if ($tag === null && strpos($name, MW_PAGE_NAME_PREFIX_USER_0_2) === 0) {
            $name = str_replace(MW_PAGE_NAME_PREFIX_USER_0_2, MW_PAGE_NAME_PREFIX_USER, $name);
        }
        if ($tag === null && strpos($name, MW_PAGE_NAME_UPLOADS_0_2) === 0) {