annotate php/get_filtered_count.php @ 3120:53d701288da5

Create new php config to allow saves to be stored outside of web scope
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Wed, 18 Jul 2018 16:47:07 +0100
parents 464c6c6692d6
children edd536f01e4b
rev   line source
nicholas@2224 1 <?php
nicholas@2457 2 header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
nicholas@2457 3 header("Cache-Control: post-check=0, pre-check=0", false);
nicholas@2457 4 header("Pragma: no-cache");
nicholas@2224 5 //http://stackoverflow.com/questions/4444475/transfrom-relative-path-into-absolute-url-using-php
nicholas@2283 6 include "rel2abs.php";
nicholas@2224 7
nicholas@2224 8 /*
nicholas@2224 9 This looks for files that pass the filtering response
nicholas@2224 10 The filtering system uses key-value pairs
nicholas@2224 11 The key is double encoded using a '-'. The first part is the ID of the item to filter,
nicholas@2224 12 the second is the method:
nicholas@2224 13 min - Minimum Inclusive
nicholas@2224 14 max - Maximum Inclusive
nicholas@2224 15 exclude-# - exclude, followed by a number to uniquely add, (will create a triple [], ignore the third as random)
nicholas@2224 16 */
nicholas@2283 17 $keys = array();
nicholas@2224 18 $waet_url = null;
nicholas@2224 19 foreach ($_GET as $key => $value) {
nicholas@2224 20 $key = explode("-",$key);
nicholas@2224 21 if ($key[0] == "url") {
nicholas@2224 22 $waet_url = $value;
nicholas@2224 23 } else {
nicholas@2283 24 $v_pair = array($key[1],$value);
nicholas@2224 25 if(array_key_exists($key[0],$keys)) {
nicholas@2224 26 // We have some data
nicholas@2224 27 array_push($keys[$key[0]],$v_pair);
nicholas@2224 28 } else {
nicholas@2224 29 // Create new key data
nicholas@2283 30 $keys[$key[0]] = array($v_pair);
nicholas@2224 31 }
nicholas@2224 32 }
nicholas@2224 33 }
nicholas@2224 34
nicholas@2283 35 $files = array();
nicholas@3120 36 $saveLocation = getSaveLocation();
nicholas@3120 37 $saves = glob($saveLocation."*.xml");
nicholas@2224 38 if (is_array($saves))
nicholas@2224 39 {
nicholas@2224 40 foreach($saves as $filename) {
nicholas@2224 41 $xml_string = file_get_contents($filename, FILE_TEXT);
nicholas@2224 42 $xml_object = simplexml_load_string($xml_string);
nicholas@2224 43 if ($xml_object) {
nicholas@2224 44 // First we must check the URLs match
nicholas@2224 45 $waet = $xml_object->waet[0];
nicholas@2224 46 if (urldecode($waet["url"])==$waet_url) {
nicholas@2224 47 // It is part of the dataset, so now perform checks
nicholas@2224 48 $continue = true;
nicholas@2224 49 foreach($keys as $keyId => $keyArr) {
nicholas@2224 50 $elem = $xml_object->xpath("//*[@ref='".$keyId."']");
nicholas@2224 51 $elem = $elem[0]; // Can only be one.
nicholas@2224 52 switch ($elem["type"]) {
nicholas@2224 53 case "number":
nicholas@2224 54 // Number, we must check for min/max
nicholas@2224 55 $value = (real)$elem->response;
nicholas@2224 56 foreach ($keyArr as $keyCheck) {
nicholas@2224 57 if ($keyCheck[0] == 'min' && $value < $keyCheck[1]) {
nicholas@2224 58 $continue = false;
nicholas@2224 59 break;
nicholas@2224 60 } else if ($keyCheck[0] == 'max' && $value > $keyCheck[1]) {
nicholas@2224 61 $continue = false;
nicholas@2224 62 break;
nicholas@2224 63 }
nicholas@2224 64 }
nicholas@2224 65 break;
nicholas@2224 66 case "checkbox":
nicholas@2224 67 // Will have an array of <response>
nicholas@2224 68 foreach ($elem->response as $response) {
nicholas@2224 69 foreach ($keyArr as $keyCheck) {
nicholas@2224 70 if ($response["name"] == $keyCheck[1]) {
nicholas@2224 71 if($response["checked"] == "true" && $keyCheck[0] == "exclude") {
nicholas@2224 72 $continue = false;
nicholas@2224 73 break;
nicholas@2224 74 }
nicholas@2224 75 }
nicholas@2224 76 }
nicholas@2224 77 if($continue == false) {
nicholas@2224 78 break;
nicholas@2224 79 }
nicholas@2224 80 }
nicholas@2224 81 break;
nicholas@2224 82 case "radio":
nicholas@2224 83 foreach ($keyArr as $keyCheck) {
nicholas@2224 84 if ($keyCheck[0] == "exclude" && $elem->response["name"] == $keyCheck[1]) {
nicholas@2224 85
nicholas@2224 86 $continue = false;
nicholas@2224 87 break;
nicholas@2224 88 }
nicholas@2224 89 }
nicholas@2224 90 break;
nicholas@2224 91 default:
nicholas@2224 92 break;
nicholas@2224 93 }
nicholas@2224 94 if ($continue == false) {
nicholas@2224 95 break;
nicholas@2224 96 }
nicholas@2224 97 }
nicholas@2224 98 if ($continue) {
nicholas@2224 99 array_push($files,rel2abs($filename,"http://".$_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']));
nicholas@2224 100 }
nicholas@2224 101 }
nicholas@2224 102 }
nicholas@2224 103 }
nicholas@2224 104 }
nicholas@2224 105 if (count($files) == 0) {
nicholas@2224 106 echo '{"urls": []}';
nicholas@2224 107 } else {
nicholas@2224 108 echo '{"urls": ["'.implode('","',$files).'"]}';
nicholas@2224 109 }
nicholas@2224 110
nicholas@2538 111 ?>