Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2016-12-29 10:13:32

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

v3.8日本語版RC1です

お待たせしました、v3.8日本語版RC1です。

  • [重要,新規] グローバル変数 $DB_DRIVER_NAME, $DB_PHP_MODULE_NAME が追加されました。

  • [重要,新機能] pluginのsupportsFeatureに NotUseDbApi が追加されました。クエリを発行しないプラグインは、NotUseDbApiでTrueを返してください。

  • [重要,新機能] pluginのsupportsFeatureに 'SqlApi_SQL92' , 'SqlApi_ドライバ名' が追加されました。

  • [新機能] PluginOneFolder機能が追加されました。(NP_プラグイン名.phpをショートネームフォルダに入れることができます。つまり、プラグイン本体と関連ファイルをひとつのフォルダにまとめることができます。)

  • [重要,変更] 次のバンドルpluginの場所が変更されました。(NP_SecurityEnforcer, NP_Text)
    古いファイルは削除してください

        plugins/NP_SecurityEnforcer.php
        plugins/securityenforcer/*
        plugins/NP_Text.php

  • [新機能] インストーラー:SQLiteインストールが追加されました。(実験的)
    mysqlからデータを移行したい場合は、/_upgrades/conv-sqlite/にアクセスしてください。変換は一方通行です。現時点において、sqliteのデータをmysqlに戻す機能はありません。

  • [新機能] データベースの最適化/修復が追加されました。

  • [新機能] メンバーの停止(アカウントロック)が追加されました。
    有効にするとメンバーはログインやパスワード発行などの各種操作ができなくなります。

  • [変更] インストーラー:メールアドレスに ~@localhost が使用できるようになりました。
    Skinクラスに関数が追加されました(changeSkinByName, changeSkinById, getRootURL, getURL)

https://github.com/NucleusCMS/NucleusCM … v3.8dev-ja
その他、詳細については上記コミットログを確認してください。細かい最適化が多数あるため、ChangeLogに書かれてあること以上の変更があります。
nc38-rc1.zipが新規インストール用のフルパッケージ、nc38up-rc1.zipがアップグレード用のパッケージです。
新規インストールに関しては今までどおりですが、アップグレードに関しては、転送するフォルダがひとつ増えました。
今まではnucleusフォルダの中に入っていたupgradesフォルダを、nucleusフォルダと同じ階層に置くことになりました。

今回よりSQLite運用が可能となりますが、SQLiteはMySQLとは値のエスケープの方法が違うため、ノウハウがある程度安定するまでは注意が必要と考えています。そのへんは今後v3.9にかけて解決したいと思います。

特に問題なければ、明日リリースしたいと思います。

オフライン

#2 2016-12-30 22:17:17

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

RC2です。v3.8よりプラグインディレクトリを分かりやすく配置できるようになったのですが、既存のプラグインディレクトリが残っている場合、新しいほうを優先してロードするようにしました。普通にv3.8にアップデートすると、もともと同梱されているNP_SkinFilesなどは新しいディレクトリに配置したものがロードされる、ということになります。既存の古いプラグインが別ディレクトリに残っている場合の処理の出し分けを行なうことを省いたのですが、プラグイン一覧画面を見ていただければ新しいものが読み込まれていることが分かると思います。
その他、インストーラやアップデータ画面のデザインを調整しました。

オフライン

#3 2016-12-30 22:40:57

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

先ほど試したところSQLiteへのコンバートがうまくいきませんでした。後ほど調べますが、リリースは正月明けになるかもしれません。

オフライン

#4 2016-12-31 09:36:01

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 101

Re: v3.8日本語版RC1です

うちでは、エラーがでないので
原因はわかりませんが、

対応できているプラグインも少ないですし
sqliteでのインストールを無効にしてリリースしてもいいと思います。

以下の3点で無効化できます
(1) install/index.php
の先頭で
define('ENABLE_SQLITE_INSTALL', 0);
に書き換えてもらうと
インストーラーで表示されないようになります
(2) 履歴ファイルの sqlite対応の文言とconv-sqliteへのパスを消します
(3) .gitattributes に
/_upgrades/conv-sqlite   export-ignore
を加えます

オフライン

#5 2017-01-10 22:00:39

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 101

Re: v3.8日本語版RC1です

$member->isBlogAdminがチームメンバーだと常にtrueを返す問題

影響を受けるバージョン: 過去すべての全バージョン

$queryに以下を追加する

 AND tadmin=1

これに関連して、管理権限を持たない場合のaction=itemlistでのカテゴリなどの個数表示が正しくないので修正が必要になります

編集者 ピヨピヨbird (2017-01-10 22:19:31)

オフライン

#6 2017-01-11 16:04:15

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

ちょっと気になりますが、次のv3.81で修正を検討しますね。遅くなりましたがv3.8リリースを準備します

オフライン

#7 2017-01-11 19:37:43

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 101

Re: v3.8日本語版RC1です

isBlogAdminの件で
さきほど気が付きましたが

$member->isBlogAdmin関数だけの修正にしてしまうと

ブログメンバーは全アイテム編集できていた
(管理権限は与えたくないがブログの全アイテム編集可能という使い方をしていた)

管理権限がない場合は、自分の投稿だけ編集できる

に変わります。

初期からの不具合ですので、安易に変更すると
一定の割合で
企業などのユーザーから苦情がくると思われます

どのような形態がいいかはよくわかりませんが
ブログオプションまたはブログチームメンバー設定に
他のチームメンバーの投稿を編集・削除を可能にする
のようなものを用意してあげてから修正したほうが親切だと思います

編集者 ピヨピヨbird (2017-01-14 16:51:00)

オフライン

#8 2017-01-11 19:41:27

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 101

Re: v3.8日本語版RC1です

yama さんの発言:

ちょっと気になりますが、次のv3.81で修正を検討しますね。遅くなりましたがv3.8リリースを準備します

よろしくお願いします

オフライン

#9 2017-01-18 20:12:09

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

すいませんが、もう少しリリース遅れます。いつもこんなに忙しくないんですが、仕事が少し落ち着いてからパッケージ切ります。

オフライン

#10 2017-01-28 10:30:20

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

_upgradesフォルダ内のconvert.phpを作り直しました。utf8mb4への変換も可能ですが、Nucleus本体がまだutf8mb4を扱えません。少し調整するだけで使えるので、後ほどv3.8devを修正します。


Attachments:
zip convert.zip, Size: 2.7 KiB, Downloads: 142

オフライン

#11 2017-01-30 10:26:23

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

https://github.com/NucleusCMS/NucleusCM … daa1c26a96
コレーション指定まわりの処理を整理しました。テーブルのコレーションがutf8mb4になっている場合は、言語ファイルがutf8指定になっていてもutf8mb4で接続します。

オフライン

#12 2017-02-28 08:51:35

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

utf8mb4対応が原因で新規インストールができなくなっていることが分かりました。utf8mb4が使える環境かどうかを調べるためにnucleus_configテーブルのコレーションを確認する処理があるのですが、新規インストール時点ではnucleus_configテーブルが存在しないためエラーになります。

あと、install/index.phpをもう少し整理したいと思います。メイン処理・関数定義・HTML表示を分離します。

オフライン

#13 2017-03-05 22:13:09

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

https://github.com/NucleusCMS/NucleusCM … a9e70d7315
インストーラの処理がちょっと分からないところがあったので、大幅に整理しました。
メイン処理・関数群・HTMLを分離。本家版は後日対応します。

オフライン

#14 2018-02-12 23:49:54

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

しばらく時間が空きましたが、今週のうちに大がかりなコード整理を行ないます。

オフライン

#15 2018-03-01 23:25:00

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

https://github.com/NucleusCMS/NucleusCM … 2418-L2440
parseQuery()という簡単なユーティリティ関数を追加しました。sprintf関数をもう少し分かりやすくしたような感じです。:escapeや:intなどのモディファイアを使えるようにしていますが、今のところ使う予定はありません。

https://github.com/NucleusCMS/NucleusCM … 70edd160f7
https://github.com/NucleusCMS/NucleusCM … d5bc4fa712
こんなふうに使います。複雑に見えるクエリ文の組み立てが分かりやすくなったので、今後の機能追加や不具合の修正などがやりやすくなると思います。整理して気になったこととしては、個人的には、今のNucleusは全体的にJOIN句を使えてないような印象を受けました。複数のテーブルからselectする場合でも、JOINを使わずに単純にテーブル名をコンマでつなげて並列で書いているだけだったりします。

短めのクエリ文ならこれでいいのですが、長いクエリ文のために、新しくselectQuery()・insertQuery()・updateQuery・deleteQuery()などのユーティリティ関数を追加し、複数のパラメータに整理して、長大なクエリ文を安全に組み立てる方法も考えています。
将来的にはPDO方式への移行も検討していますので、その前段階のステップとしての整理にもなると思います。

オフライン

#16 2018-03-02 09:54:57

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

新しいAPIとして、まずupdateQuery()を実装しました。

https://github.com/NucleusCMS/NucleusCM … L968-L1005
これまでは上記のように単純に文字列を連結してSQL文を組み立てていました。変数・関数・制御文(ifなど)が混在するため見づらく、書く人による作法の違いも大きく、分かりにくくなりがちでした。

https://github.com/NucleusCMS/NucleusCM … #L952-L986
APIを用いることで、上記のようにすっきりとまとまります。

オフライン

#17 2018-03-02 10:05:46

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

https://github.com/NucleusCMS/NucleusCM … SEARCH.php
https://github.com/NucleusCMS/NucleusCM … RCH_JA.php
ちょっと悩んだのですが、日本語処理を統合したSEARCHクラスから、再び日本語処理を分離しました。ただし統合前の形に戻したわけではなく、日本語の場合はオブジェクト内のメソッドをいくつか上書きする形にしています。
SEARCHクラスは本体処理ではBLOGクラスから呼び出されるのみですが、BLOGクラスを通さずにSEARCHクラスを直接呼び出すプラグインもあると思うので、そのへんの対応をさらに考える必要があります。

オフライン

#18 2018-03-04 22:29:01

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

https://github.com/NucleusCMS/NucleusCM … ts/v3.8dev
searchクラスを大幅に修正しました。

http://web.archive.org/web/200702040501 … /18/15665/
searchクラスは2001年に作られた上記のコードが元になっていて、これはMySQL全文検索モードの match against構文でブーリアン修飾子検索を実装するものです。現在はMySQLサーバ自体がブーリアン修飾子検索モードを実装していますし、使い方もsearchクラスで実装している方法とは違っています。(searchクラスはキーワードごとにmatch against構文を生成して連結する)
そもそもブーリアン修飾子が機能していなかったので修正しました。
ブーリアンというのは、単語の先頭につける「-」や「+」の記号で、この記号をつけることで、特定の単語を含まない検索、必ず含む検索、などができるようになるものです。昔は「and」や「or」で指定できていたらしく、内部的にはブーリアン修飾子をandやorに置換する処理が実装されていました。

テストがちょっと大変な機能なので、興味がある人は使っていただけたらと思います。グローバル設定でenglish-utf8に変更する必要があります。

japanese-utf8だと日本版の検索機能にスイッチします。日本版では単語をスペースで区切るとGoogleと同じand検索になりますが、オリジナル版ではor検索になります。昔はそれが普通だったかもしれませんが、これも日本版に合わせることを考え中です。基本的には日本語環境と欧米言語環境の違いは、全文検索モードを利用できるかどうかだけの違いで(単語をスペースで区切る言語かどうかの違い)、昔のようにUTF-8文字列を扱うために特別な処理が必要ということもないので、整理をさらに進めることでまたコードを統合できると思います。

オフライン

#19 2018-03-06 09:01:53

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

https://github.com/NucleusCMS/NucleusCM … 9803e10826
さらに整理しました。japanese-utf8の場合とそれ以外の場合で修飾子の仕様を揃えて、スペースで区切った場合はand検索、「 | 」で区切った場合はor検索となるようにしています。

オフライン

#20 2018-03-09 09:51:39

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

ほぼ仕上がってきたと思います。遅くなってしまいましたが、細かい部分をもう少し調整して正式リリースします。いわゆる本家版ですが、日本語版からアップグレード可です。

その次のv3.9では、ADMIN.php内の53個の管理画面アクションを数個程度のコントローラに分かりやすく分類して、view(スキン)もそれになぞらえて分類して作成し、スキナブルアドミン化してからスマホ対応したいと考え中です。それ以前にshowUsingQuery関数の問題(生成したhtmlを結果として受け取ることができない)などもあるのでちょっと工数かかりそうですが、、


Attachments:
zip NucleusCMS-3.8dev.zip, Size: 1.03 MiB, Downloads: 519

オフライン

#21 2018-03-22 22:26:36

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 101

Re: v3.8日本語版RC1です

Nucleus 3.80開発版は PHP5.0.5からPHP7.2まで動作しますが

本家版、日本語版ともにNucleus 3.71は、PHP5.0,PHP5.1の場合に
文字化けして動作しない不具合を先ほど確認しましたのでマルチバイト環境でPHP5.0,PHP5.1で使っている人はいないのではないかと思います。

また、PHP5.2 cgi版には、?-s でソースコードが表示される致命的なセキュリティホールがあり、
PHP5.2は動作対象外にしたほうがいいと思います。

PHP5.3に引き上げることで クロージャ (ラムダ/無名関数)  や __DIR__ が使えるようになります。
v3.9からPHP5.3にしましょうという話を以前別スレッドでしましたが
v3.80からPHP5.3以上に引き上げてもいいのではないかと思います。

7.1.0 Anonymous functions may not close over superglobals, $this, or any variable with the same name as a parameter. 
5.4.0 無名関数で、静的に宣言したときのように $this を使えるようになりました。 
5.3.0 無名関数が使えるようになりました。

5.3だと 無名関数がらみで、$thisで問題を起こしそうな気もしますので
5.4にしたほうが無難な気もします

-------------------------------
最低動作を満たしていない場合は、動作不可にする場合は
この2点の変更でできます。
・ install/index.php
   '5.0.5'を '5.3.0' に 置き換える
・ nucleus/libs/globalfunctions.php
   ファイルの上方にある if (version_compare(phpversion(), '5.3.0', '<')) {
   のコメントを解除する

マニュアルだけ動作要件を変更して、あとは お好きにどうぞの場合は、
nucleus/documentation/ja/index.html
の動作要件の数字を変更するだけです。

編集者 ピヨピヨbird (2018-03-23 15:52:43)

オフライン

#22 2018-03-23 12:49:17

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 101

Re: v3.8日本語版RC1です

PHP5.6 と PHP7.0のPHP公式サポートが2018年12月で終了します。

[2018/3/23 の状況]

・Nucleus 3.71-ja 初期リリース (NucleusCMS-ja/v3.71-ja)
   PHP5: 5.0.5 - 5.6
      (PHP5.0, PHP5.1: mysqlサーバーの設定によっては文字化けあり)
   PHP7:
       不具合のため基本的にPHP7では動作不可能。
       7.0.0 - 7.0.2(windows [bd562ed0])
       7.0.0 - 7.0.8(other os [259cf294])

・ダウンロード: http://japan.nucleuscms.org/download.php
・Nucleus 3.71-ja-master (NucleusCMS-ja/master)
   PHP5: 5.0.5 - 5.6
   PHP7: 7.0.0 - 7.2

・Nucleus 3.80開発版
データベース mysql
   PHP5: 5.0.5 - 5.6
   PHP7: 7.0.0 - 7.2
データベース sqliteの場合
   PHP:7.1-7.2 : 実験的のため利用できるPHPを最新版に制限中(2018/03/22から適用)

・3.71-jaからmasterまでの差分パッケージ

git archive --format=zip --prefix=v3.71-ja-update/ master \
`git diff --diff-filter=d --name-only v3.71-ja master \
 | grep -vP  '^([^/]+|.+/(install|_?upgrades|extra|media|skins)/.+)$' \
` \
-o "NucleusCMS-3.71-ja-update-`git show --date=iso master \
      | grep Date | awk '{print $2}'`-`git rev-parse --short=6 master`.zip"
   

NucleusCMS-3.71-ja-update-2018-03-22-451380.zip のような名称で 生成されます。


http://japan.nucleuscms.org/forum/viewt … 349#p31349
にあるように あれ?となっている方がいますので
適当なところで、masterにsp1タグうつほうがいいかもです。

編集者 ピヨピヨbird (2018-03-23 13:15:59)

オフライン

#23 2018-03-23 13:35:07

katsunakatamisa
メンバー
From: 山形県山形市
登録日: 2005-07-14
投稿: 10
ウェブサイト

Re: v3.8日本語版RC1です

試してみました。
このスレッドでダウロードできる v3.8で試したところ
ブログ設定 での操作が反映されません。

GitHUBのものでも試しましたが、反省されませんでした。

みてみると、libs/ADMIN.php の 3566、3567行で
//        $this->action_overview(_MSG_SETTINGSCHANGED);
        $this->action_blogsettings(_MSG_SETTINGSCHANGED);
にしたところ、設定反映されたようでしたが、
実際は、設定されていません。

編集者 katsunakatamisa (2018-03-23 13:46:24)


よろしくお願いします。

オフライン

#24 2018-03-23 14:38:33

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 101

Re: v3.8日本語版RC1です

katsunakatamisa さんの発言:

ブログ設定 での操作が反映されません。

2018/03/01の
SHA-1: 516f5ae1c476c764b064c1c3f31ee2d5bc4fa712
からブログ設定が反映しないことがわかりました。

ここが原因となっている部分です。
nucleus/libs/sql/sql_common_functions.php#L196

編集者 ピヨピヨbird (2018-03-23 15:33:19)

オフライン

#25 2018-03-23 21:33:07

yama
Administrator
登録日: 2005-07-07
投稿: 1,266
ウェブサイト

Re: v3.8日本語版RC1です

https://github.com/NucleusCMS/NucleusCM … 3cea3d6f51
https://github.com/NucleusCMS/NucleusCM … 3.8dev.zip
修正しました。該当ファイルを上書きするだけで直ると思います

オフライン

Board footer