にへるつおるぐ | src | ブログ | コンタクト | 統計 |

ソースコード・スクリプト・パッチ置き場

Items that do not fit in other categories

2013-08-10 16:32:30 JST-9 | akebia | General | コメント | トラックバック | 履歴

NP_GenerateURL.php

<?php
class NP_GenerateURL extends NucleusPlugin{
  function getName()       {return 'Generate URL';}
  function getAuthor()     {return 'akebia';}
  function getURL()        {return 'http://nyan.co.uk/akebia/item/858';}
  function getVersion()    {return '1.2';}
  function getDescription(){return '';}
  function getEventList()  {return array('GenerateURL');}
  function supportsFeature($f){switch($f){
    case 'SqlTablePrefix': case 'SqlApi': return 1; default: return 0;}}
  function event_GenerateURL($data)
  {
      global $CONF, $manager, $virtualpath, $blogid;
      // url already generated
      if ($data['completed']) return;
      $params = $data['params'];
      $extra = $params['extra'];
      if (!is_array($extra)) $extra = array();

      switch ($data['type']) {
          case 'item':
              $item_id = intval($params['itemid']);
              $blog_id = getBlogIDFromItemID($item_id);
              if ($blog_id == $blogid || !$blog_id) {
                  $base_url = $CONF['ItemURL'];
              } else {
                  $b =& $manager->getBlog($blog_id);
                  $base_url = $b->getURL();
              }
              if (substr($base_url, -1) != '/') $base_url .= '/';
              $url = $base_url.$CONF['ItemKey'].'/'.$item_id;
              break;
          case 'member':
              $member_id = intval($params['memberid']);
              $url = $CONF['Self'].'/'.$CONF['MemberKey'].'/'.$member_id;
              break;
          case 'category':
              $cat_id = intval($params['catid']);
              $blog_id = getBlogIDFromCatID($cat_id);
              if ($blog_id == $blogid) {
                  $base_url = $CONF['CategoryURL'];
              } elseif(!$blog_id) {
                  $url = $CONF['CategoryURL'].'/';
                  break;
              } else {
                  $b =& $manager->getBlog($blog_id);
                  $base_url = $b->getURL();
              }
              if (substr($base_url, -1) != '/') $base_url .= '/';
              $url = $base_url.$CONF['CategoryKey'].'/'.$cat_id;
              break;
          case 'archivelist':
              if (!$params['blogid']) {
                  $blog_id = $CONF['DefaultBlog'];
              } else {
                  $blog_id = intval($params['blogid']);
              }
              if ($blog_id == $blogid || !$blog_id) {
                  $base_url = $CONF['ArchiveListURL'];
              } else {
                  $b =& $manager->getBlog($blog_id);
                  $base_url = $b->getURL();
              }
              if (substr($base_url, -1) != '/') $base_url .= '/';
              $url = $base_url.$CONF['ArchivesKey'].'/'.$blog_id;
              break;
          case 'archive':
              $blog_id = intval($params['blogid']);
              if ($blog_id == $blogid || !$blog_id) {
                  $base_url = $CONF['ArchiveURL'];
              } else {
                  $b =& $manager->getBlog($blog_id);
                  $base_url = $b->getURL();
              }
              sscanf($params['archive'], '%d-%d-%d', $y, $m, $d);
              if ($d) {
                  $archive = sprintf('%d-%d-%d', $y, $m, $d);
              } else {
                  $archive = sprintf('%d-%d', $y, $m);
              }
              if (substr($base_url, -1) != '/') $base_url .= '/';
              $url = $base_url.$CONF['ArchiveKey'].'/'.$archive;
              break;
          case 'blog':
              $blog_id = intval($params['blogid']);
              if ($blog_id == $blogid || !$blog_id) {
                  $base_url = $CONF['BlogURL'];
              } else {
                  $b =& $manager->getBlog($blog_id);
                  $base_url = $b->getURL();
              }
              if (substr($base_url, -1) != '/') $base_url .= '/';
              $url = $base_url;
              break;
          }
          if ($extra['blogid'] == $blogid && !preg_match('/(^|\/)('.$CONF['BlogKey'].'|blogid)\//', $virtualpath)) {
              unset($extra['blogid']);
          }
          $data['url'] = addLinkParams($url, $extra);
          $data['completed'] = TRUE;
          return $data;
  }
}
?>

Comments

No comments yet

Add Comment

Trackback

このトラックバックURL(右クリックして、リンクのURLをコピー)を使ってこの記事にトラックバックを送ることができます。もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。トラックバックの手動送信に失敗したり、拒否された場合には、あけび猫が入力しますので、こちらまでご連絡下さい。重複したトラックバックは、自動的に1つにまとめられるようなので、気軽に色々試してみて下さい。


http://2hz.org/src/