⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.pm

📁 1. 记录每个帖子的访问人情况
💻 PM
📖 第 1 页 / 共 4 页
字号:
    return '' if ($url =~ /[ \"]/);    # help fat-finger typists.    $url =~ s,http;//,http://,;    $url =~ s,http//,http://,;    $url = "http://$url" unless ($url =~ m,http://,);    my ($scheme, $host, $path, $query, $fragment) =        $url =~ m,(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?,;    if ($scheme && $host) {        # Note: no stringent checks; localhost is a legit hostname, for example.        return $url;    } else {        return '';    }}sub discover_tb {    my($url, $find_all, $contents) = @_;    my $c;    if ($contents) {        $c = $$contents;    } else {        my $ua = MT->new_ua;        ## Wrap this in an eval in case some versions don't support it.        eval { $ua->parse_head(0) };        my $req = HTTP::Request->new(GET => $url);        my $res = $ua->request($req);        return unless $res->is_success;        $c = $res->content;    }    (my $url_no_anchor = $url) =~ s/#.*$//;    (my $url_no_host = $url_no_anchor) =~ s!^https?://.*/!!i;    my(@items);    while ($c =~ m!(<rdf:RDF.*?</rdf:RDF>)!sg) {        my $rdf = $1;        my($perm_url) = $rdf =~ m!dc:identifier="([^"]+)"!;   #"        $perm_url ||= "";        (my $perm_url_no_host = $perm_url) =~ s!https?://.*/!!i;        $perm_url_no_host =~ s/#.*$//;        next unless $find_all ||            $perm_url eq $url ||            $perm_url eq $url_no_anchor ||            $perm_url_no_host eq $url_no_host;        (my $inner = $rdf) =~ s!^.*?<rdf:Description!!s;        my $item = { permalink => $perm_url };        while ($inner =~ /([\w:]+)="([^"]*)"/gs) {            #"            $item->{$1} = $2;        }        $item->{ping_url} = $item->{'trackback:ping'};        next unless $item->{ping_url};        $item->{title} = decode_xml($item->{'dc:title'});        if (!$item->{title} && $rdf =~ m!dc:description="([^"]+)"!) { #"            $item->{title} = MT::Util::first_n_words($1, 5) . '...';        }        push @items, $item;        last unless $find_all;    }    return unless @items;    $find_all ? \@items : $items[0];}{    my %Data = (        'by' => {              name => 'Attribution',              requires => [ qw( Attribution Notice ) ],              permits => [ qw( Reproduction Distribution DerivativeWorks ) ],         },        'by-nd' => {              name => 'Attribution-NoDerivs',              requires => [ qw( Attribution Notice ) ],              permits => [ qw( Reproduction Distribution ) ],         },        'by-nd-nc' => {              name => 'Attribution-NoDerivs-NonCommercial',              requires => [ qw( Attribution Notice ) ],              permits => [ qw( Reproduction Distribution ) ],              prohibits => [ qw( CommercialUse) ],         },        'by-nc' => {              name => 'Attribution-NonCommercial',              requires => [ qw( Attribution Notice ) ],              permits => [ qw( Reproduction Distribution DerivativeWorks ) ],              prohibits => [ qw( CommercialUse ) ],         },        'by-nc-sa' => {              name => 'Attribution-NonCommercial-ShareAlike',              requires => [ qw( Attribution Notice ShareAlike ) ],              permits => [ qw( Reproduction Distribution DerivativeWorks ) ],              prohibits => [ qw( CommercialUse ) ],         },        'by-sa' => {              name => 'Attribution-ShareAlike',              requires => [ qw( Attribution Notice ShareAlike ) ],              permits => [ qw( Reproduction Distribution DerivativeWorks ) ],         },        'nd' => {              name => 'NonDerivative',              requires => [ qw( Notice ) ],              permits => [ qw( Reproduction Distribution ) ],         },        'nd-nc' => {              name => 'NonDerivative-NonCommercial',              requires => [ qw( Notice ) ],              permits => [ qw( Reproduction Distribution ) ],              prohibits => [ qw( CommercialUse ) ],         },        'nc' => {              name => 'NonCommercial',              requires => [ qw( Notice ) ],              permits => [ qw( Reproduction Distribution DerivativeWorks ) ],              prohibits => [ qw( CommercialUse ) ],         },        'nc-sa' => {              name => 'NonCommercial-ShareAlike',              requires => [ qw( Notice ShareAlike ) ],              permits => [ qw( Reproduction Distribution DerivativeWorks ) ],              prohibits => [ qw( CommercialUse ) ],         },        'sa' => {              name => 'ShareAlike',              requires => [ qw( Notice ShareAlike ) ],              permits => [ qw( Reproduction Distribution DerivativeWorks ) ],         },        'pd' => {              name => 'PublicDomain',              permits => [ qw( Reproduction Distribution DerivativeWorks ) ],         },    );    sub cc_url {        my($code) = @_;        my $url;        my ($real_code, $license_url, $image_url);        if (($real_code, $license_url, $image_url)            = $code =~ /(\S+) (\S+) (\S+)/) {            return $license_url;        }        $code eq 'pd' ?            "http://web.resource.org/cc/PublicDomain" :            "http://creativecommons.org/licenses/$code/1.0/";    }    sub cc_rdf {        my($code) = @_;        my $url = cc_url($code);        my $rdf = <<RDF;<License rdf:about="$url">RDF        for my $type (qw( requires permits prohibits )) {            for my $item (@{ $Data{$code}{$type} }) {                $rdf .= <<RDF;<$type rdf:resource="http://web.resource.org/cc/$item" />RDF            }        }        $rdf . "</License>\n";    }    sub cc_name {        my ($code) = ($_[0] =~ /(\S+) \S+ \S+/);        $code ||= $_[0];        $Data{$code}{name};    }}sub mark_odd_rows {    my($list) = @_;    my $i = 1;    for my $row (@$list) {        $row->{is_odd} = $i++ % 2 == 1;    }}%Languages = (    'en' => [            [ qw( Sunday Monday Tuesday Wednesday Thursday Friday Saturday ) ],            [ qw( January February March April May June                  July August September October November December ) ],            [ qw( AM PM ) ],          ],    'en_us' => [            [ qw( Sunday Monday Tuesday Wednesday Thursday Friday Saturday ) ],            [ qw( January February March April May June                  July August September October November December ) ],            [ qw( AM PM ) ],          ],    'fr' => [            [ qw( dimanche lundi mardi mercredi jeudi vendredi samedi ) ],            [ ('janvier', "f&#xe9;vrier", 'mars', 'avril', 'mai', 'juin',               'juillet', "ao&#xfb;t", 'septembre', 'octobre', 'novembre',               "d&#xe9;cembre") ],            [ qw( AM PM ) ],          ],    'es' => [            [ ('Domingo', 'Lunes', 'Martes', "Mi&#xe9;rcoles", 'Jueves',               'Viernes', "S&#xe1;bado") ],            [ qw( Enero Febrero Marzo Abril Mayo Junio Julio Agosto                  Septiembre Octubre Noviembre Diciembre ) ],            [ qw( AM PM ) ],          ],    'pt' => [            [ ('domingo', 'segunda-feira', "ter&#xe7;a-feira", 'quarta-feira',               'quinta-feira', 'sexta-feira', "s&#xe1;bado") ],            [ ('janeiro', 'fevereiro', "mar&#xe7;o", 'abril', 'maio', 'junho',               'julho', 'agosto', 'setembro', 'outubro', 'novembro',               'dezembro' ) ],            [ qw( AM PM ) ],          ],    'nl' => [            [ qw( zondag maandag dinsdag woensdag donderdag vrijdag                  zaterdag ) ],            [ qw( januari februari maart april mei juni juli augustus                  september oktober november december ) ],            [ qw( am pm ) ],	     "%d %B %Y %H:%M",	     "%d %B %Y"          ],    'dk' => [            [ ("s&#xf8;ndag", 'mandag', 'tirsdag', 'onsdag', 'torsdag',               'fredag', "l&#xf8;rdag") ],            [ qw( januar februar marts april maj juni juli august                  september oktober november december ) ],            [ qw( am pm ) ],            "%d.%m.%Y %H:%M",            "%d.%m.%Y",            "%H:%M",          ],    'se' => [            [ ("s&#xf6;ndag", "m&#xe5;ndag", 'tisdag', 'onsdag', 'torsdag',               'fredag', "l&#xf6;rdag") ],            [ qw( januari februari mars april maj juni juli augusti                  september oktober november december ) ],            [ qw( FM EM ) ],          ],    'no' => [            [ ("S&#xf8;ndag", "Mandag", 'Tirsdag', 'Onsdag', 'Torsdag',               'Fredag', "L&#xf8;rdag") ],            [ qw( Januar Februar Mars April Mai Juni Juli August                  September Oktober November Desember ) ],            [ qw( FM EM ) ],          ],    'de' => [            [ qw( Sonntag Montag Dienstag Mittwoch Donnerstag Freitag                  Samstag ) ],            [ ('Januar', 'Februar', "M&#xe4;rz", 'April', 'Mai', 'Juni',               'Juli', 'August', 'September', 'Oktober', 'November',               'Dezember') ],            [ qw( FM EM ) ],            "%d.%m.%y %H:%M",            "%d.%m.%y",            "%H:%M",          ],    'it' => [            [ ('Domenica', "Luned&#xec;", "Marted&#xec;", "Mercoled&#xec;",               "Gioved&#xec;", "Venerd&#xec;", 'Sabato') ],            [ qw( Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio                  Agosto Settembre Ottobre Novembre Dicembre ) ],            [ qw( AM PM ) ],            "%d.%m.%y %H:%M",            "%d.%m.%y",            "%H:%M",          ],    'pl' => [            [ ('niedziela', "poniedzia&#322;ek", 'wtorek', "&#347;roda",               'czwartek', "pi&#261;tek", 'sobota') ],            [ ('stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca',               'lipca', 'sierpnia', "wrze&#347;nia", "pa&#378;dziernika",               'listopada', 'grudnia') ],            [ qw( AM PM ) ],            "%e %B %Y %k:%M",            "%e %B %Y",            "%k:%M",          ],    'fi' => [            [ qw( sunnuntai maanantai tiistai keskiviikko torstai perjantai                  lauantai ) ],            [ ('tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu',               "kes&#xe4;kuu", "hein&#xe4;kuu", 'elokuu', 'syyskuu', 'lokakuu',               'marraskuu', 'joulukuu') ],            [ qw( AM PM ) ],            "%d.%m.%y %H:%M",          ],    'is' => [            [ ('Sunnudagur', "M&#xe1;nudagur", "&#xde;ri&#xf0;judagur",               "Mi&#xf0;vikudagur", 'Fimmtudagur', "F&#xf6;studagur",               'Laugardagur') ],            [ ("jan&#xfa;ar", "febr&#xfa;ar", 'mars', "apr&#xed;l", "ma&#xed;",               "j&#xfa;n&#xed;", "j&#xfa;l&#xed;", "&#xe1;g&#xfa;st", 'september',               "okt&#xf3;ber", "n&#xf3;vember", 'desember') ],            [ qw( FH EH ) ],            "%d.%m.%y %H:%M",          ],    'si' => [            [ ('nedelja', 'ponedeljek', 'torek', 'sreda', "&#xe3;etrtek",               'petek', 'sobota',) ],            [ qw( januar februar marec april maj junij julij avgust                  september oktober november december ) ],            [ qw( AM PM ) ],            "%d.%m.%y %H:%M",          ],    'cz' => [            [ ('Ned&#283;le', 'Pond&#283;l&#237;', '&#218;ter&#253;',               'St&#345;eda', '&#268;tvrtek', 'P&#225;tek', 'Sobota') ],            [ ('Leden', '&#218;nor', 'B&#345;ezen', 'Duben', 'Kv&#283;ten',               '&#268;erven', '&#268;ervenec', 'Srpen', 'Z&#225;&#345;&#237;',               '&#216;&#237;jen', 'Listopad', 'Prosinec') ],            [ qw( AM PM ) ],            "%e. %B %Y %k:%M",            "%e. %B %Y",            "%k:%M",          ],    'sk' => [            [ ('nede&#318;a', 'pondelok', 'utorok', 'streda',               '&#353;tvrtok', 'piatok', 'sobota') ],            [ ('janu&#225;r', 'febru&#225;r', 'marec', 'apr&#237;l',               'm&#225;j', 'j&#250;n', 'j&#250;l', 'august', 'september',               'okt&#243;ber', 'november', 'december') ],            [ qw( AM PM ) ],            "%e. %B %Y %k:%M",            "%e. %B %Y",            "%k:%M",          ],    'jp' => [            [ '&#26085;&#26332;&#26085;', '&#26376;&#26332;&#26085;',              '&#28779;&#26332;&#26085;', '&#27700;&#26332;&#26085;',	      '&#26408;&#26332;&#26085;', '&#37329;&#26332;&#26085;',              '&#22303;&#26332;&#26085;'],            [ qw( 1 2 3 4 5 6 7 8 9 10 11 12 ) ],            [ qw( AM PM ) ],            "%Y&#24180;%m&#26376;%d&#26085; %H:%M",            "%Y&#24180;%m&#26376;%d&#26085;",            "%H:%M",            "%Y&#24180;%m&#26376;",          ],    'et' => [            [ qw( p&uuml;hap&auml;ev esmasp&auml;ev teisip&auml;ev                  kolmap&auml;ev neljap&auml;ev reede laup&auml;ev ) ],            [ ('jaanuar', 'veebruar', 'm&auml;rts', 'aprill', 'mai',               'juuni', 'juuli', 'august', 'september', 'oktoober',              'november', 'detsember') ],            [ qw( AM PM ) ],            "%m.%d.%y %H:%M",            "%e. %B %Y",            "%H:%M",          ],);$Languages{en_US} = $Languages{en_us} = $Languages{"en-us"} = $Languages{en};sub launch_background_tasks {    require MT::ConfigMgr;    my $cfg = MT::ConfigMgr->instance();    return !($ENV{MOD_PERL} || !$cfg->LaunchBackgroundTasks);}sub start_background_task {    my ($func) = @_;    if (!launch_background_tasks()) { $func->() }    else {	$| = 1;            # Flush open filehandles	my $pid = fork();	if (!$pid) {	    # child	    close STDIN; open STDIN, "</dev/null";	    close STDOUT; open STDOUT, ">/dev/null"; 	     	    MT::Object->driver->init();	    $func->();	    CORE::exit(0) if defined($pid) && !$pid;	} else {	    MT::Object->driver->init();	}    }}{    eval { require bytes; 1; };    sub addbin {	#local $ENV{LANG} = undef;	my ($a, $b) = @_;	my $length = (length $a > length $b ? length $a : length $b);		$a = "\0" x ($length - (length $a)) . $a;	$b = "\0" x ($length - (length $b)) . $b;	my $carry = 0;	my $result = '';	for (my $i=1; $i <= $length; $i++) {	    my $adigit = ord(substr($a, -$i, 1));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -