OSDN Git Service

# FIXED: atom.phpとxml-rss2.phpで_CHARSETをチェックして文字コード変換(Nicleus3.41 へアップグレード後 xml-rss2...
authorshizuki <shizuki@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Sun, 21 Jun 2009 05:23:05 +0000 (05:23 +0000)
committershizuki <shizuki@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Sun, 21 Jun 2009 05:23:05 +0000 (05:23 +0000)
# CHANGED: SEARCH.php改良(<%relevance%>対応SEARCH.php、検索結果の正確さ)(きゃしゃ)
# CHANGED: _CHARSETチェックのときにstrtoupper(きゃしゃ)
# CHANGED: インストーラの文字化け対策部分をデフォルトで有効に。globalfunctions.phpの方は、状況に応じて。(インストール後管理画面は正常表示、サイトが真っ白)(きゃしゃ)
# CHANGED: インストーラエラーページをUTF-8固定に。(3.41インストール->スキンエラー(きゃしゃ)
# CHANGED: 言語ファイルの反映漏れ修正。ただし、言語ファイル読み込み前に表示される可能性のあるメッセージは定数定義前なのでそのまま(インストール後管理画面は正常表示、サイトが真っ白)(きゃしゃ)
# FIXED: pingオプションのチェックボックス削除(きゃしゃ)
# FIXED: parsedincludeの無限ループ対策、NP_includespecialからの移植時仕様変更に伴うコード修正。(きゃしゃ)
# FIXED: karma通知修正(きゃしゃ)
# FIXED: catidのみがURLで指定された場合、blogidを補完する(ShowBlogsのページ送りにblogidの付加をするには?)(きゃしゃ)

git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/nucleus-jp/trunk@1015 1ca29b6e-896d-4ea0-84a5-967f57386b96

22 files changed:
utf8/atom.php
utf8/install.php
utf8/install_lang_japanese.php
utf8/nucleus/bookmarklet.php
utf8/nucleus/documentation/help.html
utf8/nucleus/documentation/history.html
utf8/nucleus/language/japanese-euc.php
utf8/nucleus/language/japanese-utf8.php
utf8/nucleus/libs/ACTION.php
utf8/nucleus/libs/ADMIN.php
utf8/nucleus/libs/BaseActions.php
utf8/nucleus/libs/ITEM.php
utf8/nucleus/libs/SEARCH.php
utf8/nucleus/libs/backup.php
utf8/nucleus/libs/globalfunctions.php
utf8/nucleus/libs/include/admin-add.template
utf8/nucleus/libs/include/admin-edit.template
utf8/nucleus/libs/include/bookmarklet-add.template
utf8/nucleus/libs/include/bookmarklet-edit.template
utf8/nucleus/media.php
utf8/skins/default/skinbackup.xml
utf8/xml-rss2.php

index 3371acb..6ee70e4 100755 (executable)
@@ -43,6 +43,7 @@ if (!$CONF['DisableSite']) {
                header('HTTP/1.0 304 Not Modified');
                header('Content-Length: 0');
        } else {
+               if (strtolower(_CHARSET) != 'utf-8') {$feed = mb_convert_encoding($feed, "UTF-8", _CHARSET);}
                header("Content-Type: application/xml");
                // dump feed
                echo $feed;
index 4aef1e5..19b5eb5 100755 (executable)
@@ -175,6 +175,7 @@ function showInstallForm() {
                        $match = explode('.', $row[1]);\r
                } else {\r
                        $output = shell_exec('mysql -V');\r
+                       $output = (function_exists('shell_exec')) ? @shell_exec('mysql -V') : '0.0.0';\r
                        preg_match('@[0-9]+\.[0-9]+\.[0-9]+@', $output, $version);\r
                        $match = explode('.', $version[0]);\r
 \r
@@ -575,7 +576,7 @@ function doInstall() {
        $mySqlVer = implode('.', array_map('intval', explode('.', mysql_get_server_info($MYSQL_CONN))));\r
        if ($mySqlVer >= '5.0.7' && phpversion() >= '5.2.3') {\r
                mysql_set_charset($charset);\r
-       } else {\r
+       } elseif ($mySqlVer >= '4.1.0') {\r
                mysql_query("SET NAMES " . $charset);\r
        }\r
        $collation = ($charset == 'utf8') ? 'utf8_unicode_ci' : 'ujis_japanese_ci';\r
@@ -584,14 +585,15 @@ function doInstall() {
        // 3. try to create database (if needed)\r
        if ($mysql_create == 1) {\r
                $sql = 'CREATE DATABASE '\r
-                        .     $mysql_database\r
+                        .     $mysql_database;\r
 // <add for garble measure>\r
-                        . ' DEFAULT CHARACTER SET '\r
-                        .     $charset\r
-                        . ' COLLATE '\r
-                        .     $collation\r
+       if ($mySqlVer >= '4.1.0') {\r
+               $sql .= ' DEFAULT CHARACTER SET '\r
+                         .     $charset\r
+                         . ' COLLATE '\r
+                         .     $collation;\r
+       }\r
 // </add for garble measure>*/\r
-                        . '';\r
                mysql_query($sql) or _doError(_ERROR16 . ': ' . mysql_error());\r
        }\r
 \r
@@ -666,7 +668,7 @@ function doInstall() {
                                        $query = str_replace($aTableNames, $aTableNamesPrefixed, $query);\r
                        }\r
 // <add for garble measure>\r
-                       if ($mysql_create != 1 && strpos($query, 'CREATE TABLE') === 0) {\r
+                       if ($mysql_create != 1 && strpos($query, 'CREATE TABLE') === 0 && $mySqlVer >= '4.1.0') {\r
                                $query .= ' DEFAULT CHARACTER SET ' . $charset . ' COLLATE ' . $collation;\r
                        }\r
 // </add for garble measure>*/\r
@@ -924,6 +926,7 @@ function doInstall() {
                <ul>\r
                <li><?php echo _TEXT15_L1; ?></li>\r
                <li><?php echo _TEXT15_L2; ?></li>\r
+               <li><?php echo _TEXT15_L3; ?></li>\r
                </ul>\r
 \r
        <?php echo _TEXT15_EX; ?>\r
@@ -1139,7 +1142,7 @@ function _doError($msg) {
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml">\r
 <head>\r
-       <meta http-equiv="Content-Type" content="text/html; charset=<?php echo _CHARSET ?>" />\r
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
        <title><?php echo _TITLE; ?></title>\r
        <style>@import url('nucleus/styles/manual.css');</style>\r
 </head>\r
@@ -1147,7 +1150,7 @@ function _doError($msg) {
        <div style='text-align:center'><img src='./nucleus/styles/logo.gif' /></div> <!-- Nucleus logo -->\r
        <h1><?php echo _ERROR27; ?></h1>\r
 \r
-       <p><?php echo _ERROR28; ?>: "<?php echo $msg?>";</p>\r
+       <p><?php echo _ERROR28; ?> "<?php echo $msg; ?>";</p>\r
 \r
        <p><a href="install.php" onclick="history.back();"><?php echo _TEXT17; ?></a></p>\r
 </body>\r
@@ -1162,7 +1165,7 @@ function showErrorMessages($errors) {
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml">\r
 <head>\r
-       <meta http-equiv="Content-Type" content="text/html; charset=<?php echo _CHARSET ?>" />\r
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
        <title><?php echo _TITLE; ?></title>\r
        <style>@import url('nucleus/styles/manual.css');</style>\r
 </head>\r
index 70eeaab..ae3f562 100644 (file)
@@ -140,12 +140,13 @@ define('_TEXT12',                         '<b>付記:</b> <i>config.php</i>の最初や終わりに
 define('_TEXT13',                              '<p>Nucleusはインストールされ、<code>config.php</code>はアップデートされました。</p><p>セキュリティのため<code>config.php</code>のパーミッションを444に戻すことを忘れないでください(<a href="nucleus/documentation/tips.html#filepermissions">パーミッション変更の簡易ガイド</a>)。</p>');\r
 define('_TEXT14',                              '<p>Nucleusは誰でもブログにコメントを残す事が出来る様になっているので、このままではスパマーの温床になる危険があります。以下の方法のによってブログを保護することをお勧めします:</p>');\r
 define('_TEXT14_L1',                   'あなたがコメントを必要としないのであれば、管理エリアから「あなたのブログ」 &gt; 「ブログ設定」 とたどり、 「コメントを許可しますか?」 の設定を「いいえ」にする事で、コメント投稿フォームを非表示にする事が出来ます。');\r
-define('_TEXT14_L2',                   'スパムを撃退・管理する為のプラグインをインストールすることも可能です:<a href="http://japan.nucleuscms.org/wiki/plugins_by_category#section4">Nucleus Japan wiki</a> (ブックマークをお勧めします)');\r
+define('_TEXT14_L2',                   'スパムを撃退・管理する為のプラグインをインストールすることも可能です:<a href="http://japan.nucleuscms.org/wiki/plugins_by_category#supamutsuru">Nucleus Japan wiki</a> (ブックマークをお勧めします)');\r
 define('_HEADER10',                            'インストールファイルの削除');\r
 define('_TEXT15',                              '<p>ウェブサーバから次のファイルを削除してください:</p>');\r
 define('_TEXT15_L1',                   '<b>install.sql</b>:テーブルの構造を内包するファイル');\r
 define('_TEXT15_L2',                   '<b>install.php</b>:このファイル');\r
 \r
+define('_TEXT15_L3',                   '<b>install_lang_japanese.php</b>:インストーラの言語ファイル');\r
 define('_TEXT15_EX',                   '<p>もしこれらのファイルを削除していなければ、管理領域を開くことが出来ません。</p>');\r
 \r
 define('_HEADER11',                            'ウェブサイトの確認');\r
index 7caa805..ba30150 100755 (executable)
@@ -80,7 +80,7 @@ switch ($action) {
 
        // on login, 'action' gets changed to 'nextaction'
        case 'login':
-               bm_doError('Something went wrong');
+               bm_doError(_BOOKMARKLET_ERROR_SOMETHINGWRONG);
                break;
 
        // shows the fill in form
@@ -157,7 +157,7 @@ function bm_doEditItem() {
 
                // show error when sth goes wrong
                if (!$catid) {
-                       bm_doError('Could not create new category');
+                       bm_doError(_BOOKMARKLET_ERROR_COULDNTNEWCAT);
                }
        }
 
@@ -179,7 +179,7 @@ function bm_doEditItem() {
                        $timestamp = 0;
                        break;
                default:
-                       bm_doError('Something went wrong');
+                       bm_doError(_BOOKMARKLET_ERROR_SOMETHINGWRONG);
        }
 
        // update item for real
@@ -227,9 +227,9 @@ function bm_loginAndPassThrough() {
                <input name="logtext" value="<?php echo htmlspecialchars($log_text); ?>" type="hidden" />
                <input name="loglink" value="<?php echo htmlspecialchars($log_link); ?>" type="hidden" />
                <input name="loglinktitle" value="<?php echo htmlspecialchars($log_linktitle); ?>" type="hidden" />
-               <?php echo _LOGINFORM_NAME ?>:
+               <?php echo _LOGINFORM_NAME ?>
                <br /><input name="login" />
-               <br /><?php echo _LOGINFORM_PWD ?>:
+               <br /><?php echo _LOGINFORM_PWD ?>
                <br /><input name="password" type="password" />
                <br /><br />
                <br /><input type="submit" value="<?php echo _LOGIN ?>" />
index 1f547c1..6a741c7 100644 (file)
 </div>
 
 
-<div class="page"><a name="autosave"></a>
+<div class="page"><a name="autosave" id="autosave"><span class="invisible">autosave</span></a>
 <h1>自動保存</h1>
 <p>最後に変更を加えてから10分後に、自動的に<a href="#draft">ドラフト</a>として保存する機能です。投稿、または編集途中に他の用事が出来て、記事を保存するのを忘れてしまった時などに、不用意に編集内容を失わずにすみます。</p>
 <p>もし、10分待たずに下書きを保存したくなったら、フォームの下の方にある「<em>ドラフト保存</em>」ボタンをクリックします。</p>
@@ -721,7 +721,7 @@ Nucleusのサイト全体を閉鎖することが可能です。なんらかの
     <td>ブログのURL(Nucleusコアによって与えられた引数から生成されるもの)<code>&lt;a href="&lt;%bloglink%&gt;"&gt;</code>のように使用します。</td>
 </tr><tr>
        <td>blogurl</td>
-       <td>ブログのURL(「Blog設定」の「URL」で設定されているもの)<code>&lt;a href="&lt;%bloglink%&gt;"&gt;</code>のように使用します。</td>
+       <td>ブログのURL(「Blog設定」の「URL」で設定されているもの)<code>&lt;a href="&lt;%blogurl%&gt;"&gt;</code>のように使用します。</td>
 </tr><tr>
     <td>blogdesc</td>
     <td>ブログの説明</td>
@@ -2156,7 +2156,7 @@ Nucleusで管理しているブログのリストを、指定されたテンプ
             </tr>
             <tr>
                 <td><strong><em>limit</em></strong></td>
-                <td>表示するリンク数の制限(例えば、過去3ヶ月分へのリンクしか表示させたくないときなど)</td>
+                <td>表示するリンク数の制限(例えば、過去3分へのリンクしか表示させたくないときなど)</td>
             </tr>
         </table>
     </li>
@@ -3655,7 +3655,7 @@ $GATEWAY_INTERFACE, $SERVER_NAME, $SERVER_SOFTWARE
 <h1>スキン/テンプレート変数:parsedinclude</h1>
 
 <p>
-Webã\83\9aã\83¼ã\82¸å\87ºå\8a\9bæ\99\82ã\81«ã\80\81æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\8f\96ã\82\8aè¾¼ã\82\93ã\81§æ\8c¿å\85¥ã\81\97ます。このファイルのは、取り込み時にNucleusのスキン/テンプレートによる構文解析にかけられるので、スキン/テンプレート変数が使用できます。同じような変数に、取り込んだファイルのPHPを実行する<a href="#skinvar-phpinclude">phpinclude</a>や、ファイルの中身をそのまま表示する<a href="#skinvar-include">include</a>があります。
+Webã\83\9aã\83¼ã\82¸å\87ºå\8a\9bæ\99\82ã\81«ã\80\81æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\82¹ã\83\9aã\82·ã\83£ã\83«ã\82¹ã\82­ã\83³ã\82\82ã\81\97ã\81\8fã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\8f\96ã\82\8aè¾¼ã\82\93ã\81§æ\8c¿å\85¥ã\81\97ã\81¾ã\81\99ã\80\82ã\82¹ã\83\9aã\82·ã\83£ã\83«ã\82¹ã\82­ã\83³ã\81\8cå\84ªå\85\88ã\81\95ã\82\8cます。このファイルのは、取り込み時にNucleusのスキン/テンプレートによる構文解析にかけられるので、スキン/テンプレート変数が使用できます。同じような変数に、取り込んだファイルのPHPを実行する<a href="#skinvar-phpinclude">phpinclude</a>や、ファイルの中身をそのまま表示する<a href="#skinvar-include">include</a>があります。
 </p>
 
 <h2>引数</h2>
@@ -3668,7 +3668,7 @@ Webページ出力時に、指定されたファイルを取り込んで挿入
             </tr>
             <tr>
                 <td><strong>filename</strong></td>
-                <td>取り込むファイルの名前(index.phpからの相対位置でも絶対位置でもかまいません。URLを指定することもできます)</td>
+                <td>å\8f\96ã\82\8aè¾¼ã\82\80ã\82¹ã\83\9aã\82·ã\83£ã\83«ã\82¹ã\82­ã\83³ã\82\82ã\81\97ã\81\8fã\81¯ã\83\95ã\82¡ã\82¤ã\83«ã\81®å\90\8då\89\8dï¼\88index.phpã\81\8bã\82\89ã\81®ç\9b¸å¯¾ä½\8dç½®ã\81§ã\82\82絶対ä½\8dç½®ã\81§ã\82\82ã\81\8bã\81¾ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82URLã\82\92æ\8c\87å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\82\82ã\81§ã\81\8dã\81¾ã\81\99ï¼\89</td>
             </tr>
         </table>
     </li>
@@ -3678,7 +3678,7 @@ Webページ出力時に、指定されたファイルを取り込んで挿入
 <h2>注意</h2>
 <ul>
     <li>この変数は<a href="#parser-properties">パーサー設定の<code>IncludeMode</code> と<code>IncludePrefix</code></a>に影響を受けます。</li>
-    <li>ã\82¤ã\83³ã\82¯ã\83«ã\83¼ã\83\89ã\81\97ã\81\9fã\83\95ã\82¡ã\82¤ã\83«の中からでも、再び<code>&lt;%parsedinclude (filename)%&gt;</code>を呼び出すことができますが、無限ループを避けるために最大で3段階までとなります。</li>
+    <li>ã\82¤ã\83³ã\82¯ã\83«ã\83¼ã\83\89ã\81\97ã\81\9fã\83\91ã\83¼ã\83\84の中からでも、再び<code>&lt;%parsedinclude (filename)%&gt;</code>を呼び出すことができますが、無限ループを避けるために最大で3段階までとなります。</li>
 </ul>
 
 
@@ -3691,6 +3691,7 @@ Webページ出力時に、指定されたファイルを取り込んで挿入
 <h2>例</h2>
 
 <pre>
+&lt;%parsedinclude(specialskinname)%&gt;
 &lt;%parsedinclude(filename.txt)%&gt;
 &lt;%parsedinclude(/home/user/myself/filename.txt)%&gt;
 </pre>
@@ -4497,7 +4498,7 @@ Webページ出力時に、指定されたファイルを取り込んで挿入
     <td>editlink用のウィンドウをポップアップするjavascriptコード</td>
 </tr><tr>
     <td><a href="#skinvar-skinfile">skinfile</a></td>
-    <td>使用中のスキンのあるディレクトリに存在するファイルへのを使う時に使用</td>
+    <td>インポートされたスキンに属しているファイルへの正確なURLを挿入</td>
 </tr><tr>
     <td><a href="#skinvar-set">set</a></td>
     <td><a href="#parser-properties">パーサーのプロパティ</a>を設定</td>
@@ -4512,7 +4513,7 @@ Webページ出力時に、指定されたファイルを取り込んで挿入
     <td>メディア・ディレクトリの他のメディア・オブジェクト</td>
 </tr><tr>
     <td>relevance</td>
-    <td>検索結果を表示するテンプレートに'search hit relevance'をインクルードする(2.5より)</td>
+    <td>検索結果を表示するテンプレートに「検索関連度」を挿入する(2.5より)</td>
 </tr></table>
 
 <p><a href="#templatevars-overview">テンプレート変数の概略...</a></p>
@@ -4629,7 +4630,7 @@ Webページ出力時に、指定されたファイルを取り込んで挿入
     <td>プラグインを実行</td>
 </tr><tr>
     <td><a href="#skinvar-skinfile">skinfile</a></td>
-    <td>使用中のスキンのあるディレクトリに存在するファイルへのを使う時に使用</td>
+    <td>インポートされたスキンに属しているファイルへの正確なURLを挿入</td>
 </tr><tr>
     <td><a href="#skinvar-set">set</a></td>
     <td><a href="#parser-properties">パーサーのプロパティ</a>を設定</td>
@@ -4985,7 +4986,7 @@ HTMLタグを取り除き、指定された長さにまで縮めたアイテム
 <h1>テンプレート変数:syndicate_description</h1>
 
 <p>
-HTMLタグを取り除き、指定された幅にまで縮めたアイテムのタイトルを挿入します(指定が無い時は250)。テキストが縮められた場合は、末尾に"..."が追加される。
+HTMLタグを取り除き、指定された幅にまで縮めたアイテムの本文を挿入します(指定が無い時は250)。テキストが縮められた場合は、末尾に"..."が追加される。
 </p>
 
 <p>
@@ -5226,7 +5227,7 @@ Nucleusでは機能を追加するために、プラグインをインストー
 <ol>
     <li>スキン変数のように振舞う</li>
     <li>テンプレート変数のように振舞う</li>
-    <li>Nucleusによって生成されたイベントのフック。「プラグインの管理」画面での「上へ」と「下へ」リンクは、イベント発生時にプラグインを呼び出す順番を決定するために用いられます。最初のプラグインは最初に呼び出され、最後のプラグインは最後に呼び出されます。</li>
+    <li>Nucleusによって生成されたイベントのフック。「プラグインの管理」画面での「&uarr; ひとつ上へ」と「&darr; ひとつ下へ」リンクは、イベント発生時にプラグインを呼び出す順番を決定するために用いられます。最初のプラグインは最初に呼び出され、最後のプラグインは最後に呼び出されます。</li>
     <li><code>action.php</code>を通して呼び出されたときにアクタのように振舞う</li>
 </ol>
 <p>
index cecb8bd..b813c9c 100755 (executable)
        <li>\r
                <strong>Nucleus v3.5 (SVN)</strong>\r
                <ul>\r
+                       <li>FIXED: atom.phpとxml-rss2.phpで_CHARSETをチェックして文字コード変換(<a href="http://japan.nucleuscms.org/bb/viewtopic.php?t=4376" target="_blank" class="postlink">Nicleus3.41 へアップグレード後 xml-rss2.php でエラー</a>)(きゃしゃ)</li>\r
+                       <li>CHANGED: SEARCH.php改良(<a href="http://japan.nucleuscms.org/bb/viewtopic.php?t=4370" target="_blank" class="postlink">&lt;%relevance%&gt;対応SEARCH.php</a>、<a href="http://japan.nucleuscms.org/bb/viewtopic.php?t=3824" target="_blank" class="postlink">検索結果の正確さ</a>)(きゃしゃ)</li>\r
+                       <li>CHANGED: _CHARSETチェックのときにstrtoupper(きゃしゃ)</li>\r
+                       <li>CHANGED: インストーラの文字化け対策部分をデフォルトで有効に。globalfunctions.phpの方は、状況に応じて。(<a href="http://japan.nucleuscms.org/bb/viewtopic.php?t=4385" target="_blank" class="postlink">インストール後管理画面は正常表示、サイトが真っ白</a>)(きゃしゃ)</li>\r
+                       <li>CHANGED: インストーラエラーページをUTF-8固定に。(<a href="http://japan.nucleuscms.org/bb/viewtopic.php?p=25024#25024" target="_blank" class="postlink">3.41インストール->スキンエラー</a>(きゃしゃ)</li>\r
+                       <li>CHANGED: 言語ファイルの反映漏れ修正。ただし、言語ファイル読み込み前に表示される可能性のあるメッセージは定数定義前なのでそのまま(<a href="http://japan.nucleuscms.org/bb/viewtopic.php?p=24903#24903" target="_blank" class="postlink">インストール後管理画面は正常表示、サイトが真っ白</a>)(きゃしゃ)</li>\r
+                       <li>FIXED: pingオプションのチェックボックス削除(きゃしゃ)</li>\r
+                       <li>FIXED: parsedincludeの無限ループ対策、NP_includespecialからの移植時仕様変更に伴うコード修正。(きゃしゃ)</li>\r
+                       <li>FIXED: karma通知修正(きゃしゃ)</li>\r
+                       <li>FIXED: catidのみがURLで指定された場合、blogidを補完する(<a href="http://japan.nucleuscms.org/bb/viewtopic.php?t=4417" target="_blank" class="postlink">ShowBlogsのページ送りにblogidの付加をするには?</a>)(きゃしゃ)</li>\r
                        <li>ADDED: NP_Text plugin to core installation. Makes distribution of internationalised plugins easier. See <a href="http://forum.nucleuscms.org/viewtopic.php?t=15005" title="forgotpassword">this thread</a>. (ftruscot)</li>\r
                        <li>ADDED: links in plugins help of help.html to link to two main plugin repositories. See <a href="http://forum.nucleuscms.org/viewtopic.php?t=18214" title="forgotpassword">this thread</a>. (ftruscot)</li>\r
                        <li>ADDED: selectSpecialSkinType() function to globalfunctions.php. (ftruscot)</li>\r
index b52d78c..4ec9243 100644 (file)
@@ -54,12 +54,12 @@ define('_CREATE_ACCOUNT0',                                  '
 define('_CREATE_ACCOUNT1',                                     '¥¢¥«¥¦¥ó¥È¤ÎºîÀ®¤Ïµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£<br /><br />');
 define('_CREATE_ACCOUNT2',                                     '¾ÜºÙ¤Ï¥¦¥§¥Ö¥µ¥¤¥È¤Î´ÉÍý¼Ô¤Ë¤ªÌ䤤¹ç¤ï¤»¤¯¤À¤µ¤¤¡£');
 define('_CREATE_ACCOUNT_USER_DATA',                    '¿·µ¬¥¢¥«¥¦¥ó¥È¤Î¾ðÊó');
-define('_CREATE_ACCOUNT_LOGIN_NAME',           '¥í¥°¥¤¥óID (ɬ¿Ü)');
+define('_CREATE_ACCOUNT_LOGIN_NAME',           '¥í¥°¥¤¥óID (ɬ¿Ü)¡§');
 define('_CREATE_ACCOUNT_LOGIN_NAME_VALID',     ' a-z ¤Î±Ñ¾®Ê¸»ú¤È 0-9 ¤Î¿ô»ú¤Î¤ß»ÈÍѤǤ­¤Þ¤¹');
-define('_CREATE_ACCOUNT_REAL_NAME',                    '¥Ï¥ó¥É¥ë (ɬ¿Ü)');
-define('_CREATE_ACCOUNT_EMAIL',                                '¥á¡¼¥ë¥¢¥É¥ì¥¹ (ɬ¿Ü)');
+define('_CREATE_ACCOUNT_REAL_NAME',                    '¥Ï¥ó¥É¥ë (ɬ¿Ü)¡§');
+define('_CREATE_ACCOUNT_EMAIL',                                '¥á¡¼¥ë¥¢¥É¥ì¥¹ (ɬ¿Ü)¡§');
 define('_CREATE_ACCOUNT_EMAIL2',                       '(¥¢¥¯¥Æ¥£¥Ù¡¼¥·¥ç¥óÍѤΥê¥ó¥¯¤¬Á÷¤é¤ì¤ë¤Î¤ÇÍ­¸ú¤Ê¤â¤Î¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤)');
-define('_CREATE_ACCOUNT_URL',                          '(¤â¤·¤¢¤ì¤Ð)¼«Ê¬¤Î¥µ¥¤¥È¤ÎURL');
+define('_CREATE_ACCOUNT_URL',                          '(¤â¤·¤¢¤ì¤Ð)¼«Ê¬¤Î¥µ¥¤¥È¤ÎURL¡§');
 define('_CREATE_ACCOUNT_SUBMIT',                       '¥¢¥«¥¦¥ó¥È¤ÎºîÀ®');
 
 define('_BMLET_BACKTODRAFTS',                          '¥É¥é¥Õ¥È¤ËÌ᤹');
@@ -122,7 +122,6 @@ define('_UPDATEDPING_GOPINGPAGE',                                   '
 define('_UPDATEDPING_PINGING',                                         'Ping¥µ¡¼¥Ð¤ËÁ÷¿®Ãæ¤Ç¤¹');
 define('_UPDATEDPING_VIEWITEM',                                                '¹¹¿·¤µ¤ì¤¿blog:');
 define('_UPDATEDPING_VISITOWNSITE',                                    '¥µ¥¤¥È¤Ø¹Ô¤Ã¤Æ¤ß¤ë');
-define('_UPDATEDPING_GOSENDPING',                                      '¹¹¿·PingÁ÷¿®');
 
 // General category
 define('_EBLOGDEFAULTCATEGORY_NAME',                           'Áí¹ç');
@@ -232,7 +231,7 @@ define('_ACTIONURL_NOTLONGER_PARAMATER',                    '
 // ADMIN.php addToTemplate 'Query error: '
 define('_ADMIN_SQLDIE_QUERYERROR',                                     '¥¯¥¨¥ê ¥¨¥é¡¼: ');
 
-// backyp.php Backup WARNING
+// backup.php Backup WARNING
 define('_BACKUP_BACKUPFILE_TITLE',                                     'Nucleus CMS ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤Ç¤¹');
 define('_BACKUP_BACKUPFILE_BACKUPDATE',                                '¥Ð¥Ã¥¯¥¢¥Ã¥×¤·¤¿Æü:');
 define('_BACKUP_BACKUPFILE_NUCLEUSVERSION',                    'Nucleus CMS ¤Î¥Ð¡¼¥¸¥ç¥ó:');
@@ -661,9 +660,9 @@ define('_RESTORE_COMPLETE',                                 '
 // new item notification
 define('_NOTIFY_NI_MSG',                                       '¿·¤·¤¤¥¢¥¤¥Æ¥à¤¬Åê¹Æ¤µ¤ì¤Þ¤·¤¿:');
 define('_NOTIFY_NI_TITLE',                                     '¿·¤·¤¤¥¢¥¤¥Æ¥à!');
-define('_NOTIFY_KV_MSG',                                       '¥«¥ë¥Þ¤ÎÅêɼ¤¬¤¢¤ê¤Þ¤·¤¿:');
+define('_NOTIFY_KV_MSG',                                       '¥¢¥¤¥Æ¥à¤Ë¥«¥ë¥Þ¤ÎÅêɼ¤¬¤¢¤ê¤Þ¤·¤¿:');
 define('_NOTIFY_KV_TITLE',                                     'Nucleus¥«¥ë¥Þ:');
-define('_NOTIFY_NC_MSG',                                       '¥¢¥¤¥Æ¥à¤Ë¥³¥á¥ó¥È¤¹¤ë:');
+define('_NOTIFY_NC_MSG',                                       '¥¢¥¤¥Æ¥à¤Ë¥³¥á¥ó¥È¤¬¤¢¤ê¤Þ¤·¤¿:');
 define('_NOTIFY_NC_TITLE',                                     'Nucleus¥³¥á¥ó¥È:');
 define('_NOTIFY_USERID',                                       '¥æ¡¼¥¶¡¼ID:');
 define('_NOTIFY_USER',                                         '¥æ¡¼¥¶¡¼:');
index a3bc639..630ad6d 100755 (executable)
@@ -54,12 +54,12 @@ define('_CREATE_ACCOUNT0',                                  'アカウントの作成');
 define('_CREATE_ACCOUNT1',                                     'アカウントの作成は許可されていません。<br /><br />');
 define('_CREATE_ACCOUNT2',                                     '詳細はウェブサイトの管理者にお問い合わせください。');
 define('_CREATE_ACCOUNT_USER_DATA',                    '新規アカウントの情報');
-define('_CREATE_ACCOUNT_LOGIN_NAME',           'ログインID (必須)');
+define('_CREATE_ACCOUNT_LOGIN_NAME',           'ログインID (必須)');
 define('_CREATE_ACCOUNT_LOGIN_NAME_VALID',     ' a-z の英小文字と 0-9 の数字のみ使用できます');
-define('_CREATE_ACCOUNT_REAL_NAME',                    'ハンドル (必須)');
-define('_CREATE_ACCOUNT_EMAIL',                                'メールアドレス (必須)');
+define('_CREATE_ACCOUNT_REAL_NAME',                    'ハンドル (必須)');
+define('_CREATE_ACCOUNT_EMAIL',                                'メールアドレス (必須)');
 define('_CREATE_ACCOUNT_EMAIL2',                       '(アクティベーション用のリンクが送られるので有効なものを使用してください)');
-define('_CREATE_ACCOUNT_URL',                          '(もしあれば)自分のサイトのURL');
+define('_CREATE_ACCOUNT_URL',                          '(もしあれば)自分のサイトのURL');
 define('_CREATE_ACCOUNT_SUBMIT',                       'アカウントの作成');
 
 define('_BMLET_BACKTODRAFTS',                          'ドラフトに戻す');
@@ -231,7 +231,7 @@ define('_ACTIONURL_NOTLONGER_PARAMATER',                    '「action.php」のURLはコメン
 // ADMIN.php addToTemplate 'Query error: '
 define('_ADMIN_SQLDIE_QUERYERROR',                                     'クエリ エラー: ');
 
-// backyp.php Backup WARNING
+// backup.php Backup WARNING
 define('_BACKUP_BACKUPFILE_TITLE',                                     'Nucleus CMS のデータベースバックアップファイルです');
 define('_BACKUP_BACKUPFILE_BACKUPDATE',                                'バックアップした日:');
 define('_BACKUP_BACKUPFILE_NUCLEUSVERSION',                    'Nucleus CMS のバージョン:');
@@ -660,9 +660,9 @@ define('_RESTORE_COMPLETE',                                 'リストア完了');
 // new item notification
 define('_NOTIFY_NI_MSG',                                       '新しいアイテムが投稿されました:');
 define('_NOTIFY_NI_TITLE',                                     '新しいアイテム!');
-define('_NOTIFY_KV_MSG',                                       'カルマの投票がありました:');
+define('_NOTIFY_KV_MSG',                                       'ã\82¢ã\82¤ã\83\86ã\83 ã\81«ã\82«ã\83«ã\83\9eã\81®æ\8a\95票ã\81\8cã\81\82ã\82\8aã\81¾ã\81\97ã\81\9f:');
 define('_NOTIFY_KV_TITLE',                                     'Nucleusカルマ:');
-define('_NOTIFY_NC_MSG',                                       'ã\82¢ã\82¤ã\83\86ã\83 ã\81«ã\82³ã\83¡ã\83³ã\83\88ã\81\99ã\82\8b:');
+define('_NOTIFY_NC_MSG',                                       'ã\82¢ã\82¤ã\83\86ã\83 ã\81«ã\82³ã\83¡ã\83³ã\83\88ã\81\8cã\81\82ã\82\8aã\81¾ã\81\97ã\81\9f:');
 define('_NOTIFY_NC_TITLE',                                     'Nucleusコメント:');
 define('_NOTIFY_USERID',                                       'ユーザーID:');
 define('_NOTIFY_USER',                                         'ユーザー:');
index 070d917..9e25916 100755 (executable)
@@ -303,7 +303,7 @@ class ACTION
                                break;
                }
 
-               $blogid = getBlogIDFromItemID($itemid);
+//             $blogid = getBlogIDFromItemID($itemid);
                $blog =& $manager->getBlog($blogid);
 
                // send email to notification address, if any
@@ -313,10 +313,12 @@ class ACTION
                        if ($CONF['URLMode'] == 'pathinfo') {
                                $itemLink = createItemLink(intval($itemid));
                        } else {
-                               $itemLink = $CONF['IndexURL'] . createItemLink(intval($itemid));
+                               $itemLink = createItemLink(intval($itemid));
+                               if (strpos($itemLink, 'http') === false) {
+                                       $itemLink = $CONF['IndexURL'] . $itemLink;
+                               }
                        }
-//                     $mailto_msg .= $CONF['IndexURL'] . 'index.php?itemid=' . $itemid . "\n\n";
-                       $mailto_msg .= $itemLink;
+                       $mailto_msg .= $itemLink . "\n\n";
                        if ($member->isLoggedIn()) {
                                $mailto_msg .= _NOTIFY_MEMBER . ' ' . $member->getDisplayName() . ' (ID=' . $member->getID() . ")\n";
                        }
@@ -397,7 +399,7 @@ class ACTION
                        echo $manager->getNewTicket();
                }
                else {
-                       echo 'err:' . _ERROR_BADTICKET;
+                       echo _ERROR . ':' . _ERROR_BADTICKET;
                }
                return false;
        }
@@ -418,7 +420,7 @@ class ACTION
                        }
                }
                else {
-                       echo 'err:' . _ERROR_BADTICKET;
+                       echo _ERROR . ':' . _ERROR_BADTICKET;
                }
                return false;
        }
index 296603f..3e8e91c 100755 (executable)
@@ -677,7 +677,7 @@ class ADMIN {
                                        $error = _BATCH_UNKNOWN . htmlspecialchars($action);\r
                        }\r
 \r
-                       echo '<b>',($error ? 'Error: '.$error : _BATCH_SUCCESS),'</b>';\r
+                       echo '<b>',($error ? _ERROR . ': '.$error : _BATCH_SUCCESS),'</b>';\r
                        echo '</li>';\r
                }\r
 \r
@@ -4426,6 +4426,7 @@ selector();
                ?>\r
 \r
 \r
+               <div style="width:100%;">\r
                <form method="post" action="index.php">\r
                <div>\r
 \r
@@ -4472,7 +4473,7 @@ selector();
                echo '<br />' . _SKINEDIT_ALLOWEDTEMPLATESS;\r
                $query = 'SELECT tdname as name, tddesc as description FROM '.sql_table('template_desc');\r
                        showlist($query,'table',array('content'=>'shortnames'));\r
-               echo '</div></form>';\r
+               echo '</div></form></div>';\r
                $this->pagefoot();\r
        }\r
 \r
@@ -5204,7 +5205,7 @@ selector();
                           . " SET value='$val'"\r
                           . " WHERE name='$name'";\r
 \r
-               sql_query($query) or die("Query error: " . mysql_error());\r
+               sql_query($query) or die(_ADMIN_SQLDIE_QUERYERROR . mysql_error());\r
                return mysql_insert_id();\r
        }\r
 \r
@@ -6037,7 +6038,7 @@ selector();
                if (($plug->supportsFeature('HelpPage') > 0) && (@file_exists($helpFile))) {\r
                        @readfile($helpFile);\r
                } else {\r
-                       echo '<p>Error: ', _ERROR_PLUGNOHELPFILE,'</p>';\r
+                       echo '<p>' . _ERROR .': ', _ERROR_PLUGNOHELPFILE,'</p>';\r
                        echo '<p><a href="index.php?action=pluginlist">(',_BACK,')</a></p>';\r
                }\r
 \r
@@ -6502,6 +6503,7 @@ selector();
                                $iPrevPid = $aOption['pid'];\r
 \r
                                echo '<tr><th colspan="2">Options for ', htmlspecialchars($aOption['pfile']),'</th></tr>';\r
+                               echo '<tr><th colspan="2">'.sprintf(_PLUGIN_OPTIONS_TITLE, htmlspecialchars($aOption['pfile']. ENT_QUOTES)).'</th></tr>';\r
                        }\r
 \r
                        $meta = NucleusPlugin::getOptionMeta($aOption['typeinfo']);\r
index 9609c9d..7dcf150 100644 (file)
@@ -82,7 +82,16 @@ class BaseActions {
                if (!$skin->isValid && !file_exists($file)) {
                        return;
                }
-               $parts = explode('|', $filename, 2);
+               $contents = $skin->getContent($filename);
+               if (!$contents) {
+                       if (!file_exists($file)) return;
+                       // nothing to include
+                       if ($fsize <= 0) return;
+                       $fd = fopen ($file, 'r');
+                       $contents = fread ($fd, $fsize);
+                       fclose ($fd);
+               }
+/*             $parts = explode('|', $filename, 2);
                if ($skin->getContent($parts[0])) {
                        $contents = $skin->getContent($parts[0]);
                } else {
@@ -101,7 +110,7 @@ class BaseActions {
                        $contents = fread ($fd, $fsize);
                        fclose ($fd);
                }
-
+*/
                // parse file contents
                $this->parser->parse($contents);
 
index 7d25d63..84f0158 100755 (executable)
@@ -395,7 +395,7 @@ class ITEM {
                $i_title = postVar('title');\r
                $i_more = postVar('more');\r
 \r
-               if(_CHARSET != 'UTF-8'){\r
+               if(strtoupper(_CHARSET) != 'UTF-8'){\r
                        $i_body  = mb_convert_encoding($i_body, _CHARSET, "UTF-8");\r
                        $i_title = mb_convert_encoding($i_title, _CHARSET, "UTF-8");\r
                        $i_more  = mb_convert_encoding($i_more, _CHARSET, "UTF-8");\r
index 2032770..67e66f6 100755 (executable)
@@ -39,51 +39,56 @@ class SEARCH {
 //             $text = preg_replace ("/[<,>,=,?,!,#,^,(,),[,\],:,;,\\\,%]/","",$text);
 
 
-     /* * * for jp * * * * * * * * * * */
-        $text = str_replace ("\xE3\x80\x80",' ',$text);
-        $text = preg_replace ("/[<>=?!#^()[\]:;\\%]/","",$text);
+               /* * * for jp * * * * * * * * * * */
+               $this->encoding = strtolower(preg_replace('|[^a-z0-9-_]|i', '', _CHARSET));
+               if ($this->encoding != 'utf-8') {
+                       $text = mb_convert_encoding($text, "UTF-8", $this->encoding);
+               }
+               $text = str_replace ("\xE3\x80\x80",' ',$text);
+               $text = preg_replace ("/[<>=?!#^()[\]:;\\%]/","",$text);
 
-        $this->ascii = '[\x00-\x7F]';
-        $this->two = '[\xC0-\xDF][\x80-\xBF]';
-        $this->three = '[\xE0-\xEF][\x80-\xBF][\x80-\xBF]';
+               $this->ascii = '[\x00-\x7F]';
+               $this->two = '[\xC0-\xDF][\x80-\xBF]';
+               $this->three = '[\xE0-\xEF][\x80-\xBF][\x80-\xBF]';
 
-        $this->jpmarked      = $this->boolean_mark_atoms_jp($text);
-     /* * * * * * * * * * * * * * * * */
+               $this->jpmarked      = $this->boolean_mark_atoms_jp($text);
+               /* * * * * * * * * * * * * * * * */
 
-        $this->querystring     = $text;
+               $this->querystring      = $text;
 //             $this->marked           = $this->boolean_mark_atoms($text);
-        $this->inclusive       = $this->boolean_inclusive_atoms($text);
-        $this->blogs           = array();
+               $this->inclusive        = $this->boolean_inclusive_atoms($text);
+               $this->blogs            = array();
 
-        // get all public searchable blogs, no matter what, include the current blog allways.
+               // get all public searchable blogs, no matter what, include the current blog allways.
                $res = sql_query('SELECT bnumber FROM '.sql_table('blog').' WHERE bincludesearch=1 ');
                while ($obj = mysql_fetch_object($res)) 
-                   $this->blogs[] = intval($obj->bnumber);
-        }
+                       $this->blogs[] = intval($obj->bnumber);
+               }
 
        function  boolean_sql_select($match){
-//             if (strlen($this->inclusive) > 0) {
-                  /* build sql for determining score for each record */
-/*                $result=explode(" ",$this->inclusive);
-                  for($cth=0;$cth<count($result);$cth++){
-                          if(strlen($result[$cth])>=4){
-                                  $stringsum_long .=  " $result[$cth] ";
-                          }else{
-                                  $stringsum_a[] = ' '.$this->boolean_sql_select_short($result[$cth],$match).' ';
-                          }
-                  }
-
-                  if(strlen($stringsum_long)>0){
+               if (strlen($this->inclusive) > 0) {
+                       /* build sql for determining score for each record */
+                       $result=explode(" ",$this->inclusive);
+                       for($cth=0;$cth<count($result);$cth++){
+                               if(strlen($result[$cth])>=4){
+                                       $stringsum_long .=  " $result[$cth] ";
+                               }else{
+                                       $stringsum_a[] = ' '.$this->boolean_sql_select_short($result[$cth],$match).' ';
+                               }
+                       }
+
+                       if(strlen($stringsum_long)>0){
                                $stringsum_long = addslashes($stringsum_long);
                                $stringsum_a[] = " match ($match) against ('$stringsum_long') ";
-                  }
+                       }
 
-                  $stringsum .= implode("+",$stringsum_a);
-                  return $stringsum;
+                       $stringsum .= implode("+",$stringsum_a);
+
+                       return $stringsum;
                }
-*/     }
+       }
 
-    
+       
 
        function boolean_inclusive_atoms($string){
                $result=trim($string);
@@ -107,16 +112,18 @@ class SEARCH {
                        '',
                        $result);
 
-               $result=preg_replace(
+/*             $result=preg_replace(
 //                     "(\-[A-Za-z0-9]{1,}[A-Za-z0-9\-\.\_]{0,})",
                        "(\-([A-Za-z0-9]|$this->two|$this->three){1,}([A-Za-z0-9\-\.\_\,]|$this->two|$this->three){0,})",
                        '',
                        $result);
-
+*/
                $result=str_replace('(',' ',$result);
                $result=str_replace(')',' ',$result);
                $result=str_replace(',',' ',$result);
-
+               if ($this->encoding != 'utf-8') {
+                       $result = mb_convert_encoding($result, $this->encoding, "UTF-8");
+               }
                return $result;
        }
 
@@ -126,26 +133,53 @@ class SEARCH {
                $result = preg_replace(
                        "/foo\[\(\'([^\)]{4,})\'\)\]bar/e",
                        " 'match ('.\$match.') against (\''.\$this->copyvalue(\"$1\").'\') > 0 ' ",
+
+
+
+
+
+
                        $result);
 
                $result = preg_replace(
                        "/foo\[\(\'([^\)]{1,3})\'\)\]bar/e",
                        " '('.\$this->boolean_sql_where_short(\"$1\",\"$match\").')' ",
+
+
+
+
+
                        $result);
 */
                $result = $this->jpmarked; /* for jp */
                $result = $this->boolean_sql_where_jp_short($result,$match);/* for jp */
+               if ($this->encoding != 'utf-8') {
+                       $result = mb_convert_encoding($result, $this->encoding, "UTF-8");
+               }
                return $result;
+
        }
 
+
+
        // there must be a simple way to simply copy a value with backslashes in it through
        // the preg_replace, but I cannot currently find it (karma 2003-12-30)
        function copyvalue($foo) {
                return $foo;
+
+
        }
 
 
+
 /*
+
+
+
+
+
+
+
        function boolean_mark_atoms($string){
                $result=trim($string);
                $result=preg_replace("/([[:space:]]{2,})/",' ',$result);
@@ -168,7 +202,7 @@ class SEARCH {
                $result=trim($result);
                $result=preg_replace("/([[:space:]]{2,})/",' ',$result);
 
-       // apply arbitrary function to all 'word' atoms
+               // apply arbitrary function to all 'word' atoms
 
                $result_a = explode(" ",$result);
                for($word=0;$word<count($result_a);$word++){
@@ -196,80 +230,100 @@ class SEARCH {
 
                return $like;
        }
+*/
+
        function boolean_sql_select_short($string,$match){
                $match_a = explode(',',$match);
                $score_unit_weight = .2;
                for($ith=0;$ith<count($match_a);$ith++){
                        $score_a[$ith] =
-                                                  " $score_unit_weight*(
-                                                  LENGTH(" . addslashes($match_a[$ith]) . ") -
-                                                  LENGTH(REPLACE(LOWER(" . addslashes($match_a[$ith]) . "),LOWER('" . addslashes($string) . "'),'')))
-                                                  /LENGTH('" . addslashes($string) . "') ";
+                                                       " $score_unit_weight*(
+                                                       LENGTH(" . addslashes($match_a[$ith]) . ") -
+                                                       LENGTH(REPLACE(LOWER(" . addslashes($match_a[$ith]) . "),LOWER('" . addslashes($string) . "'),'')))
+                                                       /LENGTH('" . addslashes($string) . "') ";
                }
                $score = implode(" + ",$score_a);
 
                return $score;
        }
-*/
 
 /***********************************************
-  Make "WHERE" (jp)
+       Make "WHERE" (jp)
 ***********************************************/
 
-    function boolean_mark_atoms_jp($string){
-
-       $result=trim($string);
-       $result=preg_replace("/([[:space:]]{2,})/",' ',$result);
-       
-       /* convert normal boolean operators to shortened syntax */
-       $result=eregi_replace(' not ',' -',$result);
-       $result=eregi_replace(' and ',' ',$result);
-       $result=eregi_replace(' or ',',',$result);
-
-       /* strip excessive whitespace */
-       $result=str_replace(', ',',',$result);
-       $result=str_replace(' ,',',',$result);
-       $result=str_replace('- ','-',$result);
-       $result=str_replace('+','',$result);
-       
-       $result=str_replace(',',' ,',$result);
-
-       return $result;
-    }
-    
-
-    function boolean_sql_where_jp_short($string,$match){
-       $match_a = explode(',',$match);
+       function boolean_mark_atoms_jp($string){
+
+               $result=trim($string);
+               $result=preg_replace("/([[:space:]]{2,})/",' ',$result);
+               
+               /* convert normal boolean operators to shortened syntax */
+               $result=eregi_replace(' not ',' -',$result);
+               $result=eregi_replace(' and ',' ',$result);
+               $result=eregi_replace(' or ',',',$result);
+
+               /* strip excessive whitespace */
+               $result=str_replace(', ',',',$result);
+               $result=str_replace(' ,',',',$result);
+               $result=str_replace('- ','-',$result);
+               $result=str_replace('+','',$result);
+               
+               $result=str_replace(',',' ,',$result);
+
+               return $result;
+       }
+
+       function boolean_sql_where_jp_short($string,$match){
+               $match_a = explode(',',$match);
                        $key_a = explode(' ',$string);
                        
-       for($ith=0;$ith<count($match_a);$ith++){
-               $temp_a[$ith] = "(i.$match_a[$ith] LIKE '%" . addslashes($key_a[0]) . "%') ";
-       }
-       $like = '('.implode(' or ',$temp_a).')';
-
-                       for($kn=1; $kn<count($key_a); $kn++){
-               if(substr($key_a[$kn],0,1) == ","){
-                       for($ith=0;$ith<count($match_a);$ith++){
-                               $temp_a[$ith] = " (i.$match_a[$ith] LIKE '%" . addslashes(substr($key_a[$kn],1)) . "%') ";
-                       }
-                       $like .=' OR ('. implode(' or ',$temp_a).')';
-               }elseif(substr($key_a[$kn],0,1) != '-'){
-                       for($ith=0;$ith<count($match_a);$ith++){
-                               $temp_a[$ith] = " (i.$match_a[$ith] LIKE '%" . addslashes($key_a[$kn]) . "%') ";
-                       }
-                       $like .=' AND ('. implode(' or ',$temp_a).')';
-               }else{
-                       for($ith=0;$ith<count($match_a);$ith++){
-                               $temp_a[$ith] = " NOT(i.$match_a[$ith] LIKE '%" . addslashes(substr($key_a[$kn],1)) . "%') ";
-                       }
-                       $like .=' AND ('. implode(' and ',$temp_a).')';
-               }
-       }
-       
-       $like = '('.$like.')';
-       return $like;
-    }
+               for($ith=0;$ith<count($match_a);$ith++){
+//                     $temp_a[$ith] = "(i.$match_a[$ith] LIKE '%" . addslashes($key_a[0]) . "%') ";
+                       $temp_a[$ith] = "(i.$match_a[$ith] LIKE "
+                                                       . preg_match('/[a-zA-Z]/', $key_a[0]) ?
+                                                               '' :
+                                                               'BINARY'
+                                                       . " '%" . addslashes($key_a[0]) . "%') ";
+               }
+               $like = '('.implode(' or ',$temp_a).')';
+
+               for($kn=1; $kn<count($key_a); $kn++){
+                       if(substr($key_a[$kn],0,1) == ","){
+                               for($ith=0;$ith<count($match_a);$ith++){
+//                                     $temp_a[$ith] = " (i.$match_a[$ith] LIKE '%" . addslashes(substr($key_a[$kn],1)) . "%') ";
+                                       $temp_a[$ith] = " (i.$match_a[$ith] LIKE "
+                                                                       . preg_match('/[a-zA-Z]/',$key_a[$kn]) ?
+                                                                               '' :
+                                                                               'BINARY'
+                                                                       . " '%" . addslashes(substr($key_a[$kn],1)) . "%') ";
+                               }
+                               $like .=' OR ('. implode(' or ',$temp_a).')';
+                       }elseif(substr($key_a[$kn],0,1) != '-'){
+                               for($ith=0;$ith<count($match_a);$ith++){
+//                                     $temp_a[$ith] = " (i.$match_a[$ith] LIKE '%" . addslashes($key_a[$kn]) . "%') ";
+                                       $temp_a[$ith] = " (i.$match_a[$ith] LIKE "
+                                                                 . preg_match('/[a-zA-Z]/', $key_a[$kn]) ?
+                                                                               '' :
+                                                                               'BINARY'
+                                                                 . " '%" . addslashes($key_a[$kn]) . "%') ";
+                               }
+                               $like .=' AND ('. implode(' or ',$temp_a).')';
+                       }else{
+                               for($ith=0;$ith<count($match_a);$ith++){
+//                                     $temp_a[$ith] = " NOT(i.$match_a[$ith] LIKE '%" . addslashes(substr($key_a[$kn],1)) . "%') ";
+                                       $temp_a[$ith] = " NOT(i.$match_a[$ith] LIKE "
+                                                                 . preg_match('/[a-zA-Z]/', $key_a[$kn]) ?
+                                                                               '' :
+                                                                               'BINARY'
+                                                                 . " '%" . addslashes(substr($key_a[$kn],1)) . "%') ";
+                               }
+                               $like .=' AND ('. implode(' and ',$temp_a).')';
+                       }
+               }
+               
+               $like = '('.$like.')';
+               return $like;
+       }
 
 /***********************************************/
 }
-?>
+?>
\ No newline at end of file
index eaaa480..b788d3f 100755 (executable)
@@ -108,14 +108,14 @@ class Backup
                \r
                // dump header\r
                echo "#\n";\r
-               echo "# This is a backup file generated by Nucleus \n";\r
-               echo "# http://www.nucleuscms.org/\n";\r
+               echo "# " . _BACKUP_BACKUPFILE_TITLE . " \n";\r
+               echo "# " . _ADMINPAGEFOOT_OFFICIALURL . "\n";\r
                echo "#\n";\r
-               echo "# backup-date: " .  gmdate("d-m-Y H:i:s", time()) . " GMT\n";\r
+               echo "# " . _BACKUP_BACKUPFILE_BACKUPDATE .  gmdate("d-m-Y H:i:s", time()) . " GMT\n";\r
                global $nucleus;\r
-               echo "# Nucleus CMS version: " . $nucleus['version'] . "\n";\r
+               echo "# " . _BACKUP_BACKUPFILE_NUCLEUSVERSION . $nucleus['version'] . "\n";\r
                echo "#\n";\r
-               echo "# WARNING: Only try to restore on servers running the exact same version of Nucleus\n";\r
+               echo "# " . _BACKUP_WARNING_NUCLEUSVERSION . "\n";\r
                echo "#\n";\r
                \r
                // dump all tables\r
@@ -142,7 +142,7 @@ class Backup
        function _backup_dump_table($tablename, $key) {\r
        \r
                echo "#\n";\r
-               echo "# TABLE: " . $tablename . "\n";\r
+               echo "# " . _BACKUP_BACKUPFILE_TABLE_NAME . $tablename . "\n";\r
                echo "#\n";\r
        \r
                // dump table structure\r
@@ -273,7 +273,7 @@ class Backup
                $result = mysql_query("SELECT * FROM $tablename");\r
        \r
                if(mysql_num_rows($result) > 0)\r
-                       echo "\n#\n# Table Data for $tablename\n#\n";\r
+                       echo "\n#\n# " . sprintf(_BACKUP_BACKUPFILE_TABLEDATAFOR, $tablename) . "\n#\n";\r
                        \r
                $num_fields = mysql_num_fields($result);\r
                \r
@@ -340,19 +340,19 @@ class Backup
        \r
                // first of all: get uploaded file:\r
                if (empty($uploadInfo['name']))\r
-                       return 'No file uploaded';\r
+                       return _BACKUP_RESTOR_NOFILEUPLOADED;\r
                if (!is_uploaded_file($uploadInfo['tmp_name']))\r
-                       return 'No file uploaded';\r
+                       return _BACKUP_RESTOR_NOFILEUPLOADED;\r
        \r
                $backup_file_name = $uploadInfo['name'];\r
                $backup_file_tmpname = $uploadInfo['tmp_name'];\r
                $backup_file_type = $uploadInfo['type'];\r
        \r
                if (!file_exists($backup_file_tmpname))\r
-                       return 'File Upload Error';\r
+                       return _BACKUP_RESTOR_UPLOAD_ERROR;\r
        \r
                if (!preg_match("/^(text\/[a-zA-Z]+)|(application\/(x\-)?gzip(\-compressed)?)|(application\/octet-stream)$/is", $backup_file_type) )\r
-                       return 'The uploaded file is not of the correct type';\r
+                       return _BACKUP_RESTOR_UPLOAD_NOCORRECTTYPE;\r
        \r
        \r
                if (preg_match("/\.gz/is",$backup_file_name))\r
@@ -361,7 +361,7 @@ class Backup
                        $gzip = 0;\r
        \r
                if (!extension_loaded("zlib") && $gzip)\r
-                       return "Cannot decompress gzipped backup (zlib package not installed)";\r
+                       return _BACKUP_RESTOR_UPLOAD_NOZLIB;\r
        \r
                // get sql query according to gzip setting (either decompress, or not)\r
                if($gzip)\r
@@ -405,7 +405,7 @@ class Backup
        //                      debug("Executing: " . htmlspecialchars($sql) . "\n");\r
        \r
                                $result = mysql_query($sql);\r
-                               if (!$result) debug('SQL Error: ' . mysql_error());\r
+                               if (!$result) debug(_BACKUP_RESTOR_SQL_ERROR . mysql_error());\r
        \r
                        }\r
                }\r
index b2bc1aa..3f11b48 100755 (executable)
@@ -20,7 +20,7 @@
 // needed if we include globalfunctions from install.php\r
 global $nucleus, $CONF, $DIR_LIBS, $DIR_LANG, $manager, $member;\r
 \r
-$nucleus['version'] = 'v3.41RC';\r
+$nucleus['version'] = 'v3.5SVN';\r
 $nucleus['codename'] = '';\r
 \r
 checkVars(array('nucleus', 'CONF', 'DIR_LIBS', 'MYSQL_HOST', 'MYSQL_USER', 'MYSQL_PASSWORD', 'MYSQL_DATABASE', 'DIR_LANG', 'DIR_PLUGINS', 'HTTP_GET_VARS', 'HTTP_POST_VARS', 'HTTP_COOKIE_VARS', 'HTTP_ENV_VARS', 'HTTP_SESSION_VARS', 'HTTP_POST_FILES', 'HTTP_SERVER_VARS', 'GLOBALS', 'argv', 'argc', '_GET', '_POST', '_COOKIE', '_ENV', '_SESSION', '_SERVER', '_FILES'));\r
@@ -106,7 +106,7 @@ $maxresults   = requestVar('maxresults');
 $startpos     = intRequestVar('startpos');\r
 $errormessage = '';\r
 $error        = '';\r
-$special = requestVar('special');\r
+$special      = requestVar('special');\r
 $virtualpath  = ((getVar('virtualpath') != null) ? getVar('virtualpath') : serverVar('PATH_INFO'));\r
 \r
 if (!headers_sent() ) {\r
@@ -120,7 +120,7 @@ include($DIR_LIBS . 'ACTIONLOG.php');
 include($DIR_LIBS . 'MANAGER.php');\r
 include($DIR_LIBS . 'PLUGIN.php');\r
 \r
-$manager =& MANAGER::instance();\r
+$manager = MANAGER::instance();\r
 \r
 // make sure there's no unnecessary escaping:\r
 set_magic_quotes_runtime(0);\r
@@ -546,7 +546,7 @@ function sql_connect() {
        $mySqlVer = implode('.', array_map('intval', explode('.', mysql_get_server_info($MYSQL_CONN))));\r
        if ($mySqlVer >= '5.0.7' && phpversion() >= '5.2.3') {\r
                mysql_set_charset($charset);\r
-       } else {\r
+       } elseif ($mySqlVer >= '4.1.0') {\r
                sql_query("SET NAMES " . $charset);\r
        }\r
 // </add for garble measure>*/\r
@@ -734,9 +734,9 @@ function parseHighlight($query) {
        for ($i = 0; $i < count($aHighlight); $i++) {\r
                $aHighlight[$i] = trim($aHighlight[$i]);\r
 \r
-               if (strlen($aHighlight[$i]) < 3) {\r
-                       unset($aHighlight[$i]);\r
-               }\r
+//             if (strlen($aHighlight[$i]) < 3) {\r
+//                     unset($aHighlight[$i]);\r
+//             }\r
        }\r
 \r
        if (count($aHighlight) == 1) {\r
@@ -821,14 +821,14 @@ function selector() {
                // try to get line number/filename (extra headers_sent params only exists in PHP 4.3+)\r
                if (function_exists('version_compare') && version_compare('4.3.0', phpversion(), '<=') ) {\r
                        headers_sent($hsFile, $hsLine);\r
-                       $extraInfo = ' in <code>' . $hsFile . '</code> line <code>' . $hsLine . '</code>';\r
+                       $extraInfo = sprintf(_GFUNCTIONS_HEADERSALREADYSENT_FILE,$hsFile,$hsLine);\r
                } else {\r
                        $extraInfo = '';\r
                }\r
 \r
                startUpError(\r
-                       '<p>The page headers have already been sent out' . $extraInfo . '. This could cause Nucleus not to work in the expected way.</p><p>Usually, this is caused by spaces or newlines at the end of the <code>config.php</code> file, at the end of the language file or at the end of a plugin file. Please check this and try again.</p><p>If you don\'t want to see this error message again, without solving the problem, set <code>$CONF[\'alertOnHeadersSent\']</code> in <code>globalfunctions.php</code> to <code>0</code></p>',\r
-                       'Page headers already sent'\r
+                       sprintf(_GFUNCTIONS_HEADERSALREADYSENT_TXT,$extraInfo),\r
+                       _GFUNCTIONS_HEADERSALREADYSENT_TITLE\r
                );\r
                exit;\r
        }\r
@@ -1015,8 +1015,26 @@ function selector() {
                if(preg_match("/^(\xA1{2}|\xe3\x80{2}|\x20)+$/", $query)){\r
                                        $type = 'index';\r
                }\r
-               $order = (_CHARSET == 'EUC-JP') ? 'EUC-JP, UTF-8,' : 'UTF-8, EUC-JP,';\r
-               $query = mb_convert_encoding($query, _CHARSET, $order . ' JIS, SJIS, ASCII');\r
+//             $order = (_CHARSET == 'EUC-JP') ? 'EUC-JP, UTF-8,' : 'UTF-8, EUC-JP,';\r
+//             $query = mb_convert_encoding($query, _CHARSET, $order . ' JIS, SJIS, ASCII');\r
+               switch(strtolower(_CHARSET)){\r
+                       case 'utf-8':\r
+                               $order = 'ASCII, UTF-8, EUC-JP, JIS, SJIS, EUC-CN, ISO-8859-1';\r
+                               break;\r
+                       case 'gb2312':\r
+                               $order = 'ASCII, EUC-CN, EUC-JP, UTF-8, JIS, SJIS, ISO-8859-1';\r
+                               break;\r
+                       case 'shift_jis':\r
+                               // Note that shift_jis is only supported for output.\r
+                               // Using shift_jis in DB is prohibited.\r
+                               $order = 'ASCII, SJIS, EUC-JP, UTF-8, JIS, EUC-CN, ISO-8859-1';\r
+                               break;\r
+                       default:\r
+                               // euc-jp,iso-8859-x,windows-125x\r
+                               $order = 'ASCII, EUC-JP, UTF-8, JIS, SJIS, EUC-CN, ISO-8859-1';\r
+                               break;\r
+               }\r
+               $query = mb_convert_encoding($query, _CHARSET, $order);\r
                if (is_numeric($blogid)) {\r
                        $blogid = intVal($blogid);\r
                } else {\r
@@ -1048,6 +1066,11 @@ function selector() {
                $type = 'index';\r
        }\r
 \r
+       // any type of skin with catid\r
+       if ($catid && !$blogid) {\r
+               $blogid = getBlogIDFromCatID($catid);\r
+       }\r
+\r
        // decide which blog should be displayed\r
        if (!$blogid) {\r
                $blogid = $CONF['DefaultBlog'];\r
@@ -1062,7 +1085,12 @@ function selector() {
 \r
        // set catid if necessary\r
        if ($catid) {\r
-               $blog->setSelectedCategory($catid);\r
+               // check if the category is valid\r
+               if (!$blog->isValidCategory($catid)) {\r
+                       doError(_ERROR_NOSUCHCATEGORY);\r
+               } else {\r
+                       $blog->setSelectedCategory($catid);\r
+               }\r
        }\r
 \r
        // decide which skin should be used\r
@@ -1239,7 +1267,7 @@ function parseFile($filename, $includeMode = 'normal', $includePrefix = '') {
        PARSER::setProperty('IncludePrefix', $includePrefix);\r
 \r
        if (!file_exists($filename) ) {\r
-               doError('A file is missing');\r
+               doError(_GFUNCTIONS_PARSEFILE_FILEMISSING);\r
        }\r
 \r
        $fsize = filesize($filename);\r
@@ -1803,7 +1831,7 @@ function ticketForPlugin(){
                && $phppath!=strtolower($plugin_name).'/index.php' ) return;\r
 \r
        /* Exit if not logged in. */\r
-       if ( !$member->isLoggedIn() ) exit("You aren't logged in.");\r
+       if ( !$member->isLoggedIn() ) exit(_GFUNCTIONS_YOU_AERNT_LOGGEDIN);\r
 \r
        global $manager,$DIR_LIBS,$DIR_LANG,$HTTP_GET_VARS,$HTTP_POST_VARS;\r
 \r
@@ -2044,7 +2072,7 @@ function stringToAttribute ($string) {
        $string = entity::named_to_numeric($string);\r
        $string = entity::normalize_numeric($string);\r
 \r
-       if (_CHARSET == 'UTF-8') {\r
+       if (strtoupper(_CHARSET) == 'UTF-8') {\r
                $string = entity::numeric_to_utf8($string);\r
        }\r
 \r
@@ -2063,7 +2091,7 @@ function stringToXML ($string) {
        $string = entity::named_to_numeric($string);\r
        $string = entity::normalize_numeric($string);\r
 \r
-       if (_CHARSET == 'UTF-8') {\r
+       if (strtoupper(_CHARSET) == 'UTF-8') {\r
                $string = entity::numeric_to_utf8($string);\r
        }\r
 \r
index 45e8f39..7374af7 100755 (executable)
@@ -89,8 +89,6 @@
                                <%endif%>\r
                        </div>\r
                        <input name="actiontype" tabindex="61" value="adddraft" type="radio" id="act_draft" /><label for="act_draft"><%text(_ADD_ADDDRAFT)%></label> <%helplink(draft)%>\r
-                       <br />\r
-                       <input id="dosendping" name="dosendping" value="1" type="checkbox" checked="checked"><label for="dosendping"><%text(_UPDATEDPING_GOSENDPING)%></label>\r
                </td>\r
        </tr><tr>\r
                <td><%text(_ADD_PLUGIN_EXTRAS)%></td>\r
index d66d2b7..f6b6e58 100755 (executable)
        <br />\r
        <input name="actiontype" value="delete" type="radio" id="act_delete" tabindex="61" /><label for="act_delete"><%text(_BMLET_DELETE)%></label>\r
 <%endif%>\r
-       <br />\r
-       <input id="dosendping" name="dosendping" value="1" type="checkbox"><label for="dosendping"><%text(_UPDATEDPING_GOSENDPING)%></label>\r
 \r
        </td>\r
 </tr><tr>\r
index 727f3db..e6d4b4f 100755 (executable)
                                                                        <li>\r
                                                                                <input name="actiontype" value="adddraft" type="radio" id="act_draft" tabindex="60" /><label for="act_draft"><%text(_ADD_ADDDRAFT)%></label> <%helplink(draft)%>\r
                                                                        </li>\r
-                                                                       <li><input id="dosendping" name="dosendping" value="1" type="checkbox" checked="checked" tabindex="120" /><label for="dosendping"><%text(_UPDATEDPING_GOSENDPING)%></label></li>\r
                                                                </ul>\r
                                                        </td>\r
                                                </tr>\r
index 03598ff..966a959 100755 (executable)
                                                                        <li>\r
                                                                                <input name="actiontype" value="backtodrafts" type="radio" id="act_backtodrafts" tabindex="60" /><label for="act_backtodrafts"><%text(_BMLET_BACKTODRAFTS)%></label> <%helplink(draft)%>\r
                                                                        </li><%endif%>\r
-                                                                       <li><input id="dosendping" name="dosendping" value="1" type="checkbox" tabindex="120" /><label for="dosendping"><%text(_UPDATEDPING_GOSENDPING)%></label></li>\r
                                                                </ul>\r
                                                        </td>\r
                                                </tr>\r
index 2ff4908..d9d99e4 100755 (executable)
  *
  */
 
-$CONF = array();\r
-\r
-// defines how much media items will be shown per page. You can override this\r
-// in config.php if you like. (changing it in config.php instead of here will\r
-// allow your settings to be kept even after a Nucleus upgrade)\r
-$CONF['MediaPerPage'] = 10;\r
-\r
-// include all classes and config data\r
-require('../config.php');\r
-include($DIR_LIBS . 'MEDIA.php');      // media classes\r
-\r
-sendContentType('application/xhtml+xml', 'media');\r
-\r
-// user needs to be logged in to use this\r
-if (!$member->isLoggedIn()) {\r
-       media_loginAndPassThrough();\r
-       exit;\r
-}\r
-\r
-// check if member is on at least one teamlist\r
-$query = 'SELECT * FROM ' . sql_table('team'). ' WHERE tmember=' . $member->getID();\r
-$teams = mysql_query($query);\r
-if (mysql_num_rows($teams) == 0)\r
-       media_doError(_ERROR_DISALLOWEDUPLOAD);\r
-\r
-// get action\r
-$action = requestVar('action');\r
-if ($action == '')\r
-       $action = 'selectmedia';\r
-\r
-// check ticket\r
-$aActionsNotToCheck = array('selectmedia', _MEDIA_FILTER_APPLY, _MEDIA_COLLECTION_SELECT);\r
-if (!in_array($action, $aActionsNotToCheck))\r
-{\r
-       if (!$manager->checkTicket())\r
-               media_doError(_ERROR_BADTICKET);\r
-}\r
-\r
-\r
-switch($action) {\r
-       case 'chooseupload':\r
-       case _MEDIA_UPLOAD_TO:\r
-       case _MEDIA_UPLOAD_NEW:\r
-               if (!$member->isAdmin() and $CONF['AllowUpload'] != true) {\r
-                       media_doError(_ERROR_DISALLOWED);\r
-               } else {\r
-                       media_choose();\r
-               }\r
-               break;\r
-       case 'uploadfile':\r
-               if (!$member->isAdmin() and $CONF['AllowUpload'] != true) {\r
-                       media_doError(_ERROR_DISALLOWED);\r
-               } else {\r
-                       media_upload();\r
-               }\r
-               break;\r
-       case _MEDIA_FILTER_APPLY:\r
-       case 'selectmedia':\r
-       case _MEDIA_COLLECTION_SELECT:\r
-       default:\r
-               media_select();\r
-               break;\r
-}\r
-\r
-// select a file\r
-function media_select() {\r
-       global $member, $CONF, $DIR_MEDIA, $manager;\r
-\r
-       // show 10 files + navigation buttons\r
-       // show msg when no files\r
-       // show upload form\r
-       // files sorted according to last modification date\r
-\r
-       // currently selected collection\r
-       $currentCollection = requestVar('collection');\r
-       if (!$currentCollection || !@is_dir($DIR_MEDIA . $currentCollection))\r
-               $currentCollection = $member->getID();\r
-\r
-       // avoid directory travarsal and accessing invalid directory\r
-       if (!MEDIA::isValidCollection($currentCollection)) media_doError(_ERROR_DISALLOWED);\r
-\r
-       media_head();\r
-\r
-       // get collection list\r
-       $collections = MEDIA::getCollectionList();\r
-\r
-       if (sizeof($collections) > 1) {\r
-       ?>\r
-               <form method="post" action="media.php"><div>\r
-                       <label for="media_collection"><?php echo htmlspecialchars(_MEDIA_COLLECTION_LABEL)?></label>\r
-                       <select name="collection" id="media_collection">\r
-                               <?php                                   foreach ($collections as $dirname => $description) {\r
-                                               echo '<option value="',htmlspecialchars($dirname),'"';\r
-                                               if ($dirname == $currentCollection) {\r
-                                                       echo ' selected="selected"';\r
-                                               }\r
-                                               echo '>',htmlspecialchars($description),'</option>';\r
-                                       }\r
-                               ?>\r
-                       </select>\r
-                       <input type="submit" name="action" value="<?php echo htmlspecialchars(_MEDIA_COLLECTION_SELECT) ?>" title="<?php echo htmlspecialchars(_MEDIA_COLLECTION_TT)?>" />\r
-                       <input type="submit" name="action" value="<?php echo htmlspecialchars(_MEDIA_UPLOAD_TO) ?>" title="<?php echo htmlspecialchars(_MEDIA_UPLOADLINK) ?>" />\r
-                       <?php $manager->addTicketHidden() ?>\r
-               </div></form>\r
-       <?php   } else {\r
-       ?>\r
-               <form method="post" action="media.php" style="float:right"><div>\r
-                       <input type="hidden" name="collection" value="<?php echo htmlspecialchars($currentCollection)?>" />\r
-                       <input type="submit" name="action" value="<?php echo htmlspecialchars(_MEDIA_UPLOAD_NEW) ?>" title="<?php echo htmlspecialchars(_MEDIA_UPLOADLINK) ?>" />\r
-                       <?php $manager->addTicketHidden() ?>\r
-               </div></form>\r
-       <?php   } // if sizeof\r
-\r
-       $filter = requestVar('filter');\r
-       $offset = intRequestVar('offset');\r
-       $arr = MEDIA::getMediaListByCollection($currentCollection, $filter);\r
-\r
-       ?>\r
-               <form method="post" action="media.php"><div>\r
-                       <label for="media_filter"><?php echo htmlspecialchars(_MEDIA_FILTER_LABEL)?></label>\r
-                       <input id="media_filter" type="text" name="filter" value="<?php echo htmlspecialchars($filter)?>" />\r
-                       <input type="submit" name="action" value="<?php echo htmlspecialchars(_MEDIA_FILTER_APPLY) ?>" />\r
-                       <input type="hidden" name="collection" value="<?php echo htmlspecialchars($currentCollection)?>" />\r
-                       <input type="hidden" name="offset" value="<?php echo intval($offset)?>" />\r
-               </div></form>\r
-\r
-       <?php\r
-\r
-       ?>\r
-               <table width="100%">\r
-               <caption><?php echo _MEDIA_COLLECTION_LABEL . htmlspecialchars($collections[$currentCollection])?></caption>\r
-               <tr>\r
-                <th><?php echo _MEDIA_MODIFIED?></th><th><?php echo _MEDIA_FILENAME?></th><th><?php echo _MEDIA_DIMENSIONS?></th>\r
-               </tr>\r
-\r
-       <?php\r
-\r
-       if (sizeof($arr)>0) {\r
-\r
-               if (($offset + $CONF['MediaPerPage']) >= sizeof($arr))\r
-                       $offset = sizeof($arr) - $CONF['MediaPerPage'];\r
-\r
-               if ($offset < 0) $offset = 0;\r
-\r
-               $idxStart = $offset;\r
-               $idxEnd = $offset + $CONF['MediaPerPage'];\r
-               $idxNext = $idxEnd;\r
-               $idxPrev = $idxStart - $CONF['MediaPerPage'];\r
-\r
-               if ($idxPrev < 0) $idxPrev = 0;\r
-\r
-               if ($idxEnd > sizeof($arr))\r
-                       $idxEnd = sizeof($arr);\r
-\r
-               for($i=$idxStart;$i<$idxEnd;$i++) {\r
-                       $obj = $arr[$i];\r
-                       $filename = $DIR_MEDIA . $currentCollection . '/' . $obj->filename;\r
-\r
-                       $old_level = error_reporting(0);\r
-                       $size = @GetImageSize($filename);\r
-                       error_reporting($old_level);\r
-                       $width = $size[0];\r
-                       $height = $size[1];\r
-                       $filetype = $size[2];\r
-\r
-                       echo "<tr>";\r
-                       echo "<td>". date("Y-m-d",$obj->timestamp) ."</td>";\r
-\r
-                       // strings for javascript\r
-                       $jsCurrentCollection = str_replace("'","\\'",$currentCollection);\r
-                       $jsFileName = str_replace("'","\\'",$obj->filename);\r
-\r
-                       if ($filetype != 0) {\r
-                               // image (gif/jpg/png/swf)\r
-                               echo "<td><a href=\"media.php\" onclick=\"chooseImage('", htmlspecialchars($jsCurrentCollection), "','", htmlspecialchars($jsFileName), "',"\r
-                                                          . "'", htmlspecialchars($width), "','" , htmlspecialchars($height), "'"\r
-                                                          . ")\" title=\"" . htmlspecialchars($obj->filename). "\">"\r
-                                                          . htmlspecialchars(shorten($obj->filename,25,'...'))\r
-                                                          ."</a>";\r
-                               echo ' (<a href="', htmlspecialchars($CONF['MediaURL'] . $currentCollection . '/' . $obj->filename), '" onclick="window.open(this.href); return false;" title="',htmlspecialchars(_MEDIA_VIEW_TT),'">',_MEDIA_VIEW,'</a>)';\r
-                               echo "</td>";\r
-                       } else {\r
-                               // no image (e.g. mpg)\r
-                               echo "<td><a href='media.php' onclick=\"chooseOther('" , htmlspecialchars($jsCurrentCollection), "','", htmlspecialchars($jsFileName), "'"\r
-                                                          . ")\" title=\"" . htmlspecialchars($obj->filename). "\">"\r
-                                                          . htmlspecialchars(shorten($obj->filename,30,'...'))\r
-                                                          ."</a></td>";\r
-\r
-                       }\r
-                       echo '<td>' , htmlspecialchars($width) , 'x' , htmlspecialchars($height) , '</td>';\r
-                       echo '</tr>';\r
-               }\r
-       } // if (sizeof($arr)>0)\r
-       ?>\r
-\r
-               </table>\r
-       <?php\r
-       if ($idxStart > 0)\r
-               echo "<a href='media.php?offset=$idxPrev&amp;collection=".urlencode($currentCollection)."'>". _LISTS_PREV."</a> ";\r
-       if ($idxEnd < sizeof($arr))\r
-               echo "<a href='media.php?offset=$idxNext&amp;collection=".urlencode($currentCollection)."'>". _LISTS_NEXT."</a> ";\r
-\r
-       ?>\r
-               <input id="typeradio0" type="radio" name="typeradio" onclick="setType(0);" checked="checked" /><label for="typeradio0"><?php echo _MEDIA_INLINE?></label>\r
-               <input id="typeradio1" type="radio" name="typeradio" onclick="setType(1);" /><label for="typeradio1"><?php echo _MEDIA_POPUP?></label>\r
-       <?php\r
-       media_foot();\r
-\r
-\r
-}\r
-\r
-/**\r
-  * Shows a screen where you can select the file to upload\r
-  */\r
-function media_choose() {\r
-       global $CONF, $member, $manager;\r
-\r
-       $currentCollection = requestVar('collection');\r
-\r
-       $collections = MEDIA::getCollectionList();\r
-\r
-       media_head();\r
-       ?>\r
-       <h1><?php echo _UPLOAD_TITLE?></h1>\r
-\r
-       <p><?php echo _UPLOAD_MSG?></p>\r
-\r
-       <form method="post" enctype="multipart/form-data" action="media.php">\r
-       <div>\r
-         <input type="hidden" name="action" value="uploadfile" />\r
-         <?php $manager->addTicketHidden() ?>\r
-         <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $CONF['MaxUploadSize']?>" />\r
-         File:\r
-         <br />\r
-         <input name="uploadfile" type="file" size="40" />\r
-       <?php           if (sizeof($collections) > 1) {\r
-       ?>\r
-               <br /><br /><label for="upload_collection">Collection:</label>\r
-               <br /><select name="collection" id="upload_collection">\r
-                       <?php                           foreach ($collections as $dirname => $description) {\r
-                                       echo '<option value="',htmlspecialchars($dirname),'"';\r
-                                       if ($dirname == $currentCollection) {\r
-                                               echo ' selected="selected"';\r
-                                       }\r
-                                       echo '>',htmlspecialchars($description),'</option>';\r
-                               }\r
-                       ?>\r
-               </select>\r
-       <?php           } else {\r
-       ?>\r
-               <input name="collection" type="hidden" value="<?php echo htmlspecialchars(requestVar('collection'))?>" />\r
-       <?php           } // if sizeof\r
-       ?>\r
-         <br /><br />\r
-         <input type="submit" value="<?php echo _UPLOAD_BUTTON?>" />\r
-       </div>\r
-       </form>\r
-\r
-       <?php\r
-       media_foot();\r
-}\r
-\r
-\r
-/**\r
-  * accepts a file for upload\r
-  */\r
-function media_upload() {\r
-       global $DIR_MEDIA, $member, $CONF;\r
-\r
-       $uploadInfo = postFileInfo('uploadfile');\r
-\r
-       $filename = $uploadInfo['name'];\r
-       $filetype = $uploadInfo['type'];\r
-       $filesize = $uploadInfo['size'];\r
-       $filetempname = $uploadInfo['tmp_name'];\r
-       $fileerror = intval($uploadInfo['error']);\r
-\r
-       switch ($fileerror)\r
-       {\r
-               case 0: // = UPLOAD_ERR_OK\r
-                       break;\r
-               case 1: // = UPLOAD_ERR_INI_SIZE\r
-               case 2: // = UPLOAD_ERR_FORM_SIZE\r
-                       media_doError(_ERROR_FILE_TOO_BIG);\r
-               case 3: // = UPLOAD_ERR_PARTIAL\r
-               case 4: // = UPLOAD_ERR_NO_FILE\r
-               case 6: // = UPLOAD_ERR_NO_TMP_DIR\r
-               case 7: // = UPLOAD_ERR_CANT_WRITE\r
-               default:\r
-                       // include error code for debugging\r
-                       // (see http://www.php.net/manual/en/features.file-upload.errors.php)\r
-                       media_doError(_ERROR_BADREQUEST . ' (' . $fileerror . ')');\r
-       }\r
-\r
-       if ($filesize > $CONF['MaxUploadSize'])\r
-               media_doError(_ERROR_FILE_TOO_BIG);\r
-\r
-       // check file type against allowed types\r
-       $ok = 0;\r
-       $allowedtypes = explode (',', $CONF['AllowedTypes']);\r
-       foreach ( $allowedtypes as $type )\r
-               if (eregi("\." .$type. "$",$filename)) $ok = 1;\r
-       if (!$ok) media_doError(_ERROR_BADFILETYPE);\r
-\r
-       if (!is_uploaded_file($filetempname))\r
-               media_doError(_ERROR_BADREQUEST);\r
-\r
-       // prefix filename with current date (YYYY-MM-DD-)\r
-       // this to avoid nameclashes\r
-       if ($CONF['MediaPrefix'])\r
-               $filename = strftime("%Y%m%d-", time()) . $filename;\r
-\r
-       $collection = requestVar('collection');\r
-       $res = MEDIA::addMediaObject($collection, $filetempname, $filename);\r
-\r
-       if ($res != '')\r
-               media_doError($res);\r
-\r
-       // shows updated list afterwards\r
-       media_select();\r
-}\r
-\r
-function media_loginAndPassThrough() {\r
-       media_head();\r
-       ?>\r
-               <h1><?php echo _LOGIN_PLEASE?></h1>\r
-\r
-               <form method="post" action="media.php">\r
-               <div>\r
-                       <input name="action" value="login" type="hidden" />\r
-                       <input name="collection" value="<?php echo htmlspecialchars(requestVar('collection'))?>" type="hidden" />\r
-                       <?php echo _LOGINFORM_NAME?>: <input name="login" />\r
-                       <br /><?php echo _LOGINFORM_PWD?>: <input name="password" type="password" />\r
-                       <br /><input type="submit" value="<?php echo _LOGIN?>" />\r
-               </div>\r
-               </form>\r
-               <p><a href="media.php" onclick="window.close();"><?php echo _POPUP_CLOSE?></a></p>\r
-       <?php   media_foot();\r
-       exit;\r
-}\r
-\r
-function media_doError($msg) {\r
-       media_head();\r
-       ?>\r
-       <h1><?php echo _ERROR?></h1>\r
-       <p><?php echo $msg?></p>\r
-       <p><a href="media.php" onclick="history.back()"><?php echo _BACK?></a></p>\r
-       <?php   media_foot();\r
-       exit;\r
-}\r
-\r
-\r
-function media_head() {\r
-?>\r
-       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-       <html <?php echo _HTML_XML_NAME_SPACE_AND_LANG_CODE; ?>>\r
-       <head>\r
-               <meta http-equiv="Content-Type" content="text/html; charset=<?php echo _CHARSET ?>" />\r
-               <title>Nucleus Media</title>\r
-               <link rel="stylesheet" type="text/css" href="styles/popups.css" />\r
-               <script type="text/javascript">\r
-                       var type = 0;\r
-                       function setType(val) { type = val; }\r
-\r
-                       function chooseImage(collection, filename, width, height) {\r
-                               window.opener.focus();\r
-                               window.opener.includeImage(collection,\r
-                                                                                  filename,\r
-                                                                                  type == 0 ? 'inline' : 'popup',\r
-                                                                                  width,\r
-                                                                                  height\r
-                                                                                  );\r
-                               window.close();\r
-                       }\r
-\r
-                       function chooseOther(collection, filename) {\r
-                               window.opener.focus();\r
-                               window.opener.includeOtherMedia(collection, filename);\r
-                               window.close();\r
-\r
-                       }\r
-               </script>\r
-       </head>\r
-       <body>\r
-<?php }\r
-\r
-function media_foot() {\r
-?>\r
-       </body>\r
-       </html>\r
-<?php }\r
-\r
-?>\r
+$CONF = array();
+
+// defines how much media items will be shown per page. You can override this
+// in config.php if you like. (changing it in config.php instead of here will
+// allow your settings to be kept even after a Nucleus upgrade)
+$CONF['MediaPerPage'] = 10;
+
+// include all classes and config data
+require('../config.php');
+include($DIR_LIBS . 'MEDIA.php');      // media classes
+
+sendContentType('application/xhtml+xml', 'media');
+
+// user needs to be logged in to use this
+if (!$member->isLoggedIn()) {
+       media_loginAndPassThrough();
+       exit;
+}
+
+// check if member is on at least one teamlist
+$query = 'SELECT * FROM ' . sql_table('team'). ' WHERE tmember=' . $member->getID();
+$teams = mysql_query($query);
+if (mysql_num_rows($teams) == 0)
+       media_doError(_ERROR_DISALLOWEDUPLOAD);
+
+// get action
+$action = requestVar('action');
+if ($action == '')
+       $action = 'selectmedia';
+
+// check ticket
+$aActionsNotToCheck = array('selectmedia', _MEDIA_FILTER_APPLY, _MEDIA_COLLECTION_SELECT);
+if (!in_array($action, $aActionsNotToCheck))
+{
+       if (!$manager->checkTicket())
+               media_doError(_ERROR_BADTICKET);
+}
+
+
+switch($action) {
+       case 'chooseupload':
+       case _MEDIA_UPLOAD_TO:
+       case _MEDIA_UPLOAD_NEW:
+               if (!$member->isAdmin() and $CONF['AllowUpload'] != true) {
+                       media_doError(_ERROR_DISALLOWED);
+               } else {
+                       media_choose();
+               }
+               break;
+       case 'uploadfile':
+               if (!$member->isAdmin() and $CONF['AllowUpload'] != true) {
+                       media_doError(_ERROR_DISALLOWED);
+               } else {
+                       media_upload();
+               }
+               break;
+       case _MEDIA_FILTER_APPLY:
+       case 'selectmedia':
+       case _MEDIA_COLLECTION_SELECT:
+       default:
+               media_select();
+               break;
+}
+
+// select a file
+function media_select() {
+       global $member, $CONF, $DIR_MEDIA, $manager;
+
+       // show 10 files + navigation buttons
+       // show msg when no files
+       // show upload form
+       // files sorted according to last modification date
+
+       // currently selected collection
+       $currentCollection = requestVar('collection');
+       if (!$currentCollection || !@is_dir($DIR_MEDIA . $currentCollection))
+               $currentCollection = $member->getID();
+
+       // avoid directory travarsal and accessing invalid directory
+       if (!MEDIA::isValidCollection($currentCollection)) media_doError(_ERROR_DISALLOWED);
+
+       media_head();
+
+       // get collection list
+       $collections = MEDIA::getCollectionList();
+
+       if (sizeof($collections) > 1) {
+       ?>
+               <form method="post" action="media.php"><div>
+                       <label for="media_collection"><?php echo htmlspecialchars(_MEDIA_COLLECTION_LABEL)?></label>
+                       <select name="collection" id="media_collection">
+                               <?php                                   foreach ($collections as $dirname => $description) {
+                                               echo '<option value="',htmlspecialchars($dirname),'"';
+                                               if ($dirname == $currentCollection) {
+                                                       echo ' selected="selected"';
+                                               }
+                                               echo '>',htmlspecialchars($description),'</option>';
+                                       }
+                               ?>
+                       </select>
+                       <input type="submit" name="action" value="<?php echo htmlspecialchars(_MEDIA_COLLECTION_SELECT) ?>" title="<?php echo htmlspecialchars(_MEDIA_COLLECTION_TT)?>" />
+                       <input type="submit" name="action" value="<?php echo htmlspecialchars(_MEDIA_UPLOAD_TO) ?>" title="<?php echo htmlspecialchars(_MEDIA_UPLOADLINK) ?>" />
+                       <?php $manager->addTicketHidden() ?>
+               </div></form>
+       <?php   } else {
+       ?>
+               <form method="post" action="media.php" style="float:right"><div>
+                       <input type="hidden" name="collection" value="<?php echo htmlspecialchars($currentCollection)?>" />
+                       <input type="submit" name="action" value="<?php echo htmlspecialchars(_MEDIA_UPLOAD_NEW) ?>" title="<?php echo htmlspecialchars(_MEDIA_UPLOADLINK) ?>" />
+                       <?php $manager->addTicketHidden() ?>
+               </div></form>
+       <?php   } // if sizeof
+
+       $filter = requestVar('filter');
+       $offset = intRequestVar('offset');
+       $arr = MEDIA::getMediaListByCollection($currentCollection, $filter);
+
+       ?>
+               <form method="post" action="media.php"><div>
+                       <label for="media_filter"><?php echo htmlspecialchars(_MEDIA_FILTER_LABEL)?></label>
+                       <input id="media_filter" type="text" name="filter" value="<?php echo htmlspecialchars($filter)?>" />
+                       <input type="submit" name="action" value="<?php echo htmlspecialchars(_MEDIA_FILTER_APPLY) ?>" />
+                       <input type="hidden" name="collection" value="<?php echo htmlspecialchars($currentCollection)?>" />
+                       <input type="hidden" name="offset" value="<?php echo intval($offset)?>" />
+               </div></form>
+
+       <?php
+
+       ?>
+               <table width="100%">
+               <caption><?php echo _MEDIA_COLLECTION_LABEL . htmlspecialchars($collections[$currentCollection])?></caption>
+               <tr>
+                <th><?php echo _MEDIA_MODIFIED?></th><th><?php echo _MEDIA_FILENAME?></th><th><?php echo _MEDIA_DIMENSIONS?></th>
+               </tr>
+
+       <?php
+
+       if (sizeof($arr)>0) {
+
+               if (($offset + $CONF['MediaPerPage']) >= sizeof($arr))
+                       $offset = sizeof($arr) - $CONF['MediaPerPage'];
+
+               if ($offset < 0) $offset = 0;
+
+               $idxStart = $offset;
+               $idxEnd = $offset + $CONF['MediaPerPage'];
+               $idxNext = $idxEnd;
+               $idxPrev = $idxStart - $CONF['MediaPerPage'];
+
+               if ($idxPrev < 0) $idxPrev = 0;
+
+               if ($idxEnd > sizeof($arr))
+                       $idxEnd = sizeof($arr);
+
+               for($i=$idxStart;$i<$idxEnd;$i++) {
+                       $obj = $arr[$i];
+                       $filename = $DIR_MEDIA . $currentCollection . '/' . $obj->filename;
+
+                       $old_level = error_reporting(0);
+                       $size = @GetImageSize($filename);
+                       error_reporting($old_level);
+                       $width = $size[0];
+                       $height = $size[1];
+                       $filetype = $size[2];
+
+                       echo "<tr>";
+                       echo "<td>". date("Y-m-d",$obj->timestamp) ."</td>";
+
+                       // strings for javascript
+                       $jsCurrentCollection = str_replace("'","\\'",$currentCollection);
+                       $jsFileName = str_replace("'","\\'",$obj->filename);
+
+                       if ($filetype != 0) {
+                               // image (gif/jpg/png/swf)
+                               echo "<td><a href=\"media.php\" onclick=\"chooseImage('", htmlspecialchars($jsCurrentCollection), "','", htmlspecialchars($jsFileName), "',"
+                                                          . "'", htmlspecialchars($width), "','" , htmlspecialchars($height), "'"
+                                                          . ")\" title=\"" . htmlspecialchars($obj->filename). "\">"
+                                                          . htmlspecialchars(shorten($obj->filename,25,'...'))
+                                                          ."</a>";
+                               echo ' (<a href="', htmlspecialchars($CONF['MediaURL'] . $currentCollection . '/' . $obj->filename), '" onclick="window.open(this.href); return false;" title="',htmlspecialchars(_MEDIA_VIEW_TT),'">',_MEDIA_VIEW,'</a>)';
+                               echo "</td>";
+                       } else {
+                               // no image (e.g. mpg)
+                               echo "<td><a href='media.php' onclick=\"chooseOther('" , htmlspecialchars($jsCurrentCollection), "','", htmlspecialchars($jsFileName), "'"
+                                                          . ")\" title=\"" . htmlspecialchars($obj->filename). "\">"
+                                                          . htmlspecialchars(shorten($obj->filename,30,'...'))
+                                                          ."</a></td>";
+
+                       }
+                       echo '<td>' , htmlspecialchars($width) , 'x' , htmlspecialchars($height) , '</td>';
+                       echo '</tr>';
+               }
+       } // if (sizeof($arr)>0)
+       ?>
+
+               </table>
+       <?php
+       if ($idxStart > 0)
+               echo "<a href='media.php?offset=$idxPrev&amp;collection=".urlencode($currentCollection)."'>". _LISTS_PREV."</a> ";
+       if ($idxEnd < sizeof($arr))
+               echo "<a href='media.php?offset=$idxNext&amp;collection=".urlencode($currentCollection)."'>". _LISTS_NEXT."</a> ";
+
+       ?>
+               <input id="typeradio0" type="radio" name="typeradio" onclick="setType(0);" checked="checked" /><label for="typeradio0"><?php echo _MEDIA_INLINE?></label>
+               <input id="typeradio1" type="radio" name="typeradio" onclick="setType(1);" /><label for="typeradio1"><?php echo _MEDIA_POPUP?></label>
+       <?php
+       media_foot();
+
+
+}
+
+/**
+  * Shows a screen where you can select the file to upload
+  */
+function media_choose() {
+       global $CONF, $member, $manager;
+
+       $currentCollection = requestVar('collection');
+
+       $collections = MEDIA::getCollectionList();
+
+       media_head();
+       ?>
+       <h1><?php echo _UPLOAD_TITLE?></h1>
+
+       <p><?php echo _UPLOAD_MSG?></p>
+
+       <form method="post" enctype="multipart/form-data" action="media.php">
+       <div>
+         <input type="hidden" name="action" value="uploadfile" />
+         <?php $manager->addTicketHidden() ?>
+         <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $CONF['MaxUploadSize']?>" />
+         File:
+         <br />
+         <input name="uploadfile" type="file" size="40" />
+       <?php           if (sizeof($collections) > 1) {
+       ?>
+               <br /><br /><label for="upload_collection">Collection:</label>
+               <br /><select name="collection" id="upload_collection">
+                       <?php                           foreach ($collections as $dirname => $description) {
+                                       echo '<option value="',htmlspecialchars($dirname),'"';
+                                       if ($dirname == $currentCollection) {
+                                               echo ' selected="selected"';
+                                       }
+                                       echo '>',htmlspecialchars($description),'</option>';
+                               }
+                       ?>
+               </select>
+       <?php           } else {
+       ?>
+               <input name="collection" type="hidden" value="<?php echo htmlspecialchars(requestVar('collection'))?>" />
+       <?php           } // if sizeof
+       ?>
+         <br /><br />
+         <input type="submit" value="<?php echo _UPLOAD_BUTTON?>" />
+       </div>
+       </form>
+
+       <?php
+       media_foot();
+}
+
+
+/**
+  * accepts a file for upload
+  */
+function media_upload() {
+       global $DIR_MEDIA, $member, $CONF;
+
+       $uploadInfo = postFileInfo('uploadfile');
+
+       $filename = $uploadInfo['name'];
+       $filetype = $uploadInfo['type'];
+       $filesize = $uploadInfo['size'];
+       $filetempname = $uploadInfo['tmp_name'];
+       $fileerror = intval($uploadInfo['error']);
+
+       switch ($fileerror)
+       {
+               case 0: // = UPLOAD_ERR_OK
+                       break;
+               case 1: // = UPLOAD_ERR_INI_SIZE
+               case 2: // = UPLOAD_ERR_FORM_SIZE
+                       media_doError(_ERROR_FILE_TOO_BIG);
+               case 3: // = UPLOAD_ERR_PARTIAL
+               case 4: // = UPLOAD_ERR_NO_FILE
+               case 6: // = UPLOAD_ERR_NO_TMP_DIR
+               case 7: // = UPLOAD_ERR_CANT_WRITE
+               default:
+                       // include error code for debugging
+                       // (see http://www.php.net/manual/en/features.file-upload.errors.php)
+                       media_doError(_ERROR_BADREQUEST . ' (' . $fileerror . ')');
+       }
+
+       if ($filesize > $CONF['MaxUploadSize'])
+               media_doError(_ERROR_FILE_TOO_BIG);
+
+       // check file type against allowed types
+       $ok = 0;
+       $allowedtypes = explode (',', $CONF['AllowedTypes']);
+       foreach ( $allowedtypes as $type )
+               if (eregi("\." .$type. "$",$filename)) $ok = 1;
+       if (!$ok) media_doError(_ERROR_BADFILETYPE);
+
+       if (!is_uploaded_file($filetempname))
+               media_doError(_ERROR_BADREQUEST);
+
+       // prefix filename with current date (YYYY-MM-DD-)
+       // this to avoid nameclashes
+       if ($CONF['MediaPrefix'])
+               $filename = strftime("%Y%m%d-", time()) . $filename;
+
+       $collection = requestVar('collection');
+       $res = MEDIA::addMediaObject($collection, $filetempname, $filename);
+
+       if ($res != '')
+               media_doError($res);
+
+       // shows updated list afterwards
+       media_select();
+}
+
+function media_loginAndPassThrough() {
+       media_head();
+       ?>
+               <h1><?php echo _LOGIN_PLEASE?></h1>
+
+               <form method="post" action="media.php">
+               <div>
+                       <input name="action" value="login" type="hidden" />
+                       <input name="collection" value="<?php echo htmlspecialchars(requestVar('collection'))?>" type="hidden" />
+                       <?php echo _LOGINFORM_NAME?> <input name="login" />
+                       <br /><?php echo _LOGINFORM_PWD?> <input name="password" type="password" />
+                       <br /><input type="submit" value="<?php echo _LOGIN?>" />
+               </div>
+               </form>
+               <p><a href="media.php" onclick="window.close();"><?php echo _POPUP_CLOSE?></a></p>
+       <?php   media_foot();
+       exit;
+}
+
+function media_doError($msg) {
+       media_head();
+       ?>
+       <h1><?php echo _ERROR?></h1>
+       <p><?php echo $msg?></p>
+       <p><a href="media.php" onclick="history.back()"><?php echo _BACK?></a></p>
+       <?php   media_foot();
+       exit;
+}
+
+
+function media_head() {
+?>
+       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+       <html <?php echo _HTML_XML_NAME_SPACE_AND_LANG_CODE; ?>>
+       <head>
+               <meta http-equiv="Content-Type" content="text/html; charset=<?php echo _CHARSET ?>" />
+               <title>Nucleus Media</title>
+               <link rel="stylesheet" type="text/css" href="styles/popups.css" />
+               <script type="text/javascript">
+                       var type = 0;
+                       function setType(val) { type = val; }
+
+                       function chooseImage(collection, filename, width, height) {
+                               window.opener.focus();
+                               window.opener.includeImage(collection,
+                                                                                  filename,
+                                                                                  type == 0 ? 'inline' : 'popup',
+                                                                                  width,
+                                                                                  height
+                                                                                  );
+                               window.close();
+                       }
+
+                       function chooseOther(collection, filename) {
+                               window.opener.focus();
+                               window.opener.includeOtherMedia(collection, filename);
+                               window.close();
+
+                       }
+               </script>
+       </head>
+       <body>
+<?php }
+
+function media_foot() {
+?>
+       </body>
+       </html>
+<?php }
+
+?>
index 9cc20f1..f5f74da 100644 (file)
 <meta name="name" content="<%blogsetting(name)%>" />
 <meta name="description" content="<%blogsetting(desc)%>" />
 
-<!-- prevent caching (å\8a¹æ\9e\9cã\81«ã\81¤ã\81\84ã\81¦ã\81¯ä¸\8dæ\98\8eã\80\82å\89\8aé\99¤ã\81\97ã\81¦ã\82\82ã\81\8bã\81¾ã\81\84ã\81¾ã\81\9bã\82\93) -->
+<!-- prevent caching (削除してもかまいません) -->
 <meta http-equiv="Pragma" content="no-cache" />
 <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
 <meta http-equiv="Expires" content="-1" />
index 52264b9..f07a9d4 100755 (executable)
@@ -45,6 +45,7 @@ if (!$CONF['DisableSite']) {
                header('HTTP/1.0 304 Not Modified');
                header('Content-Length: 0');
        } else {
+               if (strtolower(_CHARSET) != 'utf-8') {$feed = mb_convert_encoding($feed, "UTF-8", _CHARSET);}
                header("Content-Type: application/xml");
                // dump feed
                echo $feed;