suslik_s_gitaroy
Хомяк под кайфом | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вот скачал скрипт display.cgi (в файловом архиве он, помоему, зовется forumqdisplay). Для тех, кто не знает - это альтернатива Активным темам на ru-борде... Ну так вот... скачал я его, поставил... Ништяк... Стал я его коверкать... недоковеркал... просто врубиться не могу... как сделать, чтоб все темы (!)ИЗ РАЗНЫХ ФОРУМОВ(!) выписывались внесте??? ну как на руборде... Для тех кто ниче не понял, что я тут ща написал (я тоже не понял :)), объясняю ситуацию... скрипт выдает список последних измененных тем, но выдает он их по-дибильному... вместо того, чтобы выдавать темы все вместе, сортируя тока по времени обновления, он сортирует их еще и по форуму, и по котегории... ваще дибилизм... а мне надо, чтоб он выдавал Цитата: все вместе, сортируя тока по времени обновления | ... Вообщем объяснил как мог, если вы не поняли, то я не виноват... :gigi: и еще... вот мною исковерканый скрипт: Код: #!C:\usr\bin\perl\bin\perl use CGI::Carp "fatalsToBrowser"; # Output errors to browser use CGI qw(:standard); # Saves loads of work $CGI::POST_MAX=1024 * 150; # limit post data $CGI::DISABLE_UPLOADS = 1; # Disable uploads eval { ($0 =~ m,(.*)/[^/]+,) and unshift (@INC, "$1"); ($0 =~ m,(.*)\\[^\\]+,) and unshift (@INC, "$1"); require "ikon.lib"; # Require ikonboard () require "data/progs.cgi"; # Require prog names require "data/boardinfo.cgi";# Require board info require "data/styles.cgi"; # Require styles info }; if ($@) { print header(); print start_html(-title=>"Ikonboard Error!"); print "Could not find these files: $@\nIf you are running NT you may need to enter the full path in each require statement in each script"; print end_html; exit; } $|++; # Unbuffer the output #################--- Begin the program ---################### $thisprog = "display.cgi"; $query = new CGI; $cookiepath = $query->url(-absolute=>1); $cookiepath =~ s/$thisprog//sg; $action = $query -> param('action'); $inmembername = $query -> param("membername"); $inpassword = $query -> param("password"); $inmembername = &cleaninput($inmembername); $inpassword = &cleaninput($inpassword); $news_displaynum = "10"; $inmembername = cookie("amembernamecookie"); $inpassword = cookie("apasswordcookie"); if ($inmembername eq "") { $inmembername = "Guest"; } else { &getmemberstime("$inmembername"); } if ($action eq "resetall") { $filetoopen = "$ikondir" . "data/allforums.cgi"; $filetoopen = &stripMETA($filetoopen); open(FILE, "$filetoopen") or die "Could not locate the needed files"; flock(FILE, 2); @forums = <FILE>; close(FILE); $currenttime = time; foreach (@forums) { #start foreach @forums ($tempno, $trash) = split(/\|/,$_); $lvisit .= "$tempno-$currenttime--"; } $cookie = cookie(-name => "lastvisit", -value => "$lvisit", -path => "$cookiepath", -expires => "+30d"); $tempcookie = cookie(-name => "templastvisit", -value => "$lvisit", -path => "$cookiepath"); print header(-cookie =>[$cookie, $tempcookie]); } &title; # Print the header $output .= qq~ <table cellpadding=0 cellspacing=0 border=0 width=$tablewidth bgcolor=$tablebordercolor align=center> <tr> <td> <table cellpadding=3 cellspacing=1 border=0 width=100%> ~; # Lets grab the current forums $filetoopen = "$ikondir" . "data/allforums.cgi"; $filetoopen = &stripMETA($filetoopen); open(FILE, "$filetoopen"); @forums = <FILE>; close(FILE); foreach $forum (@forums) { #start foreach @forums chomp $forum; ($forumid, $category, $categoryplace, $forumname, $forumdescription, $forummoderator ,$htmlstate, $idmbcodestate ,$privateforum, $startnewthreads ,$lastposter ,$lastposttime, $threads, $posts, $forumgraphic, $ratings, $misc) = split(/\|/,$forum); # Trim some fat off the search. If the poster doesn't have access, or has never been to a forum # or has visited since, and no new posts found - move on to the next forum if (($privateforum eq "yes") && ($allowedentry{$forumid} ne "yes")) { next; } $rearrange = ("$categoryplace|$category|$forumname|$forumdescription|$forummoderator|$htmlstate|$idmbcodestate|$privateforum|$startnewthreads|$lastposter|$lastposttime|$threads|$posts|$forumgraphic|$ratings|$misc|$forumid"); push (@rearrangedforums, $rearrange); } # end foreach (@forums) @finalsortedforums = sort numerically(@rearrangedforums); # Lets search through the remaining forums with new posts. foreach (@finalsortedforums) { ($categoryplace, $category, $forumname, $forumdescription,$forummoderator, $htmlstate, $idmbcodestate, $privateforum, $startnewthreads, $lastposter, $lastposttime, $threads, $posts, $forumgraphic, $ratings, $misc, $forumid) = split(/\|/,$_); $filetoopen = "$ikondir" . "forum$forumid/list.cgi"; $filetoopen = &stripMETA($filetoopen); open(FILE, "$filetoopen"); @topics = <FILE>; close(FILE); foreach $topic (@topics) { # start topic foreach chomp $topic; ($topicid, $topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split(/\|/,$topic); if ($forumlastvisit < $lastpostdate) { $found = ("$categoryplace|$category|$forumid|$topicid|$forumname|$topictitle|$lastposter|$lastpostdate"); push (@founditems, $found); } } # end foreach @topics } # end foreach @finalsortedforums # if none are found... $totals = @founditems; if ($totals eq 0) { $output .= qq~<tr><td bgcolor=$forumcolortwo colspan=4><font face="$font" color=$forumfontcolor size=2><b>Нет новых сообщений.</b> </font></td></tr>\n~; } # Otherwise, lets print the results foreach (@founditems) { ($categoryplace, $categoryname, $forumid, $topicid, $forumname, $topictitle, $lastposter, $lastpostdate) = split (/\|/,$_); # if ($categoryplace ne $lastcategoryplace) { #start if $categoryplace # $output .= qq~<tr><td bgcolor=$catback colspan=4><font face="$font" color=$catfontcolor size=3><b>$categoryname</b></font></td></tr>\n~; # } # if ($forumid ne $lastforumid) { #start if $forumid # $output .= qq~<tr><td bgcolor=$forumcolortwo colspan=4><font face="$font" color=$forumfontcolor size=2><b>» <a href="$forumsprog?forum=$forumid">$forumname</a></b></font></td></tr>\n~; # } $lastpostdate = $lastpostdate + ($timedifferencevalue*3600) + ($timezone*3600); $longdate = &longdate("$lastpostdate"); $shorttime = &shorttime("$lastpostdate"); $topiclastpost = qq~<font size="1" face="$font" color="$lastpostfontcolor">$longdate в <font size="1" face="$font" color="$lastpostfontcolor">$shorttime</font>~; $output .= qq~ <tr> <td bgcolor=$forumcolortwo><font face="$font" color=$forumfontcolor size=1><a href="$threadprog?forum=$forumid&topic=$topicid" target="_source">$topictitle</a></td> <td bgcolor=$forumcolortwo><font face="$font" color=$forumfontcolor size=1 colspan=3>Последнне сообщение от <a href="$profileprog?action=show&member=$lastposter">$lastposter</a> $topiclastpost</td> </tr> ~; #$lastcategoryplace = $categoryplace; #$lastforumid = $forumid; } # end foreach $output .= "</table></td></tr></table>\n"; print header(); &output( -Title => $boardname, -ToPrint => $output, -Version => $versionnumber ); |
|