API からの getDocumentObject 呼び出し
Posted: 2015年5月22日(金) 20:50
bug かどうかはわかりませんが、気づいた点を。
set_error_handler を設定した プログラムから API - getDocumentObject を呼び出したいのですが、以下のエラーが発生します。
STRICT: 8 Undefined index: mgrRole <modxまでのパス>modx/manager/includes/document.parser.class.inc.php 1987
該当の箇所を確認すると、権限回りの処理が行われているようです。
set_error_handler を使わなければいいのですが。。
他の方法として getIdFromAlias から id を取得し、getDocument でも試したのですが、同様に $_SESSION['mgrRole'] を参照するところでエラーとなりました。
よって、強引ですが index.php を include 後に、$_SESSION['mgrRole'] を設定して回避しました。
API だからすべての権限がないとねと言い聞かせながら。。
set_error_handler を設定した プログラムから API - getDocumentObject を呼び出したいのですが、以下のエラーが発生します。
STRICT: 8 Undefined index: mgrRole <modxまでのパス>modx/manager/includes/document.parser.class.inc.php 1987
該当の箇所を確認すると、権限回りの処理が行われているようです。
コード: 全て選択
1986 if($docgrp) $access .= " OR dg.document_group IN ({$docgrp})";
1987 $access .= " OR 1='{$_SESSION['mgrRole']}'";
コード: 全て選択
<?php
// エラーハンドラ 開始
function strict_error_handler($errno, $errstr, $errfile, $errline)
{
echo "STRICT: {$errno} {$errstr} {$errfile} {$errline} ".PHP_EOL;
}
set_error_handler('strict_error_handler');
// エラーハンドラ終了
$_SERVER['DOCUMENT_ROOT'] = '/var/www/modx';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_URI'] = 'http://localhost/';
define('MODX_API_MODE', true);
include $_SERVER['DOCUMENT_ROOT'].'/index.php';
$modx = new DocumentParser();
$modx->db->connect();
$modx->getSettings();
$doc = $modx->getDocumentObject('alias', <path>);
var_dump($doc);
コード: 全て選択
2276 $where = "(sc.id IN ({$ids_str}) {$where_published} AND sc.deleted={$deleted} {$where}) AND (sc.private{$context}=0 {$cond} OR 1='{$_SESSION['mgrRole']}') GROUP BY sc.id ";
2277 $orderby = ($sort) ? "{$sort} {$dir}" : '';
コード: 全て選択
$_SERVER['DOCUMENT_ROOT'] = '/var/www/modx';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_URI'] = 'http://localhost/';
define('MODX_API_MODE', true);
include $_SERVER['DOCUMENT_ROOT'].'/index.php';
$_SESSION['mgrRole'] = 1;
$modx = new DocumentParser();