こんにちは。
まだ原因が分かりません。。。怪しい拡張は全て切ってみたのですが、状況は変わりません。
ソースを追っているのですが、次の部分に引っかかっています。
/manager/processors/user_documents_permissions.class.php 内に
$sql = "SELECT DISTINCT sc.id
FROM $tblsc sc
LEFT JOIN $tbldg dg on dg.document = sc.id
LEFT JOIN $tbldgn dgn ON dgn.id = dg.document_group
WHERE sc.id = $document
AND (1='' OR NOT(dgn.private_memgroup<=>1)".(!$docgrp ? "":" OR dg.document_group IN ($docgrp)").");";
こういうSQLがあります。削除時には user_documents_permissions.class.php 内の権限チェック関数が実行され、このSQL文によってチェックされています。
最後のdg.document_group IN ($docgrp)の条件のみならば、ログインユーザが権限をもつドキュメントのIDの一覧が戻ってきます。これと sc.id = $document とのANDをとって対象になっているドキュメントのIDのみ返ってくればそのドキュメントへの権限ありと判定しています。
WHERE句の中に NOT(dgn.private_memgroup<=>1) という節があります。(テーブルの接頭字を触っていないならば)modx_documentgroup_namesのprivate_memgroupを見ているみたいなのですが、ここが問題になっているみたいなのです。
このテーブルの意味がよく分からないのですが、ウェブユーザグループ、マネージャーユーザグループに存在する各グループがプライベート指定になっているかどうかを保持しているみたいです。先の NOT(dgn.private_memgroup<=>1) でorを取っていますので、このテーブル内の各ユーザグループの設定値は1である必要があると思いますが、全て0になっていました。select * from modx_documentgroup_names; などとすれば設定値を確認できます。
何かを設定したときに、どこかの段階でこの値が1になるんだと思うのですが、それがどこの設定や操作によるものなのかが分かっていません。私の権限の付け方が何か間違っているのか・・・。編集権は設定できているので間違っていないと思うのですが。。。
お手数でなければ mysql 上でselect * from modx_documentgroup_names; の結果(又はバックアップマネージャーでmodx_documentgroup_namesのみダンプして)を見せていただけないでしょうか?
厚かましいお願いですがよろしくお願いいたします。