Ignore:
Timestamp:
08/20/09 14:43:59 (15 years ago)
Author:
Daniela Dorner
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/datacenter/db/builddatasets.php

    r9486 r9498  
    11<?php
    2 {
    3     function CreateQuery($_GET, $alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs)
     2
     3    function PrintDataSetFile()
     4    {
     5            printf("AnalysisNumber: 1\n\n");
     6            printf("SeqencesOn: %s \n", $_SESSION["sequon"]);
     7            if ($_SESSION["sequoff"]!=" ")
     8                printf("SeqencesOff: %s \n\n", $_SESSION["sequoff"]);
     9            else
     10                printf("\n");
     11
     12            printf("SourceName: %s \n", $_SESSION["realsourcename"]);
     13            printf("Catalog: /magic/datacenter/setup/magic_favorites_dc.edb \n");
     14            if ($_SESSION["sequoff"]==" ")
     15                printf("WobbleMode: On \n\n");
     16            printf("RunTime: %s \n", $_SESSION["runtime"]);
     17            printf("Name: %s \n", $_SESSION["name"]);
     18            printf("Comment: %s \n", $_SESSION["comment"]);
     19    }
     20
     21    function CreateQuery($alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs)
    422    {
    523        $fromtable="Sequences";
     
    1533                $statusgroups++;
    1634
    17         $query0 = "SELECT ";
     35        $query0 = "SELECT SQL_CALC_FOUND_ROWS ";
    1836
    1937        if ($groups>0)
     
    3755                    if ($element==-1)
    3856                        $query0 .= " (if(IsNull(" . $key . "), if(isnull(fStartTime), 'not done', if(isnull(fFailedTime),if(isnull(" . $needs[$key] . "),'not done',if(date_sub(Now(),interval 12 hour) < fStartTime,'running','crashed')),if(isnull(" . $needs[$key] . "),'not done','failed'))) ,if(" . $key . "='1970-01-01 00:00:00','dont do','done'))) as '" . $alias[$key] . "', ";
    39 //                        $query0 .= " (if(IsNull(" . $key . "), 'not done' ,if(" . $key . "='1970-01-01 00:00:00','dont do','done'))) as '" . $alias[$key] . "', ";
    4057
    4158                $query0 .= " COUNT(*) as '# Sequ'";
     
    4562            {
    4663                $query0 .= " " . $fromtable . ".fSequenceFirst as '" . $alias["fSequenceFirst"] . "' ";
    47                 if (!empty($_GET["fLinks"]))
     64                if (!empty($_SESSION["fLinks"]))
    4865                {
    4966                    $query0 .= ", CONCAT('<A&ws;HREF=\"runinfo-aio.php?',  'fRunStart=On', '&amp;fZenithDistance=On', '&amp;fRunMin=', Sequences.fSequenceFirst, '&amp;fMeanTriggerRate=On', '&amp;fTest=On', '&amp;fRunTypeName=On', '&amp;fRunMax=', fSequenceLast, '&amp;fNumEvents=On', '&amp;fSourceName=On&amp;', 'fExcludedFDAKEY=1', '&amp;fSequenceFirst=On', '&amp;fRawFileAvail=On', '&amp;fCCFileAvail=On', '&amp;fCaCoFileAvail=On', '&amp;fNumResults=500\">r</A>' ";
    50                     //                        $query0 .= " as " . $alias["fSequenceFirst"];
     67                    //$query0 .= " as " . $alias["fSequenceFirst"];
    5168                    $query0 .= ", '&nbsp;<A&ws;HREF=\"http://www.astro.uni-wuerzburg.de/datacenter/callisto/' , LEFT(LPAD(CONCAT(Sequences.fSequenceFirst, '.'), 9,'0'),4), '/', LPAD(CONCAT(Sequences.fSequenceFirst, '/'), 9,'0'), 'callisto', LPAD(CONCAT(Sequences.fSequenceFirst , '.html'), 13,'0') , '\">cl</A>'";
    5269                    $query0 .= ", '&nbsp;<A&ws;HREF=\"http://www.astro.uni-wuerzburg.de/datacenter/callisto/' , LEFT(LPAD(CONCAT(Sequences.fSequenceFirst, '.'), 9,'0'),4), '/', LPAD(CONCAT(Sequences.fSequenceFirst, '/'), 9,'0'), '\">c</A>'";
     
    5875                }
    5976
    60                 foreach ($_GET as $key => $element)
    61                     if ($_GET[$key]=="On")
     77                foreach ($_SESSION as $key => $element)
     78                    if ($_SESSION[$key]=="On")
    6279                        if ($key!="fLinks" && $key!="fOff" && $key!="fOnlyOff")
    63                             if (empty($checkwhere[$key]) || $checkwhere[$key]==0)
    64                                 $query0 .= ", " . $key . " as '" . $alias[$key] . "' ";
     80                            if (!(ereg("^[0-9]*ON$", $key) || ereg("^[0-9]*Off$", $key)))
     81                                if (empty($checkwhere[$key]) || $checkwhere[$key]==0)
     82                                    $query0 .= ", " . $key . " as '" . $alias[$key] . "' ";
    6583            }
    6684        }
     
    7290        $query0 .= " LEFT JOIN Star USING(fSequenceFirst,fTelescopeNumber) ";
    7391
    74         foreach ($_GET as $key => $element)
    75             if (($_GET[$key]=="On" || $groups>0))// && !empty(GetJoin($fromtable,$key)))
     92        foreach ($_SESSION as $key => $element)
     93            if (($_SESSION[$key]=="On" || $groups>0))// && !empty(GetJoin($fromtable,$key)))
    7694                $query0 .= GetJoin($fromtable,$key);
    7795
    78         if ($_GET["fTest"]!="On")
    79         {
    80             if ($_GET["fSourceName"]!="On")
    81                 $query0 .= " LEFT JOIN Source USING(fSourceKEY) ";
    82             $query0 .= " WHERE fTest='no'";
    83         }
    84 
    85         if ($_GET["fOff"]=="Off")
    86         {
     96        if ($_SESSION["DisplaySelected"]!="yes" || ($_SESSION["sequon"]==" " && $_SESSION["sequoff"]==" "))
     97        {
     98            if ($_SESSION["fTest"]!="On")
     99            {
     100                if ($_SESSION["fSourceName"]!="On")
     101                    $query0 .= " LEFT JOIN Source USING(fSourceKEY) ";
     102                $query0 .= " WHERE fTest='no'";
     103            }
     104
     105            if ($_SESSION["fOff"]=="Off")
     106            {
     107                if (strpos($query0, " WHERE ")==FALSE)
     108                    $query0 .= " WHERE ";
     109                else
     110                    $query0 .= " AND ";
     111
     112                $query0 .= " NOT (fSourceName like '%Off%')";
     113            }
     114
     115            if ($_SESSION["fOnlyOff"]=="On")
     116            {
     117                if (strpos($query0, " WHERE ")==FALSE)
     118                    $query0 .= " WHERE ";
     119                else
     120                    $query0 .= " AND ";
     121
     122                $query0 .= " fSourceName like '%Off%'";
     123            }
     124
     125            foreach ($checkwhere as $key => $element)
     126            {
     127                if (empty($element) || $element<=0)
     128                    continue;
     129
     130                if (strpos($query0, " WHERE ")==FALSE)
     131                    $query0 .= " WHERE ";
     132                else
     133                    if ($element!=-1)
     134                        if (strrpos($query0, " AND ")!=strlen($query0)-5)
     135                            $query0 .= " AND ";
     136
     137                if ($element!=-1)
     138                    $query0 .= GetCheck($fromtable, $key) . "=" . $element;
     139            }
     140
    87141            if (strpos($query0, " WHERE ")==FALSE)
    88142                $query0 .= " WHERE ";
     
    90144                $query0 .= " AND ";
    91145
    92             $query0 .= " NOT (fSourceName like '%Off%')";
    93         }
    94 
    95         if ($_GET["fOnlyOff"]=="On")
    96         {
    97             if (strpos($query0, " WHERE ")==FALSE)
    98                 $query0 .= " WHERE ";
     146            $query0 .= StatusQuery("fSequenceFileWritten", $needs, $timelimits);
     147            $query0 .= StatusQuery("fAllFilesAvail", $needs, $timelimits);
     148            $query0 .= StatusQuery("fCallisto", $needs, $timelimits);
     149            $query0 .= StatusQuery("fFillCallisto", $needs, $timelimits);
     150            $query0 .= StatusQuery("fStar", $needs, $timelimits);
     151            $query0 .= StatusQuery("fFillStar", $needs, $timelimits);
     152
     153            if (!empty($_SESSION["fRunMin"]) && !empty($_SESSION["fRunMax"]))
     154                $query0 .= "Sequences.fSequenceFirst BETWEEN " . $_SESSION["fRunMin"] . " AND " . $_SESSION["fRunMax"] . " ";
    99155            else
    100                 $query0 .= " AND ";
    101 
    102             $query0 .= " fSourceName like '%Off%'";
    103         }
    104 
    105         foreach ($checkwhere as $key => $element)
    106         {
    107             if (empty($element) || $element<=0)
    108                 continue;
    109 
    110             if (strpos($query0, " WHERE ")==FALSE)
    111                 $query0 .= " WHERE ";
    112             else
    113                 if ($element!=-1)
    114                     if (strrpos($query0, " AND ")!=strlen($query0)-5)
    115                         $query0 .= " AND ";
    116 
    117             if ($element!=-1)
    118                 $query0 .= GetCheck($fromtable, $key) . "=" . $element;
    119         }
    120 
    121         if (strpos($query0, " WHERE ")==FALSE)
    122             $query0 .= " WHERE ";
     156                $query0 = substr($query0, 0, -4);
     157
     158            if ((!empty($_SESSION["fZDMin"]) || $_SESSION["fZDMin"]==0) && !empty($_SESSION["fZDMax"]))
     159                $query0 .= "AND (fZenithDistanceMin >= " . $_SESSION["fZDMin"] . " AND fZenithDistanceMax <= " . $_SESSION["fZDMax"] . ") ";
     160
     161            if (!empty($_SESSION["fSourceN"]))
     162                $query0 .= " AND fSourceName REGEXP \"^" . $_SESSION["fSourceN"] . "\" ";
     163
     164            if (!empty($_SESSION["fStartDate"]))
     165            {
     166                if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
     167                    $query0 .= " AND ";
     168
     169                $startdate=substr($_SESSION["fStartDate"], 0, 10);
     170                if ($startdate=="0000-00-00")
     171                    $query0 .=" fRunStart >= '" . $startdate . " 00:00:00' ";
     172                else
     173                    $query0 .= " fRunStart >= ADDDATE('" . $startdate . " 13:00:00', INTERVAL -1 DAY) ";
     174            }
     175
     176            if (!empty($_SESSION["fStopDate"]))
     177            {
     178                if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
     179                    $query0 .= " AND ";
     180
     181                $stopdate=substr($_SESSION["fStopDate"], 0, 10);
     182                $query0 .= " fRunStart < '" . $stopdate . " 13:00:00' ";
     183            }
     184
     185            if (!empty($_SESSION["fStarStart"]))
     186            {
     187                if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
     188                    $query0 .= " AND ";
     189
     190                $starstart=substr($_SESSION["fStarStart"], 0, 10);
     191                $query0 .=" fStar >= '" . $starstart . " 00:00:00' ";
     192            }
     193
     194            if (!empty($_SESSION["fStarStop"]))
     195            {
     196                if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
     197                    $query0 .= " AND ";
     198
     199                $starstop=substr($_SESSION["fStarStop"], 0, 10);
     200                $query0 .= " fStar < '" . $starstop . " 23:59:59' ";
     201            }
     202
     203            if ($groups>0)
     204            {
     205                $query0 .= " GROUP BY ";
     206                $num = $groups;
     207                foreach ($checkgroup as $key => $element)
     208                    if ($element==-1)
     209                    {
     210                        $query0 .= GetCheck($fromtable,$key);
     211                        if ($num-->1)
     212                            $query0 .= ", ";
     213                    }
     214            }
     215
     216            if ($statusgroups>0)
     217            {
     218                $query0 .= " GROUP BY ";
     219                $num = $statusgroups;
     220                foreach ($checkstatusgroup as $key => $element)
     221                    if ($element==-1)
     222                    {
     223                        $query0 .= $alias[$key];
     224                        if ($num-->1)
     225                            $query0 .= ", ";
     226                    }
     227            }
     228
     229        }
    123230        else
    124             $query0 .= " AND ";
    125 
    126         $query0 .= StatusQuery("fSequenceFileWritten", $needs, $timelimits);
    127         $query0 .= StatusQuery("fAllFilesAvail", $needs, $timelimits);
    128         $query0 .= StatusQuery("fCallisto", $needs, $timelimits);
    129         $query0 .= StatusQuery("fFillCallisto", $needs, $timelimits);
    130         $query0 .= StatusQuery("fStar", $needs, $timelimits);
    131         $query0 .= StatusQuery("fFillStar", $needs, $timelimits);
    132 
    133         if (!empty($_GET["fRunMin"]) && !empty($_GET["fRunMax"]))
    134             $query0 .= "Sequences.fSequenceFirst BETWEEN " . $_GET["fRunMin"] . " AND " . $_GET["fRunMax"] . " ";
     231        {
     232            $displsequ=str_replace("  ", " ", $_SESSION["sequon"].$_SESSION["sequoff"]);
     233            $displsequ=ereg_replace("^ ", "(", $displsequ);
     234            $displsequ=ereg_replace(" $", ")", $displsequ);
     235            $displsequ=str_replace(" ",  ",", $displsequ);
     236
     237            $query0 .= "WHERE fSequenceFirst IN " . $displsequ;
     238        }
     239
     240        if (!empty($_SESSION["fSortBy"]))
     241        {
     242            $val=substr($_SESSION["fSortBy"], 0, -1);
     243            $query0 .= " ORDER BY " . GetTable($fromtable,$val) . " ";
     244            if (substr($_SESSION["fSortBy"], -1)=="-")
     245                $query0 .= "DESC";
     246        }
     247
     248        if (empty($_SESSION["fSortBy"]) && $groups==0 && $statusgroups==0)
     249            $query0 .= " ORDER BY Sequences.fSequenceFirst DESC ";
     250
     251        if (empty($_SESSION["fNumStart"]))
     252            $start=0;
    135253        else
    136             $query0 = substr($query0, 0, -4);
    137 
    138         if ((!empty($_GET["fZDMin"]) || $_GET["fZDMin"]==0) && !empty($_GET["fZDMax"]))
    139             $query0 .= "AND (fZenithDistanceMin >= " . $_GET["fZDMin"] . " AND fZenithDistanceMax <= " . $_GET["fZDMax"] . ") ";
    140 
    141         if (!empty($_GET["fSourceN"]))
    142             $query0 .= " AND fSourceName REGEXP \"^" . $_GET["fSourceN"] . "\" ";
    143 
    144         if (!empty($_GET["fStartDate"]))
    145         {
    146             if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
    147                 $query0 .= " AND ";
    148 
    149             $startdate=substr($_GET["fStartDate"], 0, 10);
    150             if ($startdate=="0000-00-00")
    151                 $query0 .=" fRunStart >= '" . $startdate . " 00:00:00' ";
    152             else
    153                 $query0 .= " fRunStart >= ADDDATE('" . $startdate . " 13:00:00', INTERVAL -1 DAY) ";
    154         }
    155 
    156         if (!empty($_GET["fStopDate"]))
    157         {
    158             if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
    159                 $query0 .= " AND ";
    160 
    161             $stopdate=substr($_GET["fStopDate"], 0, 10);
    162             $query0 .= " fRunStart < '" . $stopdate . " 13:00:00' ";
    163         }
    164 
    165         if (!empty($_GET["fStarStart"]))
    166         {
    167             if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
    168                 $query0 .= " AND ";
    169 
    170             $starstart=substr($_GET["fStarStart"], 0, 10);
    171             $query0 .=" fStar >= '" . $starstart . " 00:00:00' ";
    172         }
    173 
    174         if (!empty($_GET["fStarStop"]))
    175         {
    176             if (strpos(strrev($query0), " DNA ")!=0 || !strpos(strrev($query0), " DNA "))
    177                 $query0 .= " AND ";
    178 
    179             $starstop=substr($_GET["fStarStop"], 0, 10);
    180             $query0 .= " fStar < '" . $starstop . " 23:59:59' ";
    181         }
    182 
    183         if ($groups>0)
    184         {
    185             $query0 .= " GROUP BY ";
    186             $num = $groups;
    187             foreach ($checkgroup as $key => $element)
    188                 if ($element==-1)
    189                 {
    190                     $query0 .= GetCheck($fromtable,$key);
    191                     if ($num-->1)
    192                         $query0 .= ", ";
    193                 }
    194         }
    195 
    196         if ($statusgroups>0)
    197         {
    198             $query0 .= " GROUP BY ";
    199             $num = $statusgroups;
    200             foreach ($checkstatusgroup as $key => $element)
    201                 if ($element==-1)
    202                 {
    203                     $query0 .= $alias[$key];
    204                     if ($num-->1)
    205                         $query0 .= ", ";
    206                 }
    207         }
    208 
    209         if (!empty($_GET["fSortBy"]))
    210         {
    211             $val=substr($_GET["fSortBy"], 0, -1);
    212             $query0 .= " ORDER BY " . GetTable($fromtable,$val) . " ";
    213             if (substr($_GET["fSortBy"], -1)=="-")
    214                 $query0 .= "DESC";
    215         }
    216 
    217         if (empty($_GET["fSortBy"]) && $groups==0 && $statusgroups==0)
    218             $query0 .= "ORDER BY Sequences.fSequenceFirst DESC ";
    219 
    220         if (empty($_GET["fNumStart"]))
    221             $_GET["fNumStart"]=0;
    222 
    223         if (empty($_GET["fSendTxt"]))
    224             $query0 .= " LIMIT " . $_GET["fNumStart"] . ", " . $_GET["fNumResults"];
    225 
    226         return $query0;
    227     }
    228 
    229     function InitGet($_GET)
    230     {
    231         // Find out whether it is the first call to the php script
    232         $first = empty($_GET["fRunMin"]) && empty($_GET["fRunMax"]);
    233 
    234         if (empty($_GET["fNumResults"]))
    235             $_GET["fNumResults"]="100";
    236 
    237         if (empty($_GET["fRunStart"]))
    238             $_GET["fRunStart"]=$first?"On":"";
    239 
    240         if (empty($_GET["fRunTime/60"]))
    241             $_GET["fRunTime/60"]=$first?"On":"";
    242 
    243         if (empty($_GET["fZenithDistanceMin"]))
    244             $_GET["fZenithDistanceMin"]=$first?"On":"";
    245 
    246         if (empty($_GET["fZenithDistanceMax"]))
    247             $_GET["fZenithDistanceMax"]=$first?"On":"";
    248 
    249         if (empty($_GET["fSourceName"]))
    250             $_GET["fSourceName"]=$first?"On":"";
    251 
    252         if (empty($_GET["fObservationModeName"]))
    253             $_GET["fObservationModeName"]=$first?"On":"";
    254 
    255         if (empty($_GET["fUnsuitableInner"]))
    256             $_GET["fUnsuitableInner"]=$first?"On":"";
    257 
    258         if (empty($_GET["fUnreliableInner"]))
    259             $_GET["fUnreliableInner"]=$first?"On":"";
    260 
    261         if (empty($_GET["fIsolatedInner"]))
    262             $_GET["fIsolatedInner"]=$first?"On":"";
    263 
    264         if (empty($_GET["fIsolatedMaxCluster"]))
    265             $_GET["fIsolatedMaxCluster"]=$first?"On":"";
    266 
    267 //        if (empty($_GET["fArrTimeMeanInner"]))
    268 //            $_GET["fArrTimeMeanInner"]=$first?"On":"";
    269 
    270         if (empty($_GET["fArrTimeRmsInner"]))
    271             $_GET["fArrTimeRmsInner"]=$first?"On":"";
    272 
    273         if (empty($_GET["fMeanPedRmsInner"]))
    274             $_GET["fMeanPedRmsInner"]=$first?"On":"";
    275 
    276         if (empty($_GET["fPulsePosMean"]))
    277             $_GET["fPulsePosMean"]=$first?"On":"";
    278 
    279         if (empty($_GET["fConvFactorInner"]))
    280             $_GET["fConvFactorInner"]=$first?"On":"";
    281 
    282         if (empty($_GET["fInhomogeneity"]))
    283             $_GET["fInhomogeneity"]=$first?"On":"";
    284 
    285         if (empty($_GET["fPSF"]))
    286             $_GET["fPSF"]=$first?"On":"";
    287 
    288         if (empty($_GET["fMuonNumber"]))
    289             $_GET["fMuonNumber"]=$first?"On":"";
    290 
    291         if (empty($_GET["fEffOnTime/fRunTime"]))
    292             $_GET["fEffOnTime/fRunTime"]=$first?"On":"";
    293 
    294         if (empty($_GET["fMuonRate"]))
    295             $_GET["fMuonRate"]=$first?"On":"";
    296 
    297         if (empty($_GET["fDataRate"]))
    298             $_GET["fDataRate"]=$first?"On":"";
    299 
    300 //        if (empty($_GET["fMaxHumidity"]))
    301 //            $_GET["fMaxHumidity"]=$first?"On":"";
    302 
    303         if (empty($_GET["fBrightnessMed"]))
    304             $_GET["fBrightnessMed"]=$first?"On":"";
    305 
    306         if (empty($_GET["fNumStarsMed"]))
    307             $_GET["fNumStarsMed"]=$first?"On":"";
    308 
    309         if (empty($_GET["fNumStarsCorMed"]))
    310             $_GET["fNumStarsCorMed"]=$first?"On":"";
    311 
    312         if (empty($_GET["fOff"]))
    313             $_GET["fOff"]=$first?"On":"";
    314 
    315         if (empty($_GET["fLinks"]))
    316             $_GET["fLinks"]=$first?"On":"";
    317 
    318         if (empty($_GET["fOnlyOff"]))
    319             $_GET["fOnlyOff"]=$first?"Off":"";
    320 
    321         InitFindOffData($_GET, $first);
    322     }
    323 
    324     function PrintForm($_GET, $host, $user, $pw, $db, $limitsmean, $limitsmin, $limitsmax, $alias)
     254            $start=$_SESSION["fNumStart"];
     255
     256        if (empty($_SESSION["fSendTxt"]))
     257            $query0 .= " LIMIT " . $start . ", " . $_SESSION["fNumResults"];
     258
     259            return $query0;
     260    }
     261
     262    function PrintForm($host, $user, $pw, $db, $limitsmean, $limitsmin, $limitsmax, $alias)
    325263    {
    326264        printf("<center>\n");
    327265        printf("<form action='builddatasets.php' METHOD='GET'>\n");
    328266        printf("<input id='sh' type='hidden' name='fShowHide' value='");
    329         if (!empty($_GET["fShowHide"]))
    330             printf("%s", $_GET["fShowHide"]);
     267        if (!empty($_SESSION["fShowHide"]))
     268            printf("%s", $_SESSION["fShowHide"]);
    331269        else
    332             printf("1000000000");
     270            printf("1000000010");//display Ranges
    333271        printf("'>\n");
    334272        printf("<img id='allbutton' src='minus.png' alt='-' onclick='showhide(\"all\")'> <b>Menu</b>&nbsp;&nbsp;&nbsp;&nbsp;\n");
     
    370308        PrintButtons("builddatasets.php");
    371309
    372         $sequon=" ";
    373         $sequoff=" ";
    374         foreach($_POST as $key => $val)
    375             if ($val=="On")
    376             {
    377                 if (ereg("ON$", $key))
    378                     $sequon.=str_replace("ON", " ", $key);
    379                 if (ereg("Off$", $key))
    380                     $sequoff.=str_replace("Off", " ", $key);
    381             }
    382         printf("<input name='Set' type='hidden' value='%s'>\n", $sequon);
    383         printf("<input name='Set2' type='hidden' value='%s'>\n", $sequoff);
    384         printf("<input name='name' type='hidden' value='%s'>\n", $_POST["name"]);
    385         printf("<input name='comment' type='hidden' value='%s'>\n", $_POST["comment"]);
    386         printf("<input name='obsmode' type='hidden' value='%s'>\n", $_POST["fObservationModeKEY"]);
    387         printf("<input name='username' type='hidden' value='%s'>\n", $_POST["fUserKEY"]);
    388310        printf("</form>\n");
    389311        printf("</center>\n");
     
    394316    }
    395317
     318    function InsertDataSet($values, $dataset)
     319    {
     320        $insquery[0]="INSERT DataSets SET fDataSetNumber=" . $dataset . ", fUserKEY=" . $_SESSION["user"];
     321        $insquery[0].=", fComment='" . $_SESSION["comment"] . "', fObservationModeKEY=" . $_SESSION["obsmode"];
     322        $insquery[0].=", fDataSetName='" . $_SESSION["name"] . "', fSourceKEY= " . $_SESSION["realsourcekey"];
     323        $insquery[0].=", fRunStart='" . $values["Min(fRunStart)"]["on"];
     324        $insquery[0].="', fRunStop='" . $values["Max(fRunStop)"]["on"];
     325        $insquery[0].="', fZenithDistanceMin=" . $values["Min(fZenithDistanceMin)"]["on"];
     326        $insquery[0].=", fZenithDistanceMax=" . $values["Max(fZenithDistanceMax)"]["on"];
     327        $insquery[0].=", fRunTime=" . $_SESSION["runtime"];
     328        $insquery[1]="INSERT DataSetProcessStatus SET fDataSetNumber=" . $dataset . ", fDataSetInserted=Now()";
     329        $i=2;
     330        foreach(explode(" ", trim($_SESSION["sequon"])) as $key => $sequ)
     331        {
     332            $insquery[$i]="INSERT DataSetSequenceMapping SET fDataSetNumber=" . $dataset;
     333            $insquery[$i].=", fSequenceFirst=" . $sequ . ", fOnOff=1";
     334            $i=$i+1;
     335        }
     336        if (!empty($off))
     337        {
     338            foreach(explode(" ", trim($_SESSION["sequoff"])) as $key => $sequ)
     339            {
     340                $insquery[$i]="INSERT DataSetSequenceMapping SET fDataSetNumber=" . $dataset;
     341                $insquery[$i].=", fSequenceFirst=" . $sequ . ", fOnOff=2";
     342                $i=$i+1;
     343            }
     344        }
     345        // insert
     346        if (!empty($_SESSION["insert"]) && $numerr==0)
     347        {
     348            printf("<br><br>\n");
     349            foreach($insquery as $num => $q)
     350            {
     351                printf("Inserted Query #%s: %s<br>\n", $num, $q);
     352                $insresult=mysql_query($q);
     353                if (mysql_errno()>0)
     354                    printf("&nbsp; Errorno: %s <br>\n", mysql_errno());
     355                if (mysql_error()!="")
     356                    printf("&nbsp; Errormsg: %s <br>\n", mysql_error());
     357                if (mysql_info()!="")
     358                    printf("&nbsp; Info: %s <br>\n", mysql_info());
     359                printf("&nbsp; Affected Rows: %s <br><br>\n", mysql_affected_rows());
     360                mysql_free_result($insresult);
     361                if (mysql_errno()>0)
     362                {
     363                    printf("ERROR => stop inserting. <br><br>\n");
     364                    break;
     365                }
     366            }
     367            // reset after insert
     368            unset($_SESSION["insert"]);
     369            unset($_SESSION["name"]);
     370            unset($_SESSION["comment"]);
     371        }
     372        else
     373            printf("<input type='button' value='Insert Data Set' onClick='self.location.href=\"%s&insert=yes\"'>&nbsp;&nbsp;&nbsp;\n", GetClearedURL());
     374    }
     375
    396376    function PrintPage($html, $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $limitsmean, $limitsmin, $limitsmax, $needs)
    397377    {
     
    404384        mysql_select_db($db);
    405385
    406         $query0 = CreateQuery($_GET, $alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs);
     386        $query0 = CreateQuery($alias, $checkwhere, $checkgroup, $checkstatusgroup, $needs);
    407387
    408388        $result0 = mysql_query($query0, $db_id);
     389        $result1 = mysql_query("SELECT FOUND_ROWS()", $db_id);
    409390
    410391        if ($result0)
     
    412393            if ($html=="1" || $html=="2")
    413394            {
    414                 PrintMagicTable($result0, $alias, $rightalign, $limitsmean, $limitsmin, $limitsmax, "yes", $_GET);
    415                 foreach($_POST as $key => $val)
    416                     if ($val=="On")
     395                PrintMagicTable($result0, $alias, $rightalign, $limitsmean, $limitsmin, $limitsmax, $result1, "yes");
     396
     397                if ($_SESSION["sequon"]!=" " || $_SESSION["sequoff"]!=" ")
     398                {
     399                    printf("<div align='left'>\n");
     400                    printf("Remark: To store your selection you have to press 'Update Data Set'<br> \n");
     401                    if ($_SESSION["DisplaySelected"]!="yes" && ($_SESSION["sequon"]!=" " || $_SESSION["sequoff"]!=" "))
    417402                    {
    418                         if (ereg("ON$", $key))
    419                             $sequon.=str_replace("ON", " ", $key);
    420                         if (ereg("Off$", $key))
    421                             $sequoff.=str_replace("Off", " ", $key);
     403                        printf("Remark: To be able to remove sequence(s) from your selection you have to \n");
     404                        printf("'Display Selected Sequences'");
     405//                        printf("<input type='button' value='Display Selected Sequences' onClick='self.location.href=\"%s&DisplaySelected=yes\"'>\n", GetClearedURL("yes"));
     406                        printf(" only.<br>\n");
    422407                    }
    423 
    424                 printf("<input type='submit' value='Get Dataset'><br><br>\n");
    425                 printf("<input name='submit' type='hidden' value='post'>\n");
    426 
    427                 $on=str_replace(" ", ",", trim($sequon));
    428                 $off=str_replace(" ", ",", trim($sequoff));
    429 
    430                 $values=array("Sum(fRunTime)/60"         => $runtime,
    431                               "Min(fRunTime)/60"         => $runtimemin,
    432                               "Max(fUnsuitableInner)"    => $unsuitablemax,
    433                               "Max(fUnreliableInner)"    => $unreliablemax,
    434                               "Max(fIsolatedInner)"      => $isolatedmax,
    435                               "Max(fIsolatedMaxCluster)" => $imcmax,
    436                               "Max(fArrTimeMeanInner)"   => $arrtimemax,
    437                               "Min(fArrTimeMeanInner)"   => $arrtimemin,
    438                               "Max(fArrTimeRmsInner)"    => $arrtimermsmax,
    439                               "Avg(fMeanPedRmsInner)"    => $pedrmsmean,
    440                               "Std(fMeanPedRmsInner)"    => $pedrmsrms,
    441                               "Min(fMeanPedRmsInner)"    => $pedrmsmin,
    442                               "Max(fMeanPedRmsInner)"    => $pedrmsmax,
    443                               "Min(fPulsePosMean)"       => $pulseposmin,
    444                               "Max(fPulsePosMean)"       => $pulseposmax,
    445                               "Max(fPulsePosRms)"        => $pulseposrmsmax,
    446                               "Max(fMaxHumidity)"        => $hummax,
    447                               "Max(fInhomogeneity)"      => $inhommax,
    448                               "Avg(fInhomogeneity)"      => $inhommean,
    449                               "Std(fInhomogeneity)"      => $inhomrms,
    450                               "Min(fMeanNumberIslands)"  => $numislmin,
    451                               "Max(fMeanNumberIslands)"  => $numislmax,
    452                               "Min(fDataRate)"           => $clratemin,
    453                               "Max(fDataRate)"           => $clratemax,
    454                               "Min(fMuonRate)"           => $muonratemin,
    455                               "Max(fMuonRate)"           => $muonratemax,
    456                               "Min(fMuonNumber)"         => $muonnumbermin,
    457                               "Avg(fPSF)"                => $psfmean,
    458                               "Std(fPSF)"                => $psfrms,
    459                               "Min(fPSF)"                => $psfmin,
    460                               "Max(fPSF)"                => $psfmax,
    461                               "Min(fEffOnTime/fRunTime)" => $relontimemin,
    462                               "Max(fEffOnTime/fRunTime)" => $relontimemax,
    463                               "Min(fBrightnessMed)"      => $brightmin,
    464                               "Max(fBrightnessMed)"      => $brightmax,
    465                               "Min(fNumStarsMed)"        => $idstarsmin,
    466                               "Max(fNumStarsMed)"        => $idstarsmax,
    467                               "Min(fNumStarsCorMed)"     => $corstarsmin,
    468                               "Max(fNumStarsCorMed)"     => $corstarsmax,
    469                               "Min(fZenithDistanceMin)"  => $zdmin,
    470                               "Max(fZenithDistanceMax)"  => $zdmax,
    471                               "Min(fRunStart)"           => $starttime,
    472                               "Max(fRunStop)"            => $stoptime,
    473                              );
    474                 //get runtimes of dataset
    475                 function GetSequenceValues($db_id, $sequences, $txt, &$values)
    476                 {
    477                     $query="SELECT COUNT(*) ";
    478                     foreach($values as $name => $varname)
    479                         $query.=", " . $name;
    480                     $query.=" FROM Sequences ";
    481                     $query.=" LEFT JOIN Calibration USING(fSequenceFirst,fTelescopeNumber) ";
    482                     $query.=" LEFT JOIN Star USING(fSequenceFirst,fTelescopeNumber) ";
    483                     $query.=" WHERE Sequences.fSequenceFirst IN (" . $sequences . ")";
     408                    printf("<br>\n");
     409
     410                    printf("<u>Your Data Set:</u> <br>\n");
     411
     412                    $on=str_replace(" ", ",", trim($_SESSION["sequon"]));
     413                    $off=str_replace(" ", ",", trim($_SESSION["sequoff"]));
     414
     415                    $values=array("Sum(fRunTime)/60"         => $runtime,
     416                                  "Min(fRunTime)/60"         => $runtimemin,
     417                                  "Max(fUnsuitableInner)"    => $unsuitablemax,
     418                                  "Max(fUnreliableInner)"    => $unreliablemax,
     419                                  "Max(fIsolatedInner)"      => $isolatedmax,
     420                                  "Max(fIsolatedMaxCluster)" => $imcmax,
     421                                  "Max(fArrTimeMeanInner)"   => $arrtimemax,
     422                                  "Min(fArrTimeMeanInner)"   => $arrtimemin,
     423                                  "Max(fArrTimeRmsInner)"    => $arrtimermsmax,
     424                                  "Avg(fMeanPedRmsInner)"    => $pedrmsmean,
     425                                  "Std(fMeanPedRmsInner)"    => $pedrmsrms,
     426                                  "Min(fMeanPedRmsInner)"    => $pedrmsmin,
     427                                  "Max(fMeanPedRmsInner)"    => $pedrmsmax,
     428                                  "Min(fPulsePosMean)"       => $pulseposmin,
     429                                  "Max(fPulsePosMean)"       => $pulseposmax,
     430                                  "Max(fPulsePosRms)"        => $pulseposrmsmax,
     431                                  "Max(fMaxHumidity)"        => $hummax,
     432                                  "Max(fInhomogeneity)"      => $inhommax,
     433                                  "Avg(fInhomogeneity)"      => $inhommean,
     434                                  "Std(fInhomogeneity)"      => $inhomrms,
     435                                  "Min(fMeanNumberIslands)"  => $numislmin,
     436                                  "Max(fMeanNumberIslands)"  => $numislmax,
     437                                  "Avg(fDataRate)"           => $clratemean,
     438                                  "Min(fDataRate)"           => $clratemin,
     439                                  "Max(fDataRate)"           => $clratemax,
     440                                  "Min(fMuonRate)"           => $muonratemin,
     441                                  "Max(fMuonRate)"           => $muonratemax,
     442                                  "Min(fMuonNumber)"         => $muonnumbermin,
     443                                  "Avg(fPSF)"                => $psfmean,
     444                                  "Std(fPSF)"                => $psfrms,
     445                                  "Min(fPSF)"                => $psfmin,
     446                                  "Max(fPSF)"                => $psfmax,
     447                                  "Min(fEffOnTime/fRunTime)" => $relontimemin,
     448                                  "Max(fEffOnTime/fRunTime)" => $relontimemax,
     449                                  "Min(fBrightnessMed)"      => $brightmin,
     450                                  "Max(fBrightnessMed)"      => $brightmax,
     451                                  "Min(fNumStarsMed)"        => $idstarsmin,
     452                                  "Max(fNumStarsMed)"        => $idstarsmax,
     453                                  "Min(fNumStarsCorMed)"     => $corstarsmin,
     454                                  "Max(fNumStarsCorMed)"     => $corstarsmax,
     455                                  "Min(fZenithDistanceMin)"  => $zdmin,
     456                                  "Max(fZenithDistanceMax)"  => $zdmax,
     457                                  "Min(fRunStart)"           => $starttime,
     458                                  "Max(fRunStop)"            => $stoptime,
     459                                 );
     460                    //get runtimes of dataset
     461                    function GetSequenceValues($db_id, $sequences, $txt, &$values)
     462                    {
     463                        $query="SELECT COUNT(*) ";
     464                        foreach($values as $name => $varname)
     465                            $query.=", " . $name;
     466                        $query.=" FROM Sequences ";
     467                        $query.=" LEFT JOIN Calibration USING(fSequenceFirst,fTelescopeNumber) ";
     468                        $query.=" LEFT JOIN Star USING(fSequenceFirst,fTelescopeNumber) ";
     469                        $query.=" WHERE Sequences.fSequenceFirst IN (" . $sequences . ")";
     470                        $result = mysql_query($query, $db_id);
     471                        $row = mysql_fetch_assoc($result);
     472                        foreach($values as $name => $varname)
     473                            $values[$name][$txt]=$row[$name];
     474                        mysql_free_result($result);
     475                    }
     476
     477                    //get next dataset#
     478                    $query="SELECT fDataSetNumber+1 FROM DataSets ORDER BY fDataSetNumber DESC LIMIT 0,1";
    484479                    $result = mysql_query($query, $db_id);
    485480                    $row = mysql_fetch_assoc($result);
    486                     foreach($values as $name => $varname)
    487                         $values[$name][$txt]=$row[$name];
     481                    $dataset=$row["fDataSetNumber+1"];
     482                    if (empty($dataset))
     483                        $dataset=1;
    488484                    mysql_free_result($result);
     485
     486                    //get sourcenames
     487                    function GetSources($db_id, $sequences)
     488                    {
     489                        $query="SELECT fSourceName FROM Source LEFT JOIN Sequences USING(fSourceKEY) ";
     490                        $query.="WHERE fSequenceFirst IN (" . $sequences . ") GROUP BY fSourceName";
     491                        $result = mysql_query($query, $db_id);
     492                        while ($row = mysql_fetch_assoc($result))
     493                            $sources.=" " . $row["fSourceName"];
     494                        mysql_free_result($result);
     495                        return $sources;
     496                    }
     497                    $sourceson=GetSources($db_id, $on);
     498                    $sourcesoff=GetSources($db_id, $off);
     499
     500                    //get sourcename for dataset
     501                    $son=str_replace(" ", "','", trim($sourceson));
     502                    $query="SELECT fRealSourceKEY, Count(*), fSourceName FROM Source where fSourceName IN ('" . $son . "') GROUP BY fRealSourceKEY";
     503                    $result = mysql_query($query, $db_id);
     504                    $row = mysql_fetch_assoc($result);
     505                    $numsources=$row["Count(*)"];
     506                    $numrealkeys=mysql_num_rows($result);
     507                    $_SESSION["realsourcekey"]=$row["fRealSourceKEY"];
     508                    $_SESSION["realsourcename"]=$row["fSourceName"];
     509                    mysql_free_result($result);
     510                    //printf("found %s sources with real sourcekey %s", $numsources, $realsourcekey);
     511                    //printf("found %s keys", $numrealkeys);
     512
     513                    //check observationmode for on-sequences
     514                    $query="SELECT fObservationModeKEY FROM Sequences where fSequenceFirst IN (" . $on . ") GROUP BY fObservationModeKEY";
     515                    $result = mysql_query($query, $db_id);
     516                    $row = mysql_fetch_assoc($result);
     517                    $obskey=$row["fObservationModeKEY"];
     518                    $numobskeys=mysql_num_rows($result);
     519                    mysql_free_result($result);
     520
     521                    //check dt for on-sequences
     522                    $query="SELECT fDiscriminatorThresholdTableKEY FROM Sequences where fSequenceFirst IN (" . $on . ") GROUP BY fDiscriminatorThresholdTableKEY";
     523                    $result = mysql_query($query, $db_id);
     524                    $numdtkeys=mysql_num_rows($result);
     525                    mysql_free_result($result);
     526
     527
     528                    //set limit
     529                    $runtimelimit=5;
     530                    $unsuitablemaxlimit=15;
     531                    $isolatedlimit=0;
     532                    $imclimit=0;
     533                    $pedrmsrms=0.09;
     534                    $scalelimit=1.3;
     535                    $inhomlimit=13;
     536                    $numstarslimit=20;
     537                    $numstarscorlimit=10;
     538
     539
     540                    //check values for infos, warnings and errors
     541                    $numerr=0;
     542                    if (!empty($on))
     543                    {
     544                        $color=array("INFO"  => "#000000",
     545                                     "WARN"  => "#FF9900",
     546                                     "ERROR" => "#FF0000");
     547                        printf("<div align='left'><font><ul>\n");
     548                        $vals=array("on", "off");
     549                        foreach($vals as $num => $val)
     550                        {
     551                            if (empty(${$val}))
     552                                continue;
     553                            //get information from the database
     554                            GetSequenceValues($db_id, ${$val}, $val, $values);
     555
     556                            if ($values["Min(fNumStarsCorMed)"][$val]<$numstarscorlimit)
     557                                printf("<li style='color:%s'>%s: One of your %s-sequences has less than %s correlated stars (%s). </li>\n",
     558                                       $color["WARN"], "WARN", $val, $numstarscorlimit, $values["Min(fNumStarsCorMed)"][$val]);
     559                            if ($values["Min(fNumStarsMed)"][$val]<$numstarslimit)
     560                                printf("<li style='color:%s'>%s: One of your %s-sequences has less than %s identified stars (%s). </li>\n",
     561                                       $color["WARN"], "WARN", $val, $numstarslimit, $values["Min(fNumStarsMed)"][$val]);
     562                            if ($values["Min(fRunTime)/60"][$val]<$runtimelimit)
     563                                printf("<li style='color:%s'>%s: One of your %s-sequences is shorter than %s min (%s min). </li>\n",
     564                                       $color["INFO"], "INFO", $val, $runtimelimit, $values["Min(fRunTime)/60"][$val]);
     565                            if ($values["Max(fInhomogeneity)"][$val]>$inhomlimit)
     566                                printf("<li style='color:%s'>%s: One of your %s-sequences has an inhomogeneity larger than %s (%s). </li>\n",
     567                                       $color["WARN"], "WARN", $val, $inhomlimit, $values["Max(fInhomogeneity)"][$val]);
     568                            if ($values["Max(fUnsuitableInner)"][$val]>$unsuitablemaxlimit)
     569                                printf("<li style='color:%s'>%s: One of your %s-sequences has more than %s unsuitable inner pixel (%s). </li>\n",
     570                                       $color["WARN"], "WARN", $val, $unsuitablemaxlimit, $values["Max(fUnsuitableInner)"][$val]);
     571                            if ($values["Max(fIsolatedInner)"][$val]>$isolatedlimit)
     572                            printf("<li style='color:%s'>%s: One of your %s-sequences has more than %s isolated inner pixel (%s). </li>\n",
     573                                   $color["WARN"], "WARN", $val, $isolatedlimit, $values["Max(fIsolatedInner)"][$val]);
     574                            if ($values["Max(fIsolatedMaxCluster)"][$val]>$imclimit)
     575                                printf("<li style='color:%s'>%s: One of your %s-sequences has more than %s isolated max cluster (%s). </li>\n",
     576                                       $color["WARN"], "WARN", $val, $imclimit, $values["Max(fIsolatedMaxCluster)"][$val]);
     577                        }
     578                        //check selected dataset for errors
     579                        if (!empty($on) && $values["Max(fMeanPedRmsInner)"]["on"]>$values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms)
     580                            printf("<li style='color:%s'>%s: One of your on-sequences has a PedRms larger than %s (%s).</li>\n",
     581                                   $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms, $values["Max(fMeanPedRmsInner)"]["on"]);
     582                        if (!empty($off) && $values["Max(fMeanPedRmsInner)"]["off"]>$values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms)
     583                            printf("<li style='color:%s'>%s: One of your off-sequences has a PedRms larger than %s (%s). </li>\n",
     584                                   $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms, $values["Max(fMeanPedRmsInner)"]["off"]);
     585                        if (!empty($off) && $values["Min(fMeanPedRmsInner)"]["off"]<$values["Avg(fMeanPedRmsInner)"]["on"]-$pedrmsrms)
     586                            printf("<li style='color:%s'>%s: One of your off-sequences has a PedRms smaller than %s (%s). </li>\n",
     587                                   $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]-$pedrmsrms, $values["Min(fMeanPedRmsInner)"]["off"]);
     588                        $scale=$values["Sum(fRunTime)/60"]["on"]/$values["Sum(fRunTime)/60"]["off"];
     589                        if ($scale > $scalelimit)
     590                            printf("<li style='color:%s'>%s: Your scale factor is larger than %s (%0.2f). Try to find more offdata! </li>\n",
     591                                   $color["WARN"], "WARN", $scalelimit, $scale);
     592                        $doubleseq=0;
     593                        foreach(explode(" ", $_SESSION["sequon"]) as $n => $s)
     594                        {
     595                            if (ereg($s, $_SESSION["sequoff"]))
     596                                $doubleseq++;
     597                        }
     598                        if ($obskey!=$_SESSION["obsmode"])
     599                        {
     600                            printf("<li style='color:%s'>%s: You have not selected any Off sequences. </li>\n",
     601                                   $color["ERROR"], "ERROR", $doubleseq);
     602                            $numerr=$numerr+1;
     603                        }
     604                        if ($doubleseq>0)
     605                        {
     606                            printf("<li style='color:%s'>%s: You have selected sequences (%s) as On AND Off. </li>\n",
     607                                   $color["ERROR"], "ERROR", $doubleseq);
     608                            $numerr=$numerr+1;
     609                        }
     610                        if ($numrealkeys>1)
     611                        {
     612                            printf("<li style='color:%s'>%s: You have selected more than one (%s) on source. </li>\n",
     613                                   $color["ERROR"], "ERROR", $numrealkeys);
     614                            $numerr=$numerr+1;
     615                        }
     616                        if ($numobskeys>1)
     617                        {
     618                            printf("<li style='color:%s'>%s: You have selected more than one (%s) different observation modes in your on sequences. </li>\n",
     619                                   $color["ERROR"], "WARN", $numobskeys);
     620                            //$numerr=$numerr+1;
     621                        }     
     622                        if ($numdtkeys>1)
     623                        {
     624                            printf("<li style='color:%s'>%s: Your selected on sequences have more than one (%s) different discriminator threshold tables. </li>\n",
     625                                   $color["ERROR"], "WARN", $numdtkeys);
     626                        }
     627                        if (empty($_SESSION["realsourcekey"]))
     628                        {
     629                            printf("<li style='color:%s'>%s: The source you selected does not have a real sourcekey, yet. Please insert fRealSourceKEY in the DB for %s (contact: datacenter@astro.uni-wuerzburg.de). </li>\n",
     630                                   $color["ERROR"], "ERROR", $sourceson);
     631                            $numerr=$numerr+1;
     632                        }
     633                        if (empty($_SESSION["name"]))
     634                        {
     635                            printf("<li style='color:%s'>%s: You have to choose a name. </li>\n",
     636                                   $color["ERROR"], "ERROR");
     637                            $numerr=$numerr+1;
     638                        }
     639                        if (empty($_SESSION["comment"]))
     640                        {
     641                            printf("<li style='color:%s'>%s: You have to comment your data set. </li>\n",
     642                                   $color["ERROR"], "ERROR");
     643                            $numerr=$numerr+1;
     644                        }
     645                        printf("</ul></font>\n");
     646                        printf("</div>");
     647
     648                        //set runtime in session (has to be after calling GetSequenceValues())
     649                        $_SESSION["runtime"]  = $values["Sum(fRunTime)/60"]["on"];
     650                        $_SESSION["zdmin"]    = $values["Min(fZenithDistanceMin)"]["on"];
     651                        $_SESSION["zdmax"]    = $values["Max(fZenithDistanceMax)"]["on"];
     652                        $_SESSION["meanrate"] = $values["Avg(fDataRate)"]["on"];
     653                        $_SESSION["psfmean"]  = $values["Avg(fPSF)"]["on"];
     654                        $_SESSION["psfmin"]   = $values["Min(fPSF)"]["on"];
     655                        $_SESSION["psfmax"]   = $values["Max(fPSF)"]["on"];
     656
     657                        printf("SequencesOn: %s<br>\n", $_SESSION["sequon"]);
     658                        if ($_SESSION["sequoff"]!=" ")
     659                            printf("SequencesOff: %s<br>\n", $_SESSION["sequoff"]);
     660
     661                        //set observation mode
     662                        if ($_SESSION["sequoff"]==" ")
     663                            $obsmode="Wobble";
     664                        else
     665                            $obsmode="On";
     666                        //get key from db for insert query
     667                        $query   = "SELECT fObservationModeKEY FROM ObservationMode WHERE fObservationModeName='".$obsmode."'";
     668                        $result  = mysql_query($query);
     669                        $row = mysql_fetch_assoc($result);
     670                        $_SESSION["obsmode"] = $row["fObservationModeKEY"];
     671                        mysql_free_result($result);
     672                        printf("Observation mode: %s <br>\n", $obsmode);
     673                        printf("RunTime: %s min <br>\n", $_SESSION["runtime"]);
     674                        printf("Mean Rate after cleaning: %s Hz <br>\n", $_SESSION["meanrate"]);
     675                        printf("Zd: %s - %s deg <br>\n", $_SESSION["zdmin"], $_SESSION["zdmax"]);
     676                        printf("PSF: %s (%s - %s) mm <br>\n", $_SESSION["psfmean"], $_SESSION["psfmin"], $_SESSION["psfmax"]);
     677
     678                        //user name
     679                        printf("User name: %s <br><br>\n", $_SERVER['PHP_AUTH_USER']);
     680
     681                        // data set name and comment: to be inserted by the user
     682                        printf("Data set name: &nbsp;<input name='name' type='text' size='20' maxlength='20' value='%s'><br>\n", $_SESSION["name"]);
     683                        printf("Comment: &nbsp;<input name='comment' type='text' size='50' maxlength='255' value='%s'><br><br>\n", $_SESSION["comment"]);
     684
     685
     686                        //PrintUpdateDataSetButton() has to be called before InsertDataSet()
     687                        //   to ensure that there are no problem with insert and $_SESSION["insert"]
     688
     689                        //allow 'insert/get dataset' in case no error is found
     690                        if ($numerr!=0)
     691                        {
     692                            printf("Remark: Only data sets without errors can be inserted.<br>");
     693                            printf("<font color='red'>Your data set has %s error(s).</font><br><br>", $numerr);
     694                            PrintUpdateDataSetButton();
     695                        }
     696                        else
     697                        {
     698                            PrintUpdateDataSetButton();
     699
     700                            if ($_SERVER['PHP_AUTH_USER']=="MAGIC")
     701                                printf("<br><br>\n Remark: As user MAGIC you are not allowed to insert data sets into the database. For an own account, please contact datacenter@astro.uni-wuerzburg.de <br><br>\n");
     702                            else
     703                                InsertDataSet($values, $dataset);
     704
     705                            printf("<input type='button' value='Get Data Set File' onClick='self.location.href=\"%s&fSendTxt=2\"'>&nbsp;&nbsp;&nbsp;\n", GetClearedURL());
     706                        }
     707
     708
     709                        //print table with more information on dataset
     710                        printf("<br><br><br>\n");
     711                        printf("<table><tr><td colspan='2'><b>More Information on Your Data Set:<b></td></tr>");
     712                        printf("<tr><td>Next DataSet# in DB: </td><td>%s</td></tr>", $dataset);
     713                        printf("<tr><td valign='top'>SequencesOn:</td><td> %s</td></tr>", $_SESSION["sequon"]);
     714                        if ($_SESSION["sequoff"]!=" ")
     715                        {
     716                            printf("<tr><td valign='top'>SequencesOff:</td><td> %s</td></tr>", $_SESSION["sequoff"]);
     717                            printf("<tr><td>Scale factor (On/Off): </td><td>%0.2f</td></tr>", $scale);
     718                        }
     719                        printf("<tr><td>SourcenamesOn [%s]: </td><td>%s</td></tr>", str_word_count($sourceson, 0, "1234567890+"), $sourceson);
     720                        if ($_SESSION["sequoff"]!=" ")
     721                            printf("<tr><td>SourcenamesOff [%s]: </td><td>%s</td></tr>", str_word_count($sourcesoff, 0, "1234567890+"), $sourcesoff);
     722                        printf("</table>\n");
     723
     724                        printf("<table border='1'>\n");
     725                        printf("<tr><td>Value</td><td>On</td>");
     726                        if (!empty($off))
     727                            printf("<td>Off</td></tr>\n");
     728                        foreach($values as $name => $varname)
     729                        {
     730                            printf("<tr><td>%s</td>\n", $name);
     731                            foreach($vals as $num => $val)
     732                                if (!empty(${$val}))
     733                                    printf("<td>%s</td>\n", $varname[$val]);
     734                            printf("</tr>\n");
     735                        }
     736                        printf("</table>\n");
     737                    }
    489738                }
    490 
    491                 //get next dataset#
    492                 $query="SELECT fDataSetNumber+1 FROM DataSets ORDER BY fDataSetNumber DESC LIMIT 0,1";
    493                 $result = mysql_query($query, $db_id);
    494                 $row = mysql_fetch_assoc($result);
    495                 $dataset=$row["fDataSetNumber+1"];
    496                 if (empty($dataset))
    497                     $dataset=1;
    498                 mysql_free_result($result);
    499 
    500                 //get sourcenames
    501                 function GetSources($db_id, $sequences)
    502                 {
    503                     $query="SELECT fSourceName FROM Source LEFT JOIN Sequences USING(fSourceKEY) ";
    504                     $query.="WHERE fSequenceFirst IN (" . $sequences . ") GROUP BY fSourceName";
    505                     $result = mysql_query($query, $db_id);
    506                     while ($row = mysql_fetch_assoc($result))
    507                         $sources.=" " . $row["fSourceName"];
    508                     mysql_free_result($result);
    509                     return $sources;
    510                 }
    511                 $sourceson=GetSources($db_id, $on);
    512                 $sourcesoff=GetSources($db_id, $off);
    513 
    514                 //get sourcename for dataset
    515                 $son=str_replace(" ", "','", trim($sourceson));
    516                 $query="SELECT fRealSourceKEY, Count(*) FROM Source where fSourcename IN ('" . $son . "') GROUP BY fRealSourceKEY";
    517 //                printf("q: %s <br>", $query);
    518                 $result = mysql_query($query, $db_id);
    519                 $row = mysql_fetch_assoc($result);
    520                 $numsources=$row["Count(*)"];
    521                 $numrealkeys=mysql_num_rows($result);
    522                 $realsourcekey=$row["fRealSourceKEY"];
    523                 mysql_free_result($result);
    524 //                printf("found %s sources with real sourcekey %s", $numsources, $realsourcekey);
    525 //                printf("found %s keys", $numrealkeys);
    526 
    527                 //check observationmode for on-sequences
    528                 $query="SELECT fObservationModeKEY FROM Sequences where fSequenceFirst IN (" . $on . ") GROUP BY fObservationModeKEY";
    529                 $result = mysql_query($query, $db_id);
    530                 $numobskeys=mysql_num_rows($result);
    531                 mysql_free_result($result);
    532 
    533                 //check dt for on-sequences
    534                 $query="SELECT fDiscriminatorThresholdTableKEY FROM Sequences where fSequenceFirst IN (" . $on . ") GROUP BY fDiscriminatorThresholdTableKEY";
    535                 $result = mysql_query($query, $db_id);
    536                 $numdtkeys=mysql_num_rows($result);
    537                 mysql_free_result($result);
    538 
    539 
    540                 //set limit
    541                 $runtimelimit=5;
    542                 $unsuitablemaxlimit=15;
    543                 $isolatedlimit=0;
    544                 $imclimit=0;
    545                 $pedrmsrms=0.09;
    546                 $scalelimit=1.3;
    547                 $inhomlimit=13;
    548                 $numstarslimit=20;
    549                 $numstarscorlimit=10;
    550 
    551 
    552                 //check values for infos, warnings and errors
    553                 $numerr=0;
    554                 if (!empty($on))
    555                 {
    556                     $color=array("INFO"  => "#000000",
    557                                  "WARN"  => "#FF9900",
    558                                  "ERROR" => "#FF0000");
    559                     printf("<div align='left'><font><ul>\n");
    560                     $vals=array("on", "off");
    561                     foreach($vals as $num => $val)
    562                     {
    563                         if (empty(${$val}))
    564                             continue;
    565                         GetSequenceValues($db_id, ${$val}, $val, $values);
    566 
    567                         if ($values["Min(fNumStarsCorMed)"][$val]<$numstarscorlimit)
    568                             printf("<li style='color:%s'>%s: one of your %s-sequences has less than %s correlated stars (%s)</li>",
    569                                    $color["WARN"], "WARN", $val, $numstarscorlimit, $values["Min(fNumStarsCorMed)"][$val]);
    570                         if ($values["Min(fNumStarsMed)"][$val]<$numstarslimit)
    571                             printf("<li style='color:%s'>%s: one of your %s-sequences has less than %s identified stars (%s)</li>",
    572                                    $color["WARN"], "WARN", $val, $numstarslimit, $values["Min(fNumStarsMed)"][$val]);
    573                         if ($values["Min(fRunTime)/60"][$val]<$runtimelimit)
    574                             printf("<li style='color:%s'>%s: one of your %s-sequences is shorter than %s min (%s min)</li>",
    575                                    $color["INFO"], "INFO", $val, $runtimelimit, $values["Min(fRunTime)/60"][$val]);
    576                         if ($values["Max(fInhomogeneity)"][$val]>$inhomlimit)
    577                             printf("<li style='color:%s'>%s: one of your %s-sequences has an inhomogeneity larger than %s (%s)</li>",
    578                                    $color["WARN"], "WARN", $val, $inhomlimit, $values["Max(fInhomogeneity)"][$val]);
    579                         if ($values["Max(fUnsuitableInner)"][$val]>$unsuitablemaxlimit)
    580                             printf("<li style='color:%s'>%s: one of your %s-sequences has more than %s unsuitable inner pixel (%s)</li>",
    581                                    $color["WARN"], "WARN", $val, $unsuitablemaxlimit, $values["Max(fUnsuitableInner)"][$val]);
    582                         if ($values["Max(fIsolatedInner)"][$val]>$isolatedlimit)
    583                             printf("<li style='color:%s'>%s: one of your %s-sequences has more than %s isolated inner pixel (%s)</li>",
    584                                    $color["WARN"], "WARN", $val, $isolatedlimit, $values["Max(fIsolatedInner)"][$val]);
    585                         if ($values["Max(fIsolatedMaxCluster)"][$val]>$imclimit)
    586                             printf("<li style='color:%s'>%s: one of your %s-sequences has more than %s isolated max cluster (%s)</li>",
    587                                    $color["WARN"], "WARN", $val, $imclimit, $values["Max(fIsolatedMaxCluster)"][$val]);
    588                     }
    589                     if (!empty($on) && $values["Max(fMeanPedRmsInner)"]["on"]>$values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms)
    590                         printf("<li style='color:%s'>%s: one of your on-sequences has a PedRms larger than %s (%s)</li>",
    591                                $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms, $values["Max(fMeanPedRmsInner)"]["on"]);
    592                     if (!empty($off) && $values["Max(fMeanPedRmsInner)"]["off"]>$values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms)
    593                         printf("<li style='color:%s'>%s: one of your off-sequences has a PedRms larger than %s (%s)</li>",
    594                                $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]+$pedrmsrms, $values["Max(fMeanPedRmsInner)"]["off"]);
    595                     if (!empty($off) && $values["Min(fMeanPedRmsInner)"]["off"]<$values["Avg(fMeanPedRmsInner)"]["on"]-$pedrmsrms)
    596                         printf("<li style='color:%s'>%s: one of your off-sequences has a PedRms smaller than %s (%s)</li>",
    597                                $color["WARN"], "WARN", $values["Avg(fMeanPedRmsInner)"]["on"]-$pedrmsrms, $values["Min(fMeanPedRmsInner)"]["off"]);
    598                     $scale=$values["Sum(fRunTime)/60"]["on"]/$values["Sum(fRunTime)/60"]["off"];
    599                     if ($scale > $scalelimit)
    600                         printf("<li style='color:%s'>%s: Your scale factor is larger than %s (%0.2f). Try to find more offdata!",
    601                                $color["WARN"], "WARN", $scalelimit, $scale);
    602                     /*
    603                     if (str_word_count($sourceson) > 1)
    604                         printf("<li style='color:%s'>%s: You have selected more than one (%s) on source",
    605                                $color["WARN"], "WARN", str_word_count($sourceson));
    606                     */
    607                     $doubleseq=0;
    608 //                    printf("finding: %s<br>", $sequon);
    609                     foreach(explode(" ", $sequon) as $n => $s)
    610                     {
    611 //                        printf("finding %s in %s <br>", $s, $sequoff);
    612                         if (ereg($s, $sequoff))
    613                         $doubleseq++;
    614                     }
    615                     if ($doubleseq>0)
    616                     {
    617                         printf("<li style='color:%s'>%s: You have selected sequences (%s) as On AND Off",
    618                                $color["ERROR"], "ERROR", $doubleseq);
    619                         $numerr=$numerr+1;
    620                     }
    621                     if ($numrealkeys>1)
    622                     {
    623                         printf("<li style='color:%s'>%s: You have selected more than one (%s) on source",
    624                                $color["ERROR"], "ERROR", $numrealkeys);
    625                         $numerr=$numerr+1;
    626                     }
    627                     if ($numobskeys>1)
    628                     {
    629                         printf("<li style='color:%s'>%s: You have selected more than one (%s) different observation modes for your on sequences",
    630                                $color["ERROR"], "WARN", $numobskeys);
    631 //                        $numerr=$numerr+1;
    632                     }
    633                     if ($numdtkeys>1)
    634                     {
    635                         printf("<li style='color:%s'>%s: Your selected on sequences have more than one (%s) different discriminator threshold tables ",
    636                                $color["ERROR"], "WARN", $numdtkeys);
    637                     }
    638                     if (empty($_POST["fObservationModeKEY"]) && !empty($_GET["obsmode"]))
    639                         $_POST["fObservationModeKEY"]=$_GET["obsmode"];
    640                     if ($_POST["fObservationModeKEY"]==3 && empty($off))
    641                     {
    642                         printf("<li style='color:%s'>%s: You have selected on/off mode, but you haven't chosen any off sequences.",
    643                                $color["ERROR"], "WARN");
    644 //                        $numerr=$numerr+1;
    645                     }
    646                     if (empty($realsourcekey))
    647                     {
    648                         printf("<li style='color:%s'>%s: The source you selected doesn't have a real sourcekey yet. Please insert fRealSourceKEY in the DB for %s",
    649                                $color["ERROR"], "ERROR", $sourceson);
    650                         $numerr=$numerr+1;
    651                     }
    652                     if (empty($_POST["fObservationModeKEY"]))
    653                     {
    654                         printf("<li style='color:%s'>%s: You have to choose an observation mode.",
    655                                $color["ERROR"], "ERROR");
    656                         $numerr=$numerr+1;
    657                     }
    658                     if (empty($_POST["fUserKEY"]))
    659                     {
    660                         printf("<li style='color:%s'>%s: You have to choose your username.",
    661                                $color["ERROR"], "ERROR");
    662                         $numerr=$numerr+1;
    663                     }
    664                     if (empty($_POST["name"]))
    665                     {
    666                         printf("<li style='color:%s'>%s: You have to choose a name.",
    667                                $color["ERROR"], "ERROR");
    668                         $numerr=$numerr+1;
    669                     }
    670                     if (empty($_POST["comment"]))
    671                     {
    672                         printf("<li style='color:%s'>%s: You have to comment your dataset.",
    673                                $color["ERROR"], "ERROR");
    674                         $numerr=$numerr+1;
    675                     }
    676                     //                printf("<li></li>");
    677                     printf("</ul></font>\n");
    678 
    679                     printf("<div align='left'>");
    680                     printf("SequencesOn: %s<br>", $sequon);
    681                     printf("SequencesOff: %s<br>", $sequoff);
    682                     $insquery[0]="INSERT DataSets SET fDataSetNumber=" . $dataset . ", fUserKEY=" . $_POST["fUserKEY"];
    683                     $insquery[0].=", fComment='" . $_POST["comment"] . "', fObservationModeKEY=" . $_POST["fObservationModeKEY"];
    684                     $insquery[0].=", fDataSetName='" . $_POST["name"] . "', fSourceKEY= " . $realsourcekey;
    685                     $insquery[0].=", fRunStart='" . $values["Min(fRunStart)"]["on"];
    686                     $insquery[0].="', fRunStop='" . $values["Max(fRunStop)"]["on"];
    687                     $insquery[0].="', fZenithDistanceMin=" . $values["Min(fZenithDistanceMin)"]["on"];
    688                     $insquery[0].=", fZenithDistanceMax=" . $values["Max(fZenithDistanceMax)"]["on"];
    689                     $insquery[0].=", fRunTime=" . $values["Sum(fRunTime)/60"]["on"];
    690                     $insquery[1]="INSERT DataSetProcessStatus SET fDataSetNumber=" . $dataset . ", fDataSetInserted=Now()";
    691                     $i=2;
    692                     foreach(explode(" ", trim($sequon)) as $key => $sequ)
    693                     {
    694                         $insquery[$i]="INSERT DataSetSequenceMapping SET fDataSetNumber=" . $dataset;
    695                         $insquery[$i].=", fSequenceFirst=" . $sequ . ", fOnOff=1";
    696                         $i=$i+1;
    697                     }
    698                     if (!empty($off))
    699                     {
    700                         foreach(explode(" ", trim($sequoff)) as $key => $sequ)
    701                         {
    702                             $insquery[$i]="INSERT DataSetSequenceMapping SET fDataSetNumber=" . $dataset;
    703                             $insquery[$i].=", fSequenceFirst=" . $sequ . ", fOnOff=2";
    704                             $i=$i+1;
    705                         }
    706                     }
    707                     foreach($insquery as $num => $q)
    708                     {
    709                         if (!empty($_POST["insert"]) && $numerr==0)
    710                         {
    711                             printf("Inserted Query #%s: %s<br>", $num, $q);
    712                             $insresult=mysql_query($q);
    713                             if (mysql_errno()>0)
    714                                 printf("&nbsp; Errorno: %s <br>", mysql_errno());
    715                             if (mysql_error()!="")
    716                                 printf("&nbsp; Errormsg: %s <br>", mysql_error());
    717                             if (mysql_info()!="")
    718                                 printf("&nbsp; Info: %s <br>", mysql_info());
    719                             printf("&nbsp; Affected Rows: %s <br>", mysql_affected_rows());
    720                             mysql_free_result($insresult);
    721                             if (mysql_errno()>0)
    722                             {
    723                                 printf("ERROR => stop inserting");
    724                                 break;
    725                             }
    726                         }
    727                     }
    728                     printf("</div>");
    729                     if (empty($_POST["name"]) && !empty($_GET["name"]))
    730                         $_POST["name"]=$_GET["name"];
    731                     if (empty($_POST["comment"]) && !empty($_GET["comment"]))
    732                         $_POST["comment"]=$_GET["comment"];
    733                     if (empty($_POST["fUserKEY"]) && !empty($_GET["username"]))
    734                         $_POST["fUserKEY"]=$_GET["username"];
    735                     printf("Name: &nbsp;<input name='name' type='text' size='20' maxlength='20' value='%s'><br>\n", $_POST["name"]);
    736                     printf("Comment: &nbsp;<input name='comment' type='text' size='50' maxlength='255' value='%s'><br>\n", $_POST["comment"]);
    737 
    738                     $query   = "SELECT fObservationModeKEY, fObservationModeName FROM ObservationMode ORDER BY fObservationModeName";
    739                     $result  = mysql_query($query);
    740                     if (!$result)
    741                         printf("-N/A-");
    742 
    743                     $numrows = mysql_num_rows($result);
    744 
    745                     printf("ObservationMode&nbsp;<select name='fObservationModeKEY' size='1' class='Width'>\n");
    746                     while ($row = mysql_fetch_row($result))
    747                     {
    748                         if (!empty($_POST["fObservationModeKEY"]) && $_POST["fObservationModeKEY"]==$row[0])
    749                             printf("<option value='%s' selected>%s</option>\n", $row[0], $row[1]);
    750                         else
    751                             printf("<option value='%s'>%s</option>\n", $row[0], $row[1]);
    752                     }
    753                     printf("</select><br>\n");
    754                     mysql_free_result($result);
    755 
    756                     $query   = "SELECT fUserKEY, fUserName FROM User ORDER BY fUserKEY";
    757                     $result  = mysql_query($query);
    758                     if (!$result)
    759                         printf("-N/A-");
    760 
    761                     $numrows = mysql_num_rows($result);
    762 
    763                     printf("UserName&nbsp;<select name='fUserKEY' size='1' class='Width'>\n");
    764                     while ($row = mysql_fetch_row($result))
    765                     {
    766                         if (!empty($_POST["fUserKEY"]) && $_POST["fUserKEY"]==$row[0])
    767                             printf("<option value='%s' selected>%s</option>\n", $row[0], $row[1]);
    768                         else
    769                             printf("<option value='%s'>%s</option>\n", $row[0], $row[1]);
    770                     }
    771                     printf("</select><br>\n");
    772                     mysql_free_result($result);
    773 
    774                     if ($numerr!=0)
    775                     {
    776                         printf("Remark: only datasets without errors can be inserted.<br>");
    777                         printf("Your dataset has %s error(s).<br>", $numerr);
    778                     }
    779                     printf("<input type='checkbox' name='insert' value='On'>insert\n");
    780 
    781                     printf("<table><tr><td colspan='2' align='center'>Dataset</td></tr>");
    782                     printf("<tr><td>proposed DataSet#: </td><td>%s</td></tr>", $dataset);
    783                     printf("<tr><td valign='top'>SequencesOn:</td><td> %s</td></tr>", $sequon);
    784                     if (!empty($sequoff))
    785                         printf("<tr><td valign='top'>SequencesOff:</td><td> %s</td></tr>", $sequoff);
    786                     printf("<tr><td>Scale: </td><td>%0.2f</td></tr>", $scale);
    787                     printf("<tr><td>SourcenamesOn[%s]: </td><td>%s</td></tr>", str_word_count($sourceson), $sourceson);
    788                     printf("<tr><td>SourcenamesOff[%s]: </td><td>%s</td></tr>", str_word_count($sourcesoff), $sourcesoff);
    789                     printf("</table>\n");
    790 
    791                     printf("<table border='1'>\n");
    792                     printf("<tr><td>Value</td><td>On</td>");
    793                     if (!empty($off))
    794                         printf("<td>Off</td></tr>\n");
    795                     foreach($values as $name => $varname)
    796                     {
    797                         printf("<tr><td>%s</td>\n", $name);
    798                         foreach($vals as $num => $val)
    799                             if (!empty(${$val}))
    800                                 printf("<td>%s</td>\n", $varname[$val]);
    801                         printf("</tr>\n");
    802                     }
    803                     printf("</table>\n");
    804                 }
     739                else
     740                    printf("<input type='submit' value='Get Data Set'><br><br>\n");
    805741
    806742                printf("</div>\n");
    807                 /*
    808                 printf("<table border='1'><tr>\n");
    809                 printf("<td>--</td>\n");
    810                 foreach($values as $name => $varname)
    811                         printf("<td>%s</td>\n", $name);
    812                 $vals=array("on", "off");
    813                 foreach($vals as $num => $val)
    814                 {
    815                     GetSequenceValues($db_id, ${$val}, $val, $values);
    816                     printf("</tr><tr>\n");
    817                     printf("<td>On</td>\n");
    818                     foreach($values as $name => $varname)
    819                         printf("<td>%s</td>\n", $varname[$val]);
    820                 }
    821                 printf("</tr></table>\n");
    822                 */
    823 
    824                 printf("</center>\n");
    825743                printf("</td>\n");
    826744                printf("</tr>\n");
     
    832750
    833751            mysql_free_result($result0);
     752            mysql_free_result($result1);
    834753        }
    835754        mysql_close($db_id);
     
    843762    include ("magicdefs.php");
    844763
     764//    $debug="yes";
     765    session_start();
     766    if ($debug)
     767    {
     768        echo "GET: ";
     769        print_r($_GET);
     770        echo " <br>";
     771
     772        echo "POST: ";
     773        print_r($_POST);
     774        echo " <br>";
     775    }
     776
     777    // set values given by $_GET
     778    foreach ($_GET as $element => $value)
     779        $_SESSION[$element]=$value;
     780
     781    // unset values in case of 'Reset'
     782    if (empty($_GET))
     783        foreach($_SESSION as $element => $value)
     784            unset($_SESSION[$element]);
     785
     786    // set values given by $_POST
     787    if (!empty($_POST))
     788        foreach ($_POST as $element => $value)
     789            $_SESSION[$element]=$value;
     790
     791
     792
     793    if ($debug)
     794        print_r($_SESSION);
     795
     796    // remove sequence from selection
     797    if (!empty($_POST) && $_SESSION["DisplaySelected"]=="yes" && $_SESSION["DisplaySelectedOld"]=="yes")
     798        foreach ($_SESSION as $key => $element)
     799            if (($_SESSION[$key]=="On") //value is set
     800                && (ereg("^[0-9]*ON$", $key) || ereg("^[0-9]*Off$", $key)) // it is a sequence number
     801                && (!$_POST[$key]==On)) // the sequence is not given in $_POST any more
     802                unset($_SESSION[$key]);
     803
     804    //store old value of $_SESSION["DisplaySelected"]
     805    if ($_SESSION["DisplaySelected"]=="yes")
     806    {
     807        unset($_SESSION["fNumStart"]);
     808        $_GET["fNumStart"]=0;
     809        $_SESSION["DisplaySelectedOld"]="yes";
     810    }
     811    else
     812        $_SESSION["DisplaySelectedOld"]="no";
     813
     814    $_SESSION["sequon"]=" ";
     815    $_SESSION["sequoff"]=" ";
     816    foreach($_SESSION as $key => $val)
     817        if ($val=="On")
     818        {
     819            if (ereg("^[0-9]*ON$", $key))
     820                $_SESSION["sequon"].=str_replace("ON", " ", $key);
     821            if (ereg("^[0-9]*Off$", $key))
     822                $_SESSION["sequoff"].=str_replace("Off", " ", $key);
     823        }
     824    if ($_SESSION["sequon"]==" " && $_SESSION["sequoff"]==" ")
     825    {
     826        $_SESSION["DisplaySelected"]="no";
     827        $_SESSION["DisplaySelectedOld"]="no";
     828    }
     829
    845830    ini_set("display_errors", "On");
    846831    ini_set("mysql.trace_mode", "On");
    847832
    848     $sitepw="\$1\$ml/Gld67\$zOvhC4vFrLCkbAzQs2swo1";
    849     $siteuser="dcdb";
    850 
    851 
    852     if (!isset($_SERVER['PHP_AUTH_USER']) || crypt($_SERVER['PHP_AUTH_PW'], $sitepw)!=$sitepw || $_SERVER['PHP_AUTH_USER']!=$siteuser)
     833    if (!isset($_SERVER['PHP_AUTH_USER']))
    853834    {
    854835        header('WWW-Authenticate: Basic realm="Build Datasets"');
    855836        header('HTTP/1.0 401 Unauthorized');
    856         echo 'Cancelled.';
    857837        return;
    858838    }
    859839    else
    860840    {
    861 //    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    862 //    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
    863 //    printf("pw: %s", crypt($_SERVER['PHP_AUTH_PW']));
    864 
    865         if (crypt($_SERVER['PHP_AUTH_PW'], $sitepw)!=$sitepw || $_SERVER['PHP_AUTH_USER']!=$siteuser)
    866         {
    867             printf("<br>pw or user incorrect<br>");
     841        $db_id = mysql_connect($host, $user, $pw);
     842        if ($db_id==FALSE)
     843        {
     844            printf("mysql_connect returned the following error:<br>");
     845            printf("%s<br>", mysql_error());
     846            die("");
     847        }
     848
     849        $userquery   = "SELECT fUserName, fPassword, fUserKEY FROM " . $db . ".User ORDER BY fUserKEY";
     850        $userresult  = mysql_query($userquery);
     851        if (!$userresult)
     852            echo "query failed";
     853        $validuser="no";
     854        while ($userrow = mysql_fetch_assoc($userresult))
     855        {
     856//            echo crypt($_SERVER['PHP_AUTH_PW']). "<br>";
     857            if (crypt($_SERVER['PHP_AUTH_PW'], $userrow["fPassword"])==$userrow["fPassword"]
     858                && $_SERVER['PHP_AUTH_USER']==$userrow["fUserName"])
     859            {
     860                $validuser="yes";
     861                $_SESSION["user"]=$userrow["fUserKEY"];
     862            }
     863        }
     864        mysql_free_result($userresult);
     865        if ($validuser=="no")
     866        {
     867            printf("<br>Password or username incorrect<br>");
    868868            return;
    869869        }
    870870    }
    871871
    872     if (!empty($_GET["fSendTxt"]))
    873     {
    874         header("Content-type: application/octet");
    875         header("Content-Disposition: attachment; filename=query-result.txt");
    876 
    877         PrintPage("0", $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $limitsmean, $limitsmin, $limitsmax, $needs);
     872    if (!empty($_SESSION["fSendTxt"]))
     873    {
     874        header("Content-Type: application/octet");
     875        switch($_SESSION["fSendTxt"])
     876        {
     877        case 1:
     878            header("Content-Disposition: attachment; filename=query-result.txt");
     879            PrintPage("0", $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $limitsmean, $limitsmin, $limitsmax, $needs);
     880            break;
     881        case 2:
     882            header("Content-Disposition: attachment; filename=dataset_".str_replace(" ", "_", $_SESSION["name"]).".txt");
     883            PrintDataSetFile();
     884            echo "hallo\n";
     885        }
     886        unset($_SESSION["fSendTxt"]);
    878887    }
    879888    else
     
    883892        $environment = sizeof($_GET);
    884893
    885         InitGet($_GET);
    886         if (empty($_GET["fPrintTable"]))
    887             PrintForm($_GET, $host, $user, $pw, $db, $limitsmean, $limitsmin, $limitsmax, $alias);
     894        // Find out whether it is the first call to the php script
     895        $first = empty($_GET["fRunMin"]) && empty($_GET["fRunMax"]);
     896        InitBuildDataSets($first);
     897        if (empty($_SESSION["fPrintTable"]))
     898            PrintForm($host, $user, $pw, $db, $limitsmean, $limitsmin, $limitsmax, $alias);
    888899
    889900        if ($environment==0)
     
    891902        else
    892903        {
    893             if (empty($_GET["fPrintTable"]))
     904            if (empty($_SESSION["fPrintTable"]))
    894905                PrintPage("1", $host, $user, $pw, $db, $alias, $rightalign, $checkwhere, $checkgroup, $checkstatusgroup, $limitsmean, $limitsmin, $limitsmax, $needs);
    895906            else
     
    902913    ini_set("display_errors", "Off");
    903914    ini_set("mysql.trace_mode", "Off");
    904 }
     915
    905916?>
Note: See TracChangeset for help on using the changeset viewer.