nickjillings@2192: 0; $abs=preg_replace($re, '/', $abs, -1, $n)) {} nickjillings@2192: nickjillings@2192: /* absolute URL is ready! */ nickjillings@2192: return $scheme.'://'.$abs; nickjillings@2192: } nickjillings@2192: nickjillings@2192: /* nickjillings@2192: This looks for files that pass the filtering response nickjillings@2192: The filtering system uses key-value pairs nickjillings@2192: The key is double encoded using a '-'. The first part is the ID of the item to filter, nickjillings@2192: the second is the method: nickjillings@2192: min - Minimum Inclusive nickjillings@2192: max - Maximum Inclusive nickjillings@2192: exclude-# - exclude, followed by a number to uniquely add, (will create a triple [], ignore the third as random) nickjillings@2192: */ nickjillings@2192: $keys = []; nickjillings@2192: $waet_url = null; nickjillings@2192: foreach ($_GET as $key => $value) { nickjillings@2192: $key = explode("-",$key); nickjillings@2192: if ($key[0] == "url") { nickjillings@2192: $waet_url = $value; nickjillings@2192: } else { nickjillings@2192: $v_pair = [$key[1],$value]; nickjillings@2192: if(array_key_exists($key[0],$keys)) { nickjillings@2192: // We have some data nickjillings@2192: array_push($keys[$key[0]],$v_pair); nickjillings@2192: } else { nickjillings@2192: // Create new key data nickjillings@2192: $keys[$key[0]] = [$v_pair]; nickjillings@2192: } nickjillings@2192: } nickjillings@2192: } nickjillings@2192: nickjillings@2192: $files = []; nickjillings@2192: $saves = glob("../saves/*.xml"); nickjillings@2192: if (is_array($saves)) nickjillings@2192: { nickjillings@2192: foreach($saves as $filename) { nickjillings@2192: $xml_string = file_get_contents($filename, FILE_TEXT); nickjillings@2192: $xml_object = simplexml_load_string($xml_string); nickjillings@2192: if ($xml_object) { nickjillings@2192: // First we must check the URLs match nickjillings@2192: $waet = $xml_object->waet[0]; nickjillings@2192: if (urldecode($waet["url"])==$waet_url) { nickjillings@2192: // It is part of the dataset, so now perform checks nickjillings@2192: $continue = true; nickjillings@2192: foreach($keys as $keyId => $keyArr) { nickjillings@2192: $elem = $xml_object->xpath("//*[@ref='".$keyId."']"); nickjillings@2192: $elem = $elem[0]; // Can only be one. nickjillings@2192: switch ($elem["type"]) { nickjillings@2192: case "number": nickjillings@2192: // Number, we must check for min/max nickjillings@2192: $value = (real)$elem->response; nickjillings@2192: foreach ($keyArr as $keyCheck) { nickjillings@2192: if ($keyCheck[0] == 'min' && $value < $keyCheck[1]) { nickjillings@2192: $continue = false; nickjillings@2192: break; nickjillings@2192: } else if ($keyCheck[0] == 'max' && $value > $keyCheck[1]) { nickjillings@2192: $continue = false; nickjillings@2192: break; nickjillings@2192: } nickjillings@2192: } nickjillings@2192: break; nickjillings@2192: case "checkbox": nickjillings@2192: // Will have an array of nickjillings@2192: foreach ($elem->response as $response) { nickjillings@2192: foreach ($keyArr as $keyCheck) { nickjillings@2192: if ($response["name"] == $keyCheck[1]) { nickjillings@2192: if($response["checked"] == "true" && $keyCheck[0] == "exclude") { nickjillings@2192: $continue = false; nickjillings@2192: break; nickjillings@2192: } nickjillings@2192: } nickjillings@2192: } nickjillings@2192: if($continue == false) { nickjillings@2192: break; nickjillings@2192: } nickjillings@2192: } nickjillings@2192: break; nickjillings@2192: case "radio": nickjillings@2192: foreach ($keyArr as $keyCheck) { nickjillings@2192: if ($keyCheck[0] == "exclude" && $elem->response["name"] == $keyCheck[1]) { nickjillings@2192: nickjillings@2192: $continue = false; nickjillings@2192: break; nickjillings@2192: } nickjillings@2192: } nickjillings@2192: break; nickjillings@2192: default: nickjillings@2192: break; nickjillings@2192: } nickjillings@2192: if ($continue == false) { nickjillings@2192: break; nickjillings@2192: } nickjillings@2192: } nickjillings@2192: if ($continue) { nickjillings@2192: array_push($files,rel2abs($filename,"http://".$_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'])); nickjillings@2192: } nickjillings@2192: } nickjillings@2192: } nickjillings@2192: } nickjillings@2192: } nickjillings@2192: if (count($files) == 0) { nickjillings@2192: echo '{"urls": []}'; nickjillings@2192: } else { nickjillings@2192: echo '{"urls": ["'.implode('","',$files).'"]}'; nickjillings@2192: } nickjillings@2192: nickjillings@2192: ?>