picalについて


投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2013/1/16 15:21
katsumi  新米   投稿数: 14

ごぶさたしてます。いつも助けていただいてありがとうございます。最近picalをいじっています。そこでつまづいているところがありましてアドバイスをいただけると助かるのですが。
picalの予定の詳細ページ、例えば
http://www.e-kaiwa.net/modules/piCal/index.php?smode=Daily&action=View&event_id=0000000784&caldate=2013-1-16
このページのテンプレートにuidがアサイン?されていないので<{$uid}>みたいにuidを呼び出せませんか?index.phpをいじればいいようですが、いまひとつわかりません。(index.phpの187行あたり)よろしくお願いします。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/1/17 10:11 | 最終変更
なーお  長老   投稿数: 1744

katsumiさん、こんにちは。

取得したいユーザーidは、投稿者のuidですか? それともアクセスユーザーのuidですか?

どんな表示のために取得したいのかを書いていただければ、アクションを起こしやすいのですが・・ 目的がわからないと遠回りしちゃうかもしれないので。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/1/17 10:23
katsumi  新米   投稿数: 14

こんにちは。いつもご無理を言ってすいません。
取得したいのは投稿者のuidです。
なぜそれが取得したいのかというと、そのページにmileageモジュールの”ポイントを他のユーザーに送信するためのボタン”を埋め込みたいのですが(smarty)そのためには送り先のユーザーIDが必要だからです。
堂かよろしくお願いします。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/1/17 10:52
なーお  長老   投稿数: 1744

katsumiさん

取得したいのは、投稿イベントの投稿者のuidですね。

ソースみているのですが、class/piCal.phpで、function get_schedule_view_html( $for_print = false ) で取得した中には当然uidはあるのですが、 この関数がhtmlを返す仕様になっているため、簡単にはいかないですね。。

関数をハックしちゃうというのもアリですが、どこか思わぬところに影響を与えそうで躊躇します。

ソースいじらずに、smartyプラグインを書くという手もあるので、その辺も含めて考えてみます。 時間をください。

投票数:2 平均点:10.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013/1/17 11:09
katsumi  新米   投稿数: 14

どうもありがとうございます。
いつも素人判断で適当にハックしちゃってますが、それってけっこう危険なことなんですね。セキュリティホールとか大丈夫かな。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/1/19 10:26 | 最終変更
なーお  長老   投稿数: 1744

katsumiさん、こんにちは。

遅くなりましたが、簡単なsmartyプラグインを書いてみました。

XCL限定です:-P

テンプレートからsmartyのfunctionプラグインを呼ぶことでuidの変数にアサインし、同じテンプレート上でその変数を使う、という流れです。

function.pical_eventuser.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
 
/*
 * function.pical_eventuser.php 2013-01-19 by naao
 * Smarty plugin
 * -------------------------------------------------------------
 * Type:     function
 * Name:     pical_eventuser
 * Purpose:  assign uid of specified event_id on pical_event
 * -------------------------------------------------------------
 */
function smarty_function_pical_eventuser( $params, $smarty )
{
    $root = XCube_Root::getSingleton();
    $db = $root->mController->getDB();
 
    $sql = "SELECT uid FROM ".$db->prefix('pical_event'). " WHERE id=".(int)$params['event_id'];
 
    $result = $db->query($sql);
    list($uid) = $db->fetchRow($result);
 
    $smarty->assign( $params['var'] , (int)$uid ) ;
 
}
?>

これを、(html側でもtrust側でもどちらかの)smartyフォルダに放り込んでおき、「pical_event_detail.html」テンプレートに

Everything is expanded.Everything is shortened.
 
 
<{pical_eventuser var=uid event_id=$com_itemid}>
<{$uid}>

と記載してみてください。 uidの数値が取れると思います。

var=uid の部分は、アサインする変数名ですので、もし$uidという変数が使われているような場面では、これを他の変数に変更、例えばvar=event_uid と換えることで、<{$event_uid}> で引けます。

このあとは、他のプラグインにパイプで渡すなり、ご自由にどうぞ。 ;-)

(追伸)
ハックをお勧めしないのは、X-updateで上書きされるため管理が煩雑になることと、piCalがあまりに古いモジュールで、ハックすることで潜在的な不都合が表面化する可能性が少しあるかな、というのが理由です。 私自身、コメント統合ハックはしましたが、他はあまり手を入れたくないと思っています。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013/1/19 16:14
katsumi  新米   投稿数: 14

できました! ありがとうございました。
これで思ってたことができます。
実は、ハックしすぎで新しいバージョンに上げられなくなってます。
せっかく開発が進んでいるのに使えていません。 :-(
X-updateやX-elFinder使いたいんですけどねぇ。
またそのうちチャレンジします。
今回もほんとうにありがとうございました。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/3/25 14:05
katsumi  新米   投稿数: 14

すいません、一つ質問です。picalのブロックで使われている$event.idなんですが0000001522のようにidの前に0が付いています。これを取って1522にして使いたいのですがどうすればよいでしょうか。ゼロサプレスで消せることはわかってsmartyで<{$event.id|abs}>これで表示はできるのですが実際に使いたいのは
<{if ! 'mileage'|mileageIsTicketMile:$event.id|abs}><{/if}>としたいけど、$event.id|absこの部分がうまく機能しない。何かいい方法はありますか?

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/3/25 17:29 | 最終変更
なーお  長老   投稿数: 1744
<{assign var=event_id_abs value=$event.id|intval}>

としてアサインしておくと、

<{$event_id_abs}>

で引けますから、それをmileage内の記述に渡せばOKでしょう。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013/3/25 17:56
katsumi  新米   投稿数: 14

できました!smartyって便利ですね。ありがとうございました。

投票数:0 平均点:0.00
返信する

このトピックに投稿する

題名
ゲスト名
投稿本文
  条件検索へ