function sendEmail()
 {
     $status = "send";
     $spamFilter = $this->yellow->config->get("contactSpamFilter");
     if (strempty(trim($_REQUEST["message"]))) {
         $status = "incomplete";
     }
     if (!strempty($_REQUEST["from"]) && !filter_var($_REQUEST["from"], FILTER_VALIDATE_EMAIL)) {
         $status = "invalid";
     }
     if (!strempty($_REQUEST["message"]) && preg_match("/{$spamFilter}/i", $_REQUEST["message"])) {
         $status = "error";
     }
     $name = preg_replace("/[^\\pL\\d\\-\\. ]/u", "-", $_REQUEST["name"]);
     $from = preg_replace("/[^\\w\\-\\.\\@ ]/", "-", $_REQUEST["from"]);
     if ($status == "send") {
         $mailMessage = $_REQUEST["message"] . "\r\n-- \r\n{$name}";
         $mailTo = $this->yellow->page->get("contactEmail");
         if ($this->yellow->config->isExisting("contactEmail")) {
             $mailTo = $this->yellow->config->get("contactEmail");
         }
         $mailSubject = mb_encode_mimeheader($this->yellow->page->get("title"));
         $mailHeaders = empty($from) ? "From: noreply\r\n" : "From: " . mb_encode_mimeheader($name) . " <{$from}>\r\n";
         $mailHeaders .= "X-Contact-Url: " . mb_encode_mimeheader($this->yellow->page->getUrl()) . "\r\n";
         $mailHeaders .= "X-Remote-Addr: " . mb_encode_mimeheader($_SERVER["REMOTE_ADDR"]) . "\r\n";
         $mailHeaders .= "Mime-Version: 1.0\r\n";
         $mailHeaders .= "Content-Type: text/plain; charset=utf-8\r\n";
         $status = mail($mailTo, $mailSubject, $mailMessage, $mailHeaders) ? "done" : "error";
     }
     return $status;
 }
 function getPageNew($serverScheme, $serverName, $base, $location, $fileName, $rawData)
 {
     $page = new YellowPage($this->yellow);
     $page->setRequestInformation($serverScheme, $serverName, $base, $location, $fileName);
     $page->parseData($rawData, false, 0);
     if ($this->yellow->lookup->isFileLocation($location) || is_file($fileName)) {
         $page->fileName = $this->yellow->lookup->findFileFromTitle($page->get($this->yellow->config->get("webinterfaceMetaFilePrefix")), $page->get("title"), $fileName, $this->yellow->config->get("contentDefaultFile"), $this->yellow->config->get("contentExtension"));
         $page->location = $this->yellow->lookup->findLocationFromFile($page->fileName);
         if ($this->yellow->pages->find($page->location)) {
             preg_match("/^(.*?)(\\d*)\$/", $page->get("title"), $matches);
             $titleText = $matches[1];
             $titleNumber = $matches[2];
             if (strempty($titleNumber)) {
                 $titleNumber = 2;
                 $titleText = $titleText . ' ';
             }
             for (; $titleNumber <= 999; ++$titleNumber) {
                 $page->rawData = $this->updateDataTitle($rawData, $titleText . $titleNumber);
                 $page->fileName = $this->yellow->lookup->findFileFromTitle($page->get($this->yellow->config->get("webinterfaceMetaFilePrefix")), $titleText . $titleNumber, $fileName, $this->yellow->config->get("contentDefaultFile"), $this->yellow->config->get("contentExtension"));
                 $page->location = $this->yellow->lookup->findLocationFromFile($page->fileName);
                 if (!$this->yellow->pages->find($page->location)) {
                     $ok = true;
                     break;
                 }
             }
             if (!$ok) {
                 $page->error(500, "Page '" . $page->get("title") . "' can not be created!");
             }
         }
     }
     if (!$this->getUserPermission($page->location, $page->fileName)) {
         $page->error(500, "Page '" . $page->get("title") . "' is not allowed!");
     }
     return $page;
 }
Exemple #3
0
 function getLocationArgsCleanUrl($pagination)
 {
     foreach (array_merge($_GET, $_POST) as $key => $value) {
         if (!empty($key) && !strempty($value)) {
             if (!empty($locationArgs)) {
                 $locationArgs .= '/';
             }
             $key = strreplaceu(array('/', ':'), array("", ""), $key);
             $value = strreplaceu(array('/', ':'), array("", ""), $value);
             $locationArgs .= "{$key}:{$value}";
         }
     }
     if (!empty($locationArgs)) {
         if (!$this->isLocationArgsPagination($locationArgs, $pagination)) {
             $locationArgs .= '/';
         }
         $locationArgs = $this->normaliseArgs($locationArgs, false, false);
     }
     return $locationArgs;
 }
 function verifyComment($comment)
 {
     // TODO: fold me :)
     $error = "";
     $field = "";
     $spamFilter = $this->yellow->config->get("commentsSpamFilter");
     if (strempty($comment->comment)) {
         $field = "comment";
         $error = "InvalidComment";
     }
     if (!strempty($comment->comment) && preg_match("/{$spamFilter}/i", $comment->comment)) {
         $field = "comment";
         $error = "Error";
     }
     if (strempty($comment->get("name")) || preg_match("/[^\\pL\\d\\-\\. ]/u", $comment->get("name"))) {
         $field = "name";
         $error = "InvalidName";
     }
     if (!strempty($comment->get("from")) && !filter_var($comment->get("from"), FILTER_VALIDATE_EMAIL)) {
         $field = "from";
         $error = "InvalidMail";
     }
     if (!strempty($comment->get("from")) && preg_match("/[^\\w\\-\\.\\@ ]/", $comment->get("from"))) {
         $field = "from";
         $error = "InvalidMail";
     }
     if (!strempty($comment->get("url")) && !preg_match("/^https?\\:\\/\\//i", $comment->get("url"))) {
         $field = "url";
         $error = "InvalidUrl";
     }
     $separator = $this->yellow->config->get("commentsSeparator");
     if (strpos($comment->comment, $separator) !== false) {
         $field = "comment";
         $error = "InvalidComment";
     }
     if (strpos($comment->get("name"), $separator) !== false) {
         $field = "name";
         $error = "InvalidName";
     }
     if (strpos($comment->get("from"), $separator) !== false) {
         $field = "from";
         $error = "InvalidMail";
     }
     if (strpos($comment->get("url"), $separator) !== false) {
         $field = "url";
         $error = "InvalidUrl";
     }
     $this->requiredField = $field;
     return $error;
 }