管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法  【解決済み】

質問全般・改善要望
返信する
Kenny
メンバー
メンバー
記事: 179
登録日時: 2011年5月28日(土) 13:41

管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法

投稿記事 by Kenny »

MODXバージョン 1.0.20J
PHPのバージョン 7.1.2
データベースのバージョン 5.6.23-log

お世話になります。
表題の通り、Modxの管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法をご教授戴きたく投稿しました。

このような事は可能でしょうか?

どうぞよろしくお願い致します。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法

投稿記事 by yama »

了解です、後ほどお知らせします
http://180221115628-7474.evo.demo.modx.jp/
PHPが少し分かるなら、[!$_SESSION!]とするといろいろ値を表示できます(管理画面要ログイン)
Kenny
メンバー
メンバー
記事: 179
登録日時: 2011年5月28日(土) 13:41

管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法

投稿記事 by Kenny »

Yamaさま

いつもありがとうございます。
拝見させて戴きました。
こうすると、ログインしている人の情報が出るのですね。ありがとうございます。
登録している人全員の情報を出したいのですが、可能でしょうか。
mod_kks
メンバー
メンバー
記事: 31
登録日時: 2017年11月04日(土) 01:31

管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法  【解決済み】

投稿記事 by mod_kks »

どういうケースで使うのかわかりませんが、こんな方法もあります。

コード: 全て選択

$query = 'SELECT modx_manager_users.id,username,fullname,email FROM modx_manager_users INNER JOIN modx_user_attributes ON modx_user_attributes.id = modx_manager_users.id;';
$result = $modx->db->query( $query );
if( $result ) {
   while ( $row = $modx->db->getRow( $result ) ) {
       echo '<p>' . $row['id'] . ':' . $row['username'] . ':' . $row['fullname'] . ':' . $row['email'] . '</p>';
  }
}
雑なコードですが、$modx->db->queryでクエリを投げて直接データベースから情報を引き出す方法になります。ユーザ情報はセンシティブな情報を含むので使い方には注意が必要ですが、取得する内容を限定・制御して利用する分には、こういう方法もアリかと思います。

ログイン名は[prefix]_manager_usersテーブルの「username」カラム、フルネームとメールは[prefix]_user_attributesテーブルの「fullname」と「email」カラムと、それぞれ別のテーブルにあるため、一意で共通となるidを基準にINNER JOIN結合して必要な情報を引き出します。テーブルプレフィックスがデフォルトでなければ、クエリ内のテーブル名を書き換えます。

表側で一覧出力とかしたいような場合は、while内の出力フォーマットを適当に整えてスニペット登録すればどこでも使えるようになるでしょう。
Kenny
メンバー
メンバー
記事: 179
登録日時: 2011年5月28日(土) 13:41

管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法

投稿記事 by Kenny »

mod_kks様

ありがとうございます!
この様な方法があるのですね。ご指摘の通り管理側の情報も全部さらけ出てしまうので注意が必要ですね。

無茶な質問に対して丁重に解説戴きまして本当に有難うございました。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法

投稿記事 by yama »

すいません遅くなりました

コード: 全て選択

$field = 'u.*, ua.*';
$from[] = 'modx_manager_users u';
$from[] = 'LEFT JOIN modx_user_attributes ua ON ua.id = u.id';
$result = $modx->db->select($field, $from);
$tpl = '<p>ID:[+id+] 名前:[+fullname+] メアド:[+email+] 最終ログイン:[+thislogin:date(n月j日 H:i:s)+]</p>';
while ( $row = $modx->db->getRow( $result ) ) {
    unset($row['password'],$row['sessionid']);
    echo $modx->parseText($tpl, $row);
}
最新版だとこう書くこともできます
http://180316215905-28288.evo.demo.modx.jp/
mod_kks
メンバー
メンバー
記事: 31
登録日時: 2017年11月04日(土) 01:31

管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法

投稿記事 by mod_kks »

なるほど、$modx->db->select はパラメタ配列渡し可になってるんですね。
これは便利ですね。ありがとうございます。
Kenny
メンバー
メンバー
記事: 179
登録日時: 2011年5月28日(土) 13:41

管理画面「権限管理」→「ユーザー管理」のそれぞれの情報「ログイン名」「フルネーム」「メールアドレス」をPHPで表示される方法

投稿記事 by Kenny »

Yama様

参考になります!ありがとうございました。
返信する