::/** XYplorer: Generate folders checksums

Creates a MD5 checksum file for the current or selected files folder.
Select files or subfolders in a folder to be indexed. It will scan the selection recursively and generate a md5 checksum file in the base folder.
The checksum file will be like [folder-name].md5 .
It will replace the checksum file if there is already a checksum in it. The checksum also ignores any selected .md5 or .sfv files.
At the end, it shows the execution log.

@author rdoi
@created feb/2014
*/
		$log="ChecksumInFolder.xys: RDoi MD5 checksum creator<crlf>-------------------------------<crlf>";
		$folder=get("Path");
		$log=$log."Processing '".$folder."' items...<crlf>";
		if (get("CountSelected") == 0) {
				$flist= folderreport("files", "r", $folder, "r", , "<crlf>");
		} else {
				$flist= "";
				foreach($item, get("SelectedItemsPathNames"), "<crlf>") {
				   if (exists($item) == 2) {
             $flist= $flist. folderreport("files", "r", $item, "r", , "<crlf>")."<crlf>";
				   } else {
				   		$flist= $flist.$item."<crlf>";
				   }
				}
		}

    $csfile=$folder."\".regexreplace($folder,"^.*\\", "").".md5";
    $template="; MD5 checksum generated by RDOI XYplorer script<crlf>; ".$folder."<crlf>";
		$checksum=$template;
		foreach($file, $flist, "<crlf>") {
		    if ($file != "") {
			    $rfile= replace($file,$folder."\","");
	    		if ( regexmatches($rfile,"(\.md5|\.sfv)$") == "") {
								$hash=hash("md5",$file,3);
								$checksum=$checksum.$hash." *".$rfile."<crlf>";
								$log=$log."+ ".$rfile." [".$hash."]<crlf>";
					} else {
								$log=$log."-IGNORED: Checksum file. (".$rfile.")<crlf>";
					}
				}
		}

		if ($checksum == $template) {
			$log=$log."No valid files selected.<crlf>=CANCELLED.";
		} else {
			if (exists($csfile) > 0) {
			    $log=$log."=REPLACED. (".$csfile.")<crlf>";
			} else {
					$log=$log."=CREATED. (".$csfile.")<crlf>";
			}
			writefile($csfile,$checksum);
		}
		text $log;