############################################################ # # <h2>フリーウェア(dopvSTAR*)でアクセスログを取得します。</h2> # <p> # 各ページにフリーウェア(dopvSTAR*)の設置用タグを埋め込むプラグイン。<br> # 解析ページ名はWikiページ名を自動で取得しますので、MenuやHeader、Footerで使うだけです。 # </p> # <p> # dopvSTAR* : 技林 (http://tech.bayashi.net/) # </p> # <ul> # <li>このソフトはフリーウェアですが、ライセンスは<strong>GPLではありません</strong>。</li> # <li>カウンタ本体の設置代行は、原則として上記サイトで紹介されるライセンス取得済み業者にご依頼ください。</li> # </ul> # <p> # このプラグインは dopvSTAR* が次のようなディレクトリに設置済みと想定しています。 # FreeStyle Wikiとの位置関係にご注意下さい。 # </p> # <pre> # /public_html # | wiki.cgi # +/ds # (このディレクトリにカウンタ本体を設置) # </pre> # <h3>使い方</h3> # <pre> # {{dscount [domain],[AgentType],[Mode],[View],[no]}} # </pre> # <ul> # <li>domain / www.hoge.com(httpプロトコルのみ対応。SSL環境の判別機能無し)</li> # <li>AgentType / hp または pc または 空白(両方で動作)</li> # <li>Mode / j:JavaScript,i:IMG, <del>s:SSI</del>(CGIからSSIの利用は不可)</li> # <li>View / g:グラフィックカウンタ, m:gifロゴ, n:出力ナシ,t:テキストカウンタ</li> # <li>no : カウントしないとき</li> # </ul> # <h3>その他</h3> # <p> # dopvSTAR* の仕様で推奨される半角英数字のページ名にはなりません。dsi.plの該当箇所を修正してください。<br> # (HTMLを動的に出力するので問題ないはず)<br> # (FreeStyle Wikiのlibディレクトリにあるjcode.pmを活用すると良いでしょう)<br> # dopvSTAR* のマニュアルどおりですので、HTMLコードには若干の警告が含まれます。<br> # (HTML内に設置する引数のつなぎ文字は&&を&amp;&amp;と書くのが正式)<br> # </p> # ############################################################ package plugin::dscount::DsCountHandler; #use strict; #=========================================================== # コンストラクタ #=========================================================== sub new { my $class = shift; my $self = {}; return bless $self, $class; } #================================================================== # パラグラフ #================================================================== sub inline { my $self = shift; my $wiki = shift; my $domain= shift; my $agent = shift; my $mode = shift; # j=JavaScript,i=IMG,s=SSI my $view = shift; # g=グラフィックカウンタ, m=gifロゴ, n=出力ナシ,t=テキストカウンタ my $count = shift; if(!$domain){ $domain = './'; # return &Util::inline_error("ドメインが指定されていません"); } else { if ($domain =~ /[^-0-9A-Za-z.]/) { $domain = './'; # return &Util::inline_error("ドメイン名に使用できない文字があります。"); } else { # URLからプロトコル認識でSSLにも自動対応したい箇所 $domain = 'http://'.$domain.'/'; } } if(($mode ne 'j') && ($mode ne 'i') && ($mode ne 's')){ $mode = 'j'; } # デフォルトをJavaScript形式にする $mode = 'i' if(&Util::handyphone() && ($mode eq 'j')); # Handy Phone if(($view ne 'g') && ($view ne 'm') && ($view ne 'n') && ($view ne 't')){ $view = 'g'; } # デフォルトをグラフィックカウンタ形式にする # CGI中からSSIは利用できず # $view = 't' if(($mode eq 's') && ($view eq 't')); if($count ne 'no'){ $count = ''; } my $ds_cgi = '../ds/dsw.cgi'; my $page = $wiki->get_CGI()->param("page"); my $path = $wiki->get_CGI()->path_info(); $page = $path.'/'.&Util::url_encode($page); my $html = ''; my $match = 1; if(!&Util::handyphone() && $agent eq 'hp'){ $match = 0; }elsif(&Util::handyphone() && $agent eq 'pc'){ $match = 0; } if($match){ if($mode eq 'i' ){ $html .= qq|<a href="http://www.bayashi.net/"><img src="|.$ds_cgi.qq|?md=|.$mode.qq|&&p=|.$view; $html .= qq|&&cnt=|.$count if($count); $html .= qq|&&pg=|.$page.qq|" border="0" alt="アクセス解析"></a>|; # CGI中からSSIは利用できず # }elsif($mode eq 's'){ # $html .= qq|<a href="http://www.bayashi.net/"><!--#include virtual="|.$ds_cgi.qq|?md=|.$mode.qq|&&p=|.$view; # $html .= qq|&&cnt=|.$count if($count); # $html .= qq|&&pg=|.$page.qq|"--></a>|; }elsif($mode eq 'j' ){ $html = qq|<a href="http://www.bayashi.net/"><script type=\"text/javascript\" language=\"JavaScript\">\n|; $html .= qq|<!--\n|; $html .= qq|document.write("<img src='$ds_cgi?xx=",new Date().getSeconds(),|; $html .= qq|"&&cnt=$count"+| if($count); $html .= qq|"&&p=$view"+|; $html .= qq|"&&md=j"+|; $html .= qq|"&&pg=$page"+|; $html .= qq|"&&pf="+navigator.platform+|; $html .= qq|"&&lng="+navigator.language+|; $html .= qq|"&&swh="+screen.width+"x"+screen.height+|; $html .= qq|"&&cd="+screen.colorDepth+|; $html .= qq|"&&pd="+screen.pixelDepth+|; $html .= qq|"&&rf="+document.referrer+|; $html .= qq|"' alt='' border='0' style='margin:0;padding:0;border:none;'>")\;\n|; $html .= qq|// -->\n|; $html .= qq|</script>\n|; $html .= qq|<noscript>|; $html .= qq|<img src="$ds_cgi?md=nj&&p=${view}&&pg=|.$page.qq|" border="0" alt="アクセス解析">|; $html .= qq|</noscript></a>|; } } return $html; } 1;