私はGoogle Apps Shortlink Apiを使用してShortlinkを作成するモジュールを作成しようとしています(まだラボにあるので文書化されていません)。
これがスクリプトです(これもhttp://drupalbin.com/18667にあります)。
function drapps_shortlinks_createlink($url, $verbose = FALSE, $bypass_validattion = FALSE) {
//loads ShortLink Class
include_once('ShortLink.php');
// URL validation with 2 clauses:
// 1 - FILTER_VALIDATE_URL -> tests if the url is well constructed
// 2 - @fopen -> tests if the URL actually exist
if (!filter_var($url, FILTER_VALIDATE_URL) OR !@fopen($url,"r")) {
// URL not valid or inexistant, so bail
if ($verbose) {
$msg = 'Invalid URL';
return $msg;
}
else {
return;
}
}
// Get configuration values
$domain = 'mydomain.com';
$key = 'someHMACKEY';
$user = 'username@mydomain.com';
// Check if user admin has configured DRAPPS and DRAPPS ShortLinks
if (!$domain OR !$key OR !$user) {
//Something is missing so bail
if ($verbose) {
$msg = 'DRAPPS Shortlinks is not configured. Please go to <a href="' . base_path() . 'admin/settings/drapps">admin/settings/drapps</a>';
return $msg;
}
else {
return;
}
}
//PHP Google Apps ShortLinks Implementation
$slink = new ShortLink($domain, $key, $user);
$r = clone $slink->pub($url);
$status = $r->status;
if ($status == 'ok') {
return $r;
}
elseif ($verbose) {
return $status;
}
else {
return;
}
}
このスクリプトは、SHortLink.phpと呼ばれるカスタム作成されたクラスを使用します。
編集:この関数は、Drupalのnode-news.tpl.phpで次のように呼び出されます。
...
<div class="test"><?php print drapps_shortlinks_createlink($url, TRUE, FALSE); ?></div>
...
test.php
<?php
$path = "path/to/drupal"; //changed for security reasons
include_once($path . 'sites/all/modules/drapps_shortlinks/drapps_shortlinks.inc');
$url = 'http://www.google.com/';
print drapps_shortlinks_createlink($url, TRUE, FALSE);
?>
私がに行くときhttp://www.mydomain.com/test/test.php、スクリプトは正常に動作しますし、私はGoogleからの「OK」の応答を取得します。短いリンクが作成され、正常に動作します。ニュースノードに移動すると、スクリプトは正常に実行されますが、Googleは403(禁止)エラーで応答します。
EDIT_1:このスクリプトは機能します。ですから、この背後にある共鳴は、スクリプト自体ではなくdrupalに関係していると考えることができます。
EDIT_2:これの背後にある本当の質問は次のとおりだと思います:drupalから呼び出されたときにスクリプトが異なる動作をする理由は何ですか?ブレーンストーミング、アイデア、ヒント、トラブルシューティングの方法など、役立つと思われるあらゆる情報をいただければ幸いです。
print function function_name(..)
)