/** * A set of sanitizer methods * * @param string $string The string to sanitize * @param string $type The method * @param string $default The default value if the string will be empty afterwards * @return string The sanitized string */ static function sanitize($string, $type = 'str', $default = null) { $string = stripslashes((string) $string); $string = urldecode($string); $string = str::utf8($string); switch ($type) { case 'int': $string = (int) $string; break; case 'str': $string = (string) $string; break; case 'array': $string = (array) $string; break; case 'nohtml': $string = self::unhtml($string); break; case 'noxml': $string = self::unxml($string); break; case 'enum': $string = in_array($string, array('y', 'n')) ? $string : $default; $string = in_array($string, array('y', 'n')) ? $string : 'n'; break; case 'checkbox': $string = $string == 'on' ? 'y' : 'n'; break; case 'url': $string = v::url($string) ? $string : ''; break; case 'email': $string = v::email($string) ? $string : ''; break; case 'plain': $string = str::unxml($string); $string = str::unhtml($string); $string = str::trim($string); break; case 'lower': $string = str::lower($string); break; case 'upper': $string = str::upper($string); break; case 'words': $string = str::sanitize($string, 'plain'); $string = preg_replace('/[^\\pL]/u', ' ', $string); case 'tags': $string = str::sanitize($string, 'plain'); $string = preg_replace('/[^\\pL\\pN]/u', ' ', $string); $string = str::trim($string); case 'nobreaks': $string = str_replace('\\n', '', $string); $string = str_replace('\\r', '', $string); $string = str_replace('\\t', '', $string); break; case 'url': $string = self::urlify($string); break; case 'filename': $string = f::safe_name($string); break; } return trim($string); }
// reset the error $this->error = null; return true; } catch (Exception $e) { $this->error = $e; return false; } } } /** * Default mail driver */ email::$services['mail'] = function ($email) { $headers = array('From: ' . $email->from, 'Reply-To: ' . $email->replyTo, 'Return-Path: ' . $email->replyTo, 'Message-ID: <' . time() . '-' . $email->from . '>', 'X-Mailer: PHP v' . phpversion(), 'Content-Type: text/plain; charset=utf-8', 'Content-Transfer-Encoding: 8bit'); ini_set('sendmail_from', $email->from); $send = mail($email->to, str::utf8($email->subject), str::utf8($email->body), implode(PHP_EOL, $headers)); ini_restore('sendmail_from'); if (!$send) { throw new Error('The email could not be sent'); } }; /** * Amazon mail driver */ email::$services['amazon'] = function ($email) { if (empty($email->options['key'])) { throw new Error('Missing Amazon API key'); } if (empty($email->options['secret'])) { throw new Error('Missing Amazon API secret'); }
public function testUtf8() { $this->assertEquals($this->sample, str::utf8($this->sample)); }
private function sendWithMail() { $headers = array(); $headers[] = 'From: ' . $this->options['from']; $headers[] = 'Reply-To: ' . $this->options['replyto']; $headers[] = 'Return-Path: ' . $this->options['replyto']; $headers[] = 'Message-ID: <' . time() . '-' . $this->options['from'] . '>'; $headers[] = 'X-Mailer: PHP v' . phpversion(); $headers[] = 'Content-Type: text/plain; charset=utf-8'; $headers[] = 'Content-Transfer-Encoding: 8bit'; ini_set('sendmail_from', $this->options['from']); $send = mail($this->options['to'], str::utf8($this->options['subject']), str::utf8($this->options['body']), implode("\r\n", $headers)); ini_restore('sendmail_from'); if (!$send) { return array('status' => 'error', 'msg' => l::get('email.error', 'The mail could not be sent!')); } return array('status' => 'success', 'msg' => l::get('email.success', 'The mail has been sent')); }