Source for file class.NOCHFREI.php

Documentation is available at class.NOCHFREI.php

  1. <?php
  2.  
  3. /**
  4.  * Stellt die Verbindung zur Datenbank 'nochfrei' her.
  5.  *
  6.  * Stellt Methoden zum Auslesen und schreiben in diese Datenbank zur Verfügung
  7.  *
  8.  * @author Kay Koch, <kay.koch@gmx.de>
  9.  * @package src
  10.  * @subpackage foundation_tables
  11.  */
  12.  
  13. if (version_compare(PHP_VERSION'5')) {
  14.    die('This file was generated for PHP 5');
  15. }
  16.  
  17. /**
  18.  * Basisklasse aller Klassen mit Datenbankzugriff.
  19.  *
  20.  * stellt Methoden und Objekte zur Fehlermeldung und zum Datenbankzugriff zur
  21.  *
  22.  * @author Kay Koch
  23.  * @since 1.12.04
  24.  * @version 1.1
  25.  */
  26. require_once ('src/foundation/tables/class.PARENTTABLES.php');
  27.  
  28. /* user defined includes */
  29. // section -64--88-122--2-f41e9:1009a89d5b2:-7fd9-includes begin
  30. // section -64--88-122--2-f41e9:1009a89d5b2:-7fd9-includes end
  31.  
  32. /* user defined constants */
  33. // section -64--88-122--2-f41e9:1009a89d5b2:-7fd9-constants begin
  34. // section -64--88-122--2-f41e9:1009a89d5b2:-7fd9-constants end
  35.  
  36. /**
  37.  * Stellt die Verbindung zur Datenbank 'nochfrei' her.
  38.  *
  39.  * Stellt Methoden zum Auslesen und schreiben in diese Datenbank zur Verfügung
  40.  *
  41.  * @access public
  42.  * @author Kay Koch, <kay.koch@gmx.de>
  43.  * @package src
  44.  * @subpackage foundation_tables
  45.  */
  46.    // --- ATTRIBUTES ---
  47.  
  48.    
  49.    /**
  50.     * Beinhaltet den Datenbanknamen (nochfrei)
  51.     *
  52.     * @access protected
  53.     * @var string 
  54.     */
  55.    protected $dbTableName = 'nochfrei';
  56.  
  57.    // --- OPERATIONS ---
  58.  
  59.    
  60.    /**
  61.     * liefert ein 2-D Array mit freien Plätzen an allen Tagen die sich
  62.     * in der Datenbank befinden
  63.     *
  64.     * Im ersten Feld befinden sich die freien Plätze pro Tag. Index der
  65.     * Felder ist das Datum im SQL-Format.
  66.     * Im zweiten Feld befindeten sich die zum Tag passende maximale Anzahl an
  67.     * Plätzen. Index auch hier das Datum.
  68.     *
  69.     * @access public
  70.     * @author Kay Koch, <kay.koch@gmx.de>
  71.     * @param date 
  72.     * @return array 
  73.     */
  74.    public function getUsedPerDay($datum null{
  75.       $returnValue array ();
  76.  
  77.       // section -64--88-122--2-f41e9:1009a89d5b2:-7fd5 begin
  78.       try {
  79.          if (!$this->getSea())
  80.             throw new Exception(4);
  81.          // auslesen aller freien Plätze des aktuellen Sees (und eventuell des angegebenen Tages)
  82.          $sql "SELECT datumsumTag FROM  $this->dbTableName  WHERE see_id= '$this->getSea()->see_id "'";
  83.          if ($datum != null// Daten für bestimmten Tag auslesen
  84.             $sql .= " AND datum ='$datumLIMIT 1";
  85.          else // Daten für die für diesen See geltende Anmeldefrist auslesen
  86.             $sql .= " AND datum > SUBDATE('" $this->getFlags()->lastBackupDate "', INTERVAL 6 DAY) AND datum <= ADDDATE('" $this->getFlags()->lastBackupDate "', INTERVAL '" $this->getSea()->wochenImVorraus "'*7+1 DAY) ";
  87.          $tblNochfrei $this->select($sqltrue);
  88.          // alle Tage durchlaufen
  89.          foreach ($tblNochfrei as $rowNochfrei{
  90.             // Die zum Datum gehörende maximale Anzahl wird geladen
  91.             $this->oMaxfrei->setParams($this->getSea()->see_id$rowNochfrei['datum']);
  92.             $rowMaxfrei $this->oMaxfrei->getRow();
  93.             // speichern der Restplätze
  94.             $returnValue['rest'][$rowNochfrei['datum']] $rowNochfrei['sumTag'];
  95.             // speichern der maximalen Plätze
  96.             $returnValue['max'][$rowNochfrei['datum']] $rowMaxfrei['sumTag'];
  97.          }
  98.       catch (Exception $e{
  99.          src_tools_ERROR :: setError($e__METHOD__);
  100.       }
  101.       // section -64--88-122--2-f41e9:1009a89d5b2:-7fd5 end
  102.  
  103.       return (array) $returnValue;
  104.    }
  105.  
  106.    /**
  107.     * liefert ein 2-D Array mit freien Plätzen am gewählten Tag
  108.     *
  109.     * Im ersten Feld befinden sich die freien Plätze pro Stunde. Index der
  110.     * Felder ist die Stunde (hh:mm).
  111.     * Im zweiten Feld befindeten sich die zur Stunde passende maximale Anzahl
  112.     * freien Plätzen. Index auch hier die Stunde.
  113.     *
  114.     * @access public
  115.     * @author Kay Koch, <kay.koch@gmx.de>
  116.     * @param date 
  117.     * @param string 
  118.     * @return array 
  119.     */
  120.    public function getUsedPerHour($datum$stunde '*'{
  121.       $returnValue array ();
  122.  
  123.       // section -64--88-122--2-f41e9:1009a89d5b2:-7f4b begin
  124.       try {
  125.          if (!parent :: getSea())
  126.             throw new Exception(4);
  127.          if (!$datum)
  128.             throw new Exception(4);
  129.          // Anführungsstriche für * verboten, ansonsten ein muss
  130.          $stunde ($stunde "*"$stunde "'$stunde'";
  131.          // auslesen aller freien Plätze des aktuellen Sees (alle Stunden) am ausgewählten Tag
  132.          $sql "SELECT $stunde FROM  $this->dbTableName  WHERE (see_id=$this->getSea()->see_id " AND datum='$datum') LIMIT 1";
  133.          $returnValue $this->checkAllowedTimeRange($this->select($sqlfalse)$this->getSea()->see_id$datum);
  134.       catch (Exception $e{
  135.          src_tools_ERROR :: setError($e__METHOD__);
  136.       }
  137.       // section -64--88-122--2-f41e9:1009a89d5b2:-7f4b end
  138.  
  139.       return (array) $returnValue;
  140.    }
  141.  
  142.    /**
  143.     * Veranlasst die Updates
  144.     *
  145.     * Löscht die Datenbank'nochfrei'.
  146.     * Erstellt neue Datensätze mit der max. Anzahl an freien Plätzen
  147.     *
  148.     * Der frühste und späteste Anmeldetermin wird ausgelesen und für ALLE Seen
  149.     * verwandt.
  150.     * Die Tabelle wird mit den entsprechenden Werten gefüllt.
  151.     * Zusätzlich werden 21 Tage vorher und 14 Tage nachher leere Termine eingefügt
  152.     *
  153.     * @access public
  154.     * @author Kay Koch, <kay.koch@gmx.de>
  155.     * @param int 
  156.     * @param int 
  157.     * @return boolean 
  158.     */
  159.    public function insertNewEntries({
  160.       $returnValue = (bool) false;
  161.       // section -64--88-122--2-933bcb:100f60e4e57:-7fee begin
  162.       try {
  163.          // Alle alten Termine löschen
  164.          $this->truncate("TRUNCATE TABLE `$this->dbTableName`");
  165.          #$this->truncate("TRUNCATE TABLE `blockaden`");
  166.          $this->truncate("TRUNCATE TABLE `archiv`");
  167.          $this->truncate("TRUNCATE TABLE `buchungen`");
  168.          #$this->truncate("TRUNCATE TABLE `nachttermine`");
  169.          $tableMaxFrei $this->oMaxfrei->getRow();
  170.          $arrSeen parent :: $oSeen->all;
  171.          $minDate "2200-01-01";
  172.          $maxDate "2000-01-01";
  173.          $arrFeiertage src_tools_TIME :: getFeiertage();
  174.          // erstes und letztes Datum herausfinden
  175.          foreach ($arrSeen as $see_id => $oSee{
  176.             $minDate ($oSee->saisonStart $minDate$oSee->saisonStart $minDate// niedriegstes Datum
  177.             $maxDate ($oSee->saisonEnde $maxDate$oSee->saisonEnde $maxDate// höchstes Datum
  178.          }
  179.          // zusätzliche Tage am Ende hinzufügen
  180.          $maxDateAdd src_tools_TIME :: addDays2SQL($maxDate"21");
  181.          // alle Seen durchlaufen
  182.          foreach ($arrSeen as $see_id => $oSee{
  183.             // Starttermin zum Einfügen ist drei Wochen vor erstem Datum
  184.             $aktDay src_tools_TIME :: addDays2SQL($minDate"-21");
  185.             // 14 Tage vor Beginn mit 0 füllen
  186.             while ($aktDay $oSee->saisonStart{
  187.                $sql "INSERT INTO `$this->dbTableName` (`see_id`,`datum`) VALUES('$see_id','$aktDay');";
  188.                $aktDay src_tools_TIME :: addDays2SQL($aktDay"1");
  189.                $this->insert($sql);
  190.             }
  191.             // Tauchzeit mit entsprechenden Werten füllen
  192.             while ($aktDay $oSee->saisonEnde{
  193.                $aktWeekDay (in_array($aktDay$arrFeiertage)) src_tools_TIME :: sqlT2realT($aktDay"%w");
  194.                $insertArray $tableMaxFrei[$see_id][$aktWeekDay];
  195.                $insertArray['wochentag'$aktDay;
  196.                $insertString "('" join("','"$insertArray"')";
  197.                $sql "INSERT INTO `$this->dbTableNameVALUES $insertString;";
  198.                $aktDay src_tools_TIME :: addDays2SQL($aktDay"1");
  199.                $this->insert($sql);
  200.             }
  201.             // bis 14 Tage nach Ende mit 0 füllen
  202.             while ($aktDay $maxDateAdd{
  203.                $sql "INSERT INTO `$this->dbTableName` (`see_id`,`datum`) VALUES('$see_id','$aktDay');";
  204.                $aktDay src_tools_TIME :: addDays2SQL($aktDay"1");
  205.                $this->insert($sql);
  206.             }
  207.          }
  208.          // Beginn der Tauchsaison eintragen
  209.          $oFlags new src_foundation_tables_FLAGS;
  210.          $oFlags->setSaisonDates($minDate$maxDate);
  211.          src_tools_CACHE :: clearCache();
  212.          $this->saveCalendarFile($see_id);
  213.          $returnValue true;
  214.       catch (Exception $e{
  215.          src_tools_ERROR :: setError($e__METHOD__);
  216.       }
  217.       // section -64--88-122--2-933bcb:100f60e4e57:-7fee end
  218.  
  219.       return (bool) $returnValue;
  220.    }
  221.  
  222.    /**
  223.     * veringert freie Plätze um übergebenen Wert am übergebenen Tag zur
  224.     * Stunde
  225.     *
  226.     * @access public
  227.     * @author Kay Koch, <kay.koch@gmx.de>
  228.     * @param int 
  229.     * @param date 
  230.     * @param time 
  231.     * @param int 
  232.     * @return int 
  233.     */
  234.    public function decrease($see_id$datum null$stunde null$anzahl 0{
  235.       $returnValue = (int) 0;
  236.  
  237.       // section -64--88-122--2-933bcb:100f60e4e57:-7faf begin
  238.       $setAdd ($stunde == "00:00""" ", `$stunde` = `$stunde`- $anzahl ";
  239.       $sql "UPDATE " $this->dbTableName . "  SET `sumTag` = `sumTag`-$anzahl $setAdd WHERE see_id=$see_id AND datum='$datumLIMIT 1";
  240.       $returnValue $this->update($sql);
  241.       src_tools_CACHE :: clearCache($see_id);
  242.       $this->saveCalendarFile($see_id);
  243.       // section -64--88-122--2-933bcb:100f60e4e57:-7faf end
  244.  
  245.       return (int) $returnValue;
  246.    }
  247.  
  248.    /**
  249.     * erhöht die Anzal der freie Plätze wenn die Buchung nicht abgeholt wurde
  250.     *
  251.     * @access public
  252.     * @author Kay Koch, <kay.koch@gmx.de>
  253.     * @param int 
  254.     * @param date 
  255.     * @param time 
  256.     * @param int 
  257.     * @return int 
  258.     */
  259.    public function increase($see_id$datum$stunde$anzahl{
  260.       $returnValue = (int) 0;
  261.  
  262.       // section -64--88-122--2-1328c7a:10297cab611:-7ffe begin
  263.       if ($anzahl != 0{
  264.          $setAdd ($stunde == "00:00""" ", `$stunde` = `$stunde`+'$anzahl";
  265.          $sql "UPDATE " $this->dbTableName . "  SET `sumTag` = `sumTag`+'$anzahl$setAdd WHERE see_id='$see_idAND datum='$datumLIMIT 1";
  266.          $returnValue $this->update($sql);
  267.       else
  268.          $returnValue true;
  269.       src_tools_CACHE :: clearCache($see_id);
  270.       $this->saveCalendarFile($see_id);
  271.       // section -64--88-122--2-1328c7a:10297cab611:-7ffe end
  272.  
  273.       return (int) $returnValue;
  274.    }
  275.  
  276.    /**
  277.     * überprüft und liefert ein Array mit den freien Plätzen die sich innerhalb
  278.     * erlaubten Tauchbereiches befinden
  279.     *
  280.     * [0]: freie Plätze
  281.     * [1]: maximale Anzahl
  282.     *
  283.     * @access private
  284.     * @author Kay Koch, <kay.koch@gmx.de>
  285.     * @param array 
  286.     * @param int 
  287.     * @param date 
  288.     * @return array 
  289.     */
  290.    private function checkAllowedTimeRange($rowPlaces$see_id$datum{
  291.       $returnValue array ();
  292.  
  293.       // section -64--88-122--2--264ee0f5:103e4c700eb:-7fc8 begin
  294.       // alle maximalen Plätze für einen Tag und einem See
  295.       $this->oMaxfrei->setParams($see_id$datum);
  296.       $rowMaxPlaces $this->oMaxfrei->getRow();
  297.       $startTime $this->getSea()->getStartTime($datum)// erste angezeigte Uhrzeit
  298.  
  299.       $oNightdive new src_foundation_tables_NACHTTERMINE();
  300.       $oNightdive->setParams($see_id$datum);
  301.       if ($oNightdive->isNightDive()) // ist ein Nachtauchgang
  302.          $endTime $oNightdive->getChangedEnd()// Endzeit bei Nachttauchgang
  303.          $rowMaxPlaces array_merge($rowMaxPlaces$oNightdive->getMaxNightPlaces())// maximale Anzahl
  304.       else {
  305.          $endTime $this->getSea()->getEndTime($datum)// letzte angezeigt Uhrzeit
  306.       }
  307.       foreach ($rowPlaces as $hour => $places// durchlaufen aller Werte
  308.          if ($hour >= $startTime AND $hour <= $endTime// erlaubte Uhrzeit
  309.             $returnValue['rest'][$hour$places// RestPlätze
  310.             $returnValue['max'][$hour$rowMaxPlaces[$hour]// maximale Plätze
  311.          }
  312.       }
  313.       // section -64--88-122--2--264ee0f5:103e4c700eb:-7fc8 end
  314.  
  315.       return (array) $returnValue;
  316.    }
  317.  
  318.    /**
  319.     * Konstruktor
  320.     *
  321.     * erstellt ein Objekt der Klasse MAXFREI
  322.     *
  323.     * @access public
  324.     * @author Kay Koch, <kay.koch@gmx.de>
  325.     * @return void 
  326.     */
  327.    public function __construct({
  328.       // section -64--88-122--2--264ee0f5:103e4c700eb:-7fc3 begin
  329.       $this->oMaxfrei new src_foundation_tables_MAXFREI();
  330.       // section -64--88-122--2--264ee0f5:103e4c700eb:-7fc3 end
  331.    }
  332.  
  333.    /**
  334.     * liefert alte Einträge
  335.     *
  336.     * @access public
  337.     * @author Kay Koch, <kay.koch@gmx.de>
  338.     * @param int 
  339.     * @return array 
  340.     */
  341.    public function getOLdEntries($see_id ""{
  342.       $returnValue array ();
  343.  
  344.       // section -64--88-122--2--6176e79b:103fa06a375:-7fb8 begin
  345.       // lädt alle alten Einträge bis zum nächsten Update (heute + $intervall)
  346.       $weekLimit $this->getFlags()->getWhereWeekLimit();
  347.       $seeLimit (!empty ($see_id)) "AND `see_id`='$see_id'"";
  348.       $sql "SELECT * FROM " $this->dbTableName . $weekLimit " " $seeLimit "  ORDER by see_id,datum ASC";
  349.       $returnValue $this->select($sqltrue"see_id""datum");
  350.       // section -64--88-122--2--6176e79b:103fa06a375:-7fb8 end
  351.  
  352.       return (array) $returnValue;
  353.    }
  354.  
  355.    /**
  356.     * löscht freie Plätze eines Sees
  357.     *
  358.     * @access public
  359.     * @author Kay Koch, <kay.koch@gmx.de>
  360.     * @param int 
  361.     * @return boolean 
  362.     */
  363.    public function deleteEntriesFromSea($see_id{
  364.       $returnValue = (bool) false;
  365.  
  366.       // section -64--88-122--2-7189e523:104671b0211:-7fea begin
  367.       // löscht alle Einträge eines Sees
  368.       $sql "DELETE FROM  $this->dbTableName  WHERE  `see_id` = $see_id";
  369.       if ($this->delete($sql))
  370.          $returnValue true;
  371.       src_tools_CACHE :: clearCache($see_id);
  372.       $this->saveCalendarFile($see_id);
  373.       // section -64--88-122--2-7189e523:104671b0211:-7fea end
  374.  
  375.       return (bool) $returnValue;
  376.    }
  377.    /**
  378.     *
  379.     * Reduziert die freien Plätze aufgrund von Blokaden
  380.     *
  381.     * @author kaykoch
  382.     * @access public
  383.     * @since 1 - 25.02.2007
  384.     * @param array $data Blockadedaten
  385.     * @return boolean Bestäigung
  386.     *
  387.     */
  388.    public function blockDates($data$reset false{
  389.       $returnValue false;
  390.       if ($data['ganzerTag'])
  391.          $this->blockDay($data$reset);
  392.       else
  393.          $this->blockHour($data$reset);
  394.       src_tools_CACHE :: clearCache($data['see_id']);
  395.       $this->saveCalendarFile($data['see_id']);
  396.       return $returnValue;
  397.    }
  398.    /**
  399.     *
  400.     * blockHour
  401.     *
  402.     * @author kaykoch
  403.     * @access private
  404.     * @since 1 - 02.03.2007
  405.     * @param array $data Daten
  406.     * @return boolean 
  407.     *
  408.     */
  409.    private function blockHour($data$reset{
  410.       $returnValue false;
  411.       $sql "UPDATE " $this->dbTableName . "  Set ";
  412.       $nrTime = (int) substr($data['stunde']03)// Beginn der Blockade als Int
  413.       $anzahl ($reset$data['anzahl': -$data['anzahl']// positive Anzahl beim Reset
  414.       //
  415.       for ($i 0$i $data['anzahlStunden']$i++{
  416.          $hour src_tools_TIME :: formatHour($nrTime$i);
  417.          $sql .= " `sumTag` = `sumTag` + '$anzahl', `$hour` = `$hour` + '$anzahl',";
  418.       }
  419.       $sql substr($sql0-1)// letztes Komma löschen
  420.       $sql .= $this->getwiederholungSQL($data);
  421.       $returnValue $this->update($sql);
  422.       return $returnValue;
  423.    }
  424.    /**
  425.     *
  426.     * blockHour
  427.     *
  428.     * @author kaykoch
  429.     * @access private
  430.     * @since 1 - 02.03.2007
  431.     * @param array $data Daten
  432.     * @return boolean 
  433.     *
  434.     */
  435.    private function blockDay($data$reset{
  436.       $returnValue false;
  437.       $this->oMaxfrei->setParams($data['see_id']$data['datum']);
  438.       $tableMaxFrei $this->oMaxfrei->getRow();
  439.       unset ($tableMaxFrei['see_id']);
  440.       unset ($tableMaxFrei['wochentag']);
  441.       $sql "UPDATE `$this->dbTableName`  Set ";
  442.       foreach ($tableMaxFrei as $key => $value{
  443.          if ($reset)
  444.             $sql .= " `$key` = '$value',";
  445.          else
  446.             $sql .= " `$key` = '0',";
  447.       }
  448.       $sql substr($sql0-1)// letztes Komma löschen
  449.       $sql .= $this->getwiederholungSQL($data);
  450.       $returnValue $this->update($sql);
  451.       return $returnValue;
  452.    }
  453.  
  454.    /**
  455.     *
  456.     * erstellt einen String mit WHERE-Klausel
  457.     * abhängig von der art der Wiederholung, Datum und see_id wird der
  458.     * passende WHERE... Sql-Anhang zurückgeliefert
  459.     *
  460.     * @author kaykoch
  461.     * @access public
  462.     * @since 1 - 02.03.2007
  463.     * @param array $data Daten
  464.     * @return string 
  465.     *
  466.     */
  467.    public function getwiederholungSQL($data{
  468.       $returnValue " WHERE `see_id` = '" $data['see_id'"'";
  469.       switch ($data['wiederholung']{
  470.          case // einmalig
  471.             $returnValue .= " AND `datum` = '" $data['datum'"';";
  472.             break;
  473.          case // wöchentlich
  474.             $returnValue .= " AND `datum` >= '" $data['datum'"' AND DAYOFWEEK(`datum`) = DAYOFWEEK('" $data['datum'"');";
  475.             break;
  476.          case // Anzahl Tage
  477.             $returnValue .= " AND `datum` >= '" $data['datum'"' AND `datum` < ADDDATE('" $data['datum'"', INTERVAL " $data['anzahlWiederholung'" DAY);";
  478.             break;
  479.       }
  480.       return $returnValue;
  481.    }
  482.    /**
  483.     *
  484.     * liefert ein 2-D-Array mit den augenblicklichen Werten und den Maximalen
  485.     *
  486.     * @author kaykoch
  487.     * @access public
  488.     * @since 1 - 27.02.2007
  489.     * @param integer $see_id SeeID
  490.     * @param integer $datum Datum
  491.     * @return array $returnValue
  492.     *
  493.     */
  494.    public function getEntry($see_id$datum{
  495.       $returnValue "";
  496.       $sql "SELECT * FROM " $this->dbTableName . " WHERE `see_id` ='$see_idAND `datum`='$datumLIMIT 1";
  497.       $returnValue $this->select($sql);
  498.       $this->oMaxfrei->setParams($see_id$datum);
  499.       $returnValue[$this->oMaxfrei->getRow();
  500.       return $returnValue;
  501.    }
  502.  
  503.    /**
  504.     * aktualisiert die Tabelle mit übergebenen Daten
  505.     *
  506.     *
  507.     * @author kaykoch
  508.     * @access public
  509.     * @since 1.1 - 27.02.2007
  510.     * @param array $data neue Einträge
  511.     * @return boolean $returnValue
  512.     *
  513.     */
  514.    public function updateEntry($data{
  515.       $returnValue "false";
  516.       $tmp $data;
  517.       unset ($tmp['see_id']);
  518.       unset ($tmp['datum']);
  519.       $tmp['sumTag'array_sum($tmp);
  520.       $sql "UPDATE " $this->dbTableName . "  Set ";
  521.       foreach ($tmp as $key => $value{
  522.          $sql .= " `$key` = '$value',";
  523.       }
  524.       $sql substr($sql0-1)// letztes Komma löschen
  525.       $sql .= " WHERE `see_id` = '" $data['see_id'" ' AND `datum` = '" $data['datum'"' LIMIT 1;";
  526.       $returnValue $this->update($sql);
  527.       src_tools_CACHE :: clearCache($data['see_id']);
  528.       $this->saveCalendarFile($data['see_id']);
  529.       return $returnValue;
  530.    }
  531.  
  532.    /**
  533.     * erstellt ein Kalenderfile im ics-Format
  534.     * Die Datei wird im infos-ordner unter dem Namen
  535.     * "kalender_seename.ics" abgespeichert
  536.     *
  537.     * @author kaykoch
  538.     * @access public
  539.     * @since 1 - 11.03.2007
  540.     * @param int see_id id des Sees
  541.     * @return boolean $returnValue
  542.     *
  543.     */
  544.    public function saveCalendarFile($see_id ""{
  545.       $i 1;
  546.       foreach ($this->getOLdEntries($see_idas $see_id => $arrDates{
  547.          $content "BEGIN:VCALENDAR\nCALSCALE:GREGORIAN\nPRODID:-//Ximian//NONSGML Evolution Calendar//EN\nVERSION:2.0\n";
  548.          $oSee parent :: $oSeen->getSeen($see_id);
  549.          if ($oSee->buchbarProTag{
  550.             $rowTpl src_tools_TEMPLATE :: getTemplate("calendar_day");
  551.             foreach ($arrDates as $arrDate{
  552.                $icsDatum1 src_tools_TIME :: sqlT2realT($arrDate['datum']"%Y%m%d");
  553.                $icsDatum2 src_tools_TIME :: sqlT2realT(src_tools_TIME :: addDays2SQL($arrDate['datum']1)"%Y%m%d");
  554.                $content .= sprintf($rowTpl$i++$icsDatum1$icsDatum2$arrDate['sumTag']);
  555.             }
  556.          else {
  557.             $rowTpl src_tools_TEMPLATE :: getTemplate("calendar_hour");
  558.             foreach ($arrDates as $arrDate{
  559.                $icsDatum src_tools_TIME :: sqlT2realT($arrDate['datum']"%Y%m%dT");
  560.                $startTime $oSee->getStartTime($arrDate['datum']);
  561.                $endTime $oSee->getEndTime($arrDate['datum']);
  562.                foreach ($arrDate as $hour => $places{
  563.                   if (src_tools_CHECK :: checkHour($hourAND $hour >= $startTime AND $hour <= $endTime{
  564.                      $icsStunde1 substr($hour02"0000";
  565.                      $icsStunde2 sprintf('%02d'(int) $hour +1"0000";
  566.                      $content .= sprintf($rowTpl$i++$icsDatum $icsStunde1$icsDatum $icsStunde2$places);
  567.                   }
  568.                }
  569.  
  570.             }
  571.          }
  572.          $content .= "END:VCALENDAR";
  573.          src_tools_MULTI :: saveFile($contentsrc_tools_MULTI :: cleanUmlaute("infos/kalender_" $oSee->name".ics");
  574.       }
  575.    }
  576.  
  577.    /**
  578.     * liest alle Blockaden und Nachttermine neu in die Nochfrei/Buchungen ein
  579.     *
  580.     * @author kaykoch
  581.     * @access public
  582.     * @since 1 - 11.03.2007
  583.     * @return boolean $returnValue
  584.     *
  585.     */
  586.    public function insertSpecials({
  587.       $oNTG new src_foundation_tables_NACHTTERMINE();
  588.       $arrNTGS $oNTG->getRow();
  589.       foreach ($arrNTGS as $arrData{
  590.          foreach ($arrData as $data{
  591.             $ft = (int) "21"// erste Uhrzeit für NTGs
  592.             $lt = (int) substr($data['uhrzeitEnde']03)// letzte Uhrzeit für NTGs
  593.             $sub 1;
  594.             for ($h $ft$h <= $lt$h++{
  595.                if (!$this->increase($data['see_id']$data['datum']$h ":00"$sub $data[$h ":00"]))
  596.                   die("NTG");
  597.             }
  598.          }
  599.       }
  600.       $oBlock new src_foundation_tables_BLOCKADEN();
  601.       $oBuchungen new src_foundation_tables_BUCHUNGEN();
  602.       $oVereine new src_foundation_tables_VEREINE();
  603.       $arrBlocks $oBlock->getRowByID();
  604.       foreach ($arrBlocks as $data{
  605.          $oVereine->setParams($data['verein_nr']);
  606.          $data['name'(!empty ($data['info'])) $oVereine->name ", " $data['info'$oVereine->name;
  607.          $this->blockDates($data);
  608.          $oBuchungen->blockDates($data);
  609.       }
  610.  
  611.    }
  612. /* end of class src_foundation_tables_NOCHFREI */
  613. ?>

Documentation generated on Sat, 24 Mar 2007 09:59:43 +0100 by phpDocumentor 1.3.1