summary refs log tree commit diff stats
path: root/xmlrpc.php
blob: 9ca47c4d62583cadac225acd61fa817c4468cd21 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
/*
       444444444  
      4::::::::4  
     4:::::::::4  
    4::::44::::4  
   4::::4 4::::4   Four Island
  4::::4  4::::4  
 4::::4   4::::4   Written and maintained by Starla Insigna
4::::444444::::444
4::::::::::::::::4  xmlrpc.php
4444444444:::::444
          4::::4   Please do not use, reproduce or steal the
          4::::4   contents of this file without explicit
          4::::4   permission from Hatkirby.
        44::::::44
        4::::::::4
        4444444444
*/

require('headerproc.php');

include('../security/config.php');
include('includes/db.php');
include('includes/xmlrpc/xmlrpc.inc');
include('includes/xmlrpc/xmlrpcs.inc');
include('includes/functions.php');

function ping($xmlrpcmsg)
{
	$from = $xmlrpcmsg->getParam(0)->scalarVal();
	$to = $xmlrpcmsg->getParam(1)->scalarVal();

	if (preg_match('/^http:\/\/w?w?w?\.?fourisland\.com\/blog\/([-a-z0-9]+)\/$/',$to))
	{
		$slug = preg_replace('/^http:\/\/w?w?w?\.?fourisland\.com\/blog\/([-a-z0-9]+)\/$/','$1',$to);

		$getpost = "SELECT * FROM updates WHERE slug = \"" . $slug . "\"";
		$getpost2 = mysql_query($getpost);
		$getpost3 = mysql_fetch_array($getpost2);

		if ($getpost3['slug'] == $slug)
		{

			$c = curl_init();
			curl_setopt($c, CURLOPT_URL, $from);
			curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($c, CURLOPT_HEADER, false);
			$page_data = curl_exec($c);
			curl_close($c);

			if (stripos($page_data,$to) !== FALSE)
			{
				if (preg_match('/<TITLE>([^>]+)<\/TITLE>/i',$page_data,$matches))
				{
					$title = $matches[1];
				} else {
					$title = $from;
				}

				$getping = "SELECT * FROM pingbacks WHERE post_id = " . $getpost3['id'] . " AND url = \"" . mysql_real_escape_string($from) . "\"";
				$getping2 = mysql_query($getping);
				$getping3 = mysql_fetch_array($getping2);

				if ($getping3['url'] == $from)
				{
					return new xmlrpcresp(0, 48, "Target uri cannot be used as target");
				} else {
					$insping = "INSERT INTO pingbacks (post_id,title,url) VALUES (" . $getpost3['id'] . ",\"" . mysql_real_escape_string($title) . "\",\"" . mysql_real_escape_string($from) . "\")";
					$insping2 = mysql_query($insping);
					recalcPop($getpost3['id']);

					return new xmlrpcresp(new xmlrpcval("YAY! Your Pingback has been registered!", "string"));
				}
			} else {
				return new xmlrpcresp(0, 17, "Source uri does have link to target uri");
			}
		} else {
			return new xmlrpcresp(0, 32, "Target uri does not exist");
		}
	} else {
		return new xmlrpcresp(0, 33, "Target uri cannot be used as target");
	}
}

$s = new xmlrpc_server(array(
			"pingback.ping" => array("function" => "ping")));

?>