[pLog-svn] r3772 - in plog/trunk/class: dao data

Oscar Renalias oscar at renalias.net
Mon Jul 24 07:37:30 GMT 2006


I will try to write something in the wiki.

On 7/24/06, Jon Daley <plogworld at jon.limedaley.com> wrote:
>         Oh right.  I forgot.  I haven't looked into how I am supposed to
> make and use the test cases.
>
> On Sun, 23 Jul 2006, Oscar Renalias wrote:
>
> > I think the code looks good to me.
> >
> > Perhaps a test case or two wouldn't hurt, but I can take care of them... this
> > time only :-)
> >
> > Oscar
> >
> > On 22 Jul 2006, at 23:05, jondaley at devel.lifetype.net wrote:
> >
> >> Author: jondaley
> >> Date: 2006-07-22 20:05:25 +0000 (Sat, 22 Jul 2006)
> >> New Revision: 3772
> >>
> >> Modified:
> >>   plog/trunk/class/dao/article.class.php
> >>   plog/trunk/class/data/textfilter.class.php
> >> Log:
> >> added slugify, a function to make better slugs than urlize can,
> >> since slugify uses the format match from linkparser to remove all
> >> characters that won't be recognized by the link parser.
> >>
> >> updated urlize (and slugify) to remove duplicate and trailing
> >> separator characters after doing the first replace.
> >>
> >> This makes a topic of "La la & bu bu"
> >> make a slug of "la-la-bu-bu" instead of"
> >> "la-la---bu-bu", I think it looks better.
> >>
> >> This change was bigger/harder than I expected it to be --
> >> what do you all think of it?
> >>
> >> Fixes: http://bugs.lifetype.net/view.php?id=901
> >>
> >>
> >>
> >> Modified: plog/trunk/class/dao/article.class.php
> >> ===================================================================
> >> --- plog/trunk/class/dao/article.class.php   2006-07-22 19:47:55 UTC (rev
> >> 3771)
> >> +++ plog/trunk/class/dao/article.class.php   2006-07-22 20:05:25 UTC (rev
> >> 3772)
> >> @@ -949,7 +949,7 @@
> >>              {
> >>                      if( $this->_slug == "" ) {
> >>                 include_once(
> >> PLOG_CLASS_PATH.'class/data/textfilter.class.php' );
> >> -                            $slug = Textfilter::urlize(
> >> $this->getTopic());
> >> +                            $slug = Textfilter::slugify(
> >> $this->getTopic());
> >>                      } else {
> >>                              $slug = $this->_slug;
> >>             }
> >> @@ -963,10 +963,10 @@
> >>               * @param slug the new post slug
> >>               */
> >>              function setPostSlug( $slug )
> >> -            {
> >> +        {
> >>             include_once( PLOG_CLASS_PATH.'class/data/textfilter.class.php'
> >> );
> >> -                    $this->_slug = Textfilter::urlize( $slug );
> >> -            }
> >> +            $this->_slug = Textfilter::slugify( $slug );
> >> +        }
> >>
> >>              /**
> >>               * returns the previous article in time
> >>
> >> Modified: plog/trunk/class/data/textfilter.class.php
> >> ===================================================================
> >> --- plog/trunk/class/data/textfilter.class.php       2006-07-22 19:47:55
> >> UTC (rev 3771)
> >> +++ plog/trunk/class/data/textfilter.class.php       2006-07-22 20:05:25
> >> UTC (rev 3772)
> >> @@ -8,7 +8,6 @@
> >>      */
> >>
> >>      -       include_once( PLOG_CLASS_PATH."class/config/config.class.php"
> >> );
> >>      include_once( PLOG_CLASS_PATH."class/data/stringutils.class.php" );
> >>              /**
> >> @@ -38,10 +37,9 @@
> >>          */
> >>              function TextFilter( $removeJavaScript = true )
> >>              {
> >> -                    -
> >>                      $this->removeJavaScript = $removeJavaScript;
> >>
> >> +            include_once( PLOG_CLASS_PATH."class/config/config.class.php"
> >> );
> >>                      $config =& Config::getConfig();
> >>                      $this->htmlAllowedTags = $config->getValue(
> >> "html_allowed_tags_in_comments" );
> >>                      $this->_smileys = $config->getValue( "smileys" );
> >> @@ -405,15 +403,24 @@
> >>             $string =
> >> str_replace(array(';','/','?',':','@','&','=','+','$',','), '', $string);
> >>
> >>             // replace some characters to similar ones
> >> -            $search  = array(' ', 'ä', 'ö', 'ü','é','è','à','ç', 'à', 'è',
> >> 'ì', 'ò', 'ù', 'á', 'é', 'í', 'ó', 'ú', 'ë', 'ï' );
> >> -                    include_once(
> >> PLOG_CLASS_PATH."class/config/config.class.php" );
> >> +            $search  = array(' ', 'ä', 'ö', 'ü','é','è','à','ç', 'à', 'è',
> >> 'ì',
> >> +                             'ò', 'ù', 'á', 'é', 'í', 'ó', 'ú', 'ë', 'ï'
> >> );
> >> +            include_once( PLOG_CLASS_PATH."class/config/config.class.php"
> >> );
> >>                      $config =& Config::getConfig();
> >> -            $replace = array( $config->getValue( "urlize_word_separator",
> >> URLIZE_WORD_SEPARATOR_DEFAULT ), 'a','o','u','e','e','a','c', 'a', 'e',
> >> 'i', 'o', 'u', 'a', 'e', 'i', 'o', 'u', 'e', 'i' );
> >> +            $separator = $config->getValue( "urlize_word_separator",
> >> URLIZE_WORD_SEPARATOR_DEFAULT );
> >> +
> >> +            $replace = array( $separator , 'a','o','u','e','e','a','c',
> >> 'a', 'e', 'i',
> >> +                              'o', 'u', 'a', 'e', 'i', 'o', 'u', 'e', 'i'
> >> );
> >>             $string = str_replace($search, $replace, $string);
> >>
> >>             // and everything that is still left that hasn't been
> >> replaced/encoded, throw it away
> >>             $string = preg_replace( '/[^a-z0-9 _.-]/', '', $string );
> >>
> >> +                // remove doubled separators
> >> +            $string = preg_replace("/[".$separator."]+/", $separator,
> >> $string);
> >> +                // remove starting and trailing separator chars
> >> +            $string = trim($string, $separator);
> >> +
> >>             return $string;
> >>         }
> >>              @@ -448,6 +455,8 @@
> >>             $string =
> >> str_replace(array(';','/','?',':','@','&','=','+','$',','), '', $string);
> >>
> >>             // replace some characters to similar ones
> >> +            // underscores aren't allowed in domain names according to rfc
> >> specs, and
> >> +            // cause trouble in some browsers, particularly with cookies.
> >>             $search  = array('_','
> >> ','ä','ö','ü','é','è','à','ç','à','è','ì','ò','ù','á','é','í','ó','ú','ë','ï');
> >>             $replace =
> >> array('-','-','a','o','u','e','e','a','c','a','e','i','o','u','a','e','i','o','u','e','i');
> >>             $string = str_replace($search, $replace, $string);
> >> @@ -471,22 +480,65 @@
> >>              function xhtmlize( $string )
> >>              {
> >>                    // use kses in the "xhtml converter" mode
> >> -                  $config =& Config::getConfig();
> >> -                  if( $config->getValue( "xhtml_converter_enabled" )) {
> >> +            include_once( PLOG_CLASS_PATH."class/config/config.class.php"
> >> );
> >> +            $config =& Config::getConfig();
> >> +            if( $config->getValue( "xhtml_converter_enabled" )) {
> >>                      include_once(
> >> PLOG_CLASS_PATH."class/data/kses.class.php" );               -
> >> $kses = new kses( true, $config->getValue(
> >> "xhtml_converter_aggresive_mode_enabled"));
> >> -                      $result = $kses->Parse( $string );
> >> -            -                         // if balanceTags wasn't broken, we
> >> could use it...
> >> -                      //$result = Textfilter::balanceTags( $result );
> >> -                  }
> >> -                  else
> >> -                      $result = $string;
> >> -            -                     return $result;
> >> +                $kses = new kses( true, $config->getValue(
> >> "xhtml_converter_aggresive_mode_enabled"));
> >> +                $result = $kses->Parse( $string );
> >> +
> >> +                    // if balanceTags wasn't broken, we could use it...
> >> +                    //$result = Textfilter::balanceTags( $result );
> >> +            }
> >> +            else
> >> +                $result = $string;
> >> +
> >> +            return $result;
> >>              }
> >> -            +
> >> +
> >>              /**
> >> +             * slugifies a string, which is to say that it urlizes it but
> >> +         *  additionally only uses characters allowed in a postname, as
> >> +         *  defined by the linkparser.
> >> +             *
> >> +             * @param string
> >> +             * @return the xhtml-ized string
> >> +             */
> >> +        function slugify( $string ){
> >> +            include_once( PLOG_CLASS_PATH."class/config/config.class.php"
> >> );
> >> +            include_once( PLOG_CLASS_PATH.'class/net/linkparser.class.php'
> >> );
> >> +
> >> +                    $config =& Config::getConfig();
> >> +            $separator = $config->getValue( "urlize_word_separator",
> >> URLIZE_WORD_SEPARATOR_DEFAULT );
> >> +                // remove characters not allowed by the link parser
> >> +            $lp = new LinkParser("");
> >> +            $regexp = $lp->getValidTag("{postname}");
> >> +            $start_bracket = strpos($regexp, "[");
> >> +            $end_bracket = strrpos($regexp, "]");
> >> +            $validChars = false;
> >> +            if($start_bracket !== false && $end_bracket !== false){
> >> +                $validChars = substr($regexp, $start_bracket+1,
> >> +                                     $end_bracket-$start_bracket-1);
> >> +            }
> >> +                // link format doesn't contain brackets, or is not what we
> >> +                // were expecting using default
> >> +            if($validChars === false){
> >> +                $validChars = "_0-9a-zA-Z.-";
> >> +            }
> >> +                // remove "bad" characters
> >> +            $string = preg_replace("/[^".$validChars."]/", $separator,
> >> Textfilter::htmlDecode($string));
> >> +                // remove doubled separators
> >> +            $string = preg_replace("/[".$separator."]+/", $separator,
> >> $string);
> >> +                // remove starting and trailing separator chars
> >> +            $string = trim($string, $separator);
> >> +
> >> +            return $string;
> >> +            }
> >> +
> >> +
> >> +
> >> +            /**
> >>               * @private
> >>               */
> >>              function checkboxToBoolean( $value )
> >>
> >> _______________________________________________
> >> pLog-svn mailing list
> >> pLog-svn at devel.lifetype.net
> >> http://devel.lifetype.net/mailman/listinfo/plog-svn
> >>
> >
> > _______________________________________________
> > pLog-svn mailing list
> > pLog-svn at devel.lifetype.net
> > http://devel.lifetype.net/mailman/listinfo/plog-svn
>
> --
> Jon Daley
> http://jon.limedaley.com/
>
> If you do a job too well, you will get stuck with it.
> -- Slous
>
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.lifetype.net
> http://devel.lifetype.net/mailman/listinfo/plog-svn
>
>


More information about the pLog-svn mailing list