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; }
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; }