Nucleus CMS日本語版用プラグインのうち、日本語版開発者がサポートしているもの
Revision | 5f53486ef84856b9a3692a904fbfa7ca8a687058 (tree) |
---|---|
Time | 2006-11-06 18:02:29 |
Author | shizuki <shizuki@1ca2...> |
Commiter | shizuki |
fix Redirect (check query string)
git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/plugin@481 1ca29b6e-896d-4ea0-84a5-967f57386b96
@@ -45,7 +45,7 @@ class NP_CustomURL extends NucleusPlugin | ||
45 | 45 | |
46 | 46 | function getVersion() |
47 | 47 | { |
48 | - return '0.3.12'; | |
48 | + return '0.3.13'; | |
49 | 49 | } |
50 | 50 | |
51 | 51 | function getDescription() |
@@ -506,6 +506,9 @@ class NP_CustomURL extends NucleusPlugin | ||
506 | 506 | break; |
507 | 507 | } |
508 | 508 | } |
509 | + if (!empty($temp)) { | |
510 | + $queryString = implode('&', $temp); | |
511 | + } | |
509 | 512 | if (reset($p_arr)) { |
510 | 513 | $b_url = createBlogidLink($blogid); |
511 | 514 | $red_path = '/' . implode('/', $p_arr); |
@@ -513,6 +516,10 @@ class NP_CustomURL extends NucleusPlugin | ||
513 | 516 | $b_url = rtrim($b_url, '/'); |
514 | 517 | } |
515 | 518 | $redurl = sprintf("%s%s", $b_url, $red_path); |
519 | + if ($queryString) { | |
520 | + $sep = (substr($redurl, -1) == '/') ? '?' : '/?'; | |
521 | + $redurl .= $sep . $queryString; | |
522 | + } | |
516 | 523 | // HTTP status 301 "Moved Permanentry" |
517 | 524 | header( "HTTP/1.1 301 Moved Permanently" ); |
518 | 525 | header('Location: ' . $redurl); |
@@ -521,7 +528,7 @@ class NP_CustomURL extends NucleusPlugin | ||
521 | 528 | } |
522 | 529 | } elseif ($redirectNormal && $feeds) { |
523 | 530 | $b_url = rtrim(createBlogidLink($blogid), '/'); |
524 | - switch ($request_path) { | |
531 | + switch ($reqPath) { | |
525 | 532 | case 'xml-rss1.php': |
526 | 533 | $feed_code = '/index.rdf'; |
527 | 534 | break; |
@@ -590,23 +597,33 @@ class NP_CustomURL extends NucleusPlugin | ||
590 | 597 | // decode FancyURLs and redirection to Customized URL |
591 | 598 | // for blogsgetAllBlogOptions($name) |
592 | 599 | case $CONF['BlogKey']: |
600 | + case 'blog': | |
601 | + case 'blogid': | |
593 | 602 | if (isset($v_path[$i]) && is_numeric($v_path[$i])) { |
594 | 603 | if ($useCustomURL[intval($v_path[$i])] != 'yes') { |
595 | 604 | $blogid = intval($v_path[$i]); |
596 | 605 | $bLink = TRUE; |
597 | 606 | } else { |
598 | - $red_uri = createBlogidLink(intval($v_path[$i])); | |
607 | +// $red_uri = createBlogidLink(intval($v_path[$i])); | |
608 | + $red_uri = TRUE; | |
609 | + $redirectBlogID = intval($v_path[$i]); | |
599 | 610 | } |
600 | 611 | } |
601 | 612 | break; |
602 | 613 | // for items |
603 | 614 | case $CONF['ItemKey']: |
615 | + case 'item': | |
616 | + case 'itemid': | |
604 | 617 | if (isset($v_path[$i]) && is_numeric($v_path[$i])) { |
605 | 618 | if ($useCustomURL[$blogid] != 'yes') { |
606 | 619 | $itemid = intval($v_path[$i]); |
607 | 620 | $iLink = TRUE; |
608 | 621 | } else { |
609 | - $red_uri = createItemLink(intval($v_path[$i])); | |
622 | +// $red_uri = createItemLink(intval($v_path[$i])); | |
623 | + $red_uri = TRUE; | |
624 | + $redirectParams['itemid'] = intval($v_path[$i]); | |
625 | + $bid = getBlogIDFromItemID(intval($v_path[$i])); | |
626 | + $redirectBlogID = intval($bid); | |
610 | 627 | } |
611 | 628 | } |
612 | 629 | break; |
@@ -618,7 +635,11 @@ class NP_CustomURL extends NucleusPlugin | ||
618 | 635 | $catid = intval($v_path[$i]); |
619 | 636 | $cLink = TRUE; |
620 | 637 | } else { |
621 | - $red_uri = createCategoryLink(intval($v_path[$i])); | |
638 | +// $red_uri = createCategoryLink(intval($v_path[$i])); | |
639 | + $red_uri = TRUE; | |
640 | + $redirectParams['catid'] = intval($v_path[$i]); | |
641 | + $bid = getBlogIDFromCatID(intval($v_path[$i])); | |
642 | + $redirectBlogID = intval($bid); | |
622 | 643 | } |
623 | 644 | } |
624 | 645 | break; |
@@ -632,16 +653,23 @@ class NP_CustomURL extends NucleusPlugin | ||
632 | 653 | $catid = intval($v_path[$c]); |
633 | 654 | $cLink = TRUE; |
634 | 655 | } else { |
635 | - $subcat_id = intval($v_path[$i]); | |
636 | - $catid = intval($v_path[$c]); | |
637 | - $linkParam = array($subrequest => $subcat_id); | |
638 | - $red_uri = createCategoryLink($catid, $linkParam); | |
656 | +// $subcat_id = intval($v_path[$i]); | |
657 | +// $catid = intval($v_path[$c]); | |
658 | +// $linkParam = array($subrequest => $subcat_id); | |
659 | +// $red_uri = createCategoryLink($catid, $linkParam); | |
660 | + $red_uri = TRUE; | |
661 | + $redirectParams['catid'] = intval($v_path[$c]); | |
662 | + $redirectParams[$subrequest] = intval($v_path[$i]); | |
663 | + $bid = getBlogIDFromCatID(intval($v_path[$c])); | |
664 | + $redirectBlogID = intval($bid); | |
639 | 665 | } |
640 | 666 | } |
641 | 667 | break; |
642 | 668 | // for archives |
643 | 669 | case $CONF['ArchivesKey']: |
644 | 670 | case $this->getOption('customurl_archives'): |
671 | + case 'archives': | |
672 | + case 'archivelist': | |
645 | 673 | // FancyURL |
646 | 674 | if (isset($v_path[$i]) && is_numeric($v_path[$i])) { |
647 | 675 | if ($useCustomURL[intval($v_path[$i])] != 'yes') { |
@@ -649,12 +677,18 @@ class NP_CustomURL extends NucleusPlugin | ||
649 | 677 | $blogid = $archivelist; |
650 | 678 | $exLink = TRUE; |
651 | 679 | } else { |
652 | - $red_uri = createArchiveListLink(intval($v_path[$i])); | |
680 | +// $red_uri = createArchiveListLink(intval($v_path[$i])); | |
681 | + $red_uri = TRUE; | |
682 | + $redirectParams['archivelist'] = intval($v_path[$i]); | |
683 | + $redirectBlogID = $blogid; | |
653 | 684 | } |
654 | 685 | // Customized URL |
655 | 686 | } elseif (isset($v_path[$i])) { |
656 | 687 | $archivelist = $blogid; |
657 | - $red_uri = createArchiveListLink($archivelist); | |
688 | +// $red_uri = createArchiveListLink($archivelist); | |
689 | + $red_uri = TRUE; | |
690 | + $redirectParams['archivelist'] = intval($archivelist); | |
691 | + $redirectBlogID = $blogid; | |
658 | 692 | } else { |
659 | 693 | $archivelist = $blogid; |
660 | 694 | $exLink = TRUE; |
@@ -663,6 +697,7 @@ class NP_CustomURL extends NucleusPlugin | ||
663 | 697 | // for archive |
664 | 698 | case $CONF['ArchiveKey']: |
665 | 699 | case $this->getOption('customurl_archive'): |
700 | + case 'archive': | |
666 | 701 | $y = $m = $d = ''; |
667 | 702 | $ar = $i + 1; |
668 | 703 | if (isset($v_path[$i])) { |
@@ -683,7 +718,10 @@ class NP_CustomURL extends NucleusPlugin | ||
683 | 718 | $exLink = TRUE; |
684 | 719 | } else { |
685 | 720 | $blogid = intval($v_path[$i]); |
686 | - $red_uri = createArchiveLink($blogid, $archive); | |
721 | +// $red_uri = createArchiveLink($blogid, $archive); | |
722 | + $red_uri = TRUE; | |
723 | + $redirectBlogID = $blogid; | |
724 | + $redirectParams['archive'] = $archive; | |
687 | 725 | } |
688 | 726 | // Customized URL |
689 | 727 | } elseif ($darc || $marc) { |
@@ -695,15 +733,22 @@ class NP_CustomURL extends NucleusPlugin | ||
695 | 733 | } |
696 | 734 | $exLink = TRUE; |
697 | 735 | } else { |
698 | - $red_uri = createArchiveListLink($blogid); | |
736 | +// $red_uri = createArchiveListLink($blogid); | |
737 | + $red_uri = TRUE; | |
738 | + $redirectParams['archivelist'] = $blogid; | |
739 | + $redirectBlogID = $blogid; | |
699 | 740 | } |
700 | 741 | } else { |
701 | - $red_uri = createArchiveListLink($blogid); | |
742 | +// $red_uri = createArchiveListLink($blogid); | |
743 | + $red_uri = TRUE; | |
744 | + $redirectParams['archivelist'] = $blogid; | |
745 | + $redirectBlogID = $blogid; | |
702 | 746 | } |
703 | 747 | break; |
704 | 748 | // for member |
705 | 749 | case $CONF['MemberKey']: |
706 | 750 | case $this->getOption('customurl_member'): |
751 | + case 'member': | |
707 | 752 | // Customized URL |
708 | 753 | $customMemberURL = (substr($v_path[$i], -5, 5) == '.html'); |
709 | 754 | if (isset($v_path[$i]) && $customMemberURL) { |
@@ -719,10 +764,15 @@ class NP_CustomURL extends NucleusPlugin | ||
719 | 764 | $memberid = intval($v_path[$i]); |
720 | 765 | $exLink = TRUE; |
721 | 766 | } else { |
722 | - $red_uri = createMemberLink(intval($v_path[$i])); | |
767 | +// $red_uri = createMemberLink(intval($v_path[$i])); | |
768 | + $red_uri =TRUE; | |
769 | + $redirectParams['member'] = intval($v_path[$i]); | |
770 | + $redirectBlogID = $blogid; | |
723 | 771 | } |
724 | 772 | } else { |
725 | - $red_url = createBlogidLink($blogid); | |
773 | +// $red_url = createBlogidLink($blogid); | |
774 | + $red_url = TRUE; | |
775 | + $redirectBlogID = $blogid; | |
726 | 776 | } |
727 | 777 | break; |
728 | 778 | // for tag |
@@ -836,8 +886,30 @@ class NP_CustomURL extends NucleusPlugin | ||
836 | 886 | // FancyURL redirect to Customized URL if use it |
837 | 887 | // HTTP status 301 "Moved Permanentry" |
838 | 888 | if ($red_uri) { |
889 | + if (!empty($redirectParams['archivelist'])) { | |
890 | + $archives = $redirectParams['archivelist']; | |
891 | + unset($redirectParams['archivelist']); | |
892 | + $redirectURL = createArchiveListLink($archives, $redirectParams); | |
893 | + } else { | |
894 | + $redirectURL = createBlogidLink($redirectBlogID, $redirectParams); | |
895 | + } | |
896 | + if (serverVar('QUERY_STRING')) { | |
897 | + $queryArr = explode('&', serverVar('QUERY_STRING')); | |
898 | + foreach ($queryArr as $k => $val) { | |
899 | + if (preg_match('/^virtualpath/', $val)) { | |
900 | + unset($queryArr[$k]); | |
901 | + } | |
902 | + } | |
903 | +// $trush = array_shift($queryArr); | |
904 | + if (!empty($queryArr)) { | |
905 | + $queryStr = implode('&', $queryArr); | |
906 | + $redirectURL .= '?' . $queryStr; | |
907 | + } | |
908 | + } | |
909 | +//echo $redirectURL; | |
839 | 910 | header('HTTP/1.1 301 Moved Permanently'); |
840 | - header('Location: ' . $red_uri); | |
911 | +// header('Location: ' . $red_uri); | |
912 | + header('Location: ' . $redirectURL); | |
841 | 913 | exit; |
842 | 914 | } |
843 | 915 |
@@ -1026,7 +1098,7 @@ class NP_CustomURL extends NucleusPlugin | ||
1026 | 1098 | $itime = quickQuery(sprintf($tque ,$table, $item_id)); |
1027 | 1099 | sscanf($itime,'"%d-%d-%d %s"', $y, $m, $d, $temp); |
1028 | 1100 | $defItem = $this->getOption('customurl_dfitem'); |
1029 | - $tempParam = array('year' => $Y, | |
1101 | + $tempParam = array('year' => $y, | |
1030 | 1102 | 'month' => $m, |
1031 | 1103 | 'day' => $d); |
1032 | 1104 | $ikey = TEMPLATE::fill($defItem, $tempParam); |
@@ -1610,7 +1682,7 @@ class NP_CustomURL extends NucleusPlugin | ||
1610 | 1682 | $param = array('member', |
1611 | 1683 | 'mnumber', |
1612 | 1684 | $member_id); |
1613 | - if (!$this->_isValid()) { | |
1685 | + if (!$this->_isValid($param)) { | |
1614 | 1686 | $url = _NOT_VALID_MEMBER; |
1615 | 1687 | } else { |
1616 | 1688 | $url = createMemberLink($member_id); |