欲しいプラグイン/394
の編集
Top
/
欲しいプラグイン
/
394
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
Wikiを試したい方へ:
「この」Wikiは、
PukiWiki
のための公式Wikiです。
テスト書き込みなどは
お試しサイト
https://pukiwiki.osdn.jp/_trial/
をご利用ください
**一定の時間ごとにメッセージを変えるプラグイン [#j711d959] |RIGHT:70|LEFT:410|c |~バージョン|| |~投稿者|[[aromatherapy]]| |~状態|完了| |~投稿日|&new{2012-05-28 (月) 14:24:07};| ***メッセージ [#i796e2a3] 例えば、周期を48時間として start(開始時刻)を19:00として、その27時間後をend(終了)とする場合 ■開始~終了時刻まで好きなメッセージ表示 「開始してから19時間が経過。終了まで残り8時間です。」みたいなかんじで経過と残り時間とかも表示したいんですが、実現難しいですか? ■時間外はまた違うメッセージを表示 「休憩中です」みたいに使おうと思ってるんですが、開始までの時間がカウントダウンさせたりもしたいです・・ ***とりあえず作ってみました。 [#y5575914] &ctimer(開始時刻,期間,周期,表示形式){個別メッセージ}; ''開始時刻'' php関数strtotimeが処理できる文字列.例えば"yyyy/mm/dd hh:mm"~ ''期間'' イベント期間を時間単位で~ ''周期'' イベントの開始周期を時間単位で。省略時は周期開始されない~ ''表示形式'' remain イベント期間中の場合、残り時間の表示。~ past イベント期間中の場合、経過時間を表示。~ cdown イベント期間外の場合、次の開始時刻までの残り時間を表示。~ ●1つのイベントを毎日(24時間毎に)実行する場合 &ctimer(2012/05/29 10:00:00,14,24,remain,cdown){''イベント実施中''}; 上の例だと、毎日(24時間周期で) 10時~24時(14時間)をイベント期間とする。期間中は残り時間、期間外は次の開始時間までカウントダウン ●2つを組み合わせて、時間帯別に表示を変える場合 &ctimer(2012/05/29 10:00:00,14,24,past,remain){開店 };&ctimer(2012/05/30 00:00:00,10,24,remain){休憩中 }; 2つ組み合わせて、期間中は「開店 hh時間mm分が経過。残りhh時間mm分です。」時間外は「休憩中 残りhh時間mm分です。」 と言う表示になります。 <?php // License: The same as PukiWiki // PukiWiki - Yet another WikiWikiWeb clone. // $Id: ctimer.inc.php,v 0.02 2012/05/30 00:00:00 Kazuna Asato Exp $ define('PLUGIN_CTIMER_USAGE', '&ctimer(start,range,cycle,display){message};'); define('PLUGIN_CTIMER_PAST','開始$1が経過。'); define('PLUGIN_CTIMER_REMAIN','残り$1です。'); define('PLUGIN_CTIMER_CDOWN','開始$1前です。'); define('PLUGIN_CTIMER_HOUR','$1時間'); define('PLUGIN_CTIMER_MINUTE','$1分'); define('PLUGIN_CTIMER_UNITS',3600); // Set unit in seconds function plugin_ctimer_inline() { global $vars; $now=time(); $args = func_get_args(); if (count($args)<2){ return(PLUGIN_CTIMER_USAGE);} $mess0 =array_pop($args); $start0=array_shift($args); foreach($args as $v){ switch ($v){ case 'remain': $remain=1; break; case 'past': $past=1; break; case 'cdown': $cdown=1; break; default: if ($range0!=0){$cycle0=intval($v);}else{$range0=intval($v);} } } $start=strtotime($start0); if ($start<10000000){ return('ctimer error:illegal start time.');} $range=intval($range0); $cycle=intval($cycle0); $end=$start+$range*PLUGIN_CTIMER_UNITS; if($cycle>0){ if ($cycle<$range){return('ctimer error:cycle too small.');} $cycle=$cycle*PLUGIN_CTIMER_UNITS; if($start<$now){ $ctimes=floor(($now-$start)/$cycle); $start+=($cycle*$ctimes); $end +=($cycle*$ctimes); } if($end<$now){ $start+=$cycle; $end +=$cycle; } } $rr=''; if (( $cdown)&($now<$start)){ $rr.=str_replace("$1",plugin_ctimer_fmt($start-$now),PLUGIN_CTIMER_CDOWN); // CountDown } if (($start<=$now)&($now<=$end)){ if ( $past){ $rr.=str_replace("$1",plugin_ctimer_fmt($now-$start),PLUGIN_CTIMER_PAST); // Past } if ($remain){ $rr.=str_replace("$1",plugin_ctimer_fmt($end-$now ),PLUGIN_CTIMER_REMAIN); // Remain } } if ($rr!=''){$rr=$mess0.$rr;}; return ($rr); } function plugin_ctimer_fmt($p){ $r=''; if ($p>3600){ $ph=strval(intval($p/3600)); $r=str_replace("$1",$ph,PLUGIN_CTIMER_HOUR); } $pm=strval(intval(($p%3600)/60)); $r.=str_replace("$1",$pm,PLUGIN_CTIMER_MINUTE); return($r); } ?> ***コメント [#naf8d900] - 迅速な対応に本当に感謝します。 -- [[aromatherapy]] &new{2012-05-30 (水) 06:58:32}; - 周期開始の判定が誤っていたので修正&関数の整理 すみません -- [[asato]] &new{2012-05-30 (水) 07:52:53}; - 修正と関数の整理ありがとうございます!いえ、私は全く解らないので、すごく助かっています。 -- [[aromatherapy]] &new{2012-05-31 (木) 03:47:08}; - cs wiki > http://cswiki.jp/ さんを使っているんですが、完成したプラグインの導入を運営様にリクエストしたいのですが、動作のサンプルを見る事は可能ですか。 -- [[aromatherapy]] &new{2012-06-01 (金) 08:47:27}; #comment
**一定の時間ごとにメッセージを変えるプラグイン [#j711d959] |RIGHT:70|LEFT:410|c |~バージョン|| |~投稿者|[[aromatherapy]]| |~状態|完了| |~投稿日|&new{2012-05-28 (月) 14:24:07};| ***メッセージ [#i796e2a3] 例えば、周期を48時間として start(開始時刻)を19:00として、その27時間後をend(終了)とする場合 ■開始~終了時刻まで好きなメッセージ表示 「開始してから19時間が経過。終了まで残り8時間です。」みたいなかんじで経過と残り時間とかも表示したいんですが、実現難しいですか? ■時間外はまた違うメッセージを表示 「休憩中です」みたいに使おうと思ってるんですが、開始までの時間がカウントダウンさせたりもしたいです・・ ***とりあえず作ってみました。 [#y5575914] &ctimer(開始時刻,期間,周期,表示形式){個別メッセージ}; ''開始時刻'' php関数strtotimeが処理できる文字列.例えば"yyyy/mm/dd hh:mm"~ ''期間'' イベント期間を時間単位で~ ''周期'' イベントの開始周期を時間単位で。省略時は周期開始されない~ ''表示形式'' remain イベント期間中の場合、残り時間の表示。~ past イベント期間中の場合、経過時間を表示。~ cdown イベント期間外の場合、次の開始時刻までの残り時間を表示。~ ●1つのイベントを毎日(24時間毎に)実行する場合 &ctimer(2012/05/29 10:00:00,14,24,remain,cdown){''イベント実施中''}; 上の例だと、毎日(24時間周期で) 10時~24時(14時間)をイベント期間とする。期間中は残り時間、期間外は次の開始時間までカウントダウン ●2つを組み合わせて、時間帯別に表示を変える場合 &ctimer(2012/05/29 10:00:00,14,24,past,remain){開店 };&ctimer(2012/05/30 00:00:00,10,24,remain){休憩中 }; 2つ組み合わせて、期間中は「開店 hh時間mm分が経過。残りhh時間mm分です。」時間外は「休憩中 残りhh時間mm分です。」 と言う表示になります。 <?php // License: The same as PukiWiki // PukiWiki - Yet another WikiWikiWeb clone. // $Id: ctimer.inc.php,v 0.02 2012/05/30 00:00:00 Kazuna Asato Exp $ define('PLUGIN_CTIMER_USAGE', '&ctimer(start,range,cycle,display){message};'); define('PLUGIN_CTIMER_PAST','開始$1が経過。'); define('PLUGIN_CTIMER_REMAIN','残り$1です。'); define('PLUGIN_CTIMER_CDOWN','開始$1前です。'); define('PLUGIN_CTIMER_HOUR','$1時間'); define('PLUGIN_CTIMER_MINUTE','$1分'); define('PLUGIN_CTIMER_UNITS',3600); // Set unit in seconds function plugin_ctimer_inline() { global $vars; $now=time(); $args = func_get_args(); if (count($args)<2){ return(PLUGIN_CTIMER_USAGE);} $mess0 =array_pop($args); $start0=array_shift($args); foreach($args as $v){ switch ($v){ case 'remain': $remain=1; break; case 'past': $past=1; break; case 'cdown': $cdown=1; break; default: if ($range0!=0){$cycle0=intval($v);}else{$range0=intval($v);} } } $start=strtotime($start0); if ($start<10000000){ return('ctimer error:illegal start time.');} $range=intval($range0); $cycle=intval($cycle0); $end=$start+$range*PLUGIN_CTIMER_UNITS; if($cycle>0){ if ($cycle<$range){return('ctimer error:cycle too small.');} $cycle=$cycle*PLUGIN_CTIMER_UNITS; if($start<$now){ $ctimes=floor(($now-$start)/$cycle); $start+=($cycle*$ctimes); $end +=($cycle*$ctimes); } if($end<$now){ $start+=$cycle; $end +=$cycle; } } $rr=''; if (( $cdown)&($now<$start)){ $rr.=str_replace("$1",plugin_ctimer_fmt($start-$now),PLUGIN_CTIMER_CDOWN); // CountDown } if (($start<=$now)&($now<=$end)){ if ( $past){ $rr.=str_replace("$1",plugin_ctimer_fmt($now-$start),PLUGIN_CTIMER_PAST); // Past } if ($remain){ $rr.=str_replace("$1",plugin_ctimer_fmt($end-$now ),PLUGIN_CTIMER_REMAIN); // Remain } } if ($rr!=''){$rr=$mess0.$rr;}; return ($rr); } function plugin_ctimer_fmt($p){ $r=''; if ($p>3600){ $ph=strval(intval($p/3600)); $r=str_replace("$1",$ph,PLUGIN_CTIMER_HOUR); } $pm=strval(intval(($p%3600)/60)); $r.=str_replace("$1",$pm,PLUGIN_CTIMER_MINUTE); return($r); } ?> ***コメント [#naf8d900] - 迅速な対応に本当に感謝します。 -- [[aromatherapy]] &new{2012-05-30 (水) 06:58:32}; - 周期開始の判定が誤っていたので修正&関数の整理 すみません -- [[asato]] &new{2012-05-30 (水) 07:52:53}; - 修正と関数の整理ありがとうございます!いえ、私は全く解らないので、すごく助かっています。 -- [[aromatherapy]] &new{2012-05-31 (木) 03:47:08}; - cs wiki > http://cswiki.jp/ さんを使っているんですが、完成したプラグインの導入を運営様にリクエストしたいのですが、動作のサンプルを見る事は可能ですか。 -- [[aromatherapy]] &new{2012-06-01 (金) 08:47:27}; #comment
テキスト整形のルールを表示する