MovableType

MovableType

Postby pwestbro on Sun Sep 24, 2006 7:04 am

I got tired of typing "[@more@]" in my xml rpc client to get extended text in post in LifeType, so I extended the xmlrpc class to support MovableType.

I encountered one issue.

Since the paramers to metaWeblog.getPost and metaWeblog.getRecentPosts do not indicate whether metaWeblog or MovableType API is used. This causes a problem becuase there is no indication if the extended text should be appended to the "description" field or added to the "mt_text_more" field.

I solved this problem by adding a "hidden" blogsetting. If it is not set, the functions behave the same as they did, where the extended text is appended to the "description" filed. (Even though I think that the the default eventually should be the otherway around.) This setting could be configured with a plugin.

Do we want this for 1.1.1, or should this change wait for 1.2?

I will attach the diff next
pwestbro
 
Posts: 99
Joined: Thu Nov 11, 2004 8:20 pm
Location: San Jose, CA

Postby pwestbro on Sun Sep 24, 2006 7:06 am

Code: Select all
Index: class/net/xmlrpc/xmlrpcserver.class.php
===================================================================
using diff: /usr/bin/diff
39c39,44
<                                   "metaWeblog.newMediaObject" => "this:metaWeblogNewMediaObject"                     
---
>                                   "metaWeblog.newMediaObject" => "this:metaWeblogNewMediaObject",     
>                                   "mt.getCategoryList"        => "this:mtGetCategoryList",
>                                   "mt.supportedTextFilters"   => "this:mtSupportedTextFilters",
>                                   "mt.getPostCategories"      => "this:mtGetPostCategories",
>                                   "mt.setPostCategories"      => "this:mtSetPostCategories",
>                                   "mt.supportedMethods"       => "this:mtSupportedMethods"
209c214,227
<                 $body = $content["description"];
---
>                 
>                 // Check to see if the MovableType extnensions have been added
>                   $mt_excerpt = $content["mt_excerpt"];
>                   $mt_text_more = $content["mt_text_more"];
>                   $mt_allow_comments = $content["mt_allow_comments"];
>                 
>                 if ( $mt_text_more != NULL && trim($mt_text_more != ""))
>                 {
>                     $body = $content["description"] . POST_EXTENDED_TEXT_MODIFIER . $mt_text_more;
>                 }
>                 else
>                 {
>                     $body = $content["description"];
>                 }
244a263,272
>                 // Initially assume that comments are enabled
>                 $enableComments = true;
>                 
>                 // Was a setting specified in the MovableType fields?
>                 if ($mt_allow_comments != NULL)
>                 {
>                     $enableComments = $mt_allow_comments;
>                 }
>                 
>                 
253c281
<                     Array( "comments_enabled" => true ) // enable comments
---
>                     Array( "comments_enabled" => $enableComments )
377a406,445
>           function mtGetCategoryList($args)
>           {
>                       $users = new Users();
>                       $category = new ArticleCategories();
>                       $blogsG = new Blogs();
>       
>               $blogid     = $args[0];
>               $username   = $args[1];
>               $password   = $args[2];
>
>               $auth = $users->authenticateUser( $username, $password );
>
>               if ($auth)
>               {
>                 $blogInfo = $blogsG->getBlogInfo( $blogid );
>                               if( !$blogInfo ) {
>                                       return new IXR_Error(-1, 'Incorrect blog id');
>                               }
>               
>                   $cats = $category->getBlogCategories($blogid);
>                               $url = $blogInfo->getBlogRequestGenerator();
>                   $ret = array();     
>                   foreach($cats as $cat)
>                   {
>                       $dummy                   = array();
>                       $dummy["categoryId"]     = $cat->getId();
>                       $dummy["categoryName"]   = $cat->getName();
>
>                       $ret[]                   = $dummy;
>                   }
>       
>                               $this->setResponseCharset( $blogInfo );
>       
>                   return $ret;
>               } else
>               {
>                   return new IXR_Error(-1, 'You did not provide the correct password');
>               }
>           }
>
469c537,548
<                   $dummy["description"]   = $item->getText(false);
---
>
>                 $blogSettings = $blogInfo->getSettings();
>                 
>                 $useMovableType = $blogSettings->getValue( "xmlrpc_movabletype_enabled" );
>                   if ( $useMovableType )
>                   {
>                     $dummy["description"]   = $item->getIntroText();
>                   }
>                   else
>                   {
>                     $dummy["description"]   = $item->getText(false);
>                   }
479a559,563
>
>                   // The MovableType Extensions
>                   $dummy["mt_text_more"]       = $item->getExtendedText();
>                   $dummy["mt_allow_comments"]  = $item->getCommentsEnabled();
>                   
597,598c681,695
<                   $title = $content["title"];
<                   $body = $content["description"];
---
>                 $title = $content["title"];
>                 
>                 // Check to see if the MovableType extnensions have been added
>                   $mt_excerpt = $content["mt_excerpt"];
>                   $mt_text_more = $content["mt_text_more"];
>                   $mt_allow_comments = $content["mt_allow_comments"];
>                 
>                 if ( $mt_text_more != NULL && trim($mt_text_more) != "")
>                 {
>                     $body = $content["description"] . POST_EXTENDED_TEXT_MODIFIER . $mt_text_more;
>                 }
>                 else
>                 {
>                     $body = $content["description"];
>                 }
626a724
>                     $article->setCategoryIds( $categories );
628c726,728
<                   else {
---
>                   else if ( count($article->getCategories()) == 0) {
>                     // Only assign a new category if there isn't one   
>                     
631a732,733
>                       
>                     $article->setCategoryIds( $categories );
637d738
<                   $article->setCategoryIds( $categories );
695a797,799
>                       $blogid = $article->getBlog();
>                       $blogInfo = $article->getBlogInfo();
>
705d808
<                       $blogid = $article->getBlog();
708d810
<                       $blogInfo = $article->getBlogInfo();
799a902,909
>                   $blogs = new Blogs();
>                   $blogInfo = $blogs->getBlogInfo( $blogid );
>                 $url = $blogInfo->getBlogRequestGenerator();
>
>                 $blogSettings = $blogInfo->getSettings();
>
>                 $useMovableType = $blogSettings->getValue( "xmlrpc_movabletype_enabled" );
>
814c924,932
<                       $dummy["description"]   = $item->getText(false);
---
>
>                     if ( $useMovableType )
>                     {
>                         $dummy["description"]   = $item->getIntroText();
>                     }
>                     else
>                     {
>                         $dummy["description"]   = $item->getText(false);
>                     }
817,818d934
<                       $blogInfo = $item->getBlogInfo();
<                       $url = $blogInfo->getBlogRequestGenerator();
823,824c939,947
<                       $catArray[]             = $articleCat->getName();
<                       $dummy["categories"]      = $catArray;
---
>                     foreach( $item->getCategories() as $category ) {
>                         $catArray[]             = $category->getName();
>                     }
>                     $dummy["categories"]      = $catArray;
>
>                     // The MovableType Extensions
>                     $dummy["mt_text_more"]       = $item->getExtendedText();
>                     $dummy["mt_allow_comments"]  = $item->getCommentsEnabled();
>                   
995a1119,1245
>           
>           function mtSupportedTextFilters($args)
>           {
>             $ret = array();
>
>             return $ret;
>           }
>           
>           function mtGetPostCategories($args)
>           {
>               $users = new Users();
>                       $articles = new Articles();
>       
>               $postid     = $args[0];
>               $username   = $args[1];
>               $password   = $args[2];
>
>               $auth = $users->authenticateUser($username,$password);
>
>               if ($auth)
>               {
>                   include_once( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
>
>                   $userInfo = $users->getUserInfoFromUsername( $username );
>
>                   $item = $articles->getBlogArticle($postid,
>                                                     -1, // blogId
>                                                     true, // includeHiddenFields
>                                                     -1, // date
>                                                     -1, // categoryId
>                                                     $userInfo->getId());
>
>                   $blogId = $item->getBlog();
>                   $blogs = new Blogs();
>                   $blogInfo = $blogs->getBlogInfo( $blogId );
>
>                   $catArray               = array();
>                   foreach( $item->getCategories() as $category ) {
>                       $dummy                   = array();
>                       $dummy["categoryId"]     = $category->getId();
>                       $dummy["categoryName"]   = $category->getName();
>
>                       $catArray[]              = $dummy;
>
>                   }
>       
>                               $this->setResponseCharset( $blogInfo );
>       
>                   return $catArray;
>               } else
>               {
>                   return new IXR_Error(-1, 'You did not provide the correct password');
>               }
>           }
>           
>         function mtSetPostCategories($args)
>           {
>               $users = new Users();
>                       $articles = new Articles();
>       
>               $postid     = $args[0];
>               $username   = $args[1];
>               $password   = $args[2];
>               $categories = $args[3];
>
>               $auth = $users->authenticateUser($username,$password);
>
>               if ($auth)
>               {
>                   include_once( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
>
>                   $userInfo = $users->getUserInfoFromUsername( $username );
>
>                   $article = $articles->getBlogArticle($postid,
>                                                     -1, // blogId
>                                                     true, // includeHiddenFields
>                                                     -1, // date
>                                                     -1, // categoryId
>                                                     $userInfo->getId());
>
>                   $blogId = $article->getBlog();
>                   $blogInfo = $article->getBlogInfo();
>
>                 $articleCategories = new ArticleCategories();
>
>
>                   $catArray      = Array();
>
>                   if ( $categories != NULL )
>                   {
>                     foreach( $categories as $category ) {
>                        // Get the category object for the category
>                        $catArray[] = $category["categoryId"];
>                     }
>                 }
>                   
>                   $article->setCategoryIds($catArray);
>       
>                               // Get the plugin manager
>                               $plugMgr =& PluginManager::getPluginManager();
>                               $plugMgr->setBlogInfo( $blogInfo );
>                               $plugMgr->setUserInfo( $userInfo );
>                               $plugMgr->loadPlugins();
>                               // Send the EVENT_PRE_POST_UPDATE message
>                               $plugMgr->notifyEvent( EVENT_PRE_POST_UPDATE, Array( "article" => &$article ));           
>
>                   $articles->updateArticle($article);
>
>                   // Send the EVENT_POST_POST_UPDATE messages to the plugins
>                   $plugMgr->notifyEvent( EVENT_POST_POST_UPDATE, Array( "article" => &$article ));                           
>
>                       CacheControl::resetBlogCache( $blogId );           
>       
>                               $this->setResponseCharset( $blogInfo );
>       
>                   return true;
>               } else
>               {
>                   return new IXR_Error(-1, 'You did not provide the correct password');
>               }
>           }
>
>         function mtSupportedMethods($args)
>           {
>             return $this->IXR_Server->listMethods($args);
>           }
>
pwestbro
 
Posts: 99
Joined: Thu Nov 11, 2004 8:20 pm
Location: San Jose, CA

Postby pwestbro on Sun Sep 24, 2006 7:11 am

I am going to do the test cases next
pwestbro
 
Posts: 99
Joined: Thu Nov 11, 2004 8:20 pm
Location: San Jose, CA

Postby phunkphorce on Sun Sep 24, 2006 8:18 am

This could be added to 1.1.1 as long as the default setting is not to use this feature.

The problem is that I don't know how to expose this setting (in the blog settings page, perhaps?) and that we should not change strings accross maintenance releases...

So it could be added to 1.1.1 and kept as an "unpublished" feature, so to say...

Oh, and thanks for the test cases. Those would be great.
phunkphorce
Lifetype Expert
 
Posts: 9028
Joined: Mon Aug 25, 2003 6:34 am
Location: Suomessa

Postby pwestbro on Sun Sep 24, 2006 6:30 pm

I have added the code and the test cases. I am planning on tonight, creating a plugin that will let this setting be enabled/disabled.
pwestbro
 
Posts: 99
Joined: Thu Nov 11, 2004 8:20 pm
Location: San Jose, CA

MT API

Postby erinther on Tue Jun 26, 2007 8:21 am

I wonder if lifetype now supports MT API?
erinther
 
Posts: 7
Joined: Mon Jun 25, 2007 7:14 pm

Postby jondaley on Tue Jun 26, 2007 12:16 pm

Is there a new API or what do you mean? If you mean pwestbro's addition, I don't think it ever got added, but you can see from his comments that he was using the MT api a long time ago.
jondaley
Lifetype Expert
 
Posts: 6169
Joined: Thu May 20, 2004 6:19 pm
Location: Pittsburgh, PA, USA
LifeType Version: 1.2.11 devel branch

Postby pwestbro on Tue Jun 26, 2007 12:43 pm

jondaley wrote:Is there a new API or what do you mean? If you mean pwestbro's addition, I don't think it ever got added, but you can see from his comments that he was using the MT api a long time ago.


MovableType support was added in 1.2.x in revision 4544
pwestbro
 
Posts: 99
Joined: Thu Nov 11, 2004 8:20 pm
Location: San Jose, CA


Return to LifeType 2.0 Development

cron