XOOPS2用 スケジューラ付カレンダーモジュール 「piCal」
●重要な通知
piCalは設計の古いモジュールであり、どこかにXSSがあっても不思議はあり
ません。そんなXSSが後から見つかってJPCERT/CCなどに報告されても、とて
も対処しきれないので、0.93以降では、Protectorの「大きな傘 Anti-XSS」
が有効でないと、一切動作しないように仕様変更しました。
この仕様変更が痛いようなら、piCalのアップデートやインストールをしない
でください。
「大きな傘 Anti-XSS」は、最新のProtectorをインストールすれば、自動的
に有効になっているはずですが、古いバージョンからのアップデートだと、
OFFのままかもしれません。piCal 0.93以上をインストール/アップデートす
る際には、必ずその機能がONになっていることを確認してください。
●piCalとは
PHP+MySQL用のクラスです。かなり以前に仕事で作ったカレンダー機能をベー
スとしています。あくまで汎用の「クラス」として作りましたが、かなり
XOOPSに特化した機能も充実してきたと自負しています。
名前の由来は、うちの社名 PEAK の頭文字と、iCalendar を合わせただけで
す。読み方は「ピーカル」ではなく「パイカル」です。
でも、後で調べてみたら、Python用のiCalendarライブラリも、picalという
名前のようです。こちらこそ「パイカル」でしょうから、読み方だけでも変
えようか、などと考えたりしてます。(ヨタ話にして失礼)
●開発の背景
XOOPSそのものはかなり前から興味を持っていたのですが、2003年の4月頃、
たまたまいくつかの案件があって、ようやく直接いじる機会にめぐまれまし
た。
ところが、それらの案件で必要になる、カレンダーもしくはスケジューラ機
能が公式モジュールにはありません。当然、3rd Partyモジュールを探すこと
になるのですが、当時唯一みつかったeCalは、私の利用方法にはそぐいませ
んでした。
最初はeCalをベースに改変しようかと思ったのですが、元がフランス語であ
ることもあって、あまりにもソースが読みづらく、これくらいなら0から作っ
てしまえ、と一念発起して、「車輪の再発明」することになりました。
;;
実際、カレンダー関係のPHPクラスなど、おそらくゴロゴロしていると思うの
ですが、暦というのは、意外とローカルな仕様が多くて、ある国の暦をベー
スとしたカレンダークラスを別の国向けにローカライズするのは大変です。
そんなわけで、piCalクラスも、XOOPS2用インターフェースの部分も、当初は
日本環境のためだけに作り、バージョン0.1〜0.4まで、日本人だけを対象と
してきたのですが、Horacio Salazarさん達の熱心なXOOPS伝道者にすすめら
れたこともあり、0.50でついに国際化しました。
元々が日本専用仕様で作っていただけに、国際化は非常に困難を極めました
が、今はそれなりのものが出来たと思っています。
今後も、「XOOPSにはpiCalがある」と言わせるだけのモジュールに育ててい
こうと思っています。
●利用方法(piCal新規導入の方)
XOOPS2で使うのは簡単なはずです。
他のモジュールと同様に、modules/ 以下に展開して下さい。特にパーミッショ
ンを変更するようなフォルダはありません。
その後、モジュール管理でインストールすればOKです。ブロックやモジュー
ルのアクセス権限は、従来通り、システムのグループ管理でもできますが、
piCalにはmyblocksadminがありますので、piCal内で行う方が便利なはずです。
「一般設定」のオプションもかなり多めですが、それほど難しいものはない
と思います。以下に、比較的、理解しづらい「権限」について書いておきます。
「一般ユーザの権限」
一般ユーザが登録したスケジュールを全体にすぐ公開する場合は、「登録
可・承認不要」を選びます。
登録はできるけれども、管理者権限を持ったメンバーによって「承認」さ
れるまでは自分にしか見えなくする場合は、「登録可・要承認」を
そもそも登録できなくするためには、「登録不可」を選びます。
グループごとに細かく設定したいのでしたら「グループ毎に設定する」を選び、
「各グループの権限設定」ページで個別に指定して下さい。
なお、登録されたスケジュールは、承認済・未承認にかかわらず、登録者
本人および管理者が編集できます。管理者が編集しても、登録者はそのま
まですが、未承認スケジュールは自動的に承認済となります。
「ゲストの権限」
基本的には、「一般ユーザの権限」と同じです。ただし、ゲストが登録し
た未承認状態のスケジュールは、管理者にしか見えません。
●複製方法
piCal 0.70 以上は、DUPLICATABLE V2 仕様で作ってあります。
そのため、modules/ 以下のディレクトリ名は自由に決められます。
ただし、ちょっとしたルールがあるので、それだけは守らなくてはいけません。
(数字以外が1字以上)+(他のpiCalとかぶらないpiCal番号)
という名前にしてください。
数字が一切含まれないディレクトリ名も、1つだけ存在可能です。
デフォルトの 'piCal' は、その一例です。
(piCal番号無しのモジュール)
このモジュールをコピーして、'cal0' として置けば、piCal番号0のモジュールのできあがり。
'cal00002' とかしても良いですが、これはpiCal番号2のモジュールとして扱われます。
とりあえず、0,1,2 の3つだけ用意してあります。
テンプレートとsqlファイルを用意しさえすれば、いくつでも可能です。
piCal番号が同一のモジュールは2つ同時には存在できませんので、その点だけ注意して下さい。
●アップグレード方法
piCal 0.40以降で運用なさっている方は、他のモジュールと同様です
(1) 本パッケージをダウンロードし、解凍後、全てのファイルをmodules/以下
に上書きアップロードします。
(2) システム管理->モジュール管理 からpiCalのアップデートを実行します
なお、0.4x または 0.5x から 0.6 以降にアップグレードする際には、さらに、
(3) piCalのモジュールメンテナンス画面にアクセスし、指示に従う
という手順が必要です。
なお、0.36以前のpiCalをお使いの方で、0.4以降にアップグレードするため
には、piCal 0.50 などを落として、テーブルを0.40形式にしてから、再度、
最新のpiCalへのアップグレード手順を踏んで下さい。
●FAQ
Q) なんだか表示される時間がずれているのですが…
A) piCalはその性格上、タイムゾーンの設定を正確にしないといけません。
ありがちなのは、9時間ずれているというパターンで、この場合、あなた
のアカウントのタイムゾーンがグリニッジ標準時のまま、という可能性を
まず疑ってください。(管理者のタイムゾーンは、インストール後に特に
設定しない限り、GMTのままです)
また、デフォルトのタイムゾーンや、サーバのタイムゾーンが狂っている
ことも考えられます。
特に海外サーバをお使いの場合、そのサーバのタイムゾーンをきちんと設
定する必要があります。
Q) ミニカレンダーの外観を変更したい
piCal本体部分は、XOOPSのテンプレートシステムを利用していませんが、
ミニカレンダー等ではpatTemplateというテンプレートクラスを利用して
います。
ミニカレンダーの外観を変更する場合は以下の手順となります。
1. images/default/ を images/(新スキンフォルダ名)/ に丸ごとコピー
2. piCal管理画面の一般設定で、新スキンフォルダ名をセットします
3. 新スキンフォルダ内の minical*.tmpl.html を編集します。
なお、patTemplateでは、{VARIABLE} という形式の変数がその中身に置換
されます。
「拡張ミニカレンダー」の方では、XOOPSのテンプレートを利用しています。
●著作権などの表記
piCalクラスおよびこのパッケージ内の各ファイルは、GPLに準拠します。
"see COPYING" という奴です。
当然、利用も配布も自由です。商用利用も構いませんし、改変も自由ですが、GPLである以上、改変バージョンの配布を行う際には、ソースの公開は必須条件となりますので、ご注意下さい。
v.093 (2009-07-10)
- Protectorの大きな傘Anti-XSSが有効でないと一切動作しないように仕様変更した
- 日本の祝日データを2015年まで追加した
- eguide2用プラグインのアップデート (thx nobu)
v.092 (2009-02-20)
- index.phpにXSS脆弱性が1箇所残っていたのを修正 (thx JPCERT/CC)
- 印刷用テンプレートを修正 (thx ttts)
- 一応、本家版2.3との相性問題を若干手直ししてみた (thx Zorro)
v.091 (2007-03-15)
- ほとんどのプラグインからcaldate=の記述を削除
- プラグイン追加
-- d3forum-forum
-- d3forum-topic
-- d3forum-post
-- pico-content-modified
-- pico-content-created
- テンプレートの微修正 0.91a
- 言語ファイル追加
-- danish (thx Anders) 0.91b
-- ja_utf8 0.91f
- RSS出力コントローラで、無効なエンティティが出るのを修正 0.91c
- プラグイン追加
-- xpwiki (thx nao-pon) 0.91d
- ロケール修正
-- canada.php (thx lusher) 0.91e
- ロケール追加
-- utf8_japan.php 0.91g
- プラグイン更新
-- eguide2 (thx nobu) 0.91h
v.090 (2007-03-12)
- 安定版への格上げ
- テンプレート内の細かなtypo修正
v.090 beta (2006-11-04)
- Cube2.1 で動くように、mymenu を 0.18 にアップデート
- SQL文中で、textフィールドへの default値がセット してあったのを削除
- Proxy経由でiCalendarデータを取得できる設定の追加
- myblocksadmin関連で消しすぎたファイルの復活 (thx Foxy) 0.90beta2
- 週間表示プラグイン処理のバグを修正 (thx hidehide55) 0.90beta3
v.089 Cube 2.1betaとの互換性問題解消 (2006-10-19)
- Cube2.1でブロックタイトルの%sが解釈されないのを修正 (thx minahito)
- Cube2.1で拡張ミニカレンダーが表示されないのを修正 (thx minahito)
v.088 特殊キャラクターの扱いの仕様変更 (2006-08-17)
- 詳細の表示で、htmlspecialcharsをかけるようにした
- 詳細以外のテキスト受け取りで、最初にstrip_tags()をかけていたのをやめた
- 内蔵gticketをバージョン2に更新
- プラグイン更新
-- eguide 2.0 (thx nobu) 0.88a
- イベント管理でSQLエラーが発生していたのを修正 (thx akaba) 0.88a
v.087 多少のバグ潰し (2006-6-9)
- rss2_*.php でのpubDate出力をやめた。(xhldで受ければそのままcomingになるはず)
- 未承認イベントにコメントがつけられてしまうバグの修正
- プラグイン更新
-- plzXoo-question
- プラグイン追加
-- smartsection (thx PinMaster)
-- eguide2 (thx nobu)
- ロケール追加
-- hongkong (thx danielh2o)
- プラグイン修正 (0.87a)
-- weblog-blogid
-- weblog-date
-- bulletin 2.0 (0.87b)
- fixed compatibity with MySQL 5.x in sql/pical.sql (0.87b)
- fixed a block option of untildays (0.87b)
- イベント管理で繰り返し予定が過去や未来で常に表示されてしまうバグを修正 (0.87c)
v.086 XSS修正 (2006-4-28)
- あまた存在するXSSを一通り潰した(と思う) (thx tohokuaiki)
v.085 互換性問題の解消等 (2006-2-15)
- 権限設定画面で、チケット用areaの指定ミスがあったのを修正
- mytplsadmin導入
- xoops_version.php の記述法を XoopsCube 2.1 に合わせた
- mymenu 更新 (XoopsCube 2.1との互換性問題解消)
- ニュージーランドのlocaleファイル追加 (thx zANavAShi)
- フランス語更新 (thx marco)
- 繁体中国語更新 (thx chia)
- utf8-tw更新 (thx chia)
- カテゴリー操作がおかしくなっていたバグを修正 (thx dendeke) 0.85a
- ポーランド語追加 (thx kurak_bu) 0.85b
- フランスのロケール追加 (thx Phillipe) 0.85b
- ニュージーランドのロケール追加 (newzealand) (thx Daryl) 0.85c
- bulletin用のプラグイン追加 0.85c
- 時間指定のある終了日指定の解釈をより一般的に改善した (thx minora) 0.85d
v.084b 細かなバグ潰し (2005-12-1)
- 祝日法改訂による祝日データの変更 (thx hashimoto)
- PHP-5.0.5だと検索でfatal errorがでる問題の解決 (thx hoso)
- リストビューの日付条件生成時のバグ修正 (thx tohokuaiki)
- mylinks および mydownloads 用のプラグインが未承認でも表示してしまうバグの修正
v.084a 参照関連修正 (2005-11-16)
- 不必要な参照を値渡しに修正 4.4.x 対策 (thx okuhiki)
- 改行潰し部分のtypoを修正 (thx okuhiki)
v.084 互換性関連メインの修正 (2005-11-14)
- updated myblocksadmin 0.41 and mymenu 0.15
- PHP 5.0.5との相性問題の改善
- HTTPレスポンス分割攻撃の可能性潰し(元のままでも大丈夫だったはずですが)
- 改行コードのLFへの統一
v.083 バグ潰しおよびプラグイン関連の改良 (2005-9-9)
- プラグインマネージャが思いっきり使いづらかったのを改善(できたかな?)
- 複製モジュールが、モジュールアップデートでALTER TABLEされなかったバグを修正
- プラグインマネージャの処理が複製モジュールであちこち間違っていたのを修正
- piCalプラグインにcidによるオプション絞り込み機能追加
- プラグイン追加
-- membershipモジュールの誕生日 (thx sophistry)
-- 白扇の誕生日 (あとは、ロウソク&ケーキアイコンさえあれば…
)
v.082 バグつぶしメイン (2005-9-1)
- PHP_SELFのXSS対策で、SCRIPT_NAMEの誤用などを修正した
- 編集画面でも、12時間/24時間の切替が効くようにした
- ドイツ語ファイル更新 (thx Rene)
v.081 セキュリティアップデート (2005-8-27)
- fixed PHP_SELF XSS
- XOOPS 2.2 への対応 (minicalex, ブロックタイトル等)
- myblocksadmin を 0.40 に更新
- common内のjscalendarがいくつかのテーマと相性が悪かったのを調整
- ロボットがminicalexへアクセスした時は、矢印のリンク先をpiCalとするように変更
- tchineseファイルの更新 (thx Kikuchi)
v.080 release (2005-6-29)
- プラグインマネージャの使い勝手改善およびバグ修正 (thx tohokuaiki)
- プラグインのオプション解禁 (とりあえずnewsとmyalbum-p-photosのみ)
- カナダの祝日ロケール追加 (thx sdmacint)
- プラグイン修正
-- weblog (thx tohokuaiki)
v.080RC5 (2005-5-27)
- myblocksadmin を0.29にアップデート
- RRULE処理で、BYMONTH指定無しでFREQ=YEARLY指定の際の処理を変更した
- スケジュール編集画面で、カテゴリーの親子関係を表示するようにした
- ロシア語ファイル更新 (thx Andrey)
- プラグイン2つ追加
-- weblinks (thx yshima)
-- yomi (thx yshima)
- 既存のプラグインにあったtypoをいくつか修正
v.080RC4 (2005-5-24)
- SSLかどうかの判定ルーチンを改善した
- 各種typoの修正 (thx Andrey)
- 管理画面で直書きが残ってしまっていた部分の言語定数化 (thx Andrey)
- カテゴリー階層構造の改善。子カテゴリーを選択したら親も自動選択 (thx Andrey)
- イベント案内用プラグインのtypo修正 (thx seiji)
- xoops_version.php でプラグインテーブルの記述が抜けていたのを修正
v.080RC3 (2005-5-17)
- 日毎・週間ビューでも、プラグインシステムを有効化した
- 繰り返し条件で生成されたレコードを一つだけ一時的に削除する機能の追加 (EXRULE, EXDATE といった真っ当な方法ではないため、元を編集すると復活してしまいます)
- イベント毎のiCalendarの出力を、POSTからGETに変更
- iCalendar出力ボタンをイメージに変更 (thx Greg)
- jscalendarを選択可能に (common/jscalendarがなければXOOPSオリジナル)
- HTMLによる表現方法を多少改善した (thx hodaka)
- プラグインの追加
-- wordpress 0.5
-- 教えて!Xoo
- スペイン語更新 (thx rlois)
- ロシア語更新・ロシア休日ロケール追加 (thx Andrey) - v.080RC3a
v.080RC2 (2005-5-6)
- ミニカレンダーなどいくつかのtypoを修正 (thx okuhiki, kamei)
- jscalendarが、テーマのテーブル幅100%によって崩れるのを修正
- プラグイン管理テーブルに表示順を追加
- サーバのタイムゾーンとして何を採用するかのオプションを追加
v.080RC (2005-5-3)
- テーブル構造を変更した(モジュールアップデートをお忘れなく!)
- 新しいjsカレンダーの導入 (special thx Mihai Bazon!)
- 時間表現についてロケール情報を排除した
- プラグインマネージャの作成
- 12時間制・24時間制を選択式とした
- 24時以降の表現を、翌*時とした
- 拡張ミニカレンダーにおける矢印の処理の修正・改善
- ミニカレンダーで、アンダーラインがおかしい問題の修正
- テーブルメンテナンスのタイムゾーンの扱いを根本的に改善した
- サマータイムがらみの処理修正
- 拡張ミニカレンダーのキャッシュ処理修正
- 下記プラグインの追加
-- weblog 1.4
- スウェーデン語更新 (thx efla)
- ドイツ語更新 (thx rene)
v.076 (2005-4-22)
- タイムゾーンを保存するフィールドの型がおかしかったのを修正
- JavaScriptカレンダーのボタンを変更 (thx Greg)
- 英語の修正 (thx Peter)
- UKの休日ロケール追加 (thx Kelvin)
- 西オーストラリア休日ロケール追加 (thx Steve)
- waiting 0.8用のモジュール内プラグイン実装
- どこでもXOOPSコメントとの相性問題解決
- XOOPSサーチモジュール1.8以降の仕様に対応
- piCalのクラス定義を1回しか読み込まないように改善 (thx nobu)
- カテゴリー名でサニタイズ忘れがあったのを修正
- RSS出力スクリプトの修正 (thx okuhiki)
- 拡張ミニカレンダーブロックの新規追加
- プラグインシステムの実装
- 追加プラグイン
-- news
-- myAlbum-P (Duplicatable)
-- eguide (http://mysite.ddo.jp/modules/mydownloads/singlefile.php?lid=8)
-- mydownloads
-- mylinks
-- piCal (これのみ特殊で、他のpiCalは表示不能。プラグインファイル名も要変更)
v.075 (2005-02-11)
- XOOPSサーチモジュールがあれば、検索結果にコンテキストを含めるようにした
- どこでもコメントモジュールで、動作がおかしくならないように調整
- sitemapル用プラグインで、ちゃんとカテゴリー権限処理を行うよう修正
- 管理画面トップがDuplicatableになっていたかったのを修正
v.074a (2005-01-16)
- sitemap 用プラグインを同梱
v.074 (2005-01-10)
- RSS出力でタグが直に出力されてしまうのを、htmlspecialchars()かけるようにした
- 米国用の祝日ファイルの更新
- イタリア語ファイルの更新 (thx cubiq)
v.073 security fixes (2005-01-07)
- チケットシステムのフル実装
- 管理画面に一箇所サニタイズ忘れがあってXSSとなっていたのを修正 (thx okuhiki)
- 本日の予定と今後の予定のRSS2を一応実装してみた
- ロケール概念の導入 (言語とロケールの分離)
- 祝日名を表示するようにしてみた
- *の予定ブロックの複製可能化
- *の予定ブロックをカテゴリー絞り込みできるようにした
- *の予定ブロックの表示期間上限を設定できるようにした
- *の予定ブロックの最大表示件数を、ブロックオプションへと移行した
- updated myblocksadmin 0.22 & mymenu 0.08
v.072 (2004-11-09)
- クローラーがpiCalのリンク先を追跡しないようMETAのrobotsを"nofollow"に強制変更
v.071 (2004-10-18)
- 新たに登録されたイベントブロックのtypo修正 (thx kuropen)
v.070 (2004-10-5)
- DUPLICATABLE V2 の実装
- 開発版0.7x と安定版0.6x を分けた
v.060pre05 bug fixes (2004-9-30)
- allow_url_fopen off でもicalインポートが動くように改良
- カテゴリー管理画面を改良
- クラス定義ファイルを、class フォルダの中に移動 (クラスとしての利用では要注意)
- リダイレクトの方法を改良
- 日付フォーマットの解釈ルーチンを修正 (thx cchiu)
- 翌月などのリンクがおかしいケースがあったのを修正 (thx AZNative)
- 月間カレンダーのイベントにドットを追加 (thx AZNative)
- サーバにサマータイムが設定されている環境でのRRULE展開方法の修正 (special thx to AZNative!)
- モジュールアップデートを行ってもブロックオプションが初期化されない仕掛けの導入 (thx nobunobu)
- 2009年9月の国民の休日を追加
- myblocksadmin を 0.07 にアップデート
- ブラジルポルトガル語ファイルの追加 (thx Marcelo Yuji Himoro)
v.060per04 security fixes (2003-6-22)
- SQL Injection および CSRF 脆弱性の修正 (すべて潰せたかどうか) (thx Valcilon)
- イベントマネージャのデフォルトでは、今後のイベントのみを絞り込むようにした
- 指定日および指定日以降ブロックの名前を、ブロック管理画面から変更できるようにした (日付に置き換えたい部分を%sにして下さい)
- myblocksadmin および mymenu の更新
- カテゴリーツリーにループがあるとタイムアウトするバグの修正 (thx almhouse)
- cid がGETにあると、勝手にイベントを絞り込んでしまうバグの修正 (thx megu)
- xoops_version.php にテーブル記述漏れがあったのを修正 (thx Ryuji)
- pical_constants.php のtypo修正 (thx moon)
- ポルトガル語ファイルの追加 (thx Olivier)
v.060pre03 bug fixes (2003-2-9)
- 詳細画面での日付に、時差計算を含み忘れていたのをFix (thx Chado)
(おそらく0.60pre01でのエンバグ)
- 今後の予定ブロックで通常イベントに余計な時差計算をしていたのをFix (thx Chado)
- UNTIL指定が効かなくなっていたtypoをFix (thx jfernau)
- 0:00〜0:00等の一日の境界線上で長さのないイベントに対応 (thx ykida)
- 今日の予定ブロックなどの表示処理を修正
- defaultテーマなどtableにmargin指定してあるとIE5で崩れることの対策
- カレンダーのフレーム色で、基本的な背景色を指定できるようにした
また、この設定値のデフォルトに、background-color:white; を追加した
(好みと言えば好みですが、背景が暗色だと酷く見づらくなるので)
- スウェーデン語ファイルを更新 (thx Leif Madsen)
- フランス語ファイルを更新 (thx Team Webpolysite)
v.060pre02 major version pre-release (2003-1-17)
- ドイツ語ファイルを更新 (thx Berni)
- 予定一覧画面をもう少しマシにした(あまりにもやっつけだったので)
- 日付をバラバラにPOSTされた時には、GETでリロードするようにした
- カテゴリーについてのイベント通知を実装した
- 海の日・敬老の日の祝日法改訂に対応
v.060pre01 major version pre-release (2003-1-14)
- カテゴリーの実装
- カテゴリーとグループ間のアクセス権限実装
- 指定されたカテゴリーなどを表示するサブメニュー
- イベントのリスト表示画面
- プリント用画面
- コメント数を記録するようにした
- イベントそのもののタイムゾーンを利用できるようにした
- 上記の変更に伴い、イベントテーブルの構造が変更された
- そのテーブルをメンテナンスする管理者用画面の追加
- イベントやサーバのタイムゾーンを記録することで、タイムゾーンが異な
る他サーバへの移動を可能とした
- 1970年以前または、2038年以降の日付も扱えるようにした(機能は限定的)
- 「新規に登録された予定」ブロックを追加した
- RRULE展開に関するいくつかのバグ修正
- 全日イベントだと開始日の表示がおかしい場合があるのを修正
- スウェーデン語追加 (thx Leif Madsen)
v.0512 some fixes (2003-12-29)
- ドイツ語ファイル更新 (thx Berni)
- 「*の予定イベント」でイベント追加ボタンの誤表示バグを修正 (thx bellbird)
- iCal_parser のミスタイプ修正 (thx Tom_G3X)
- イベント通知テンプレートのミスタイプ修正 (thx hhankt)
- Outlook との互換性(piCal -> Outlook)を少し改善
v.0511 some fixes (2003-12-27)
・WKSTの実装
・月曜開始の際の、JSカレンダーの表示方法修正
v.0510 (2003-12-26)
・「*の予定」ブロックをXOOPSテンプレート化
・XOOPSコメント追加
・XOOPS通知機能追加(とりあえず、全体のイベント追加およびイベントへの
コメントだけ)
・RRULEの展開日を間違えるバグを修正 (thx leonine)
・一日の開始時間OFFSET機能を実装
※ テンプレートなどが追加されていますので、モジュールアップデートをお
忘れ無く。
また、新しい「*の予定」ブロックは、新ブロックとみなされますので、
再度、ブロックアクセス権限をつけて、表示設定にして下さい。
v.0509 (2003-12-18)
・myblocksadminがXOOPS2.0.3以前だと、権限レコードをすべて削除してしま
うバグ(?)を修正 (thx caramuxo)
・Sectionsモジュールのバグ対策 ($xoopsTplが取得できない)
v.0508 some fixes
・投稿者の表示追加
・myblocksadmin の追加
・English Typo の修正
・「指定された日(以降)の予定」におけるブロックタイトル書き換えの手
法が、一部のモジュールと当たっていたのをFix (原因は追究していない
がとりあえずxoopsGalleryで確認)
v.0507 some fixes & tchinese added (2003-11-14)
・月間フルサイズカレンダーブロックで、テンプレートをhttp経由で呼び出
していたTypoをFix (thx umetaro)
・ヘッダ部のカラーをアサインし忘れていたのをFix (thx giant)
・HTMLの記述ミスなどで編集ボタンが表示されなくなるハマリへの対策 (thx ykida)
・その他、細かなユーザビリティの改善
・tchinese 追加 (thx xoobs)
v.0506 many fixes & two languages added (2003-11-11)
・description部において addslashesが二重にかかってしまっていたバグを修正
(このバグ、初期の頃からずっと引きずっていたようです)
・*以降の予定および*日の予定ブロックにおいて、date( "n/j" ) だったのを修正
・日本語だと上のブロックにおいて、タイトルに生タグ表示されてしまうのを修正
・日本語以外で、mbstring環境があると、mb_convert_kanaにかかってしまい、
ウムラウトなどが破損するのを修正
・〜の予定ブロックの<pre>をすべて外した
・月間フルサイズカレンダーブロックに、長期イベントの凡例表示
・adminトップ画面で、承認待ちイベント数を表示するようにした
ここで気付いたのですが、waitingモジュールも、WHERE節をrruleに対応する必要有
・nederlands 追加 (thx Chimpel)
・russian 追加 (thx FrenchmaN)
v.0505 a fix & two languages added (2003-11-8)
・ブロック用定数 _MB_PICAL_JUMP を、本体に使い回してしまっていたのを修正
・french 追加 (thx Philippe Masson)
・spanish 追加 (thx carloslmz)
v.0504 some fixes (2003-11-7)
・requireおよびincludeのパスを、絶対表記に改めた
include_path の設定次第で、偶然名前が一緒な他のファイルを読み出す危
険性を排除するため
・検索時に、プライベート条件を追加するのを忘れていたのをfix
よく見たら、まだ日本語が残っていたので、抜本的に修正
・月別フルサイズカレンダーのジャンプ先指定ミスを修正
v.0503 Windows adaptation (2003-11-7)
・Windowsでは__FILE__が\で区切られたパスを返すため、その対応を行った。
(Very thx Ryuji !!!)
v.0502 small changes (2003-11-6)
・date()でフォーマットしていた部分を、極力 strftime()を使うようにした。
(英語圏以外のための対応)
v.0501 small fixes (2003-11-5)
・「今日の予定」「今後の予定」ブロックの日付取得Fix (Thx kuramotosouseiji)
・weekly.tmpl.html にもtypo(翌月リンク)があったのを修正 (thx hiro24)
・サーバのタイムゾーンを、XOOPSの設定ではなく、date('Z')の戻り値から
得るようにした
これに伴い、formatTimestampを使っていた部分も修正
・ドイツ語の言語ファイルを更新 (Thx Bernhard Haim)
恥ずかしながら、拙作のXoopsLanguageCheckerのバグで、ドイツ語言語フ
ァイルが破損してました。
v.050 release (2003-11-4)
・まだまだバグはありそうですが、とりあえず0.50のリリースバージョンと
します。
・グループ毎に、「投稿」「編集」「削除」の権限を設定できるようにしま
した。ただし、要XOOPS2.0.4で、かつ、Preferencesでユーザの権限を、グ
ループパーミッションに従う、という設定にしておく必要があります。
・ドイツ語の言語ファイルを追加 (Thx Bernhard Haim)
v.050pre05 (2003-10-29)
・pre03あたりで行った変更が、xoopscodes.php の二重読み込みエラーを引
き起こしている現象の修正(でもこれ、どう見てもnewsモジュール側のバ
グなんですけど……)
・サーバとユーザのTZが違うと、RRULEの曜日・日付指定でずれる症状を修正
(なんとなく、不十分な気もするのだが…)
・全日フラグの一つ、記念日をちょっとだけ実装
・各種ミニカレンダーに、イベントがあるかどうかのフラグを追加
patTemplateのテンプレートでいじれば、好きな形に変更できます。
重くなるかな、と思って、あえてやっていなかったのですが、patTemplate
導入してからすでに十分重いので、これくらいじゃ影響ありませんでした。
・php.ini などで 元々 mb_output_handler をONにしている環境への適応を
行った (thx toshimitsu)
・その他 mb_* 関数がらみの処理を、全体的にもう少しマシにした
(そうは言っても、日本語以外のマルチバイト環境なんてまったく知らな
いので、ちゃんと対応できているかどうかはまったく不明です)
v.050pre04 (2003-10-25)
・本来、最大4つ表示されるはずの長期イベントが、3つになっていたのを修
正
・一応、HTML lint に少しだけ沿うようにした (imgのalt追加とか、<br>→
<br />とか、他にも結構いっぱい。でも、&→&は決定的にソースが見
づらくなるので、プログラムが落ち着くまではペンディングします。)
(thx puchi)
・著作権表示の追加(一応、業務時間にも作業してたりしますので……)
v.050pre03 (2003-10-25)
・RFC2445のCLASSを実装
・一応、グループ機能も搭載
RRULEの異常なまでの複雑さに比べたら、グループ&ユーザの公開・非公開
は、はるかに簡単な実装なので、逆にずるずると先延ばしにしてしまいま
した。この機能を希望されていた方、お待たせいたしました。
v.050pre02 (2003-10-24)
・繰り返し展開時に発行するINSERT文にaddslashesし忘れてた(汗)
・YEARLYなどで、unixtimestampがあふれると無限ループに陥っていたバグを
修正
(このまわり、まだまだありそう……)
・無条件でrestore_error_handler をかけるようにした (コア側が修正しな
い以上、モジュール側で自衛するしかないですね)
v.050pre01 (2003-10-22)
・全面的な国際化
・週の始まりを月曜日にも出来るようにした
v.0422 (2003-9-29)
・error_reportingの値を戻し忘れていたのを修正 (thx toshimitsu)
・daily.tmpl.html のtypo(翌月リンク)を修正 (thx einguste)
v.0421 (2003-9-16)
・0.42で手を付けた「サーバとユーザのTimezoneが違う時、デフォルトで表
示される『今日』が食い違うバグ」が、実はもっとエンバグしていたのを
修正
・バージョンナンバーを、マイナーバグfixも含め、すべて数字に修正
(モジュール管理画面で確認出来ないのは致命的なため)
v.042a (2003-9-5)
・繰り返し指定の展開で、全日イベントでないものだと、展開されたデータ
の時刻がおかしくなっていたバグを修正
おそらくこれは、0.40からずっとあったバグだと思われます。
v.042 (2003-9-3)
・PHP4.2.0未満で、array_searchがNULLを返してしまう不具合に対応した
・iCalendar出力で、デバッグ用のprint_rが残っていたバグを修正
・潜在的にあったminicalendarキャッシュのバグを修正(条件を変更)
・サーバとユーザのTimezoneが違う時、デフォルトで表示される「今日」が
食い違うバグを修正 (thx leonine)
あまり美しくない解決法だったりしますが。Timezone関係はまだまだバグ
がありそうで、結構頭が痛いです
・XOOPSインターフェース部の文字列国際化
piCalクラス本体の国際化については、かなりの大工事になりますので、
0.50でやります。そちらが落ち着くまでは、0.4系が安定バージョンと考え
て下さい。
v.041 (2003-7-30)
・長期イベントを横バーによって表示するようにしてみた(月間表示のみ)
ただし、横バーによる表示は4件が上限です。一月に5件以上の長期イベン
トが存在した場合、超過分については、通常の全日イベントと同様に表示
されます。
v.040c (2003-7-29)
・SSLか非SSLかの判定を、$_SERVER['SSL_PROTOCOL']ではなく、
$_SERVER['HTTPS']でするように修正 (thx JuNya)
v.040b (2003-7-27)
・RRULEのFREQ=WEEKLYで、BYDAY=SU が展開されないバグを修正
v.040a (2003-7-27)
・sql/mysql.sql のコメントを消した (XOOPSバグ対策)
v.040 (2003-7-26)
・繰り返し条件(rrule)を実装しました
実装に際しては、Cocoaさんのページ(http://itok.jp/mac/cocoa/)を参照
しました。大変判りやすいページ、本当にありがとうございました。
・イベントテーブル名を、*_schedule から *_pical_event に変更した
今さらですが、XOOPSのガイドラインに沿うようにしました。これに伴って、
0.2から0.3の時と同様に、アップグレードスクリプトを実行する必要があ
ります。
このテーブルのカラムも1つ追加になっています(rrule_pid)。実はこちら
がメインの目的です。データ構造に先見の明がなくてすみません。
なお、テーブルの正規化も「あえて」目指していません。
・ミニカレンダーをテンプレート化
「ミニカレンダーの「今日」や←・→をクリックした時にはメインもカレ
ンダーにしたい」「もっと抜本的にデザイン変更したい」「フォントサイ
ズを相対ではなく絶対指定にしたい」
などといった希望をお持ちの方は、このスキン機能をぜひご活用下さい。
images/default/ をすべてコピーして、テンプレートファイルを書き換え、
piCalの設定で、スキンフォルダを指定するだけです。
default そのものは書き換えないことをお勧めします。将来的なバージョ
ンアップなどで上書きされる恐れがあるからです。
・標準状態のミニカレンダーをキャッシュするようにした (XOOPSインタフェース)
テンプレート化することで、さすがに実行時間がやや遅くなったため、一
番多く表示されると思われる当日のカレンダーのみ言語別にキャッシュす
るようにしました。
・データ登録直後にリロードする際、Header( "Location: *" ) で暗黙に、
httpという指定をしてしまっていた部分を修正
・alldayの各ビットに意味を持たせるようにした
ただし、このビットに応じて表示方法を変えるのはまだ先です。
v0.36 (2003-7-16)
・patTemplateに渡すテンプレートファイルを、URIで渡してしまっていたバ
グを修正
v0.35 (2003-6-21)
・v0.34でエンバグした部分の修正 (calendarjs.php を読み込む場所)
v0.34 (2003-6-20)
・日付入力のJavaScriptを用意した(XOOPS2インターフェース部)
v0.33 (2003-6-17)
・admin画面イベント一覧にページ分割および抽出をつけた
v0.32 (2003-6-16)
・日付ジャンプコントローラをつけた
・カレンダーメイン部のレイアウトを変更できるようにしてみた
変更のやり方は、スキン機能と一緒で、images/ の下で defaultを別のディ
レクトリ名にコピーし、その中の*.tmpl.htmlを書き換えます。
{}で囲われた部分がpiCalによって置き換えられます。
・年表示カレンダーをつけた
・piCalのembed css を <head></head> の中に出力できるようになった
(thx Ryuji)
v0.31 (2003-6-10)
・0.30でスケジュールの承認が出来なくなっていたのをFix
・実験的に、iCalendar <-> Outlook のリンク変換を実装してみました
v0.30 (2003-6-7)
※ テーブル構造も含め、かなり抜本的に修正(?)しています。0.20以前のバ
ージョンをお使いの方は、テーブルをアップグレードする必要があります。
(readme.txt 参照)
※ いっぱい修正した割に、デバッグの時間がありません。バグ報告よろしく
お願いします。
・iCalendarのインポートに対応させるため、Timezoneの設定をした。
*scheduleテーブルの時間はすべて、サーバのTimezoneで格納してます。
ユーザのTimezoneは、xoopsなどから取得します。表示はすべてユーザの
Timezoneです。
また、時差の計算をする必要性から、開始日時・終了日時をunixtimestamp形
式で持つことにしました。最初はメンテナンス性から、「あえて」date型と
time型で別のフィールドに持つように作ったのですが、この形式で時差の計
算をすると負荷が高くなりすぎるため、あきらめました。
・時間指定において、全日というオプションを用意した。
日付そのものが対象となる予定(記念日など。時差影響なし)と、時刻が問
題となる予定(時差によっては日付も変わる)の両方があることに、今になっ
て気がつきました。allday という新規に追加したフィールドで区別していま
す。0が時間つきイベント、1が通常の日付イベント、2が祝日名などの特別な
日付イベントとする予定です。(現時点では、0かそれ以外かの区別しかして
いない)
なお、iCalendarの仕様で、実際の日数がDTSTARTとDTENDの差となりますので、
これにあわせて、alldayがONの場合、一日のみのイベントでもstartとendの
差は86400秒あるように作っています。
・iCalendarデータのインポートを用意した。(admin画面)
phpicalendarのパーサを取り込みました。
ただし、現時点では、rruleフィールドの処理は入出力ともに出来ません。
iCalenndarのrrule処理とpiCal自身での繰り返し入力については、次の大き
目なマイナーバージョンアップ(0.40)にてまとめて行います。
・月別カレンダーをブロックとして用意した。
中央表示以外では使い物にならないと思いますが、リクエストがあったので
一応用意してみました。
・unique-idをフィールドとして持つようにした。
iCalendarとの親和性からの要請です。
どうせフィールドを追加するなら、とついでに、extkey0とextkey1という
int(10)のフィールドも追加しました。newsなど別のモジュール(テーブル)
との連携を行う場合に使えるかもしれません。その場合は、extkey1を使って
ください。extkey0は、スケジュールデータの上位分類に使う予定がなくもな
いので。
・Ryujiさん作の検索機能を取り込んだ。
テーブル構造が変わった部分をすりあわせた他は、そのまんま取り込ませて
いただきました。遅ればせながら、大感謝です。
・簡易スキン機能をつけた
piCal/images/ の下にフォルダを作り、そこに default と同じ名前で各ファ
イルを用意して下さい。あとは、管理画面のpiCal一般設定にて、そのフォル
ダ名を登録すればOKです。
また、これに伴い、gifファイル名も、見た目ではなく、使い方から名前をつ
け直しました。
例:
pencil.gif → addevent.gif
dot_b.gif → (用途に応じ) dot_future.gif or dot_allday.gif
・いくつか国際化の準備をはじめた
最初はあまり乗り気ではなかったのですが、それなりに有用なコードになっ
てきた(と思う)ので、今回のTimezoneの追加も含め、国際化を少しずつ考
えています。とりあえずyoteiという変数名は恥ずかしいので、event に変更
しましたので、インターフェースを作られる方(……って、若干一名様だけ
だと思いますが)はご注意下さい。
v0.20 (2003-5-11)
まずは、Ryujiさん(http://joetsu.info/ryuji/)に感謝します。
・「要承認」の設定でも、一度承認した予定は、いくらでも変更出来てしま
う(ゲストでも!)というバグをFIX (thx Ryuji)
・詳細画面と編集画面を切り分けた。(thx Ryuji)
・XOOPS2のテンプレートを使う人用に、少しでもOverrideしやすい方法を模
索中 (thx Ryuji)
piCalクラスでも同モジュールでも、テンプレートは使っていません。ただ、
テンプレートの必要性は私もそれなりに承知はしてますので、もし必要な方
がいらっしゃいましたら、piCal_xoopsクラスを変更する、もしくはさらなる
サブクラスを作成して、各表示関数をOverrideして下さい。
xoops_version.php も要変更です。
・ミニカレンダーの日付をクリックした時のデフォルト動作を、piCalの月別
表示に変更
・ボタン位置のvalign='middle'の指定忘れを修正
私のスタイルでは顕在化しないので気付きませんでした。
・とりあえず、iCalendar出力ボタンをつけた (要 mbstring)
あくまで「とりあえず」というレベルです。
v0.13
・$conn を独自に mysql_connect から得ている部分を、すべて
$xoopsDB->conn から取得するようにした
こんなやり方は、PHP5になって、private指定されてしまったら一発でアウト
なんですが、getVarメソッドも定義されていないので仕方ないですよね。
・「今後の予定」ブロックの追加
これに伴い、「今後の予定の表示件数」というconfig optionを追加
v0.12
・midの取得方法を変更。どのページでもブロック表示できるようにした。
v0.11
・mbstringのないサーバで登録できないのを防ぐようにした。
実際には、何もエミュレートしていないので、そういうサーバでは、長い件
名のスケジュールは、1/2の確率で文字化けするでしょう。
・ブラウザによって、時・分のフォームが正しく表示されないのを修正
v0.10 (2003-4-23)
最初のリリース