diff --git a/.htaccess b/.htaccess
index 68a5d3209..4211d80b3 100644
--- a/.htaccess
+++ b/.htaccess
@@ -22,7 +22,9 @@ RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/(rss|atom|api)$ ./index.php?vid=$1&
# trackback
RewriteRule ^([0-9]+)/(.+)/trackback$ ./index.php?document_srl=$1&key=$2&act=trackback [L]
+RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ ./index.php?mid=$1&document_srl=$2&key=$3&act=trackback [L]
RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ ./index.php?vid=$1&document_srl=$2&key=$3&act=trackback [L]
+RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ ./index.php?vid=$1&mid=$2&document_srl=$3&key=$4&act=trackback [L]
# administrator page
RewriteRule ^admin/?$ ./index.php?module=admin [L]
diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php
index 0c08c8e16..9b090458e 100644
--- a/classes/context/Context.class.php
+++ b/classes/context/Context.class.php
@@ -1125,7 +1125,9 @@ class Context {
'act.mid' =>$is_feed?"$mid/$act":'',
'act.mid.vid'=>$is_feed?"$vid/$mid/$act":'',
'act.document_srl.key' =>($act=='trackback')?"$srl/$key/$act":'',
- 'act.document_srl.key.vid'=>($act=='trackback')?"$vid/$srl/$key/$act":''
+ 'act.document_srl.key.mid'=>($act=='trackback')?"$mid/$srl/$key/$act":'',
+ 'act.document_srl.key.vid'=>($act=='trackback')?"$vid/$srl/$key/$act":'',
+ 'act.document_srl.key.mid.vid'=>($act=='trackback')?"$vid/$mid/$srl/$key/$act":''
);
$query = $target_map[$target];
diff --git a/modules/trackback/lang/lang.xml b/modules/trackback/lang/lang.xml
index aff0a2870..ed0fe6ead 100644
--- a/modules/trackback/lang/lang.xml
+++ b/modules/trackback/lang/lang.xml
@@ -200,4 +200,8 @@
-
\ No newline at end of file
+ -
+
+
+
+
diff --git a/modules/trackback/trackback.controller.php b/modules/trackback/trackback.controller.php
index 1075109c0..8a08d0c3e 100644
--- a/modules/trackback/trackback.controller.php
+++ b/modules/trackback/trackback.controller.php
@@ -97,7 +97,7 @@
$document_srl = Context::get('target_srl');
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
- if(!$oDocument->isExists() || !$oDocument->getSummary()) return new Object();
+ if(!$oDocument->isExists()) return new Object();
if($oDocument->getMemberSrl() != $logged_info->member_srl) return new Object();
// Add a link sent yeokingeul
$oDocumentController = &getController('document');
@@ -278,22 +278,22 @@
*/
function sendTrackback($oDocument, $trackback_url, $charset) {
$oModuleController = &getController('module');
+
// Information sent by
$http = parse_url($trackback_url);
+
$obj->blog_name = str_replace(array('<','>','&','"'), array('<','>','&','"'), Context::getBrowserTitle());
$oModuleController->replaceDefinedLangCode($obj->blog_name);
$obj->title = $oDocument->getTitleText();
$obj->excerpt = $oDocument->getSummary(200);
$obj->url = getFullUrl('','document_srl',$oDocument->document_srl);
+
// blog_name, title, excerpt, url charset of the string to the requested change
if($charset && function_exists('iconv')) {
foreach($obj as $key=>$val) {
$obj->{$key} = iconv('UTF-8',$charset,$val);
}
}
- // written information sent to socket
- if($http['query']) $http['query'].="&";
- if(!$http['port']) $http['port'] = 80;
$content =
sprintf(
@@ -306,42 +306,27 @@
urlencode($obj->blog_name),
urlencode($obj->excerpt)
);
- if($http['query']) $content .= '&'.$http['query'];
- $content_length = strlen($content);
- // header by
- $header =
- sprintf(
- "POST %s HTTP/1.1\r\n".
- "Host: %s\r\n".
- "Content-Type: %s\r\n".
- "Content-Length: %s\r\n\r\n".
- "%s\r\n",
- $http['path'],
- $http['host'],
- "application/x-www-form-urlencoded",
- $content_length,
- $content
- );
- if(!$http['host']||!$http['port']) return new Object(-1,'msg_trackback_url_is_invalid');
- // Opens a socket on the target server you want to send
- $fp = @fsockopen($http['host'], $http['port'], $errno, $errstr, 5);
- if(!$fp) return new Object(-1,'msg_trackback_url_is_invalid');
- // Header information sent by
- fputs($fp, $header);
- // Waiting for the results (in particular the server may not be falling EOF
- while(!feof($fp)) {
- $line = trim(fgets($fp, 4096));
- if(preg_match("/^/i",$line)){
- $error = preg_replace('/[^0-9]/','',$line);
- break;
- }
- }
- // Close socket
- fclose($fp);
- if($error == "0") return new Object(0, 'msg_trackback_send_success');
-
- return new Object(-1, 'msg_trackback_send_failed');
+ $buff = FileHandler::getRemoteResource($trackback_url, $content, 3, 'POST', 'application/x-www-form-urlencoded');
+
+ $oXmlParser = new XmlParser();
+ $xmlDoc = $oXmlParser->parse($buff);
+
+ if($xmlDoc->response->error->body == '0')
+ {
+ return new Object(0, 'msg_trackback_send_success');
+ }
+ else
+ {
+ if($xmlDoc->response->message->body)
+ {
+ return new Object(-1, sprintf('%s: %s', Context::getLang('msg_trackback_send_failed'), $xmlDoc->response->message->body));
+ }
+ else
+ {
+ return new Object(-1, 'msg_trackback_send_failed');
+ }
+ }
}
/**
diff --git a/modules/trackback/trackback.model.php b/modules/trackback/trackback.model.php
index d644c0251..211da4abd 100644
--- a/modules/trackback/trackback.model.php
+++ b/modules/trackback/trackback.model.php
@@ -158,8 +158,8 @@
* @param int $document_srl
* @return string
*/
- function getTrackbackUrl($document_srl) {
- $url = getFullUrl('','document_srl',$document_srl,'act','trackback','key',$this->getTrackbackKey($document_srl));
+ function getTrackbackUrl($document_srl, $mid = NULL) {
+ $url = getFullUrl('', 'mid', $mid, 'document_srl',$document_srl,'act','trackback','key',$this->getTrackbackKey($document_srl));
return $url;
}