\n\n"; //begin html table formatting if (($handle = fopen($csvfile, "r")) !== FALSE) { $oldcatname=""; while (($data = fgetcsv($handle, 1000, ",",'"','\\')) !== FALSE) { //PREVENT ALL MALICIOUS PHP PAYLOADS FROM BEING EXECUTED FROM CSV FILES! for ($i = 0; $i < count($data); $i++) { $data[$i] = htmlspecialchars($data[$i]); $data[$i] = preg_replace("/[^a-zA-Z0-9:\/.\ -✔️❌]/", "", $data[$i]); } $row++; $num = count($data); //echo "

" . $data[1] . "

"; //echo "

$num fields in line $row:

\n"; //echo $row; if ( $row == "2") { echo ""; }else{ if (str_contains(strtolower($data[5]), strtolower($query)) or str_contains(strtolower($data[3]), strtolower($query)) or str_contains(strtolower($data[2]), strtolower($query)) or str_contains(strtolower($data[1]), strtolower($query))) { $resultcount++; for ($c=0; $c < $num; $c++) { // iterate over each row if ($data[7] == 0.0){ continue; }else{ echo ""; // begin html table row for that Category // if the row is the first one (name url status score) only display (Name Status Score): // display the contents of a csv row if ( $c == "1" ){ //add http if its not already done in the URL if (!preg_match("~^(?:f|ht)tps?://~i", $data[3])) { $urllink = "http://" . $data[3]; }else{ $urllink = $data[3]; } //if ((($sensitive == 1) and ($data[4] == "✔️")) or (($sensitive == 0) and ($data[4] != "✔️")) ){ // ONLY display links if (sensitive equals to 1 and sensitiveCOLUMN equals to V) OR (sensitive equals to 0 and sensitiveCOLUMN is NOT equal to V) if (($data[4] != "YES") or (($sensitive == 1) and ($data[4] == "YES"))){ $rowcount++; if (strtolower($oldcatname) != strtolower($data[1])){ //echo ""; // skip a row if new category //echo ""; // skip a row if new category echo ''; // display the category as its the first row with this new category $oldcatname=$data[1]; }else{ echo "'; // category is already displayed so skip it (empty cell in category column) } echo ' \n"; // display the status and close the third cell } //if ($c == 2){ //} } } } } echo ""; // end html table row }} echo "\n
Category Name Description Score

' . $data[1] . '

" . '

' ; // begin the table cell of link title if(str_contains(strtolower($data[1]),'monero' )){ echo ' '; // display the link echo htmlspecialchars_decode($urllink ) . '"> '; // display the link echo $data[2] . '

'; // display the link title and close the a href and first cell, open the second cell echo $data[5] . " "; // OPTIONAL: display the description column echo $data[7] . " "; // display the score and close the second cell, open the third cell if($data[6] == "YES"){ echo "✔️" ; }else{ echo "❌" ; } echo "
"; fclose($handle); } echo "

" . $rowcount . " Result(s) found.

"; } // strtolower({key}) -> logo = /img/{value} $logomap = array( "archive" => "archive.webp", "collaboration" => "collaboration.webp", "communities" => "community.webp", "community" => "community.webp", "exchanges" => "haveno.webp", "fediverse" => "fediverse.webp", "forum" => "dread.webp", "forums" => "dread.webp", "indexes" => "index.webp", "infos and indexes" => "info.webp", "libraries" => "library.webp", "mail" => "clawsmail.webp", "markets" => "market.webp", "monero node" => "monero.webp", "news" => "news.webp", "password generator" => "passwordgen.webp", "pastebins" => "pastebins.webp", "privacy front-ends" => "opensource.webp", "radios" => "radio.webp", "sms" => "sms.webp", "search engine" => "searxng.svg", "simplex chatrooms" => "simplex.webp", "social" => "social.webp", "tools" => "tools.webp", "torrents" => "torrents.webp", "translation" => "translation.webp", "vpns" => "openvpn.webp", "vps" => "linux.webp", ); $classmap = array( "monero node" => "xmr", "simplex chatrooms" => "sxc", ); function DisplayCategories($instancename, $path) { global $logomap, $classmap; $resultcount = 0; $row = 1; //echo $instancename; //$csvfilenames = "verified.csv unverified.csv"; $csvfilenames = "verified.csv"; $csvfilenames = explode(' ', $csvfilenames); foreach ($csvfilenames as $csvfilename) { //echo $csvfilename; $csvfile = $path . $csvfilename; //echo $csvfile; //echo "test"; echo "
\n\n"; //begin html table formatting if (($handle = fopen($csvfile, "r")) !== FALSE) { $oldcatname = ""; while (($data = fgetcsv($handle, 1000, ",",'"','\\')) !== FALSE) { $num = count($data); $row++; if ( $row == "2") { echo '

'; continue; } //PREVENT ALL MALICIOUS PHP PAYLOADS FROM BEING EXECUTED FROM CSV FILES! for ($i = 0; $i < count($data); $i++) { $data[$i] = htmlspecialchars($data[$i]); $data[$i] = preg_replace("/[^a-zA-Z0-9:\/.\ -]/", "", $data[$i]); } $resultcount++; if (strtolower($oldcatname) != strtolower($data[1])){ echo '' . ''. $data[1] . ' '; $oldcatname = strtolower($data[1]); } } echo 'Display All Links

'; fclose($handle); } } } $min_length = 1; $max_length = 32; $instance= $_SERVER['SERVER_NAME']; $participantpath="participants/" . $instance . '/'; $verifiedcsvpath="participants/" . $instance . '/verified.csv'; $unverifiedcsvpath="participants/" . $instance . '/unverified.csv'; DisplayCategories($instance, $participantpath); ?>

Update Frequency: every 3 hours