OSDN Git Service

SpamCheckについて微調整
[nucleus-jp/nucleus-plugins.git] / trunk / NP_TrackBack / trackback / autodetect.php
1 <?php
2         $strRel = '../../../'; 
3         include($strRel . 'config.php');
4         
5         global $manager, $CONF;
6         $action = $manager->addTicketToUrl($CONF['ActionURL'] . '?action=plugin&name=TrackBack&type=detect')    
7 ?>
8         var xmlhttp = false;
9         var inProgress = false;
10         
11         var TrackbackAction = "<?php echo $action; ?>";
12         var TrackbackSource = new Array;
13         var TrackbackName   = new Array;
14         var TrackbackURL    = new Array;
15         
16         var LookupTable     = new Array;
17         var Lookup                      = '';
18         var countTotal                  = 0;
19         
20         var regexp = /href\s*=\s*([\"\'])(http:[^\"\'>]+)([\"\'])/ig;
21                 
22                 
23         function tbParseLinks ()
24         {
25                 oinputbody = document.getElementById('inputbody');
26                 oinputmore = document.getElementById('inputmore');
27                 full = oinputbody.value + ' ' + oinputmore.value;
28
29                 while (vArray = regexp.exec(full)) 
30                 {
31                         unused = true;
32                         
33                         if (Lookup == vArray[2])
34                                 unused = false;
35
36                         for (var i = 0; i < LookupTable.length; i++)
37                                 if (LookupTable[i] == vArray[2])
38                                         unused = false;
39
40                         for (var i = 0; i < TrackbackSource.length; i++) 
41                                 if (TrackbackSource[i] == vArray[2])
42                                         unused = false;
43                         
44                         if (unused == true)
45                                 LookupTable.push(vArray[2]);
46                 }
47         }
48         
49         function tbAutoDetect()
50         {
51                 if (LookupTable.length > 0)
52                 {
53                         tbBusy(true);
54
55                         if (!inProgress)
56                         {
57                                 // We have something to do and the connection is free
58                                 Lookup = LookupTable.shift();
59                                 inProgress = true;
60         
61                                 // The reason we use GET instead of POST is because
62                                 // Opera does not properly support setting headers yet,
63                                 // which is a requirement for using POST.
64                                 xmlhttp.open("GET", TrackbackAction + "&tb_link=" + escape(Lookup), true);
65                                 xmlhttp.onreadystatechange = tbStateChange;
66                                 xmlhttp.send('');
67                         }
68                         else
69                         {
70                                 // Still busy... simply wait until next turn
71                         }
72                 }
73                 else
74                 {
75                         // Nothing to do, check back later...
76                         if (Lookup == '')
77                         {
78                                 tbBusy(false);
79                         }
80                 }
81         }
82
83         function tbStateChange ()
84         {
85                 if (inProgress == true && xmlhttp.readyState == 4 && xmlhttp.status == 200) 
86                 {
87                         eval (xmlhttp.responseText);
88                         inProgress = false;
89                         Lookup = '';
90                 }
91         }
92
93         function tbBusy(toggle)
94         {
95
96                 if (toggle)
97                 {
98                                 document.forms[0].discoverit.style.color = "#888888";
99                                 document.forms[0].discoverit.style.fontWeight="bold";
100                                 document.forms[0].discoverit.value = "  Loading ....";
101                 }
102                 else
103                 {
104                                 document.forms[0].discoverit.style.color = "#888888";
105                                 document.forms[0].discoverit.style.fontWeight="bold";
106                                 document.forms[0].discoverit.value = "  D o n e !  ";
107                 }
108
109                 o = document.getElementById('tb_busy');
110                 
111                 if (o)
112                 {
113                         if (toggle)
114                                 o.style.display = '';
115                         else
116                                 o.style.display = 'none'
117                 }
118         }
119
120         function tbDone(source, url, name)
121         {
122                 TrackbackSource.push(source);
123                 TrackbackURL.push(url);
124                 TrackbackName.push(name);
125                         
126 //              var parent = document.getElementById('tb_auto');
127                 var amount = document.getElementById('tb_url_amount');
128                 var subtitle = document.getElementById('tb_auto_title');
129                 var listtable = document.getElementById('tb_ping_list');
130
131                 if (url != '')
132                 {
133 //                      count = parseInt(amount.value);
134                         count = countTotal;
135
136                         mycurrent_row=document.createElement("TR");
137
138                         checkbox = document.createElement("input");
139                         checkbox.type = 'checkbox';
140                         checkbox.name = "tb_url_" + count;
141                         checkbox.id = "tb_url_" + count;
142                         checkbox.value = url;
143                         checkbox.defaultChecked = true;
144
145                         label = document.createElement("label"); 
146                         label.htmlFor = "tb_url_" + count;
147                         label.title = source;
148                         
149                         text = document.createTextNode(name);
150                         label.appendChild(text);
151                         
152                         
153 //                      br = document.createElement("br"); 
154
155 //                      subtitle.innerHTML = "Auto Discovered Ping URL's:";
156 //                      parent.appendChild(checkbox);
157 //                      parent.appendChild(label);
158
159                         mycurrent_cell=document.createElement("TD");
160                         mycurrent_cell.appendChild(checkbox);
161                         mycurrent_row.appendChild(mycurrent_cell);
162                         mycurrent_cell=document.createElement("TD");
163                         mycurrent_cell.appendChild(label);
164                         mycurrent_row.appendChild(mycurrent_cell);
165
166                         //utf8?
167                         checkboxU = document.createElement("input");
168                         checkboxU.type = 'checkbox';
169                         checkboxU.name = "tb_url_" + count + "_utf8";
170                         checkboxU.id = "tb_url_" + count + "_utf8";
171                         checkboxU.defaultChecked = false;
172
173                         labelU =        document.createElement("label"); 
174                         labelU.htmlFor = "tb_url_" + count + "_utf8";
175                         labelU.title = "utf8?";
176
177                         text = document.createTextNode("utf8?");
178                         labelU.appendChild(text);
179                         mycurrent_cell=document.createElement("TD");
180                         mycurrent_cell.appendChild(checkboxU);
181                         mycurrent_cell.appendChild(labelU);
182                         mycurrent_row.appendChild(mycurrent_cell);
183
184
185                         if(url.indexOf("<?php echo $CONF['IndexURL'];?>",0) != -1)
186                         {
187                                 //local?
188                                 checkboxL = document.createElement("input");
189                                 checkboxL.type = 'checkbox';
190                                 checkboxL.name = "tb_url_" + count + "_local";
191                                 checkboxL.id = "tb_url_" + count + "_local";
192                                 checkboxL.defaultChecked = true;
193
194                                 labelL =        document.createElement("label"); 
195                                 labelL.htmlFor = "tb_url_" + count + "_local";
196                                 labelL.title = "local?";
197
198                                 text = document.createTextNode("local?");
199                                 labelL.appendChild(text);
200 //                              parent.appendChild(checkboxL);
201 //                              parent.appendChild(labelL);
202                                 mycurrent_cell=document.createElement("TD");
203                                 mycurrent_cell.appendChild(checkboxL);
204                                 mycurrent_cell.appendChild(labelL);
205                                 mycurrent_row.appendChild(mycurrent_cell);
206
207                         }
208                         else
209                         {
210                                 mycurrent_cell=document.createElement("TD");
211                                 mycurrent_row.appendChild(mycurrent_cell);
212                         }
213 //                      parent.appendChild(br);
214                         listtable.appendChild(mycurrent_row);
215
216 //                      amount.value = count + 1;
217                         countTotal++;
218                         amount.value = countTotal;
219                 }
220                 else
221                 {
222                         subtitle.innerHTML = "No Trackbak URLs.";
223                 }
224         }
225
226         function tbSetup() 
227         {
228                 try 
229                 {
230                         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
231                 } 
232                 catch (e) 
233                 {
234                         try 
235                         {
236                                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
237                         } 
238                         catch (e) 
239                         {
240                                 xmlhttp = false;
241                         }
242                 }
243
244                 if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
245                 {
246                         xmlhttp = new XMLHttpRequest();
247                 }
248                 
249                 setInterval ('tbParseLinks();', 500);
250                 setInterval ('tbAutoDetect();', 500);
251                 
252                 if (window.onloadtrackback)
253                         window.onloadtrackback();                               
254         }
255
256         function AddStart()
257         {
258                 var strString = "";
259                 strString = document.forms[0].trackback_ping_url.value;
260                 strArray = strString.split("\n");
261                                 for (var i = 0; i < strArray.length; i++)
262                                 {
263                                         strTemp = trim(strArray[i]);
264                                         if (strTemp != "" && strTemp.match(/^http/))
265                                         {
266                                                 tbDone(strTemp,strTemp,strTemp);
267                                         }
268                                 }
269                 document.forms[0].trackback_ping_url.value = '';
270         }
271
272         function trim(string) 
273         { 
274                 return string.replace(/(^\s*)|(\s*$)/g,''); 
275         }