[pLog-svn] r3314 - plog/trunk/class/dao

Jon Daley plogworld at jon.limedaley.com
Tue May 2 08:54:40 GMT 2006


 	I will look - I wrote this on 1.0.3, so maybe that function wasn't 
there.

On Tue, 2 May 2006, Oscar Renalias wrote:

> Wouldn't Articles::getBlogArticleByTitle() have done the same thing?
>
> On 5/2/06, jondaley at devel.lifetype.net <jondaley at devel.lifetype.net> wrote:
>> Author: jondaley
>> Date: 2006-05-01 22:22:51 +0000 (Mon, 01 May 2006)
>> New Revision: 3314
>> 
>> Modified:
>>    plog/trunk/class/dao/articlecategories.class.php
>>    plog/trunk/class/dao/articles.class.php
>> Log:
>> removed debug info
>> 
>> Modified: plog/trunk/class/dao/articlecategories.class.php
>> ===================================================================
>> --- plog/trunk/class/dao/articlecategories.class.php    2006-05-01 21:36:06 
>> UTC (rev 3313)
>> +++ plog/trunk/class/dao/articlecategories.class.php    2006-05-01 22:22:51 
>> UTC (rev 3314)
>> @@ -158,7 +158,7 @@
>>                                         break;
>>                         }
>> 
>> -                       print_r($sorting);
>> +//                     print_r($sorting);
>>
>>                         $categories = $this->getMany( "blog_id",
>>                                                       $blogId,
>> 
>> Modified: plog/trunk/class/dao/articles.class.php
>> ===================================================================
>> --- plog/trunk/class/dao/articles.class.php     2006-05-01 21:36:06 UTC 
>> (rev 3313)
>> +++ plog/trunk/class/dao/articles.class.php     2006-05-01 22:22:51 UTC 
>> (rev 3314)
>> @@ -70,11 +70,31 @@
>>          }
>>
>>          /**
>> +         * Check to see if an article title already exists.  Used
>> +         * when article urls don't have dates in them, so post names
>> +         * must be unique across the entire blog.
>> +         *
>> +         * @param artTitle Identifier of the article we want to fetch
>> +         * @param blogId If set, the article must belong to the given blog
>> +         * @return Returns an Article object or 'false' otherwise.
>> +         */
>> +        function checkBlogArticleTitle( $artTitle, $blogId = -1, $artId = 
>> -1 )
>> +        {
>> +                       $prefix = $this->getPrefix();
>> +            $query = "SELECT a.id FROM {$prefix}articles a ";
>> +
>> +                       $query .= "WHERE a.slug = 
>> '".Db::qstr($artTitle)."'";
>> +            if( $blogId != -1 )
>> +                $query .= " AND a.blog_id = ".Db::qstr($blogId);
>> +            if( $artId != -1 )
>> +                $query .= " AND a.id != $artId;";
>> +
>> +            return $this->_getBlogArticleFromQuery( $query, false, true );
>> +        }
>> +
>> +                /**
>>           * Gets an article from the database, given its slug, this is used
>>           * with the fancy permalinks
>> -         * This method will always return the first matching article, so
>> -         * if there're more than one article with the same title, you will
>> -         * always get only one of them.
>>           *
>>           * @param artTitle Identifier of the article we want to fetch
>>           * @param blogId If set, the article must belong to the given blog
>> @@ -112,11 +132,11 @@
>>
>>                         return( $article );
>>          }
>> -
>> +
>>          /**
>>           * @private
>>           */
>> -        function _getBlogArticleFromQuery( $query, $includeHiddenFields )
>> +        function _getBlogArticleFromQuery( $query, $includeHiddenFields, 
>> $onlyCheck=false )
>>          {
>>              // we send the query and then fetch the first array with the 
>> result
>>              $result = $this->Execute( $query );
>> @@ -127,8 +147,12 @@
>>              if ( $result->RecordCount() == 0)
>>                  return false;
>> 
>> +            if($onlyCheck){
>> +                $result->Close();
>> +                return true;
>> +            }
>> +
>>              $row = $result->FetchRow( $result );
>> -
>>              $article = $this->mapRow( $row, $includeHiddenFields );
>>
>>              return $article;
>> @@ -755,6 +779,20 @@
>>           */
>>          function addArticle( &$newArticle )
>>          {
>> +
>> +            $slug = $newArticle->getPostSlug();
>> +            $i = 1;
>> +                // check if there already is a blog with the same mangled 
>> name
>> +            while($this->checkBlogArticleTitle($slug, 
>> $newArticle->getBlog())){
>> +                $i++;
>> +                    // and if so, assign a new one
>> +                    // if we already tried with blogname+"i" we have
>> +                    // to strip "i" before adding it again!
>> +                $slug = substr($slug, 0,
>> +                               ($i > 2) ? strlen($slug)-strlen($i-1) : 
>> strlen($slug)).$i;
>> +            }
>> +            $newArticle->setPostSlug($slug);
>> +
>>              include_once( 
>> PLOG_CLASS_PATH.'class/dao/customfields/customfields.class.php' );
>>              include_once( PLOG_CLASS_PATH."class/dao/blogs.class.php" );
>> 
>> @@ -890,6 +928,20 @@
>>           */
>>          function updateArticle( $article )
>>          {
>> +            $slug = $article->getPostSlug();
>> +            $i = 1;
>> +                // check if there already is a blog with the same mangled 
>> name
>> +            while($this->checkBlogArticleTitle($slug, $article->getBlog(),
>> +                                               $article->getId())){
>> +                $i++;
>> +                    // and if so, assign a new one
>> +                    // if we already tried with slug+"i" we have
>> +                    // to strip "i" before adding it again!
>> +                $slug = substr($slug, 0,
>> +                               ($i > 2) ? strlen($slug)-strlen($i-1) : 
>> strlen($slug)).$i;
>> +            }
>> +            $article->setPostSlug($slug);
>> +
>>                         // keep the old version, since we're going to need 
>> it to udpate the category counters
>>                         $oldArticle = $this->getArticle( 
>> $article->getId());
>> 
>> 
>> _______________________________________________
>> 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/

Things will get better despite our efforts to improve them.
-- Will Rogers


More information about the pLog-svn mailing list