# NewFiles Addon for NewsPro push(@Addons_Loaded, 'New Files Listing'); $Addons_List{'NewFiles 1.1'} = ['npa_newfiles.pl', 'Creates a listing of new or recently modified files in a specific directory.', 'http://amphibian.hypermart.net/addon.cgi?newfiles&1.1']; push(@Addons_AdvancedSettingsLoad, 'AddNewFilesSettings'); push(@Addons_BuildNews_Post, 'NewFilesBuild'); &CheckBuild(7, "NewFiles", "npa_newfiles.pl"); sub AddNewFilesSettings { $AdvDescr{'EnableNewFiles'} = "This script has the ability to write a list of recently modified files to "newfiles.txt" whenever you build news. To use this, you must also set the following three settings. You can change the format of newfiles.txt by editing ndisplay.pl."; $AdvDescr{'NewFilesAge'} = "The number of days that a file will be considered new after being modified."; $AdvDescr{'NewFilesNumber'} = "The number of new files that will be shown. If you set this, the NewFilesAge setting will be ignored. Leave blank to use NewFilesAge."; $AdvDescr{'NewFilesDirectory'} = "The absolute path to the directory you'd like to search for new files. No trailing slash."; $AdvDescr{'NewFilesDirURL'} = "The URL of this directory, without a trailing slash."; $AdvDescr{'NewFilesHTMLOnly'} = "Show only new HTML (.html, .htm, .shtml, etc.) files? Choose No to show all new files of any type"; push(@advancedsettings, 'draw_line', 'EnableNewFiles', 'NewFilesAge', 'NewFilesNumber', 'NewFilesDirectory', 'NewFilesDirURL', 'NewFilesHTMLOnly'); $AdvYesNo{'EnableNewFiles'} = 1; $AdvYesNo{'NewFilesHTMLOnly'} = 1; } sub NewFilesBuild { if ($NPConfig{'EnableNewFiles'}) { &NewFilesGenerate; } } sub NewFilesGenerate { $oldfiletime = time - ($NPConfig{'NewFilesAge'} * 86400); opendir(NEWDIR,$NPConfig{'NewFilesDirectory'}) || &NPdie("Can't open directory $NPConfig{'NewFilesDirectory'}."); # Read in filenames @newdir = readdir(NEWDIR); closedir(NEWDIR); foreach $i (@newdir) { unless ($i =~ /^\./) { $filename = "$NPConfig{'NewFilesDirectory'}/$i"; $url = "$NPConfig{'NewFilesDirURL'}/$i"; if (@filestats = stat($filename)) { push(@newfiles, $filename); $NewFilesURL{$filename} = $url; push(@newfiledates, $filestats[9]); $NewFileDate{$filename} = $filestats[9]; } } } @newfiles_sorted = @newfiles [ sort { $newfiledates[$a] <=> $newfiledates[$b] } 0 .. $#newfiledates ]; @newfiles_sorted = reverse(@newfiles_sorted); if($NPConfig{'NewFilesNumber'}) { $oldfiletime = $NewFileDate{$newfiles_sorted[($NPConfig{'NewFilesNumber'} - 1)]}; } NPopen('NEWFILES', ">$NPConfig{'htmlfile_path'}/newfiles.txt"); foreach $i (@newfiles_sorted) { if($NewFileDate{$i} >= $oldfiletime) { if ($i =~ m/htm/) { NPopen('NEWFILE', $i); @newfile = ; close(NEWFILE); $newfile = "@newfile"; if ($newfile =~ m/(.*?)<\/title>/i) { $NewTitle{$i} = $1; } } else { if ($NPConfig{'NewFilesHTMLOnly'}) { next; } } unless ($NewTitle{$i}) { $i =~ /.*\/(\S+)/; $NewTitle{$i} = $1; } $fileurl = $NewFilesURL{$i}; $filetitle = $NewTitle{$i}; $filedate = GetTheDate($NewFileDate{$i}); DoNewFileHTML(); print NEWFILES $newshtml; } } close(NEWFILES); } 1;<!--'"-->