[ Index ]
 

Code source de GeekLog 1.4.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/public_html/admin/ -> trackback.php (source)

   1  <?php
   2  
   3  /* Reminder: always indent with 4 spaces (no tabs). */                         
   4  // +---------------------------------------------------------------------------+
   5  // | Geeklog 1.4                                                               |
   6  // +---------------------------------------------------------------------------+
   7  // | trackback.php                                                             |
   8  // |                                                                           |
   9  // | Admin functions handle Trackback, Pingback, and Ping                      |
  10  // +---------------------------------------------------------------------------+
  11  // | Copyright (C) 2005-2006 by the following authors:                         |
  12  // |                                                                           |
  13  // | Author: Dirk Haun - dirk AT haun-online DOT de                            |
  14  // +---------------------------------------------------------------------------+
  15  // |                                                                           |
  16  // | This program is free software; you can redistribute it and/or             |
  17  // | modify it under the terms of the GNU General Public License               |
  18  // | as published by the Free Software Foundation; either version 2            |
  19  // | of the License, or (at your option) any later version.                    |
  20  // |                                                                           |
  21  // | This program is distributed in the hope that it will be useful,           |
  22  // | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
  23  // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
  24  // | GNU General Public License for more details.                              |
  25  // |                                                                           |
  26  // | You should have received a copy of the GNU General Public License         |
  27  // | along with this program; if not, write to the Free Software Foundation,   |
  28  // | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
  29  // |                                                                           |
  30  // +---------------------------------------------------------------------------+
  31  //
  32  // $Id: trackback.php,v 1.43 2006/08/19 13:59:28 dhaun Exp $
  33  
  34  require_once  ('../lib-common.php');
  35  
  36  /**
  37  * Security check to ensure user even belongs on this page
  38  */
  39  require_once  ('auth.inc.php');
  40  
  41  if (!$_CONF['trackback_enabled'] && !$_CONF['pingback_enabled'] &&
  42          !$_CONF['ping_enabled']) {
  43      echo COM_refresh ($_CONF['site_admin_url'] . '/index.php');
  44      exit;
  45  }
  46  
  47  $display = '';
  48  
  49  if (!SEC_hasRights ('story.ping')) {
  50      $display .= COM_siteHeader ('menu', $MESSAGE[30]);
  51      $display .= COM_startBlock ($MESSAGE[30], '',
  52                                  COM_getBlockTemplate ('_msg_block', 'header')); 
  53      $display .= $MESSAGE[34];
  54      $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
  55      $display .= COM_siteFooter ();
  56      COM_accessLog("User {$_USER['username']} tried to illegally access the trackback administration screen.");
  57      echo $display;
  58      exit;
  59  }
  60  
  61  require_once ($_CONF['path_system'] . 'lib-trackback.php');
  62  require_once ($_CONF['path_system'] . 'lib-pingback.php');
  63  require_once ($_CONF['path_system'] . 'lib-story.php');
  64  
  65  /**
  66  * Display trackback comment submission form.
  67  *
  68  * @param    string  $target     URL to send the trackback comment to
  69  * @param    string  $url        URL of our entry
  70  * @param    string  $title      title of our entry
  71  * @param    string  $excerpt    excerpt of our entry
  72  * @param    string  $blog       name of our site
  73  * @return   string              HTML for the trackback comment editor
  74  *
  75  */
  76  function trackback_editor ($target = '', $url = '', $title = '', $excerpt = '', $blog = '')
  77  {
  78      global $_CONF, $LANG_TRB;
  79  
  80      $retval = '';
  81  
  82      // show preview if we have at least the URL
  83      if (!empty ($url)) {
  84          // filter them for the preview
  85          $p_title = TRB_filterTitle ($title);
  86          $p_excerpt = TRB_filterExcerpt ($excerpt);
  87          $p_blog = TRB_filterBlogname ($blog);
  88  
  89          // MT and other weblogs will shorten the excerpt like this
  90          if (MBYTE_strlen ($p_excerpt) > 255) {
  91              $p_excerpt = MBYTE_substr ($p_excerpt, 0, 252) . '...';
  92          }
  93  
  94          $retval .= COM_startBlock ($LANG_TRB['preview']);
  95  
  96          $preview = new Template ($_CONF['path_layout'] . 'trackback');
  97          $preview->set_file (array ('comment' => 'trackbackcomment.thtml'));
  98          $comment = TRB_formatComment ($url, $p_title, $p_blog, $p_excerpt);
  99          $preview->set_var ('formatted_comment', $comment);
 100          $preview->parse ('output', 'comment');
 101          $retval .= $preview->finish ($preview->get_var ('output'));
 102  
 103          $retval .= COM_endBlock ();
 104      }
 105  
 106      if (empty ($url) && empty ($blog)) {
 107          $blog = htmlspecialchars ($_CONF['site_name']);
 108      }
 109      $title = htmlspecialchars ($title);
 110      $excerpt = htmlspecialchars ($excerpt, ENT_NOQUOTES);
 111  
 112      $retval .= COM_startBlock ($LANG_TRB['editor_title'], $_CONF['site_url']
 113                                 . '/docs/trackback.html#trackback',
 114                                 COM_getBlockTemplate ('_admin_block', 'header'));
 115  
 116      $template = new Template ($_CONF['path_layout'] . 'admin/trackback');
 117      $template->set_file (array ('editor' => 'trackbackeditor.thtml'));
 118  
 119      $template->set_var ('site_url', $_CONF['site_url']);
 120      $template->set_var ('site_admin_url', $_CONF['site_admin_url']);
 121      $template->set_var ('layout_url', $_CONF['layout_url']);
 122      $template->set_var ('php_self', $_CONF['site_admin_url']
 123                                      . '/trackback.php');
 124  
 125      if (empty ($url) || empty ($title)) {
 126          $template->set_var ('lang_explain', $LANG_TRB['editor_intro_none']);
 127      } else {
 128          $template->set_var ('lang_explain',
 129                              sprintf ($LANG_TRB['editor_intro'], $url, $title));
 130      }
 131      $template->set_var ('lang_trackback_url', $LANG_TRB['trackback_url']);
 132      $template->set_var ('lang_entry_url', $LANG_TRB['entry_url']);
 133      $template->set_var ('lang_title', $LANG_TRB['entry_title']);
 134      $template->set_var ('lang_blog_name', $LANG_TRB['blog_name']);
 135      $template->set_var ('lang_excerpt', $LANG_TRB['excerpt']);
 136      $template->set_var ('lang_excerpt_truncated',
 137                          $LANG_TRB['truncate_warning']);
 138      $template->set_var ('lang_send', $LANG_TRB['button_send']);
 139      $template->set_var ('lang_preview', $LANG_TRB['button_preview']);
 140  
 141      $template->set_var ('max_url_length', 255);
 142      $template->set_var ('target_url', $target);
 143      $template->set_var ('url', $url);
 144      $template->set_var ('title', $title);
 145      $template->set_var ('blog_name', $blog);
 146      $template->set_var ('excerpt', $excerpt);
 147  
 148      $template->parse ('output', 'editor');
 149      $retval .= $template->finish ($template->get_var ('output'));
 150  
 151      $retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
 152  
 153      return $retval;
 154  }
 155  
 156  /**
 157  * Deletes a trackback comment. Checks if the current user has proper
 158  * permissions first.
 159  *
 160  * @param    int     $id     ID of the trackback comment to delete
 161  * @return   string          HTML redirect
 162  *
 163  */
 164  function deleteTrackbackComment ($id)
 165  {
 166      global $_TABLES;
 167  
 168      $cid = addslashes ($id);
 169      $result = DB_query ("SELECT sid,type FROM {$_TABLES['trackback']} WHERE cid = '$cid'");
 170      list ($sid, $type) = DB_fetchArray ($result);
 171      $url = getItemInfo ($type, $sid, 'url');
 172  
 173      if (TRB_allowDelete ($sid, $type)) {
 174          TRB_deleteTrackbackComment ($id);
 175          if ($type == 'article') {
 176              DB_query ("UPDATE {$_TABLES['stories']} SET trackbacks = trackbacks - 1 WHERE (sid = '$sid')");
 177          }
 178          $msg = 62;
 179      } else {
 180          $msg = 63;
 181      }
 182      if (strpos ($url, '?') === false) {
 183          $url .= '?msg=' . $msg;
 184      } else {
 185          $url .= '&msg=' . $msg;
 186      }
 187  
 188      return COM_refresh ($url);
 189  }
 190  
 191  /**
 192  * Show an error or warning message
 193  *
 194  * @param    string  $title      block title
 195  * @param    string  $message    the actual message
 196  * @return   string              HTML for the message block
 197  *
 198  */
 199  function showTrackbackMessage ($title, $message)
 200  {
 201      $retval = '';
 202  
 203      $retval .= COM_startBlock ($title, '',
 204                                 COM_getBlockTemplate ('_msg_block', 'header'))
 205              . $message
 206              . COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
 207  
 208      return $retval;
 209  }
 210  
 211  /**
 212  * Send a Pingback to all the links in our entry
 213  *
 214  * @param    string  $type   type of entry we're advertising ('article' = story)
 215  * @param    string  $id     ID of that entry
 216  * @return   string          pingback results
 217  *
 218  */
 219  function sendPingbacks ($type, $id)
 220  {
 221      global $_CONF, $LANG_TRB;
 222  
 223      $retval = '';
 224  
 225      list ($url, $text) = getItemInfo ($type, $id, 'url,description');
 226  
 227      // extract all links from the text
 228      preg_match_all ("/<a[^>]*href=[\"']([^\"']*)[\"'][^>]*>(.*?)<\/a>/i", $text,
 229                      $matches);
 230      $numlinks = count ($matches[0]);
 231      if ($numlinks > 0) {
 232          $links = array ();
 233          for ($i = 0; $i < $numlinks; $i++) {
 234              $links[$matches[2][$i]] = $matches[1][$i];
 235          }
 236          $links = array_unique ($links);
 237  
 238          $template = new Template ($_CONF['path_layout'] . 'admin/trackback');
 239          $template->set_file (array ('list' => 'pingbacklist.thtml',
 240                                      'item' => 'pingbackitem.thtml'));
 241          $template->set_var ('site_url', $_CONF['site_url']);
 242          $template->set_var ('site_admin_url', $_CONF['site_admin_url']);
 243          $template->set_var ('layout_url', $_CONF['layout_url']);
 244          $template->set_var ('lang_resend', $LANG_TRB['resend']);
 245          $template->set_var ('lang_results', $LANG_TRB['pingback_results']);
 246  
 247          $counter = 1;
 248          foreach ($links as $key => $URLtoPing) {
 249              $result = PNB_sendPingback ($url, $URLtoPing);
 250              $resend = '';
 251              if (empty ($result)) {
 252                  $result = '<b>' . $LANG_TRB['pingback_success'] . '</b>';
 253              } else if ($result != $LANG_TRB['no_pingback_url']) {
 254                  $result = '<span class="warningsmall">' . $result . '</span>';
 255                  // TBD: $resend = '...';
 256              }
 257              $parts = parse_url ($URLtoPing);
 258  
 259              $template->set_var ('url_to_ping', $URLtoPing);
 260              $template->set_var ('link_text', $key);
 261              $template->set_var ('host_name', $parts['host']);
 262              $template->set_var ('pingback_result', $result);
 263              $template->set_var ('resend', $resend);
 264              $template->set_var ('alternate_row',
 265                      ($counter % 2) == 0 ? 'row-even' : 'row-odd');
 266              $template->set_var ('cssid', ($i % 2) + 1);
 267              $template->parse ('pingback_results', 'item', true);
 268              $counter++;
 269          }
 270          $template->parse ('output', 'list');
 271          $retval .= $template->finish ($template->get_var ('output'));
 272  
 273      } else {
 274          $retval = '<p>' . $LANG_TRB['no_links_pingback'] . '</p>';
 275      }
 276  
 277      return $retval;
 278  }
 279  
 280  function pingbackForm ($targetUrl = '')
 281  {
 282      global $_CONF, $LANG_TRB;
 283  
 284      $retval = '';
 285      $retval .= COM_startBlock ($LANG_TRB['pingback_button'],
 286                                 $_CONF['site_url'] . '/docs/trackback.html',
 287                                 COM_getBlockTemplate ('_admin_block', 'header'));
 288  
 289      $template = new Template ($_CONF['path_layout'] . 'admin/trackback');
 290      $template->set_file (array ('list' => 'pingbackform.thtml'));
 291      $template->set_var ('site_url', $_CONF['site_url']);
 292      $template->set_var ('site_admin_url', $_CONF['site_admin_url']);
 293      $template->set_var ('layout_url', $_CONF['layout_url']);
 294  
 295      $template->set_var ('lang_explain', $LANG_TRB['pingback_explain']);
 296      $template->set_var ('lang_pingback_url', $LANG_TRB['pingback_url']);
 297      $template->set_var ('lang_site_url', $LANG_TRB['site_url']);
 298      $template->set_var ('lang_send', $LANG_TRB['button_send']);
 299  
 300      $template->set_var ('target_url', $targetUrl);
 301  
 302      $template->parse ('output', 'list');
 303      $retval .= $template->finish ($template->get_var ('output'));
 304  
 305      $retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
 306  
 307      return $retval;
 308  }
 309  
 310  /**
 311  * Ping weblog directory services
 312  *
 313  * @param    string  $type   type of entry we're advertising ('article' = story)
 314  * @param    string  $id     ID of that entry
 315  * @return   string          result of the pings
 316  *
 317  */
 318  function sendPings ($type, $id)
 319  {
 320      global $_CONF, $_TABLES, $LANG_TRB;
 321  
 322      $retval = '';
 323  
 324      list ($itemurl,$feedurl) = getItemInfo ($type, $id, 'url,feed');
 325  
 326      $template = new Template ($_CONF['path_layout'] . 'admin/trackback');
 327      $template->set_file (array ('list' => 'pinglist.thtml',
 328                                  'item' => 'pingitem.thtml'));
 329      $template->set_var ('site_url', $_CONF['site_url']);
 330      $template->set_var ('site_admin_url', $_CONF['site_admin_url']);
 331      $template->set_var ('layout_url', $_CONF['layout_url']);
 332      $template->set_var ('lang_resend', $LANG_TRB['resend']);
 333      $template->set_var ('lang_results', $LANG_TRB['ping_results']);
 334  
 335      $result = DB_query ("SELECT ping_url,method,name,site_url FROM {$_TABLES['pingservice']} WHERE is_enabled = 1");
 336      $services = DB_numRows ($result);
 337      if ($services > 0) {
 338          for ($i = 0; $i < $services; $i++) {
 339              $A = DB_fetchArray ($result);
 340              $resend = '';
 341              if ($A['method'] == 'weblogUpdates.ping') {
 342                  $pinged = PNB_sendPing ($A['ping_url'], $_CONF['site_name'],
 343                                          $_CONF['site_url'], $itemurl);
 344              } else if ($A['method'] == 'weblogUpdates.extendedPing') {
 345                  $pinged = PNB_sendExtendedPing ($A['ping_url'],
 346                              $_CONF['site_name'], $_CONF['site_url'], $itemurl,
 347                              $feedurl);
 348              } else {
 349                  $pinged = $LANG_TRB['unknown_method'] . ': ' . $A['method'];
 350              }
 351              if (empty ($pinged)) {
 352                  $pinged = '<b>' . $LANG_TRB['ping_success'] . '</b>';
 353              } else {
 354                  $pinged = '<span class="warningsmall">' . $pinged . '</span>';
 355              }
 356  
 357              $template->set_var ('service_name', $A['name']);
 358              $template->set_var ('service_url', $A['site_url']);
 359              $template->set_var ('service_ping_url', $A['ping_url']);
 360              $template->set_var ('ping_result', $pinged);
 361              $template->set_var ('resend', $resend);
 362              $template->set_var ('alternate_row',
 363                                  (($i + 1) % 2) == 0 ? 'row-even' : 'row-odd');
 364              $template->set_var ('cssid', ($i % 2) + 1);
 365              $template->parse ('ping_results', 'item', true);
 366          }
 367      } else {
 368          $template->set_var ('ping_results', '<tr><td colspan="2">' .
 369                              $LANG_TRB['no_services'] . '</td></tr>');
 370      }
 371      $template->parse ('output', 'list');
 372      $retval .= $template->finish ($template->get_var ('output'));
 373  
 374      return $retval;
 375  }
 376  
 377  /**
 378  * Prepare a list of all links in a story/item so that we can ask the user
 379  * which one to send the trackback to.
 380  *
 381  * @param    string  $type   type of entry ('article' = story, etc.)
 382  * @param    string  $id     ID of that entry
 383  * @param    string  $text   text of that entry, to get the links from
 384  * @return   string          formatted list of links
 385  *
 386  */
 387  function prepareAutodetect ($type, $id, $text)
 388  {
 389      global $_CONF, $LANG_TRB;
 390  
 391      $retval = '';
 392  
 393      $baseurl = $_CONF['site_admin_url']
 394               . '/trackback.php?mode=autodetect&id=' . $id;
 395      if ($type != 'article') {
 396          $baseurl .= '&type' . $type;
 397      }
 398  
 399      // extract all links from the text
 400      preg_match_all ("/<a[^>]*href=[\"']([^\"']*)[\"'][^>]*>(.*?)<\/a>/i", $text,
 401                      $matches);
 402      $numlinks = count ($matches[0]);
 403      if ($numlinks == 1) {
 404          // skip the link selection when there's only one link in the story
 405          $url = urlencode ($matches[1][0]);
 406          $link = $baseurl .= '&url=' . $url;
 407  
 408          echo COM_refresh ($link);
 409          exit;
 410      } else if ($numlinks > 0) {
 411          $template = new Template ($_CONF['path_layout'] . 'admin/trackback');
 412          $template->set_file (array ('list' => 'autodetectlist.thtml',
 413                                      'item' => 'autodetectitem.thtml'));
 414          $template->set_var ('site_url', $_CONF['site_url']);
 415          $template->set_var ('site_admin_url', $_CONF['site_admin_url']);
 416          $template->set_var ('layout_url', $_CONF['layout_url']);
 417  
 418          $url = $_CONF['site_admin_url'] . '/trackback.php?mode=new&id=' . $id;
 419          if ($type != 'article') {
 420              $url .= '&type=' . $type;
 421          }
 422          $template->set_var ('lang_trackback_explain',
 423                              sprintf ($LANG_TRB['trackback_explain'], $url));
 424  
 425          for ($i = 0; $i < $numlinks; $i++) {
 426              $url = urlencode ($matches[1][$i]);
 427              $link = $baseurl .= '&url=' . $url;
 428  
 429              $template->set_var ('autodetect_link', $link);
 430              $template->set_var ('link_text', $matches[2][$i]);
 431              $template->set_var ('link_url', $matches[1][$i]);
 432              $template->set_var ('alternate_row',
 433                      (($i + 1) % 2) == 0 ? 'row-even' : 'row-odd');
 434              $template->set_var ('cssid', ($i % 2) + 1);
 435              $template->parse ('autodetect_items', 'item', true);
 436          }
 437          $template->parse ('output', 'list');
 438          $retval .= $template->finish ($template->get_var ('output'));
 439      } else {
 440          $retval .= $LANG_TRB['no_links_trackback'];
 441      }
 442  
 443      return $retval;
 444  }
 445  
 446  /**
 447  * Wrapper for STORY_getItemInfo / PLG_getItemInfo to keep things readable
 448  *
 449  * @param    string  $type   type of entry ('article' = story, else plugin)
 450  * @param    string  $id     ID of that entry
 451  * @param    string  $what   info requested
 452  * @return   mixed           requested info, as a string or array of strings
 453  *
 454  */
 455  function getItemInfo ($type, $id, $what)
 456  {
 457      if ($type == 'article') {
 458          return STORY_getItemInfo ($id, $what);
 459      } else {
 460          return PLG_getItemInfo ($type, $id, $what);
 461      }
 462  }
 463  
 464  /**
 465  * Display a list of all weblog directory services in the system
 466  *
 467  * @return   string          HTML for the list
 468  *
 469  */
 470  function listServices ()
 471  {
 472      global $LANG_ADMIN, $LANG_TRB, $_CONF, $_IMAGE_TYPE, $_TABLES;
 473      require_once( $_CONF['path_system'] . 'lib-admin.php' );
 474      $retval = '';
 475  
 476      $header_arr = array(      # display 'text' and use table field 'field'
 477                      array('text' => $LANG_ADMIN['edit'], 'field' => 'edit', 'sort' => false),
 478                      array('text' => $LANG_TRB['service'], 'field' => 'name', 'sort' => true),
 479                      array('text' => $LANG_TRB['ping_method'], 'field' => 'method', 'sort' => true),
 480                      array('text' => $LANG_TRB['service_ping_url'], 'field' => 'ping_url', 'sort' => true),
 481                      array('text' => $LANG_ADMIN['enabled'], 'field' => 'is_enabled', 'sort' => false));
 482  
 483      $defsort_arr = array('field' => 'name', 'direction' => 'asc');
 484  
 485      $menu_arr = array (
 486                      array('url' => $_CONF['site_admin_url'] . '/trackback.php?mode=editservice',
 487                            'text' => $LANG_ADMIN['create_new']),
 488                      array('url' => $_CONF['site_admin_url'],
 489                            'text' => $LANG_ADMIN['admin_home']));
 490  
 491      $text_arr = array('has_menu' =>  true,
 492                        'has_extras'   => true,
 493                        'title' => $LANG_TRB['services_headline'],
 494                        'instructions' =>  $LANG_TRB['service_explain'],
 495                        'icon' => $_CONF['layout_url'] . '/images/icons/trackback.'
 496                                  . $_IMAGE_TYPE,
 497                        'form_url' => $_CONF['site_admin_url'] . "/trackback.php",
 498                        'help_url' => $_CONF['site_url'] . '/docs/trackback.html#ping');
 499  
 500      $query_arr = array('table' => 'pingservice',
 501                         'sql' => "SELECT * FROM {$_TABLES['pingservice']} WHERE 1=1",
 502                         'query_fields' => array('name', 'ping_url'),
 503                         'default_filter' => "",
 504                         'no_data' => $LANG_TRB['no_services']);
 505  
 506      $retval .= ADMIN_list ("pingservice", "ADMIN_getListField_trackback", $header_arr, $text_arr,
 507                              $query_arr, $menu_arr, $defsort_arr);
 508  
 509  
 510      if ($_CONF['trackback_enabled']) {
 511          $retval .= freshTrackback ();
 512      }
 513      if ($_CONF['pingback_enabled']) {
 514          $retval .= freshPingback ();
 515      }
 516      return $retval;
 517  }
 518  
 519  /**
 520  * Display weblog directory service editor
 521  *
 522  * @param    int     $pid            ID of the service or 0 for new service
 523  * @param    string  $msg            an error message to display
 524  * @param    string  $new_name       name of the service
 525  * @param    string  $new_site_url   URL of the service's site
 526  * @param    string  $new_ping_url   URL to ping at the service
 527  * @param    string  $new_method     ping method to use
 528  * @param    int     $new_enabled    service is enabled (1) / disabled (0)
 529  * @return   string                  HTML for the editor
 530  *
 531  */
 532  function editServiceForm ($pid, $msg = '', $new_name = '', $new_site_url = '', $new_ping_url = '', $new_method = '', $new_enabled = -1)
 533  {
 534      global $_CONF, $_TABLES, $LANG_TRB, $LANG_ADMIN, $MESSAGE;
 535  
 536      $retval = '';
 537  
 538      if ($pid > 0) {
 539          $result = DB_query ("SELECT * FROM {$_TABLES['pingservice']} WHERE pid = '$pid'");
 540          $A = DB_fetchArray ($result);
 541      } else {
 542          $A['is_enabled'] = 1;
 543          $A['method'] = 'weblogUpdates.ping';
 544      }
 545  
 546      if (!empty ($new_name)) {
 547          $A['name'] = $new_name;
 548      }
 549      if (!empty ($new_site_url)) {
 550          $A['site_url'] = $new_site_url;
 551      }
 552      if (!empty ($new_ping_url)) {
 553          $A['ping_url'] = $new_ping_url;
 554      }
 555      if (!empty ($new_method)) {
 556          $A['method'] = $new_method;
 557      }
 558      if ($new_enabled >= 0) {
 559          $A['is_enabled'] = $new_enabled;
 560      }
 561  
 562      $retval .= COM_siteHeader ('menu', $LANG_TRB['edit_service']);
 563  
 564      if (!empty ($msg)) {
 565          $retval .= showTrackbackMessage ('Error', $msg);
 566      }
 567  
 568      $retval .= COM_startBlock ($LANG_TRB['edit_service'], $_CONF['site_url']
 569                                 . '/docs/trackback.html#ping',
 570                                 COM_getBlockTemplate ('_admin_block', 'header'));
 571  
 572      $template = new Template ($_CONF['path_layout'] . 'admin/trackback');
 573      $template->set_file (array ('editor' => 'serviceeditor.thtml'));
 574      $template->set_var ('site_url', $_CONF['site_url']);
 575      $template->set_var ('site_admin_url', $_CONF['site_admin_url']);
 576      $template->set_var ('layout_url', $_CONF['layout_url']);
 577      $template->set_var ('max_url_length', 255);
 578      $template->set_var ('method_ping', 'weblogUpdates.ping');
 579      $template->set_var ('method_ping_extended', 'weblogUpdates.extendedPing');
 580  
 581      $template->set_var ('lang_name', $LANG_TRB['service']);
 582      $template->set_var ('lang_site_url', $LANG_TRB['service_website']);
 583      $template->set_var ('lang_ping_url', $LANG_TRB['service_ping_url']);
 584      $template->set_var ('lang_enabled', $LANG_ADMIN['enabled']);
 585      $template->set_var ('lang_method', $LANG_TRB['ping_method']);
 586      $template->set_var ('lang_method_standard', $LANG_TRB['ping_standard']);
 587      $template->set_var ('lang_method_extended', $LANG_TRB['ping_extended']);
 588      $template->set_var ('lang_save', $LANG_ADMIN['save']);
 589      $template->set_var ('lang_cancel', $LANG_ADMIN['cancel']);
 590  
 591      if ($pid > 0) {
 592          $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
 593                     . '" name="servicemode[2]"%s>';
 594          $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
 595          $template->set_var ('delete_option',
 596                              sprintf ($delbutton, $jsconfirm));
 597          $template->set_var ('delete_option_no_confirmation',
 598                              sprintf ($delbutton, ''));
 599      } else {
 600          $template->set_var ('delete_option', '');
 601      }
 602  
 603      if (isset ($A['pid'])) {
 604          $template->set_var ('service_id', $A['pid']);
 605      } else {
 606          $template->set_var ('service_id', '');
 607      }
 608      if (isset ($A['name'])) {
 609          $template->set_var ('service_name', $A['name']);
 610      } else {
 611          $template->set_var ('service_name', '');
 612      }
 613      if (isset ($A['site_url'])) {
 614          $template->set_var ('service_site_url', $A['site_url']);
 615      } else {
 616          $template->set_var ('service_site_url', '');
 617      }
 618      if (isset ($A['ping_url'])) {
 619          $template->set_var ('service_ping_url', $A['ping_url']);
 620      } else {
 621          $template->set_var ('service_ping_url', '');
 622      }
 623      if ($A['is_enabled'] == 1) {
 624          $template->set_var ('is_enabled', 'checked="checked"');
 625      } else {
 626          $template->set_var ('is_enabled', '');
 627      }
 628      if ($A['method'] == 'weblogUpdates.ping') {
 629          $template->set_var ('standard_is_checked', 'checked="checked"');
 630          $template->set_var ('extended_is_checked', '');
 631      } else {
 632          $template->set_var ('standard_is_checked', '');
 633          $template->set_var ('extended_is_checked', 'checked="checked"');
 634      }
 635  
 636      $template->parse ('output', 'editor');
 637      $retval .= $template->finish ($template->get_var ('output'));
 638  
 639      $retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
 640      $retval .= COM_siteFooter ();
 641  
 642      return $retval;
 643  }
 644  
 645  /**
 646  * Save information of a weblog directory service
 647  *
 648  * @param    int     $pid        ID of service or 0 for new entry
 649  * @param    string  $name       name of the service
 650  * @param    string  $site_url   Homepage URL of the service
 651  * @param    string  $ping_url   URL to ping at the service
 652  * @param    string  $method     method used for the ping
 653  * @param    string  $enabled    'on' when enabled
 654  * @return   string              HTML redirect or service editor
 655  *
 656  */
 657  function saveService ($pid, $name, $site_url, $ping_url, $method, $enabled)
 658  {
 659      global $_CONF, $_TABLES, $LANG_TRB;
 660  
 661      $enabled = ($enabled == 'on' ? 1 : 0);
 662      if ($method == 'extended') {
 663          $method = 'weblogUpdates.extendedPing';
 664      } else {
 665          $method = 'weblogUpdates.ping';
 666      }
 667  
 668      $name     = strip_tags (COM_stripslashes ($name));
 669      $site_url = strip_tags (COM_stripslashes ($site_url));
 670      $ping_url = strip_tags (COM_stripslashes ($ping_url));
 671  
 672      $errormsg = '';
 673      if (empty ($name)) {
 674          $errormsg = $LANG_TRB['error_site_name'];
 675      } else {
 676          // all URLs must start with http: or https:
 677          $parts = explode (':', $site_url);
 678          if (($parts[0] != 'http') && ($parts[0] != 'https')) {
 679              $errormsg = $LANG_TRB['error_site_url'];
 680          } else {
 681              $parts = explode (':', $ping_url);
 682              if (($parts[0] != 'http') && ($parts[0] != 'https')) {
 683                  $errormsg = $LANG_TRB['error_ping_url'];
 684              }
 685          }
 686      }
 687  
 688      if (!empty ($errormsg)) {
 689          return editServiceForm ($pid, $errormsg, $name, $site_url, $ping_url,
 690                                  $method, $enabled);
 691      }
 692  
 693      $name     = addslashes ($name);
 694      $site_url = addslashes ($site_url);
 695      $ping_url = addslashes ($ping_url);
 696  
 697      if ($pid > 0) {
 698          DB_save ($_TABLES['pingservice'],
 699                   'pid,name,site_url,ping_url,method,is_enabled',
 700                   "'$pid','$name','$site_url','$ping_url','$method','$enabled'");
 701      } else {
 702          DB_save ($_TABLES['pingservice'],
 703                   'name,site_url,ping_url,method,is_enabled',
 704                   "'$name','$site_url','$ping_url','$method','$enabled'");
 705      }
 706  
 707      return COM_refresh ($_CONF['site_admin_url']
 708                          . '/trackback.php?mode=listservice&msg=65');
 709  }
 710  
 711  /**
 712  * Toggle status of a ping service from enabled to disabled and back
 713  *
 714  * @param    int     $pid    ID of the service
 715  * @return   void
 716  *
 717  */
 718  function changeServiceStatus ($pid)
 719  {
 720      global $_TABLES;
 721  
 722      $pid = addslashes (COM_applyFilter ($pid, true));
 723      if (!empty ($pid)) {
 724          $is_enabled = 1;
 725          if (DB_getItem ($_TABLES['pingservice'], 'is_enabled', "pid = '$pid'")) {
 726              $is_enabled = 0;
 727          }
 728          DB_query ("UPDATE {$_TABLES['pingservice']} SET is_enabled = '$is_enabled' WHERE pid = '$pid'");
 729      }
 730  }
 731  
 732  /**
 733  * Display a note about how trackbacks are supposed to be used
 734  *
 735  */
 736  function freshTrackback ()
 737  {
 738      global $_CONF, $LANG_TRB;
 739  
 740      $retval = '';
 741  
 742      $freshurl = $_CONF['site_admin_url'] . '/trackback.php?mode=fresh';
 743  
 744      $retval .= COM_startBlock ($LANG_TRB['trackback'],
 745                                 $_CONF['site_url'] . '/docs/trackback.html',
 746                                 COM_getBlockTemplate ('_admin_block', 'header'));
 747      $retval .= sprintf ($LANG_TRB['trackback_note'], $freshurl);
 748      $retval .= COM_endBlock ();
 749  
 750      return $retval;
 751  }
 752  
 753  /**
 754  * Display a note about how pingbacks are supposed to be used
 755  *
 756  */
 757  function freshPingback ()
 758  {
 759      global $_CONF, $LANG_TRB;
 760  
 761      $retval = '';
 762  
 763      $freshurl = $_CONF['site_admin_url'] . '/trackback.php?mode=freepb';
 764  
 765      $retval .= COM_startBlock ($LANG_TRB['pingback'],
 766                                 $_CONF['site_url'] . '/docs/trackback.html',
 767                                 COM_getBlockTemplate ('_admin_block', 'header'));
 768      $retval .= sprintf ($LANG_TRB['pingback_note'], $freshurl);
 769      $retval .= COM_endBlock ();
 770  
 771      return $retval;
 772  }
 773  
 774  
 775  // MAIN
 776  $display = '';
 777  $mode = '';
 778  if ($_CONF['ping_enabled'] && isset ($_POST['serviceChange'])) {
 779      changeServiceStatus ($_POST['serviceChange']);
 780  }
 781  
 782  if (isset ($_POST['mode']) && is_array ($_POST['mode'])) {
 783      $mode = $_POST['mode'];
 784      if (isset ($mode[0])) {
 785          $mode = 'send';
 786      } else if (isset ($mode[1])) {
 787          $mode = 'preview';
 788      } else if (isset ($mode[2])) {
 789          $mode = 'sendpingback';
 790      } else {
 791          $mode = '';
 792      }
 793  } else if (isset ($_POST['servicemode']) && is_array ($_POST['servicemode'])) {
 794      $mode = $_POST['servicemode'];
 795      if (isset ($mode[0])) {
 796          $mode = 'saveservice';
 797      } else if (isset ($mode[2])) {
 798          $mode = 'deleteservice';
 799      } else { // $mode[1], Cancel
 800          $mode = '';
 801      }
 802  } else {
 803      if (isset($_REQUEST['mode'])) {
 804          $mode = COM_applyFilter ($_REQUEST['mode']);
 805      }
 806      
 807  }
 808  
 809  // sanity check for modes, depending on enabled features ...
 810  if (!$_CONF['ping_enabled']) {
 811      if (($mode == 'deleteservice') || ($mode == 'saveservice') ||
 812              ($mode == 'editservice')) {
 813          $mode = '';
 814      }
 815  }
 816  if (!$_CONF['trackback_enabled']) {
 817      if (($mode == 'send') || ($mode == 'new') || ($mode == 'pretrackback') ||
 818              ($mode == 'autodetect') || ($mode == 'preview')) {
 819          $mode = '';
 820      }
 821  }
 822  if (!$_CONF['pingback_enabled']) {
 823      if ($mode == 'pingback') {
 824          $mode = '';
 825      }
 826  }
 827  if (!$_CONF['trackback_enabled'] && !$_CONF['pingback_enabled']) {
 828      if ($mode == 'delete') {
 829          $mode = '';
 830      }
 831  }
 832  
 833  // default action depends on which features are enabled ...
 834  if (empty ($mode)) {
 835      if ($_CONF['ping_enabled']) {
 836          $mode = 'listservice';
 837      } else if ($_CONF['trackback_enabled']) {
 838          $mode = 'fresh';
 839      } else if ($_CONF['pinback_enabled']) {
 840          $mode = 'freepb';
 841      }
 842  }
 843  
 844  if ($mode == 'delete') {
 845      $cid = COM_applyFilter ($_REQUEST['cid'], true);
 846      if ($cid > 0) {
 847          $display = deleteTrackbackComment ($cid);
 848      } else {
 849          $display = COM_refresh ($_CONF['site_admin_url'] . '/index.php');
 850      }
 851  } else if ($mode == 'send') {
 852      $target = COM_applyFilter ($_POST['target']);
 853      $url = COM_applyFilter ($_POST['url']);
 854      $title = COM_stripslashes ($_POST['title']);
 855      $excerpt = COM_stripslashes ($_POST['excerpt']);
 856      $blog = COM_stripslashes ($_POST['blog_name']);
 857  
 858      if (empty ($target)) {
 859          $display .= COM_siteHeader ('menu', $LANG_TRB['trackback']);
 860          $display .= showTrackbackMessage ($LANG_TRB['target_missing'],
 861                                            $LANG_TRB['target_required']);
 862          $display .= trackback_editor ($target, $url, $title, $excerpt, $blog);
 863      } else if (empty ($url)) {
 864          $display .= COM_siteHeader ('menu', $LANG_TRB['trackback']);
 865          $display .= showTrackbackMessage ($LANG_TRB['url_missing'],
 866                                            $LANG_TRB['url_required']);
 867          $display .= trackback_editor ($target, $url, $title, $excerpt, $blog);
 868      } else {
 869          // prepare for send
 870          $send_title = TRB_filterTitle ($title);
 871          $send_excerpt = TRB_filterExcerpt ($excerpt);
 872          $send_blog = TRB_filterBlogname ($blog);
 873  
 874          $result = TRB_sendTrackbackPing ($target, $url, $send_title,
 875                                           $send_excerpt, $send_blog);
 876  
 877          $display .= COM_siteHeader ('menu', $LANG_TRB['trackback']);
 878          if ($result === true) {
 879              $display .= COM_showMessage (64);
 880              $display .= trackback_editor ();
 881          } else {
 882              $message = '<p>' . $LANG_TRB['send_error_details'] . '<br>'
 883                       . '<span class="warningsmall">'
 884                       . htmlspecialchars ($result) . '</span></p>';
 885              $display .= showTrackbackMessage ($LANG_TRB['send_error'], $message);
 886  
 887              // display editor with the same contents again
 888              $display .= trackback_editor ($target, $url, $title, $excerpt, $blog);
 889          }
 890      }
 891      $display .= COM_siteFooter ();
 892  } else if ($mode == 'new') {
 893      $type = COM_applyFilter ($_REQUEST['type']);
 894      if (empty ($type)) {
 895          $type = 'article';
 896      }
 897      $id = COM_applyFilter ($_REQUEST['id']);
 898      if (!empty ($id)) {
 899          list ($url, $title, $excerpt) = getItemInfo ($type, $id,
 900                                                       'url,title,excerpt');
 901          $excerpt = trim (strip_tags ($excerpt));
 902          $blog = TRB_filterBlogname ($_CONF['site_name']);
 903  
 904          $display .= COM_siteHeader ('menu', $LANG_TRB['trackback'])
 905                   . trackback_editor ($target, $url, $title, $excerpt, $blog)
 906                   . COM_siteFooter ();
 907      } else {
 908          $display = COM_refresh ($_CONF['site_admin_url'] . '/index.php');
 909      }
 910  } else if ($mode == 'pingback') {
 911      $type = COM_applyFilter ($_REQUEST['type']);
 912      if (empty ($type)) {
 913          $type = 'article';
 914      }
 915      $id = COM_applyFilter ($_REQUEST['id']);
 916      if (!empty ($id)) {
 917          $display .= COM_siteHeader ('menu', $LANG_TRB['pingback'])
 918                    . COM_startBlock ($LANG_TRB['pingback_results'])
 919                    . sendPingbacks ($type, $id)
 920                    . COM_endBlock ()
 921                    . COM_siteFooter ();
 922      } else {
 923          $display = COM_refresh ($_CONF['site_admin_url'] . '/index.php');
 924      }
 925  } else if ($mode == 'sendall') {
 926      $id = COM_applyFilter ($_REQUEST['id']);
 927      if (empty ($id)) {
 928          echo COM_refresh ($_CONF['site_admin_url'] . '/index.php');
 929          exit;
 930      }
 931      $type = '';
 932      if (isset ($_REQUEST['type'])) {
 933          $type = COM_applyFilter ($_REQUEST['type']);
 934      }
 935      if (empty ($type)) {
 936          $type = 'article';
 937      }
 938  
 939      $pingback_sent  = isset ($_REQUEST['pingback_sent']);
 940      $ping_sent      = isset ($_REQUEST['ping_sent']);
 941      $trackback_sent = isset ($_REQUEST['trackback_sent']);
 942  
 943      $pingresult = '';
 944      if (isset ($_POST['what']) && is_array ($_POST['what'])) {
 945          $what = $_POST['what'];
 946          if (isset ($what[0])) {         // Pingback
 947              $pingresult = sendPingbacks ($type, $id);
 948              $pingback_sent = true;
 949          } else if (isset ($what[1])) {  // Ping
 950              $pingresult = sendPings ($type, $id);
 951              $ping_sent = true;
 952          } else if (isset ($what[2])) {  // Trackback
 953              $url = $_CONF['site_admin_url']
 954                   . '/trackback.php?mode=pretrackback&id=' . $id;
 955              if ($type != 'article') {
 956                  $url .= '&type=' . $type;
 957              }
 958              echo COM_refresh ($url);
 959              exit;
 960          }
 961      }
 962  
 963      $title = getItemInfo ($type, $id, 'title');
 964  
 965      $display .= COM_siteHeader ('menu', $LANG_TRB['send_pings']);
 966      $display .= COM_startBlock (sprintf ($LANG_TRB['send_pings_for'], $title));
 967  
 968      $template = new Template ($_CONF['path_layout'] . 'admin/trackback');
 969      $template->set_file (array ('form' => 'pingform.thtml'));
 970      $template->set_var ('site_url', $_CONF['site_url']);
 971      $template->set_var ('site_admin_url', $_CONF['site_admin_url']);
 972      $template->set_var ('layout_url', $_CONF['layout_url']);
 973      $template->set_var ('php_self', $_CONF['site_admin_url']
 974                                      . '/trackback.php');
 975      $template->set_var ('lang_may_take_a_while', $LANG_TRB['may_take_a_while']);
 976      $template->set_var ('lang_ping_explain', $LANG_TRB['ping_all_explain']);
 977  
 978      $template->set_var ('ping_results', $pingresult);
 979  
 980      if ($_CONF['pingback_enabled']) {
 981          if (!$pingback_sent) {
 982              $template->set_var ('lang_pingback_button',
 983                                  $LANG_TRB['pingback_button']);
 984              $template->set_var ('lang_pingback_short',
 985                                  $LANG_TRB['pingback_short']);
 986              $button = '<input type="submit" name="what[0]" value="'
 987                      . $LANG_TRB['pingback_button'] . '">';
 988              $template->set_var ('pingback_button', $button);
 989          }
 990      } else {
 991          $template->set_var ('pingback_button', $LANG_TRB['pingback_disabled']);
 992      }
 993      if ($_CONF['ping_enabled']) {
 994          if (!$ping_sent) {
 995              $template->set_var ('lang_ping_button', $LANG_TRB['ping_button']);
 996              $template->set_var ('lang_ping_short', $LANG_TRB['ping_short']);
 997              $button = '<input type="submit" name="what[1]" value="'
 998                      . $LANG_TRB['ping_button'] . '">';
 999              $template->set_var ('ping_button', $button);
1000          }
1001      } else {
1002          $template->set_var ('ping_button', $LANG_TRB['ping_disabled']);
1003      }
1004      if ($_CONF['trackback_enabled']) {
1005          if (!$trackback_sent) {
1006              $template->set_var ('lang_trackback_button',
1007                                  $LANG_TRB['trackback_button']);
1008              $template->set_var ('lang_trackback_short',
1009                                  $LANG_TRB['trackback_short']);
1010              $button = '<input type="submit" name="what[2]" value="'
1011                      . $LANG_TRB['trackback_button'] . '">';
1012              $template->set_var ('trackback_button', $button);
1013          }
1014      } else {
1015          $template->set_var ('trackback_button', $LANG_TRB['trackback_disabled']);
1016      }
1017  
1018      $hidden = '';
1019      if ($pingback_sent) {
1020          $hidden .= '<input type="hidden" name="pingback_sent" value="1">';
1021      }
1022      if ($ping_sent) {
1023          $hidden .= '<input type="hidden" name="ping_sent" value="1">';
1024      }
1025      if ($trackback_sent) {
1026          $hidden .= '<input type="hidden" name="trackback_sent" value="1">';
1027      }
1028      $hidden .= '<input type="hidden" name="id" value="' . $id . '">';
1029      $hidden .= '<input type="hidden" name="type" value="' . $type . '">';
1030      $hidden .= '<input type="hidden" name="mode" value="sendall">';
1031      $template->set_var ('hidden_input_fields', $hidden);
1032  
1033      $template->parse ('output', 'form');
1034      $display .= $template->finish ($template->get_var ('output'));
1035  
1036      $display .= COM_endBlock ();
1037      $display .= COM_siteFooter ();
1038  } else if ($mode == 'pretrackback') {
1039      $id = COM_applyFilter ($_REQUEST['id']);
1040      if (empty ($id)) {
1041          echo COM_refresh ($_CONF['site_admin_url'] . '/index.php');
1042          exit;
1043      }
1044      $type = '';
1045      if (isset ($_REQUEST['type'])) {
1046          $type = COM_applyFilter ($_REQUEST['type']);
1047      }
1048      if (empty ($type)) {
1049          $type = 'article';
1050      }
1051  
1052      $fulltext = getItemInfo ($type, $id, 'description');
1053  
1054      $display .= COM_siteHeader ('menu', $LANG_TRB['trackback'])
1055                . COM_startBlock ($LANG_TRB['select_url'], $_CONF['site_url']
1056                                  . '/docs/trackback.html#trackback')
1057                . prepareAutodetect ($type, $id, $fulltext)
1058                . COM_endBlock ()
1059                . COM_siteFooter ();
1060  } else if ($mode == 'autodetect') {
1061      $id = COM_applyFilter ($_REQUEST['id']);
1062      $url = $_REQUEST['url'];
1063      if (empty ($id) || empty ($url)) {
1064          echo COM_refresh ($_CONF['site_admin_url'] . '/index.php');
1065          exit;
1066      }
1067      $type = '';
1068      if (isset ($_REQUEST['type'])) {
1069          $type = COM_applyFilter ($_REQUEST['type']);
1070      }
1071      if (empty ($type)) {
1072          $type = 'article';
1073      }
1074  
1075      $trackbackUrl = TRB_detectTrackbackUrl ($url);
1076  
1077      list ($url, $title, $excerpt) = getItemInfo ($type, $id,
1078                                                   'url,title,excerpt');
1079      $excerpt = trim (strip_tags ($excerpt));
1080      $blog = TRB_filterBlogname ($_CONF['site_name']);
1081  
1082      $display .= COM_siteHeader ('menu', $LANG_TRB['trackback']);
1083      if ($trackbackUrl === false) {
1084          $display .= showTrackbackMessage ($LANG_TRB['not_found'],
1085                                            $LANG_TRB['autodetect_failed']);
1086      }
1087      $display .= trackback_editor ($trackbackUrl, $url, $title, $excerpt, $blog)
1088               . COM_siteFooter ();
1089  } else if (($mode == 'fresh') || ($mode == 'preview')) {
1090      $display .= COM_siteHeader ('menu', $LANG_TRB['trackback']);
1091  
1092      if (isset ($_REQUEST['msg'])) {
1093          $msg = COM_applyFilter ($_REQUEST['msg'], true);
1094          if ($msg > 0) {
1095              $display .= COM_showMessage ($msg);
1096          }
1097      }
1098  
1099      $target = '';
1100      if (isset ($_REQUEST['target'])) {
1101          $target = COM_applyFilter ($_REQUEST['target']);
1102      }
1103      $url = '';
1104      if (isset ($_REQUEST['url'])) {
1105          $url = COM_applyFilter ($_REQUEST['url']);
1106      }
1107      $title = '';
1108      if (isset ($_REQUEST['title'])) {
1109          $title = COM_stripslashes ($_REQUEST['title']);
1110      }
1111      $excerpt = '';
1112      if (isset ($_REQUEST['excerpt'])) {
1113          $excerpt = COM_stripslashes ($_REQUEST['excerpt']);
1114      }
1115      $blog = '';
1116      if (isset ($_REQUEST['blog_name'])) {
1117          $blog = COM_stripslashes ($_REQUEST['blog_name']);
1118      }
1119  
1120      if (isset ($_REQUEST['id']) && isset ($_REQUEST['type'])) {
1121          $id = COM_applyFilter ($_REQUEST['id']);
1122          $type = COM_applyFilter ($_REQUEST['type']);
1123          if (!empty ($id) && !empty ($type)) {
1124              list ($newurl, $newtitle, $newexcerpt) =
1125                                  getItemInfo ($type, $id, 'url,title,excerpt');
1126              $newexcerpt = trim (strip_tags ($newexcerpt));
1127  
1128              if (empty ($url) && !empty ($newurl)) {
1129                  $url = $newurl;
1130              }
1131              if (empty ($title) && !empty ($newtitle)) {
1132                  $title = $newtitle;
1133              }
1134              if (empty ($newexcerpt) && !empty ($newexcerpt)) {
1135                  $excerpt = $newexcerpt;
1136              }
1137  
1138              if (empty ($blog)) {
1139                  $blog = TRB_filterBlogname ($_CONF['site_name']);
1140              }
1141          }
1142      }
1143  
1144      if (($mode == 'preview') && empty ($url)) {
1145          $display .= showTrackbackMessage ($LANG_TRB['url_missing'],
1146                                            $LANG_TRB['url_required']);
1147      }
1148  
1149      $display .= trackback_editor ($target, $url, $title, $excerpt, $blog);
1150  
1151      $display .= COM_siteFooter ();
1152  } else if ($mode == 'deleteservice') {
1153      $pid = COM_applyFilter ($_POST['service_id'], true);
1154      if ($pid > 0) {
1155          DB_delete ($_TABLES['pingservice'], 'pid', $pid);
1156          $display = COM_refresh ($_CONF['site_admin_url']
1157                   . '/trackback.php?mode=listservice&msg=66');
1158      } else {
1159          $display = COM_refresh ($_CONF['site_admin_url'] . '/index.php');
1160      }
1161  } else if ($mode == 'saveservice') {
1162      $display .= saveService (COM_applyFilter ($_POST['service_id'], true),
1163                               $_POST['service_name'], $_POST['service_site_url'],
1164                               $_POST['service_ping_url'], $_POST['method'],
1165                               $_POST['is_enabled']);
1166  
1167  } else if ($mode == 'editservice') {
1168      $service_id = 0;
1169      if (isset ($_GET['service_id'])) {
1170          $service_id = COM_applyFilter ($_GET['service_id'], true);
1171      }
1172      $pid = COM_applyFilter ($service_id, true);
1173  
1174      $display .= editServiceForm ($pid);
1175  } else if ($mode == 'listservice') {
1176      $display .= COM_siteHeader ('menu', $LANG_TRB['services_headline']);
1177      if (isset ($_REQUEST['msg'])) {
1178          $display .= COM_showMessage (COM_applyFilter ($_REQUEST['msg'], true));
1179      }
1180      $display .= listServices ();
1181      $display .= COM_siteFooter();
1182  } else if ($mode == 'freepb') {
1183      $display .= COM_siteHeader ('menu', $LANG_TRB['pingback']);
1184      $display .= pingbackForm ();
1185      $display .= COM_siteFooter();
1186  } else if ($mode == 'sendpingback') {
1187      $target = COM_applyFilter ($_POST['target']);
1188      $display .= COM_siteHeader ('menu', $LANG_TRB['pingback']);
1189      if (empty ($target)) {
1190          $display .= showTrackbackMessage ($LANG_TRB['pbtarget_missing'],
1191                                            $LANG_TRB['pbtarget_required']);
1192      } else {
1193          $result = PNB_sendPingback ($_CONF['site_url'], $target);
1194          if (empty ($result)) {
1195              $display .= COM_showMessage (74);
1196              $target = '';
1197          } else {
1198              $message = '<p>' . $LANG_TRB['pb_error_details'] . '<br>'
1199                       . '<span class="warningsmall">'
1200                       . htmlspecialchars ($result) . '</span></p>';
1201              $display .= showTrackbackMessage ($LANG_TRB['send_error'], $message);
1202          }
1203      }
1204      $display .= pingbackForm ($target);
1205      $display .= COM_siteFooter ();
1206  } else {
1207      $display = COM_refresh ($_CONF['site_admin_url'] . '/index.php');
1208  }
1209  
1210  echo $display;
1211  
1212  ?>


Généré le : Wed Nov 21 12:27:40 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics