\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /usr/local/sitepad/editor/site-data/plugins/cookieadmin/includes/

Viewing File: cookiecategorizer.php

<?php

namespace CookieAdmin;

if(!defined('COOKIEADMIN_VERSION') || !defined('ABSPATH')){
	die('Hacking Attempt');
}

class CookieCategorizer {

    /**
     * Takes the raw output from the scanner and enriches it with data from the knowledge base.
     *
     * @param array $found_cookies The array of cookies from the Scanner class.
     * @return array The enriched list of cookies.
     */
    static function categorize_cookies($found_cookies, $categorized_cookies) {
        if (empty($found_cookies)) {
            return [];
        }

        $prefixes = self::generate_query_prefixes(array_keys($found_cookies));
	
        if (empty($prefixes)) {
            return $found_cookies;
        }

        $db_candidates = self::fetch_candidates_from_db($prefixes);

        if (empty($db_candidates)) {
            return $found_cookies; 
        }
	
        return self::match_and_enrich_cookies($found_cookies, $db_candidates, $categorized_cookies);
    }


    static function generate_query_prefixes($cookie_names){
        $prefixes = [];
        foreach ($cookie_names as $name) {
			
            $parts = explode('_', $name, 2);
            $prefix = $parts[0];

            // Add a simple rule to avoid tiny, useless prefixes like "a" or "b"
            if (strlen($prefix) >= 3) {
                $prefixes[] = $prefix;
            } else {
                // If prefix is too short, use the full name up to a limit
                $prefixes[] = substr($name, 0, 3);
            }
        }
        return array_unique($prefixes);
    }


    static function fetch_candidates_from_db($prefixes){
	
		if (empty($prefixes)) {
			return [];
		}
			
		$cookies_info = cookieadmin_load_cookies_csv($prefixes, 1);
			
		if(empty($cookies_info) || is_wp_error($cookies_info)){
			return [];
		}

		return $cookies_info;
    }


    static function match_and_enrich_cookies($found_cookies, $db_candidates, $old_categorized_cookies){
        $categorized_cookies = [];
        $remove_cookies = [];

        foreach ($found_cookies as $scanned_name => $cookie_data) {
            $best_match = null;
            $longest_match_length = 0;
			
            foreach ($db_candidates as $candidate) {
				
                $candidate_name = $candidate['cookie_name'];
                
                // Rule 1: Wildcard Match
                if ($candidate['wildcard'] == 1 && strpos($scanned_name, $candidate_name) === 0) {
                    // "Best" is defined as the longest matching prefix.
                    if (strlen($candidate_name) > $longest_match_length) {
                        $longest_match_length = strlen($candidate_name);
                        $best_match = $candidate;
                    }
                }
                // Rule 2: Exact Match
                else if ($candidate['wildcard'] == 0 && $scanned_name === $candidate_name) {
                    if (strlen($candidate_name) > $longest_match_length) {
                        $longest_match_length = strlen($candidate_name);
                        $best_match = $candidate;
                        break;
                    }
                }
            }
			
            if (!empty($best_match)) {
				
				$cookie_name = $best_match['cookie_name'];
				
				if(!empty($old_categorized_cookies) && array_key_exists($cookie_name, $old_categorized_cookies)){
					$remove_cookies[] = $old_categorized_cookies[$cookie_name];
				}

				$categorized_cookies[$cookie_name]['cookie_name'] = $cookie_name;
				$categorized_cookies[$cookie_name]['raw_name'] = $scanned_name;
				$categorized_cookies[$cookie_name]['category'] = $best_match['category'];
				$categorized_cookies[$cookie_name]['description'] = $best_match['description'];
				$categorized_cookies[$cookie_name]['patterns'] = $best_match['patterns'];
				
            }
        }
		$categorized_cookies['remove_cookies'] = $remove_cookies;
        return $categorized_cookies;
    }
}