Exemplo n.º 1
0
 public function generate()
 {
     // displaying errors (if any)
     foreach ($this->errors as $error) {
         if ($this->globalMessages) {
             Watermelon::displayError($error);
         } else {
             $r .= '<div class="error">' . $error . '</div>';
         }
     }
     $this->errors = array();
     // storing form object in session (so that in can be reconstructed on action page)
     $_SESSION['Form_' . $this->formID] = serialize($this);
     // extra <form> attributes
     $attributes = '';
     foreach ($this->extraFormAttributes as $attribute => $value) {
         $attributes .= ' ' . $attribute . '="' . $value . '"';
     }
     // generating
     $r .= '<form action="' . SiteURL($this->actionPage) . '" method="post"' . $attributes . ">\n";
     $r .= '<input type="hidden" name="formID" value="' . $this->formID . '">' . "\n";
     // items
     foreach ($this->items as $item) {
         if (is_object($item)) {
             $r .= $item->generate() . "\n";
         } else {
             $r .= $item . "\n";
         }
     }
     // submit button
     if ($this->displaySubmitButton) {
         if (empty($this->submitLabel)) {
             $submitLabel = ' value="Zapisz"';
         } else {
             $submitLabel = ' value="' . $this->submitLabel . '"';
         }
         $r .= '<label><span></span><input type="submit"' . $submitLabel . '></label>';
     }
     //--
     $r .= '</form>';
     return $r;
 }
Exemplo n.º 2
0
 public function displayError($message)
 {
     Watermelon::displayError($message);
 }
Exemplo n.º 3
0
 public static function postComment($id, $type, $backPage)
 {
     if (empty($id) || empty($type) || empty($backPage)) {
         Watermelon::displayNoPageFoundError();
         return;
     }
     if (!in_array($type, array('blogpost', 'page'))) {
         Watermelon::displayNoPageFoundError();
         return;
     }
     //--
     $model = new Comments_Model();
     $backPage = base64_decode($backPage);
     $form = Form::validate('wmelon.comments.addComment', $backPage)->get();
     // testing for spam and adding
     if (!Users::isLogged()) {
         // testing for spam
         $commentStatus = Sblam::test('content', 'name', 'email', 'website');
         // remembering user's data
         $_SESSION['wmelon.comments.name'] = $form->name;
         $_SESSION['wmelon.comments.email'] = $form->email;
         $_SESSION['wmelon.comments.website'] = $form->website;
         // assigning "visibility token" (token user needs to have in session to see his own comments, even if not approved)
         if (isset($_SESSION['wmelon.comments.visibilityToken'])) {
             $visibilityToken = $_SESSION['wmelon.comments.visibilityToken'];
         } else {
             $visibilityToken = $form->name . $form->email . mt_rand();
             $visibilityToken = md5($visibilityToken);
             $visibilityToken = substr($visibilityToken, 16);
             $_SESSION['wmelon.comments.visibilityToken'] = $visibilityToken;
         }
         // adding comment
         switch ($commentStatus) {
             case 0:
             case 1:
             case -1:
                 $model->postComment($id, $type, $form->name, $form->email, $form->website, $form->content, false, $visibilityToken);
                 Watermelon::displayNotice('Twój komentarz zostanie sprawdzony zanim zostanie publicznie pokazany');
                 break;
             case -2:
                 $commentID = $model->postComment($id, $type, $form->name, $form->email, $form->website, $form->content, true, $visibilityToken);
                 Watermelon::displaySuccessNotice('Dodano komentarz');
                 $backPage .= '#comment-' . $commentID;
                 break;
             case 2:
                 Watermelon::displayError('Filtr uznał twój komentarz za spam. ' . Sblam::reportLink());
                 break;
         }
     } else {
         $commentID = $model->postComment_logged($id, $type, $form->content);
         $backPage .= '#comment-' . $commentID;
     }
     SiteRedirect($backPage);
 }