背景:WAMPスタック(Server 2008、Apache 2.4.2、MySQL 5.5.27、PHP 5.4.5)でのMediaWiki 1.19.1、Graphviz 2.28.0、Extension:GraphViz0.9の操作。MediaWikiのGraphViz拡張機能を使用してGraphvizダイアグラムからクリック可能な画像をレンダリングする基本機能については、すべてがうまく機能しており、期待どおりです。
問題:画像マップのリンクがMediaWikiページリンクテーブルに追加されていません。追加されない理由はわかりますが、「ここにリンクするもの」機能でリンクをたどる方法がない場合は問題になります。
望ましい解決策:GraphViz拡張機能の図の処理中に、生成された.mapファイルを使用して、ページに追加するwikilinkのリストを作成し、MediaWikiによって取得され、pagelinksテーブルに追加されます。
詳細:このGraphViz拡張コード:
<graphviz border='frame' format='png'>
digraph example1 {
// define nodes
nodeHello [
label="I say Hello",
URL="Hello"
]
nodeWorld [
label="You say World!",
URL="World"
]
// link nodes
nodeHello -> nodeWorld!
}
</graphviz>
この画像を生成します:
そして、サーバー上の対応する.mapファイル内のこのイメージマップコード:
<map id="example1" name="example1">
<area shape="poly" id="node1" href="Hello" title="I say Hello" alt="" coords="164,29,161,22,151,15,137,10,118,7,97,5,77,7,58,10,43,15,34,22,31,29,34,37,43,43,58,49,77,52,97,53,118,52,137,49,151,43,161,37"/>
<area shape="poly" id="node2" href="World" title="You say World!" alt="" coords="190,125,186,118,172,111,152,106,126,103,97,101,69,103,43,106,22,111,9,118,5,125,9,133,22,139,43,145,69,148,97,149,126,148,152,145,172,139,186,133"/>
</map>
その画像マップファイルから、hrefとタイトルを抽出して次のようなwikiリンクを作成できるようにしたいと思います。
[[Hello|I say Hello]]
[[World|You say World!]]
その.mapファイルは本質的にXMLであるため、XPATHを使用してファイルを照会できると推測していますが、それは単なる推測です。PHPは私の最強の分野ではなく、XML / XPATHオプションを使用するための最善のアプローチ、またはそれがファイルからその情報を取得するための最善のアプローチであるかどうかもわかりません。
.mapファイルからwikilinkのコレクション/配列を取得したら、GraphViz.php拡張ファイルをハックしてページのコンテンツに追加し、pagelinksテーブルに追加できると確信しています。
進捗状況:質問を送信した直後に、ラバーダックの問題解決の瞬間が少しありました。画像マップにデータが適切に形成されているので、XPATHがおそらくその方法であることに気づきました。特に、マップファイルの内容がローカルの文字列変数に格納されたままであることがわかったため、必要なデータを取得できるようにするのは非常に簡単でした。
$xml = new SimpleXMLElement( $map );
foreach($xml->area as $item) {
$links .= "[[" . $item->attributes()->href . "|" . $item->attributes()->title . "]]";
}
最終的な解決策:以下の私の受け入れられた答えを参照してください。ご覧いただきありがとうございます。私はあなたが提供できるどんな援助または指示にも感謝します。