<?php
// utility functions

function experiment_access_permission($researcher_id, $experiment_id) {
    if(!ctype_digit($experiment_id) || !is_numeric($experiment_id)) {
        return false;
    }
    require_once 'db.function.php';
    $db = getDB();
    $admin_users = $db->getAssoc("select researcher_id, 1 from researcher where admin = 1");
    return(isset($admin_users[$researcher_id]) || $db->getOne("select experiment_id from experiment where experiment_id = ? and researcher_id = ?", array($experiment_id, $researcher_id)));
}
function bedfile_access_permission($researcher_id, $bedfile_id) {
    static $admin_users;
    require_once 'db.function.php';
    $db = getDB();
    if(!$admin_users) {
        $admin_users = $db->getAssoc("select researcher_id, 1 from researcher where admin = 1");
    }
    if(isset($admin_users[$researcher_id])) {
        return true;
    }
    if(!is_array($bedfile_id)) {
        $bedfile_id = array($bedfile_id);
    }
    $qmarks = join(',', array_fill(0, count($bedfile_id), '?'));
    array_push($bedfile_id, $researcher_id);
    $count = $db->getOne("select count(*) from bedfile join experiment using(experiment_id) where bedfile_id in ($qmarks) and researcher_id = ?", $bedfile_id);
    return($count == count($bedfile_id) - 1); // subtr 1 because we pushed the researcher_id on to the array above, for query purposes
}

function rrmdir($dir) { 
    if(is_dir($dir)) { 
        $objects = scandir($dir); 
        foreach($objects as $object) { 
            if($object != "." && $object != "..") { 
                if(filetype($dir."/".$object) == "dir") {
                    rrmdir($dir."/".$object);
                } else {
                    unlink($dir."/".$object); 
                }
            } 
        } 
        reset($objects); 
        rmdir($dir); 
    } 
} 

function isSafeForSQL($str) {
    if(preg_match("/[,'\/;\"@\*\(\)\%\#:\"]/", $str)) {
        return false;
    } else {
        return true;
    }
}
//print bedfile_access_permission(1, array(1,134,136,138,9999));
?>
