[pLog-svn] r6714 - in plugins/branches/lifetype-1.2: . rssimport rssimport/class rssimport/class/action rssimport/class/view rssimport/locale rssimport/templates
Jon Daley
plogworld at jon.limedaley.com
Fri Sep 5 15:43:23 EDT 2008
Hrm, just came across my first "this site has been reported as an
attacker" thingy - I think that might use google to figure out which sites
are "bad"? Maybe that is how it got ahold of my "secret" URL.
If so - that isn't particularly good - that google is actually
going through all the sites that you click on.
On Fri, 5 Sep 2008, Jon Daley wrote:
> Nope. I am using IceWeasel 3.0.1 on Debian. I would assume that they
> wouldn't submit urls anywhere.
>
> On Fri, 5 Sep 2008, Paul Westbrook wrote:
>
>> Hello,
>> I thought about what you were stating in your comment. Are you using
>> the Google Toolbar or Opera?
>> Both of these submit the urls that you visit to Google. This could cause
>> Google to see the url, with
>> the access key.
>>
>> --Paul
>>
>> On Thu, Sep 4, 2008 at 8:57 AM, Jon Daley <plogworld at jon.limedaley.com>
>> wrote:
>> Ick. Googlebot visited my "secret" access key protected page. They
>> must look at the
>> referrer or something, and put it in their database. Though that
>> doesn't even make sense,
>> since LT's code goes to the google feed, and probably doesn't pass
>> the referrer.
>>
>> But, somehow, google discovered it, and visited it this morning.
>>
>>
>> On Tue, 2 Sep 2008, Paul Westbrook wrote:
>>
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Hello,
>> When the plugin successfully imports a feed, it goes to
>> the DefaultView. So I can believe that you are getting that
>> warning. ( I assume that $posts is null)
>>
>> The link to the rss item comes straight out of LifeType's
>> xml parser. If you look at the feed from google reader, does the
>> url look good there?
>>
>> What you have described is exactly what I want to use it
>> for. But there is a problem with the google reader feed.
>> Google doesn't have any indication of when an item was "shared" in
>> the
>> feed itself. Without that, it is hard to generate the list of
>> the items that were shared in the last 24 hours. I am planning
>> on working on a workaround for this, when I get a chance.
>>
>> I have written up how I am using it here:
>>
>> http://www.paulstimesink.com/post/2008/08/21/posting_daily_activity
>>
>> Also, this plugin will not create a post, if there are no items in
>> the
>> feed. The way that I was planning on using this is to pass a
>> feed that only has items added in the last 24 hours in it. I am
>> using Yahoo Pipes to do that now for my delicious items.
>>
>>
>>
>> - --Paul
>>
>>
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.4.6 (GNU/Linux)
>> Comment: http://getfiregpg.org
>>
>> iD8DBQFIvXzwQIx6KJgT81kRArZZAKCJW+fqqrrwOMlmy/2n45Ji0sYwVQCfS/8U
>> d3wxanQ34LKO4jNlLbvqYNk=
>> =x2VX
>> -----END PGP SIGNATURE-----
>> On Mon, Sep 1, 2008 at 7:43 PM, Jon Daley
>> <plogworld at jon.limedaley.com> wrote:
>> I haven't looked into it yet, but I got this error every time I
>> import the feed
>> (google reader shared)
>>
>> Warning: Invalid argument supplied for foreach() in
>> /home/jondaley/www/plog/class/view/defaultview.class.php on line 41
>>
>> Also, it is parsing the RSS feed incorrectly, and generating
>> text like this:
>>
>> <li><a
>> href="http://blog.wired.com/geekdad/2008/09/geekdad-puzzle.htmlhttp://blog.wired.com/geekdad/">GeekDad
>> Puzzle of
>> the Week: Cross Number PrimeGeekdad </a></li>
>>
>> You mentioned you use it for google reader, so it seems odd that
>> it would fail
>> for me?
>>
>> Lastly, the ideal way to make it work with google reader is to
>> setup a daily
>> cron job to look at a feed url that only shows
>> posts on that day, and it is smart enough to not generate a post
>> if there
>> aren't any links? i.e. if I simply give it my google
>> reader url, then it will always generate links for all of my
>> shared items each
>> time, even though it already displayed them last
>> time, right?
>>
>> Looks like I might have some work to make this work how I want
>> it to, but a
>> good start for me anyway.
>>
>>
>> On Thu, 21 Aug 2008, Paul Westbrook wrote:
>>
>> Hello,
>> This creates a new post everytime the "import feed action" gets
>> run
>> (assuming that the right access key is specified).
>>
>> The reason that I wrote this was to have a way to create a
>> daily post that
>> contains links to my "shared" items. For example, my
>> del.icio.us bookmarks
>> and Google Reader Shared items. This timing is why I rely on an
>> external
>> action to call the plugin.
>>
>> --Paul
>>
>> On Wednesday 20 August 2008 08:15:59 Jon Daley wrote:
>> Very nice. I have been aiming to do something like
>> this. How
>> does this work - it has one post that gets updated? Or it
>> makes a new
>> post with the same title every time the rss feed changes?
>>
>> On Wed, 20 Aug 2008, pwestbro at devel.lifetype.net wrote:
>> Author: pwestbro
>> Date: 2008-08-20 17:48:02 -0400 (Wed, 20 Aug 2008)
>> New Revision: 6714
>>
>> Added:
>> plugins/branches/lifetype-1.2/rssimport/
>> plugins/branches/lifetype-1.2/rssimport/README.txt
>> plugins/branches/lifetype-1.2/rssimport/class/
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/
>>
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/importrssfeedaction.
>> class.php
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/pluginrssimportconfi
>> gaction.class.php
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/pluginrssimportupdat
>> econfigaction.class.php
>> plugins/branches/lifetype-1.2/rssimport/class/view/
>>
>>
>> plugins/branches/lifetype-1.2/rssimport/class/view/pluginrssimportconfigv
>> iew.class.php
>> plugins/branches/lifetype-1.2/rssimport/locale/
>>
>> plugins/branches/lifetype-1.2/rssimport/locale/locale_en_UK.php
>>
>> plugins/branches/lifetype-1.2/rssimport/pluginrssimport.class.php
>> plugins/branches/lifetype-1.2/rssimport/templates/
>>
>> plugins/branches/lifetype-1.2/rssimport/templates/rssimport.template
>> Log:
>> The rssimport plugin creates a post with the content
>> of an rss
>> feed. One
>> use of this is to create a daily post of online
>> activities (i.e.
>> posted
>> Flickr photos, Twitter tweets, delicious bookmarks,
>> Google Reader
>> shared
>> items.)
>>
>>
>> [USAGES]:
>> 1. Upload: Upload all the extract files and
>> directories to
>> $LifeType_Install_Dir/plugin/rssimport
>> 2. Specify the url to the rss feed to be imported
>> 3. Specify a title for the generated posts
>> 4. Speciy a category for the generated posts
>> 5. (Optionally) Specify a different access key
>> needed to make a
>> post
>> 6. Press Update
>>
>> Now when you access the "Url to import feed", and
>> there are a post
>> will
>> be created
>>
>>
>>
>>
>> Added:
>> plugins/branches/lifetype-1.2/rssimport/README.txt
>>
>>
>> ===================================================================
>> ---
>> plugins/branches/lifetype-1.2/rssimport/README.txt
>> (rev 0) +++
>> plugins/branches/lifetype-1.2/rssimport/README.txt
>> 2008-08-20
>> 21:48:02
>> UTC (rev 6714) @@ -0,0 +1,52 @@
>> +[DESCRIPTION]
>> +The rssimport plugin creates a post with the
>> content of an rss
>> feed.
>> One +use of this is to create a daily post of online
>> activities
>> (i.e.
>> posted +Flickr photos, Twitter tweets, delicious
>> bookmarks, Google
>> Reader
>> shared +items.)
>> +
>> +[USAGES]:
>> +1. Upload: Upload all the extract files and
>> directories to
>> + $LifeType_Install_Dir/plugin/rssimport
>> +2. Specify the url to the rss feed to be imported
>> +3. Specify a title for the generated posts
>> +4. Speciy a category for the generated posts
>> +5. (Optionally) Specify a different access key
>> needed to make a
>> post
>> +6. Press Update
>> +
>> +Now when you access the "Url to import feed", and
>> there are a post
>> will
>> be created +
>> +
>> +[ADVANCED USAGES]
>> +Creating a rss feed for the last 24 hours of posts.
>> +
>> + This Yahoo Pipe will filter a feed by date
>> +
>> http://pipes.yahoo.com/pipes/pipe.info?_id=SJDIxkAa3BG7s6ZYmLokhQ
>> +
>> +Automatically creating posts
>> +
>> + On Linux and Max OS X, it is easy to schedule
>> access to the
>> "Url to
>> + import feed" with cron. For a cron tutorial
>> +
>> http://www.clickmojo.com/code/cron-tutorial.html
>> +
>> +
>> +[SECURITY CONCERNS]
>> +The rssimport plugin does allow external processes
>> to create posts
>> in a
>> +LifeType install. When first configured, the
>> rssimport plugin
>> creates a
>> +random, relatively unique accessKey. This key is
>> required to be
>> specified +in a parameter of the url in order for a
>> post to be
>> created.
>> +
>> +It is possible, that if the accessKey is
>> discovered, that a third
>> party
>> can +create posts. The third party will not be able
>> to specify the
>> content of +these posts, as the feed url is in
>> retrieved from the
>> plugin
>> config. +
>> +Followon release may add the following addition
>> enhancement.
>> + 1) Allow a list of ip address/host names to be
>> specified where
>> posting is + allowed
>> +
>> +
>> +
>> +[TODO]
>> +1) Add the ability to specify a list of the ip
>> address that are
>> permitted to create the posts. +2) Add an option to
>> include the
>> description of the rss items or a summary +int the
>> pos
>> +3) Change the title field, to not require
>> characters to be escaped
>>
>> Added:
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/importrssfeedaction.
>> class.php
>>
>>
>> ===================================================================
>> ---
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/importrssfeedaction.
>> class.php (rev 0) +++
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/importrssfeedaction.
>> class.php 2008-08-20 21:48:02 UTC (rev 6714)
>> @@ -0,0 +1,157
>> @@
>> +<?php
>> +
>> + lt_include(
>> PLOG_CLASS_PATH."class/action/blogaction.class.php" );
>> + lt_include(
>>
>> PLOG_CLASS_PATH."class/view/plugintemplatedview.class.php" ); +
>> lt_include(
>> PLOG_CLASS_PATH."class/view/errorview.class.php" ); +
>> + class ImportRssFeedAction extends BlogAction
>> + {
>> + var $_enteredPassword;
>> + var $_html;
>> +
>> + function ImportRssFeedAction( $actionInfo,
>> $request )
>> + {
>> +
>> + $this->BlogAction( $actionInfo,
>> $request );
>> + }
>> +
>> + function perform()
>> + {
>> + // Get and confirm the password
>> + $this->_enteredPassword =
>> $this->_request->getValue(
>> "accessKey"
>> ); +
>> + $this->_html = "";
>> +
>> + // Check the ip address to make sure
>> that it is the
>> list of
>> + // allowd ip address
>> +
>> + $blogSettings =
>> $this->_blogInfo->getSettings();
>> + if ($blogSettings->getValue(
>> "plugin_rssimport_enabled"
>> ) == FALSE)
>> + {
>> + $this->_view = new ErrorView(
>> $this->_blogInfo );
>> + $this->_view->setValue( "message",
>> "Plugin not
>> enabled" );
>> +
>> + $this->setCommonData();
>> + return true;
>> + }
>> +
>> + $feedurl = $blogSettings->getValue(
>> "plugin_rssimport_feedurl" );
>> + $accessKey = $blogSettings->getValue(
>> "plugin_rssimport_accessKey"
>> ); +// $accessHosts = $blogSettings->getValue(
>> "plugin_rssimport_accessHosts" ); +
>> $titleFormat =
>> $blogSettings->getValue(
>> "plugin_rssimport_titleFormat" ); +
>> + // Compare the access key to that which
>> is in the
>> accessKey
>> parameter + if ($accessKey !=
>> $this->_enteredPassword)
>> + {
>> + // Passwords don't match
>> + $this->_view = new ErrorView(
>> $this->_blogInfo );
>> + $this->_view->setValue( "message",
>> "Incorrect
>> Access Key" );
>> +
>> + $this->setCommonData();
>> + return true;
>> +
>> + }
>> +
>> +// if ( $accessHosts != null &&
>> $accessHosts != "" )
>> +// {
>> +//
>> +// }
>> +
>> +
>> + lt_include(
>>
>> PLOG_CLASS_PATH."class/xml/rssparser/rssparser.class.php" ); +
>> + $parser = new RSSParser();
>> +
>> + if ( $parser->parse($feedurl) == FALSE )
>> + {
>> + // failed to parse the feed
>> + $this->_view = new ErrorView(
>> $this->_blogInfo );
>> + $this->_view->setValue( "message",
>> "Failed to parse
>> feed" );
>> +
>> + $this->setCommonData();
>> + return true;
>> + }
>> +
>> + $items = $parser->getItems();
>> +
>> + // Now add each of the items to our html
>> documen that
>> we are
>> building + foreach ($items as $item) {
>> + $this->addItem($item);
>> + }
>> +
>> + if ( $this->_html == "" )
>> + {
>> + // There were no items
>> + $this->_view = new ErrorView(
>> $this->_blogInfo );
>> + $this->_view->setValue( "message",
>> "No items in
>> feed" );
>> +
>> + $this->setCommonData();
>> + return true;
>> + }
>> +
>> + // Now create an article with the html
>> as the body,
>> +
>> + lt_include(
>> PLOG_CLASS_PATH.'class/dao/articles.class.php' );
>> + $articles = new Articles();
>> +
>> + $postText = Textfilter::xhtmlize("<ul>"
>> . $this->_html
>> .
>> "</ul>"); +
>> + $postTitle = date($titleFormat);
>> +
>> +
>> + // XXX_PW This should pull the category
>> from the
>> settings
>> + // Get the default category
>> + lt_include(
>>
>> PLOG_CLASS_PATH.'class/dao/articlecategories.class.php' ); +
>> $category = new ArticleCategories();
>> + $cats =
>>
>> $category->getBlogCategories($this->_blogInfo->getId()); +
>> + // some protection again blogs without
>> categories
>> + if( !$cats ) {
>> + $this->_view = new ErrorView(
>> $this->_blogInfo );
>> + $this->_view->setValue( "message",
>> "Error getting
>> categories" );
>> +
>> + $this->setCommonData();
>> + return true;
>> + }
>> +
>> +
>> + $idCategory = $blogSettings->getValue(
>> "plugin_rssimport_article_category_id" ); +
>> + $article = new Article( $postTitle,
>> + $postText,
>> + Array(
>> $idCategory ), // catid
>> +
>> $this->_blogInfo->getOwner(),
>> +
>> $this->_blogInfo->getId(),
>> +
>> POST_STATUS_PUBLISHED,
>> +
>>
>> 0 );
>> + $article->setDateObject( new
>> Timestamp());
>> + $article->setCommentsEnabled( true );
>> +
>> +
>> + // add the article to the db, finally
>> + if( $articles->addArticle( $article )) {
>> + lt_include(
>> PLOG_CLASS_PATH."class/view/defaultview.class.php"
>> ); + $this->_view = new DefaultView(
>> $this->_blogInfo );
>> + }
>> + else {
>> + $this->_view = new ErrorView(
>> $this->_blogInfo );
>> + $this->_view->setValue( "message",
>> "Error adding
>> article to the
>> database" ); + }
>> +
>> + $this->setCommonData();
>> +
>> +
>> + return true;
>> + }
>> +
>> + function addItem( $item )
>> + {
>> + // Add this item to the html text
>> + $this->_html .= "<li>";
>> + $this->_html .= "<a href=\"" .
>> $item->getLink() .
>> "\">" .
>> $item->getTitle() . " </a>"; + $this->_html
>> .= "</li>";
>> + }
>> +
>> +
>> + }
>> +?>
>>
>> Added:
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/pluginrssimportconfi
>> gaction.class.php
>>
>>
>> ===================================================================
>> ---
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/pluginrssimportconfi
>> gaction.class.php (rev
>> 0) +++
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/pluginrssimportconfi
>> gaction.class.php 2008-08-20 21:48:02 UTC (rev
>> 6714) @@ -0,0
>> +1,45 @@
>> +<?php
>> +
>> + /*
>> + Copyright 2006, 2008 Paul Westbrook
>> (paul at westbrooks.org)
>> +
>> + This program is free software; you can
>> redistribute it and/or
>> modify
>> + it under the terms of the GNU General Public
>> License as
>> published by
>> + the Free Software Foundation; either version 2
>> of the License,
>> or
>> + (at your option) any later version.
>> +
>> + This program is distributed in the hope that it
>> will be
>> useful,
>> + but WITHOUT ANY WARRANTY; without even the
>> implied warranty of
>> + MERCHANTABILITY or FITNESS FOR A PARTICULAR
>> PURPOSE. See the
>> + GNU General Public License for more details.
>> +
>> + You should have received a copy of the GNU
>> General Public
>> License
>> + along with this program; if not, write to the
>> Free Software
>> + Foundation, Inc., 59 Temple Place, Suite 330,
>> Boston, MA
>> 02111-1307
>> USA + */
>> +
>> +
>> + lt_include(
>> PLOG_CLASS_PATH."class/action/admin/adminaction.class.php"
>> ); + lt_include(
>>
>> PLOG_CLASS_PATH."plugins/rssimport/class/view/pluginrssimportconfigview.c
>> lass.php" ); +
>> + /**
>> + * shows a form with the current
>> configuration
>> + */
>> + class PluginRssImportConfigAction extends
>> AdminAction
>> + {
>> +
>> + function
>> PluginRssImportConfigAction( $actionInfo,
>> $request )
>> + {
>> + $this->AdminAction(
>> $actionInfo, $request
>> );
>> + }
>> +
>> + function perform()
>> + {
>> + $this->_view = new
>> PluginRssImportConfigView( $this->_blogInfo
>> ); +
>> + $this->setCommonData();
>> +
>> + return true;
>> + }
>> + }
>> +?>
>>
>> Added:
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/pluginrssimportupdat
>> econfigaction.class.php
>>
>>
>> ===================================================================
>> ---
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/pluginrssimportupdat
>> econfigaction.class.php (rev
>> 0) +++
>>
>> plugins/branches/lifetype-1.2/rssimport/class/action/pluginrssimportupdat
>> econfigaction.class.php 2008-08-20 21:48:02 UTC (rev
>> 6714) @@ -0,0
>> +1,165
>> @@
>> +<?php
>> +
>> + /*
>> + Copyright 2006, 2008 Paul Westbrook
>> (paul at westbrooks.org)
>> +
>> + This program is free software; you can
>> redistribute it and/or
>> modify
>> + it under the terms of the GNU General Public
>> License as
>> published by
>> + the Free Software Foundation; either version 2
>> of the License,
>> or
>> + (at your option) any later version.
>> +
>> + This program is distributed in the hope that it
>> will be
>> useful,
>> + but WITHOUT ANY WARRANTY; without even the
>> implied warranty of
>> + MERCHANTABILITY or FITNESS FOR A PARTICULAR
>> PURPOSE. See the
>> + GNU General Public License for more details.
>> +
>> + You should have received a copy of the GNU
>> General Public
>> License
>> + along with this program; if not, write to the
>> Free Software
>> + Foundation, Inc., 59 Temple Place, Suite 330,
>> Boston, MA
>> 02111-1307
>> USA + */
>> +
>> + lt_include(
>> PLOG_CLASS_PATH."class/action/admin/adminaction.class.php"
>> ); + lt_include(
>>
>> PLOG_CLASS_PATH."plugins/rssimport/class/view/pluginrssimportconfigview.c
>> lass.php" ); + lt_include(
>>
>> PLOG_CLASS_PATH."class/data/validator/httpurlvalidator.class.php"
>> );
>> + lt_include(
>>
>> PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
>> +
>> +
>> + /**
>> + * updates the plugin configuration
>> + */
>> + class PluginRssImportUpdateConfigAction
>> extends AdminAction
>> + {
>> + var $_pluginEnabled;
>> + var $_feedurl;
>> + var $_accessKey;
>> +// var $_accessHosts;
>> + var $_titleFormat;
>> + var $_categoryId;
>> +
>> + function
>> PluginRssImportUpdateConfigAction(
>> $actionInfo, $request )
>> + {
>> + $this->AdminAction(
>> $actionInfo, $request
>> );
>> + }
>> +
>> + function validate()
>> + {
>> +
>> + $this->_pluginEnabled =
>> $this->_request->getValue( "pluginEnabled" );
>> + $this->_pluginEnabled =
>> ($this->_pluginEnabled != "" );
>> +
>> + $this->_feedurl =
>> $this->_request->getValue( "feedurl" );
>> +
>> + $this->_accessKey =
>> $this->_request->getValue( "accessKey" );
>> +
>> +// $this->_accessHosts =
>> $this->_request->getValue( "accessHosts" );
>> +
>> + $this->_titleFormat =
>> $this->_request->getValue( "titleFormat" );
>> + $this->_categoryId =
>> $this->_request->getValue( "categoryId" );
>> +
>> + // This should validate the
>> url
>> + $val = new
>> HttpUrlValidator();
>> + if(
>> !$val->validate($this->_feedurl) ) {
>> + $this->_view = new
>> PluginRssImportConfigView(
>> $this->_blogInfo ); +
>> $this->_view->setErrorMessage(
>> $this->_locale->tr("rssimport_error_url")); +
>> $this->setCommonData();
>> +
>> + return false;
>> + }
>> +
>> + // Make sure that key is
>> specied
>> + if (!$this->_accessKey ||
>> $this->_accessKey
>> == "")
>> + {
>> + $this->_view = new
>> PluginRssImportConfigView(
>> $this->_blogInfo ); +
>> $this->_view->setErrorMessage(
>>
>> $this->_locale->tr("rssimport_error_missing_accesskey")); +
>> $this->setCommonData();
>> +
>> + return false;
>> + }
>> +
>> + // This should validate the
>> url
>> + $val = new
>> StringValidator();
>> + if(
>> !$val->validate($this->_accessKey) ) {
>> + $this->_view = new
>> PluginRssImportConfigView(
>> $this->_blogInfo ); +
>> $this->_view->setErrorMessage(
>>
>> $this->_locale->tr("rssimport_error_invalid_accesskey")); +
>> $this->setCommonData();
>> +
>> + return false;
>> + }
>> +
>> + // This should validate the
>> url
>> + $val = new
>> StringValidator();
>> + if(
>> !$val->validate($this->_accessKey) ) {
>> + $this->_view = new
>> PluginRssImportConfigView(
>> $this->_blogInfo ); +
>> $this->_view->setErrorMessage(
>>
>> $this->_locale->tr("rssimport_error_invalid_accesskey")); +
>> $this->setCommonData();
>> +
>> + return false;
>> + }
>> +
>> + // Make sure that
>> titleFormat is specied
>> + if (!$this->_titleFormat ||
>> $this->_titleFormat == "")
>> + {
>> + $this->_view = new
>> PluginRssImportConfigView(
>> $this->_blogInfo ); +
>> $this->_view->setErrorMessage(
>>
>> $this->_locale->tr("rssimport_error_missing_titleformat")); +
>> $this->setCommonData();
>> +
>> + return false;
>> + }
>> +
>> + // This should validate the
>> url
>> + $val = new
>> StringValidator();
>> + if(
>> !$val->validate($this->_titleFormat) )
>> {
>> + $this->_view = new
>> PluginRssImportConfigView(
>> $this->_blogInfo ); +
>> $this->_view->setErrorMessage(
>>
>> $this->_locale->tr("rssimport_error_invalid_titleformat")); +
>> $this->setCommonData();
>> +
>> + return false;
>> + }
>> +
>> + return true;
>> + }
>> +
>> + function perform()
>> + {
>> + // update the plugin
>> configurations to blog
>> setting
>> + $blogSettings =
>> $this->_blogInfo->getSettings();
>> + $blogSettings->setValue(
>> "plugin_rssimport_enabled",
>> $this->_pluginEnabled ); +
>> + $blogSettings->setValue(
>> "plugin_rssimport_feedurl", $this->_feedurl
>> ); +
>> + $blogSettings->setValue(
>> "plugin_rssimport_accessKey",
>> $this->_accessKey); +
>> +// $blogSettings->setValue(
>> "plugin_rssimport_accessHosts",
>> $this->_accessHosts); +
>> + $blogSettings->setValue(
>> "plugin_rssimport_titleFormat",
>> $this->_titleFormat); +
>> + $blogSettings->setValue(
>> "plugin_rssimport_article_category_id",
>> $this->_categoryId ); +
>> $this->_blogInfo->setSettings( $blogSettings );
>> +
>> +
>> + // save the blogs settings
>> + $blogs = new Blogs();
>> + if( !$blogs->updateBlog(
>> $this->_blogInfo
>> )) {
>> + $this->_view = new
>> PluginRssImportConfigView(
>> $this->_blogInfo ); +
>> $this->_view->setErrorMessage(
>> $this->_locale->tr("error_updating_settings")); +
>> $this->setCommonData();
>> +
>> + return false;
>> + }
>> +
>> + // if everything went ok...
>> +
>> $this->_blogInfo->setSettings(
>> $blogSettings );
>> + $this->_session->setValue(
>> "blogInfo",
>> $this->_blogInfo );
>> + $this->saveSession();
>> +
>> + $this->_view = new
>> PluginRssImportConfigView( $this->_blogInfo );
>> +
>> $this->_view->setSuccessMessage(
>> $this->_locale->tr("rssimport_settings_saved_ok"));
>> + $this->setCommonData();
>> +
>> + // clear the cache
>> +
>> CacheControl::resetBlogCache(
>> $this->_blogInfo->getId());
>> +
>> + return true;
>> + }
>> + }
>> +?>
>>
>> Added:
>>
>> plugins/branches/lifetype-1.2/rssimport/class/view/pluginrssimportconfigv
>> iew.class.php
>>
>>
>> ===================================================================
>> ---
>>
>> plugins/branches/lifetype-1.2/rssimport/class/view/pluginrssimportconfigv
>> iew.class.php (rev 0) +++
>>
>> plugins/branches/lifetype-1.2/rssimport/class/view/pluginrssimportconfigv
>> iew.class.php 2008-08-20 21:48:02 UTC (rev 6714)
>> @@ -0,0 +1,94 @@
>> +<?php
>> + /*
>> + Copyright 2006, 2008 Paul Westbrook
>> (paul at westbrooks.org)
>> +
>> + This program is free software; you can
>> redistribute it and/or
>> modify
>> + it under the terms of the GNU General Public
>> License as
>> published by
>> + the Free Software Foundation; either version 2
>> of the License,
>> or
>> + (at your option) any later version.
>> +
>> + This program is distributed in the hope that it
>> will be
>> useful,
>> + but WITHOUT ANY WARRANTY; without even the
>> implied warranty of
>> + MERCHANTABILITY or FITNESS FOR A PARTICULAR
>> PURPOSE. See the
>> + GNU General Public License for more details.
>> +
>> + You should have received a copy of the GNU
>> General Public
>> License
>> + along with this program; if not, write to the
>> Free Software
>> + Foundation, Inc., 59 Temple Place, Suite 330,
>> Boston, MA
>> 02111-1307
>> USA + */
>> +
>> +
>> + lt_include(
>>
>> PLOG_CLASS_PATH."class/view/admin/adminplugintemplatedview.class.php"
>> );
>> +
>> + /**
>> + * implements the main view of the feed
>> reader plugin
>> + */
>> + class PluginRssImportConfigView extends
>> AdminPluginTemplatedView
>> + {
>> +
>> +
>> + function PluginRssImportConfigView(
>> $blogInfo )
>> + {
>> +
>> $this->AdminPluginTemplatedView( $blogInfo,
>> "rssimport", "rssimport"
>> ); +
>> + }
>> +
>> + function render()
>> + {
>> + // load some configuration
>> settings
>> + $blogSettings =
>> $this->_blogInfo->getSettings();
>> + $pluginEnabled =
>> $blogSettings->getValue(
>> "plugin_rssimport_enabled"
>> ); +
>> + $feedurl =
>> $blogSettings->getValue(
>> "plugin_rssimport_feedurl" );
>> +
>> + $accessKey =
>> $blogSettings->getValue(
>> "plugin_rssimport_accessKey" );
>> + // If accessKey is not set,
>> generate a new
>> one
>> + if ( $accessKey == null ||
>> $accessKey == ""
>> )
>> + {
>> + $rg =&
>> $this->_blogInfo->getBlogRequestGenerator();
>> + $rg->blogLink();
>> +
>> + // Generate a unique
>> accessKey for this
>> plugin
>> + $accessKey =
>> md5($rg->blogLink() .
>> time());
>> + }
>> +
>> +// $accessHosts =
>> $blogSettings->getValue(
>> "plugin_rssimport_accessHosts" ); +
>> + // Get the title format
>> string
>> + $titleFormat =
>> $blogSettings->getValue(
>> "plugin_rssimport_titleFormat" ); +
>> if (
>> $titleFormat == null ||
>> $titleFormat == "" )
>> + {
>> + $locale =
>> $this->_blogInfo->getLocale();
>> + $titleFormat =
>> $locale->tr("rssimport_default_titleformat");
>> + }
>> +
>> + $categoryId =
>> $blogSettings->getValue(
>> "plugin_rssimport_article_category_id" ); +
>> + // fetch all the current
>> article categories
>> + lt_include(
>> PLOG_CLASS_PATH."class/dao/articlecategories.class.php");
>> + $categories = new
>> ArticleCategories();
>> + $blogCategories =
>> $categories->getBlogCategories(
>> $this->_blogInfo->getId()); +
>> + // get the update url from
>> rssimport plugin
>> and pass to the plugin
>> setting view + $plugins =
>> $this->_pm->getPlugins();
>> + $this->setValue(
>> 'importRssUrl',
>> $plugins['rssimport']->getImportRssUrl($accessKey)
>> ); +
>> +
>> + // create a view and export
>> the settings to
>> the template
>> + $this->setValue(
>> "pluginEnabled",
>> $pluginEnabled );
>> +
>> + $this->setValue( "feedurl",
>> $feedurl );
>> +
>> + $this->setValue(
>> "accessKey", $accessKey );
>> +
>> +// $this->setValue(
>> "accessHosts",
>> $accessHosts );
>> +
>> + $this->setValue(
>> "titleFormat",
>> $titleFormat );
>> +
>> + $this->setValue(
>> "categoryId", $categoryId
>> );
>> + $this->setValue(
>> "categories",
>> $blogCategories );
>> +
>> + parent::render();
>> + }
>> + }
>> +?>
>>
>> Added:
>> plugins/branches/lifetype-1.2/rssimport/locale/locale_en_UK.php
>>
>>
>> ===================================================================
>> ---
>> plugins/branches/lifetype-1.2/rssimport/locale/locale_en_UK.php
>> (rev 0) +++
>>
>> plugins/branches/lifetype-1.2/rssimport/locale/locale_en_UK.php
>> 2008-08-2
>> 0 21:48:02 UTC (rev 6714) @@ -0,0 +1,32 @@
>> +<?php
>> +$messages["manageIntegrationPlugins"] =
>> "Integration Management";
>> +$messages["rssimport"] = "RSS Import";
>> +
>> +$messages["rssimport_plugin_enabled"] = "Enable
>> this plugin";
>> +$messages["rssimport_accessKey"] = "Access Key that
>> is required to
>> import a feed"; +$messages["rssimport_accessHosts"]
>> = "IP address
>> that
>> are allowed to trigger a feed to be imported (leave
>> blank to allow
>> allow
>> all hosts)"; +$messages["rssimport_feedurl"] = "Url
>> of the feed to
>> fetch";
>> +$messages["rssimport_titleformat"] = "Format string
>> that should be
>> used
>> for the titles of the new posts. See <a
>>
>> href='http://us3.php.net/manual/en/function.date.php'>this page</a>
>> for
>> format parameters";
>> +$messages["rssimport_articles_categories_help"] =
>> "In which category would you like articles posted to
>> be
>> categorized?";
>> +$messages["rssimport_plugin"] = "RSS Import
>> Plugin";
>> +
>> +$messages["detail"] = "Detail";
>> +
>> +$messages["rssimport_settings_saved_ok"] = "RSS
>> Import settings
>> saved
>> successfully!"; +$messages["rssimport_error_url"] =
>> "Invalid url
>> specified ";
>> +$messages["rssimport_error_missing_accesskey"] =
>> "Access Key needs
>> to be
>> specified ";
>> +$messages["rssimport_error_invalid_accesskey"] =
>> "Invalid
>> Access Key";
>> +$messages["rssimport_error_missing_titleformat"] =
>> "Title
>> Format needs to be specified";
>> +$messages["rssimport_error_invalid_titleformat"] =
>> "Invalid Title
>> Format"; +
>> +
>> +$messages["label_configuration"] = "Configuration";
>> +$messages["label_enable"] = "Enable";
>> +$messages["label_rssimport_feedurl"] = "Feed URL";
>> +$messages["label_rssimport_accessKey"] = "Access
>> Key";
>> +$messages["label_rssimport_accessHosts"] = "Allowed
>> hosts";
>> +$messages["label_rssimport_importurl"] = "Url to
>> import feed";
>> +$messages["label_rssimport_titleformat"] = "Title
>> Format String";
>> +
>> +$messages["rssimport_default_titleformat"] =
>> "\l\i\\n\k\s \f\o\\r
>> F j,
>> Y"; +?>
>>
>> Added:
>> plugins/branches/lifetype-1.2/rssimport/pluginrssimport.class.php
>>
>>
>> ===================================================================
>> ---
>> plugins/branches/lifetype-1.2/rssimport/pluginrssimport.class.php
>> (rev 0) +++
>>
>> plugins/branches/lifetype-1.2/rssimport/pluginrssimport.class.php
>> 2008-08
>> -20 21:48:02 UTC (rev 6714) @@ -0,0 +1,93 @@
>> +<?php
>> + /*
>> + Copyright 2006, 2008 Paul Westbrook
>> (paul at westbrooks.org)
>> +
>> + This program is free software; you can
>> redistribute it and/or
>> modify
>> + it under the terms of the GNU General Public
>> License as
>> published by
>> + the Free Software Foundation; either version 2
>> of the License,
>> or
>> + (at your option) any later version.
>> +
>> + This program is distributed in the hope that it
>> will be
>> useful,
>> + but WITHOUT ANY WARRANTY; without even the
>> implied warranty of
>> + MERCHANTABILITY or FITNESS FOR A PARTICULAR
>> PURPOSE. See the
>> + GNU General Public License for more details.
>> +
>> + You should have received a copy of the GNU
>> General Public
>> License
>> + along with this program; if not, write to the
>> Free Software
>> + Foundation, Inc., 59 Temple Place, Suite 330,
>> Boston, MA
>> 02111-1307
>> USA + */
>> +
>> +
>> +
>> + lt_include(
>> PLOG_CLASS_PATH."class/plugin/pluginbase.class.php" );
>> + lt_include(
>> PLOG_CLASS_PATH."class/plugin/pluginmanager.class.php" );
>> +
>> +
>> + class PluginRssImport extends PluginBase
>> + {
>> + var $pluginEnabled;
>> +
>> + function PluginRssImport( $source =
>> "" )
>> + {
>> + $this->PluginBase($source);
>> +
>> + $this->id =
>> "rssimport";
>> + $this->author = "Paul
>> Westbrook";
>> + $this->desc = "The Rss
>> Import plugin
>> imports an rss feed and
>> creates an article with the contentss"; +
>>
>> $this->version = "20080715";
>> +
>> + $this->locales = Array(
>> "en_UK");
>> +
>> + if( $source == "admin" )
>> + $this->initAdmin();
>> + else
>> + $this->init();
>> + }
>> +
>> + function init()
>> + {
>> + $this->registerBlogAction(
>> "importFeed",
>> "ImportRssFeedAction" );
>> + }
>> +
>> +
>> + function initAdmin()
>> + {
>> + $this->registerAdminAction(
>> "rssImportConfig",
>> "PluginRssImportConfigAction" ); +
>>
>> $this->registerAdminAction(
>> "updateRssImportConfig",
>> "PluginRssImportUpdateConfigAction" ); +
>> + $menu =& Menu::getMenu();
>> + if( !$menu->entryExists(
>> "/menu/controlCenter/manageIntegrationPlugins" ))
>> + $this->addMenuEntry(
>> "/menu/controlCenter",
>> "manageIntegrationPlugins", "", "", true, false ); +
>> + $this->addMenuEntry(
>> "/menu/controlCenter/manageIntegrationPlugins",
>> "rssimport", "?op=rssImportConfig", "" ); +
>> }
>> +
>> + function register()
>> + {
>> +
>>
>> ...
>>
>> [Message clipped]
>> _______________________________________________
>> pLog-svn mailing list
>> pLog-svn at devel.lifetype.net
>> http://limedaley.com/mailman/listinfo/plog-svn
>>
>>
>>
>>
>
>
--
Jon Daley
http://jon.limedaley.com
~~
The most wasted of all days is one without laughter.
-- e. e. cummings
More information about the pLog-svn
mailing list