/**
  * Wraps the lines contained into the given message.
  *
  * @param  string  $message Message.
  * @param  integer $width   Column width. Defaults to 72.
  * @param  boolean $cut     Cutting a word is allowed. Defaults to false.
  *
  * @return string The given message, wrapped as requested.
  */
 public function wrapLines($message, $width = 72, $cut = false)
 {
     $message = $this->fixEOL($message);
     if (PMF_String::strpos(strtolower($this->charset), 'utf') !== false) {
         // PHP wordwrap() is not safe with multibyte UTF chars
         return $message;
     } else {
         $lines = explode($this->eol, $message);
         $wrapped = '';
         foreach ($lines as $value) {
             $wrapped .= empty($wrapped) ? '' : $this->eol;
             $wrapped .= wordwrap($value, $width, $this->eol, $cut);
         }
         return $wrapped;
     }
 }
Example #2
0
 /**
  * This function converts relative uri into absolute uri using specific reference point.
  * For example,
  *   $relativeuri = "test/foo.html"
  *   $referenceuri = "http://example.com:8000/sample/index.php"
  * will generate "http://example.com:8000/sample/test/foo.html"
  *
  * @param   string $relativeuri
  * @param   string $message
  * @return  string $result
  * @access  private
  * @author  Minoru TODA <*****@*****.**>
  * @since   2005-08-01
  */
 function makeAbsoluteURL($relativeuri = "", $referenceuri = "")
 {
     // If relativeuri is protocol we don't want to handle, don't process it.
     foreach ($this->invalid_protocols as $_protocol => $_message) {
         if (PMF_String::strpos($relativeuri, $_protocol) === 0) {
             return $relativeuri;
         }
     }
     // If relativeuri is absolute URI, don't process it.
     foreach (array("http://", "https://") as $_protocol) {
         if (PMF_String::strpos($relativeuri, $_protocol) === 0) {
             return $relativeuri;
         }
     }
     // Split reference uri into parts.
     $pathparts = parse_url($referenceuri);
     // If port is specified in reference uri, prefix with ":"
     if (isset($pathparts['port']) && $pathparts['port'] != "") {
         $pathparts['port'] = ":" . $pathparts['port'];
     } else {
         $pathparts['port'] = "";
     }
     // If path is not specified in reference uri, set as blank
     if (isset($pathparts['path'])) {
         $pathparts['path'] = str_replace("\\", "/", $pathparts['path']);
         $pathparts['path'] = preg_replace("/^.*(\\/)\$/i", "", $pathparts['path']);
     } else {
         $pathparts['path'] = "";
     }
     // Recombine urls
     if (PMF_String::substr($relativeuri, 0, 1) == "/") {
         return $pathparts['scheme'] . "://" . $pathparts['host'] . $pathparts['port'] . $relativeuri;
     } else {
         return $pathparts['scheme'] . "://" . $pathparts['host'] . $pathparts['port'] . $pathparts['path'] . "/" . $relativeuri;
     }
 }
Example #3
0
 /**
  * Get position of the first occurence of a string
  * 
  * @param string $haystack Haystack
  * @param string $needle   Needle
  * @param string $offset   Offset
  * 
  * @return int
  */
 public static function strpos($haystack, $needle, $offset = 0)
 {
     return self::$instance->strpos($haystack, $needle, $offset);
 }
Example #4
0
/**
 * This function checks the content against a dab word list
 * if the banned word spam protection has been activated from the general PMF configuration.
 *
 * @param   string  $content
 * @return  bool
 * @access  public
 * @author  Katherine A. Bouton
 * @author  Thorsten Rinne <*****@*****.**>
 * @author  Matteo Scaramuccia <*****@*****.**>
 * @author  Peter Beauvain <*****@*****.**>
 */
function checkBannedWord($content)
{
    // Sanity checks
    $content = trim($content);
    if ('' == $content && !PMF_Configuration::getInstance()->get('spam.checkBannedWords')) {
        return true;
    }
    $bannedWords = getBannedWords();
    // We just search a match of, at least, one banned word into $content
    $content = PMF_String::strtolower($content);
    if (is_array($bannedWords)) {
        foreach ($bannedWords as $bannedWord) {
            if (PMF_String::strpos($content, PMF_String::strtolower($bannedWord)) !== false) {
                return false;
            }
        }
    }
    return true;
}
Example #5
0
 /**
  * Check if the key is a second plural form
  *
  * @param string $key Key
  *
  * @return boolean
  */
 public function isKeyASecondPluralForm($key)
 {
     return PMF_String::strpos($key, '[1]') !== false;
 }
Example #6
0
 /**
  * Bild-Auswertung und Transformation
  *
  * Diese Funktion selektiert die Bildquelle basierend auf <img...Tag und
  * transformiert diese
  *
  * @param   string $imageString
  * @return  string $imageString
  * @author  David Sauer <*****@*****.**>
  * @since   2005-07-21
  */
 function image_two(&$imageString)
 {
     $img_end = PMF_String::preg_match('/\\"(\\/(.*?))\\"/', $imageString, $matches);
     $source = $matches[1];
     $this->xmlContent .= '<para>' . '<mediaobject>' . '<imageobject>' . '<imagedata fileref="http://localhost' . $source . '" />' . '</imageobject>' . '</mediaobject>' . '</para>';
     $imageString = ltrim(PMF_String::substr($imageString, PMF_String::strpos($imageString, '/>') + 2));
 }
Example #7
0
 /**
  * Decode a given ACE domain name
  * @param    string   Domain name (ACE string)
  * [@param    string   Desired output encoding, see {@link set_parameter}]
  * @return   string   Decoded Domain name (UTF-8 or UCS-4)
  */
 public function decode($input, $one_time_encoding = false)
 {
     // Optionally set
     if ($one_time_encoding) {
         switch ($one_time_encoding) {
             case 'utf8':
             case 'ucs4_string':
             case 'ucs4_array':
                 break;
             default:
                 $this->_error('Unknown encoding ' . $one_time_encoding);
                 return false;
         }
     }
     // Make sure to drop any newline characters around
     $input = trim($input);
     // Negotiate input and try to determine, whether it is a plain string,
     // an email address or something like a complete URL
     if (PMF_String::strpos($input, '@')) {
         // Maybe it is an email address
         // No no in strict mode
         if ($this->_strict_mode) {
             $this->_error('Only simple domain name parts can be handled in strict mode');
             return false;
         }
         list($email_pref, $input) = explode('@', $input, 2);
         $arr = explode('.', $input);
         foreach ($arr as $k => $v) {
             if (PMF_String::preg_match('!^' . preg_quote($this->_punycode_prefix, '!') . '!', $v)) {
                 $conv = $this->_decode($v);
                 if ($conv) {
                     $arr[$k] = $conv;
                 }
             }
         }
         $input = join('.', $arr);
         $arr = explode('.', $email_pref);
         foreach ($arr as $k => $v) {
             if (PMF_String::preg_match('!^' . preg_quote($this->_punycode_prefix, '!') . '!', $v)) {
                 $conv = $this->_decode($v);
                 if ($conv) {
                     $arr[$k] = $conv;
                 }
             }
         }
         $email_pref = join('.', $arr);
         $return = $email_pref . '@' . $input;
     } elseif (PMF_String::preg_match('![:\\./]!', $input)) {
         // Or a complete domain name (with or without paths / parameters)
         // No no in strict mode
         if ($this->_strict_mode) {
             $this->_error('Only simple domain name parts can be handled in strict mode');
             return false;
         }
         $parsed = parse_url($input);
         if (isset($parsed['host'])) {
             $arr = explode('.', $parsed['host']);
             foreach ($arr as $k => $v) {
                 $conv = $this->_decode($v);
                 if ($conv) {
                     $arr[$k] = $conv;
                 }
             }
             $parsed['host'] = join('.', $arr);
             $return = (empty($parsed['scheme']) ? '' : $parsed['scheme'] . (PMF_String::strtolower($parsed['scheme']) == 'mailto' ? ':' : '://')) . (empty($parsed['user']) ? '' : $parsed['user'] . (empty($parsed['pass']) ? '' : ':' . $parsed['pass']) . '@') . $parsed['host'] . (empty($parsed['port']) ? '' : ':' . $parsed['port']) . (empty($parsed['path']) ? '' : $parsed['path']) . (empty($parsed['query']) ? '' : '?' . $parsed['query']) . (empty($parsed['fragment']) ? '' : '#' . $parsed['fragment']);
         } else {
             // parse_url seems to have failed, try without it
             $arr = explode('.', $input);
             foreach ($arr as $k => $v) {
                 $conv = $this->_decode($v);
                 $arr[$k] = $conv ? $conv : $v;
             }
             $return = join('.', $arr);
         }
     } else {
         // Otherwise we consider it being a pure domain name string
         $return = $this->_decode($input);
         if (!$return) {
             $return = $input;
         }
     }
     // The output is UTF-8 by default, other output formats need conversion here
     // If one time encoding is given, use this, else the objects property
     switch ($one_time_encoding ? $one_time_encoding : $this->_api_encoding) {
         case 'utf8':
             return $return;
             break;
         case 'ucs4_string':
             return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return));
             break;
         case 'ucs4_array':
             return $this->_utf8_to_ucs4($return);
             break;
         default:
             $this->_error('Unsupported output format');
             return false;
     }
 }