Affenformular/Klassendefinition

Zur Navigation springen Zur Suche springen

PHP-Code

class AffenForm
  {
    public function __construct()
    {
      global $wgParser;
      $wgParser->setHook(AFFEN_NAME, array(&$this, AFFEN_HOOK));
    }
    public function hookAffen($input, $argv, $parser)
    {
      global $IP, $wgServer, $wgScriptPath, $wgUploadPath, $wgHooks, $wgParser, $wgHtml5, $wgScript, $wgOut;

      $sent  = !empty($_POST);          # check form status first call/alread sent
      $reset = ($sent and $_POST["tuwas"] == 1);; # if sent: do or reset
      $neu   = ($sent and $_POST["tuwas"] == 2);

      $myparm = $wgParser->recursiveTagParse( '28.2.2024' ); # first input field is date

      foreach ( $argv as $arg => $val )
      {
        $$arg = $val; # die Variablen erhalten den Namen der Parameter
      }

      $feld1 = $feld2 = $feld3 = '';
      
      if (!empty($argv['default']))
        $myparm = $argv['default']; # enter default Text as default="..."
        
      if ($sent)
      {
        if ($reset)
        {
          $feld1 = $feld2 = $feld3 = '';
        }
        else
        {
          #if (!empty($_POST['feld1']))
            $feld1 = $this->check_input($this->clear_input($_POST['feld1']), 'd');
          if (!empty($_POST['feld2']))
            $feld2 = $this->clear_input($_POST['feld2']);
          if (!empty($_POST['feld3']))
            $feld3 = $this->clear_input($_POST['feld3']);
        }
      }

      $button_style = 'border-radius: 1em; background-image: linear-gradient(90deg, #8f8,#cfc); padding: 0.5em 1.5em;' 
        . ' box-shadow: inset -2px -2px 5px #080; color: #080; font-weight: bold; font-size: 110%' ;
      $div_beg = '<div style="margin-bottom: 0"><div style="width: 15em; display: inline-block; padding-right: 0.5em; text-align: right">';

      $formid = str_shuffle('abcdefghijklmnopqrst'); # zufällige Sequenz erzeugen um eindeutige IDs zu erhalten falls mehrere Formulare auf einer Seite verwendet werden
                                              # die Wahrscheinlichkeit mit 20 Zeichen die gleiche Sequenz zu erzeugen liegt bei 1:2.432.902.008.176.640.000
                                              # wenn man 77.1 Milliarden Jahren jede Sekunde eine Sequenz durchprobiert, erhält man eine Sequenz doppelt
      $myForm = "<form id='$formid' method='post'>";
      $myForm .= '<input type="hidden" name="action" value="view" >' ;
      $myForm .= '<input type="hidden" name="' . AFFEN_IDENTIFIER . '" value="send" >';
      $myForm .= $div_beg . 'Feld1:</div><input name="feld1" size="10" maxlength="10" placeholder="1.1.2019" value="' . $feld1 . '"></div><br>';
      $myForm .= $div_beg . 'Feld2:</div><input type="text" name="feld2" placeholder="inhalt2" size="40" value="' . $feld2 . '"></div><br>';
      $myForm .= $div_beg . 'Feld3:</div><input type="text" name="feld3" placeholder="inhalt3" size="40" value="' . $feld3 . '"></div><br>';
      $myForm .= $div_beg . '<button style="' . $button_style . '" type="submit" name="tuwas" value="0" formmethod="post">Aktion durchführen</button></div>';
      $myForm .= '<div style="display: inline-block; padding-right: 0.5em;"><button style="' . $button_style . '" type="submit" name="tuwas" value="1" formtarget="_blank" formmethod="post">Aktion in neuem Fenster durchführen</button></div>';
      $myForm .= '<button style="' . $button_style . '" type="submit" name="tuwas" value="2" formmethod="post">Eingabe zurücksetzen</button></div>';
      $myForm .= '</form>';

      if ($sent and !$reset) 
      {
        if (empty($feld1))
        {
          return $myForm . '<div style="font-weight: bold; color: #00f">Feld 1 fehlt, bitte eingeben</div>';
        }

        $content = array("feld1"=>$feld1, "feld2"=> $feld2, "feld3"=>$feld3, "input"=>$input );
        $seite = $this->DoSomething($content);

        if ($neu)
          $myForm  = $seite . '<p>******************<p>' . $this->render_wikitext($seite);
        else
          $myForm .= $seite;
        }    

      return $myForm;
    }