Tôi đang cố gắng tạo một mô-đun tạo Shortlink bằng Google Apps Shortlink Api (không có giấy tờ kể từ khi nó vẫn còn trong phòng thí nghiệm).
Đây là tập lệnh (cũng tại 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;
}
}
Kịch bản lệnh này sử dụng một lớp được tạo tùy chỉnh có tên là SHortLink.php .
EDIT: Hàm này được gọi trong nút-news.tpl.php của Drupal như thế này:
...
<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);
?>
Khi tôi truy cập http://www.mydomain.com/test/test.php , tập lệnh hoạt động tốt và tôi nhận được phản hồi 'ok' từ google; một liên kết ngắn được tạo ra và nó hoạt động tốt. Khi tôi điều hướng đến một nút tin tức, tập lệnh chạy OK, nhưng Google phản hồi với lỗi 403 (bị cấm).
EDIT_1: CÔNG TRÌNH SCRIPT NÀY. Vì vậy, tôi nghĩ rằng tôi có thể giả định một cách an toàn rằng tiếng vang đằng sau điều này có liên quan đến drupal hơn là chính kịch bản.
EDIT_2: Tôi nghĩ rằng câu hỏi thực sự đằng sau điều này là: Những lý do nào có thể khiến một kịch bản hành xử khác đi khi được gọi từ drupal? Bất kỳ đầu vào nào cũng sẽ được đánh giá cao: động não, ý tưởng, mẹo, phương pháp khắc phục sự cố, bất cứ điều gì bạn nghĩ có thể giúp ích, tôi sẽ thực sự đánh giá cao nó.
print function function_name(..)
)