d3diary のデータ取得について


投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2012/6/25 10:51
nao-pon  新米   投稿数: 4

こんにちは、nao-pon です。

X-elFinder の d3dialy プラグインを作ろうと思っています。

そこで、データの取得方法について教えてください。

  • アクセスユーザーの添付ファイル全一覧(D3diaryPhoto オブジェクト?)
  • アクセスユーザー権限でのカテゴリ一覧 (cid と カテゴリ名)
  • アクセスユーザー権限でのサブカテゴリ一覧 (cid とカテゴリ名)
  • 特定カテゴリの添付ファイル全一覧(D3diaryPhoto オブジェクト?)

これだけ取れれば多分いけると思います。

'/class/diary.class.php'
'/class/category.class.php'
'/class/d3diaryConf.class.php'
'/class/photo.class.php'

を include してごにょごにょすればいいのかなと思いつつ、聞いた方が早いかなと・・・。 :-D

ということで、お手の空いた時でいいので、よろしくお願いします。 :-)

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012/6/25 12:40 | 最終変更
なーお  長老   投稿数: 1746

nao-ponさん、こんにちは。

X-elfinderのd3diaryプラグイン作成いただけるとのことでありがとうございます! 全部自分でやらなきゃいけないだろうな、なんて思っていたので、すごく嬉しいです。 :-)

で、ずばり参考にすべきソースはどこか? ということをまずお伝えすると、 main/photolist.php です。

この中で、

180
181
    list( $photolist, $photonavi ) = $func->get_photolist
        ( $arr_req_uids, $uid, $mod_config['block_diarynum'], $offset, $yd_param );

というのがあります。 $funcは、冒頭で作られた

$func =& $d3dConf->func ;

になりますので、class/func.class.phpソースの1202行名から

function get_photolist( $req_uid=array(), $uid, $max_entry, $offset=0, $params=array() ){

があります。ブロックからもコールされる共通メソッドです。

このメソッドにパラメータを渡せば、そのまま一覧は取得できそうですね。 categoryやらuidやらを渡さないといけないので面倒ではありますが、元々nao-ponさんのソースを参考にsingletonパターンで各オブジェクトを参照できちゃうので、追っていけばわかっていただけるかもですね。

photolist.phpのほうで、photolistには関係無さそうな「yd_xxxx」アサインが数多くありますが、これはd3diaryの右メニューバー用ですので無視していただいて大丈夫です。

さて問題は書き込みのほうですが、、
d3diaryのphotoテーブルにはカテゴリーフィールドがありません。 あくまで記事に添付された画像なので、記事に紐付けされたカテゴリーということになります。

で、X-elfinderで画像をアップするとき、どの記事に紐付け、とかは決まってないですよね。。 カテゴリー毎にフォルダを作るとしても、そのフォルダに入れても実際にどの記事に紐付けするか決まらないと、DBに格納できない、というジレンマが・・ :-(

その辺のソースは、main/index.phpの下のほうにあるんですが、previewとか絡んでいて、この部分は相当にごちゃごちゃしたソースです。 一旦仮にcategory「0」でDBに格納するのが無難かもですね。bidも「0」かな。。

もう一つ、カテゴリー番号cidは、10000未満は各個人カテゴリー用で、同じcidでuidが違うものが入ってくるので要注意です。 cidが10000以上は共有カテゴリーなので、uid=0しか入ってきません。

一応そんな感じなんですが、どうにかなりますかね、かなーり面倒な感じがするんですけど・・ m(..)m

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/6/25 13:38 | 最終変更
なーお  長老   投稿数: 1746
引用:

アクセスユーザー権限でのカテゴリ一覧 (cid と カテゴリ名)

これは、class/func.class.php の203行め

引用:

function get_categories($req_uid, $uid, $block=false){

で取得できます。 $req_uid==0なら、全ユーザーのカテゴリー配列を取得できるような気がします。

なお、サブカテゴリーは上記メソッドで取得した配列中、$catopt['subcat']==1 になっているカテゴリーで、親カテゴリーは直前の $catopt['subcat']==0 のカテゴリーでして、ちょっと普通の作りになっていないので面倒かもしれません。

 ↓(追加情報)

main/index.php の165行目付近
class/category.class.php の$categoryインスタンスを取得して

引用:

$category->uid

$category->cid

をセットして

引用:

$category->getchildren($mydirname);

引用:

$category->children

にて取得できます。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/6/25 22:41
nao-pon  新米   投稿数: 4

naao さん、詳細な説明ありがとうございます。

まずは、読み出し(参照)から書いてみようと思っています。(というか書き込みまでは考えていなかったです。 :-P )

書き込みは、記事IDとの紐付けが必要なので、このあたりはまだどのような実装にするか考えていないです。

記事毎にフォルダー分けのは現実的ではないですし、やっぱり記事作成時の登録前に(新規フォームを開いた時点で)記事IDを発行しないと難しいかも知れませんね。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/6/25 23:57
なーお  長老   投稿数: 1746

nao-ponさん

引用:

まずは、読み出し(参照)から書いてみようと思っています。(というか書き込みまでは考えていなかったです。

無理言っちゃってスミマセン。
書き込みは、記事IDとの紐付けなのでかなり難しいですね。

d3diary側の仕組みを変更する前提で、何とかできる方法を見つけられればと思います。 例えば、X-elfinderでd3diary用の画像を転送した時には、pidだけ決定してbid=0でphotoテーブルに書きこんでおき、 記事を書いた後か、記事フォーム上でそれを選択できる仕組みを入れる、とかですね。

いずれにしても、書き込みは後回しでお願いします。
読み込みだけあれば、あとは自分で色々試したりしているうちに、良いアイデアが浮かぶかもしれません。 :-)

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/6/26 22:14
nao-pon  新米   投稿数: 4

d3diary への改変リクエストを通して頂きありがとうございます。

まだ、読み出しだけですが、とりあえずの版を X-elFinder の github に投入しました。

使って頂き、不具合や改善点などありましたら、また教えてください。 :-)

https://github.com/nao-pon/xelfinder

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

nao-ponさん

わお! もう出来あがったんですか! :-o

ということで、早速試させていただいています。
これを使うと、d3diaryでアップした日記の添付画像を、いとも簡単に本文に挿入したり、自分の別の日記に貼ったり、サイト内のフォーラムなど別のモジュールで再利用できますね! ;-)

これは本当に素晴らしいです。改めて、X-elfinderの可能性を感じました。

これから、d3diaryのバージョン更新作業に入ります。(0.23→0.24)

(追記)
X-elfinder のバージョンは、0.25以上でこれが有効になる、という記述を追加しますが、それでOKでしょうか?

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2012/6/27 0:28
nao-pon  新米   投稿数: 4

まだ、バグがあるかも知れませんが・・・ :-D

とりあえず動けば、まずは世に出してみんなに使ってもらって、フィードバックを得たいという気持ちです。

その代わりに、バグ修正は迅速にしなくてはいけないという自分なりのお約束です。 :-D

引用:

X-elfinder のバージョンは、0.25以上でこれが有効になる、という記述を追加しますが、それでOKでしょうか?

はい、それで OK です。先ほど Version 0.25 に更新しました。 ;-)

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012/6/27 10:42
なーお  長老   投稿数: 1746

nao-ponさん、どうもです!

引用:

とりあえず動けば、まずは世に出してみんなに使ってもらって、フィードバックを得たいという気持ちです。

その代わりに、バグ修正は迅速にしなくてはいけないという自分なりのお約束です。

ありがとうございます。
対応プラグインが増えれば、それだけ使用者も増えますからね。相乗効果ですね。 :-)

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

このトピックに投稿する

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