[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