[MODDB] Smartfeed for phpBB 3

A place for MOD Authors to post and receive feedback on MODs still in development. No MODs within this forum should be used within a live environment!
Anti-Spam Guide
Locked
User avatar
don-vip
Registered User
Posts: 14
Joined: Thu Nov 30, 2006 10:23 am
Location: Toulouse, France

Re: [RC5] Smartfeed for phpBB 3

Post by don-vip »

I just downloaded and installed it on my French forum (I modified both "en" and "fr" files when necessary):

http://www.etud.insa-toulouse.fr/~conta ... /index.php

I have currently 2 minor problems:

1) At the end of the installation, I cannot create the ACP module. In the DIY section, you say:
"Choose module mode = Smartfeed settings" << I don't have this choice in the combobox ! What did I do wrong ?

2) On the forum index, if I let the cursor above the "Smartfeed" icon, the tooltip is "{FEED_EXPLAIN}". I looked into the source code and found this:

Code: Select all

'L_FEED_EXPLAIN'		=> $user->lang['SMARTFEED_SHORT_EXPLAIN'],
But where is defined SMARTFEED_SHORT_EXPLAIN ? I can't find it, and phpBB neither...

Now I'm going to really test the feeds :)

EDIT:

More annoying problem: The feed (RSS 2.0) works with FeedReader 3, but not with Google Reader :'( (it appears always empty). Did you notice errors with Google ?

User avatar
MarkDHamill
Registered User
Posts: 4106
Joined: Fri Aug 02, 2002 12:36 am
Location: Florence, MA USA
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MarkDHamill »

Thanks for testing. In the process you uncovered more bugs. Mainly in the function page_header() in /includes/functions.php when I add this statement:

Code: Select all

	// BEGIN Smartfeed 2.0 Modification
	include($phpbb_root_path . 'language/' . $config['default_lang'] . '/mods/smartfeed.' . $phpEx);
	// END Smartfeed 2.0 Modification
Inside this function ONLY what would elsewhere be referred to as an array inside $user->lang is just an array called $lang because /language/en/mods/smartfeed.php defines it as:

Code: Select all

$lang = array_merge($lang, array(
So this means in includes/functions.php inside the code changes for Smartfeed, whereever it references $user->lang, substitute $lang instead, ex:

Code: Select all

		// BEGIN Smartfeed 2.0 Modification
		'L_FEED'				=> $config['sf_smartfeed_title_short'],
		'L_FEED_EXPLAIN'		=> $lang['SMARTFEED_SHORT_EXPLAIN'],
		// END Smartfeed 2.0 Modification
and

Code: Select all

		// BEGIN Smartfeed 2.0 Modification
		'U_ATOM_PARAMETERS'			=> sprintf($config['sf_public_feed_url_suffix_atom'], 
			rawurlencode($lang['SMARTFEED_TIME_LIMIT_UNREGISTERED']['SMARTFEED_LAST_DAY_VALUE']),
			rawurlencode($lang['SMARTFEED_SORT_BY_VALUES']['STANDARD']),
			rawurlencode($lang['SMARTFEED_FEED_STYLE_VALUES']['HTML'])),
		'U_FEED'				=> append_sid("{$phpbb_root_path}smartfeed_url.$phpEx"),
		'U_RSS_PARAMETERS'			=> sprintf($config['sf_public_feed_url_suffix_rss'], 
			rawurlencode($lang['SMARTFEED_TIME_LIMIT_UNREGISTERED']['SMARTFEED_LAST_DAY_VALUE']),
			rawurlencode($lang['SMARTFEED_SORT_BY_VALUES']['STANDARD']),
			rawurlencode($lang['SMARTFEED_FEED_STYLE_VALUES']['HTML'])),
		'U_FEED_URL'					=> "{$phpbb_root_path}smartfeed.$phpEx",
		// END Smartfeed 2.0 Modification
Good catch and it shows a deficiency in my test plan where I have no specific test to check the changes to overall_header.html.

You are not the first person to also say they do not see the smartfeed module in the list. I don't know why it does not appear, but as I told the other person it might have something to do with using a language translation for the Administrator Control Panel. Is your ACP in English or French?

I am hoping -=ET=- can chime in here because he provided the draft ACP logic that I used. I am not sure how PHP glues it together so I am not sure exactly what code applied where causes the module to be seen so it can be selected in the ACP. It might also be that something needs to be refreshed for it to show up on the list. ET, are you there?

As for the Google Reader issue, I have noticed that it seems to keep its own server side cache, so that may be the issue and it may appear mysteriously after some time has passed and the cache has expired. It could also be that Google Reader is pickier. If the feed does not validate because you chose HTML vs. Safe HTML it might decide not to try rendering it, and return a blank feed.
Last edited by MarkDHamill on Sun Jun 01, 2008 1:05 pm, edited 1 time in total.
Get the latest versions of my Digests and Smartfeed extensions.
Need phpBB services or a phpBB consultant? I offer most phpBB services.

MKULTRA
Registered User
Posts: 188
Joined: Tue Oct 16, 2007 12:07 pm
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MKULTRA »

OK, I made all those change and purged and this is what is at now (not much of a difference):

Code: Select all

[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3646: Undefined index: SMARTFEED_SHORT_EXPLAIN
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3663: Undefined index: SMARTFEED_TIME_LIMIT_UNREGISTERED
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3664: Undefined index: SMARTFEED_SORT_BY_VALUES
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3665: Undefined index: SMARTFEED_FEED_STYLE_VALUES
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3666: Undefined index: SMARTFEED_MAX_WORDS_WANTED
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3669: Undefined index: SMARTFEED_TIME_LIMIT_UNREGISTERED
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3670: Undefined index: SMARTFEED_SORT_BY_VALUES
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3671: Undefined index: SMARTFEED_FEED_STYLE_VALUES
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3672: Undefined index: SMARTFEED_MAX_WORDS_WANTED
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3731: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2982)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3733: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2982)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3734: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2982)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3735: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2982)
As for the language file if that was not set correctly then the Smartfeed page itself would not show much if any text, correct? Because it looks like everything is showing up as should. Expect there is an asterisk for the "IP Authentication" setting but there is no following note for it, if there is suppose to be one?

MKULTRA
Registered User
Posts: 188
Joined: Tue Oct 16, 2007 12:07 pm
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MKULTRA »

what file is this actually suppose to be? There is no "includes.php".

UPDATE: OK, I figured it must mean the functions.php so I updated it to replace that old code with the new code that you included in the above post to change the language array and now all the notices are gone and it appears to be working good now... just using the wrong template,l lol.

User avatar
don-vip
Registered User
Posts: 14
Joined: Thu Nov 30, 2006 10:23 am
Location: Toulouse, France

Re: [RC5] Smartfeed for phpBB 3

Post by don-vip »

I've changed $user->lang by $lang in includes/functions.php, it works fine now, thanks !

Concerning Google Reader, I've run several tests:
- ATOM 1.0, HTML -> works
- RSS 1.0, HTML -> feed always empty
- RSS 2.0, Basic -> works
- RSS 2.0, Compact -> works
- RSS 2.0, HTML -> feed always empty
- RSS 2.0, HTML Safe -> works

So it appears to fail only in RSS/HTML. I don't think it's a cache issue as I see the GoogleReader bot user join my board each time I click on "actualize". Maybe a validation error ?

I've found a major bug: The message URL is not valid. Whatever the method I use (Atom, Rss, etc.), the URL is like this:

http://my_board_url/viewtopic.php?f=6&t=2251&p38324#p38324

instead of:

http://my_board_url/viewtopic.php?f=6&t=2251&p=38324#p38324

The '=' character is missing, so when I click on the message title, I can't go directly to the message but to the first one of the topic.

Another question: In all messages received by RSS (not with Atom), the author appears as "no_email@example.com (user_login)". Is this a Google Reader issue or a Smartfeed one ? With Atom, only the user login is displayed, and not "no_email@example.com".

EDIT: And concerning my ACP, it is in French, too. I wait for an answer from -= ET =-.

EDIT: I just received a message with RSS/HTML ! And it's a pretty old one, so I agree on a caching issue...

User avatar
MarkDHamill
Registered User
Posts: 4106
Joined: Fri Aug 02, 2002 12:36 am
Location: Florence, MA USA
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MarkDHamill »

MKULTRA wrote:what file is this actually suppose to be? There is no "includes.php".

UPDATE: OK, I figured it must mean the functions.php so I updated it to replace that old code with the new code that you included in the above post to change the language array and now all the notices are gone and it appears to be working good now... just using the wrong template,l lol.
I corrected my typo. I guess I should not try for technical accuracy around midnight.
Get the latest versions of my Digests and Smartfeed extensions.
Need phpBB services or a phpBB consultant? I offer most phpBB services.

User avatar
MarkDHamill
Registered User
Posts: 4106
Joined: Fri Aug 02, 2002 12:36 am
Location: Florence, MA USA
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MarkDHamill »

don-vip wrote:I've changed $user->lang by $lang in includes/functions.php, it works fine now, thanks !

Concerning Google Reader, I've run several tests:
- ATOM 1.0, HTML -> works
- RSS 1.0, HTML -> feed always empty
- RSS 2.0, Basic -> works
- RSS 2.0, Compact -> works
- RSS 2.0, HTML -> feed always empty
- RSS 2.0, HTML Safe -> works

So it appears to fail only in RSS/HTML. I don't think it's a cache issue as I see the GoogleReader bot user join my board each time I click on "actualize". Maybe a validation error ?

I've found a major bug: The message URL is not valid. Whatever the method I use (Atom, Rss, etc.), the URL is like this:

http://my_board_url/viewtopic.php?f=6&t=2251&p38324#p38324

instead of:

http://my_board_url/viewtopic.php?f=6&t=2251&p=38324#p38324

The '=' character is missing, so when I click on the message title, I can't go directly to the message but to the first one of the topic.

Another question: In all messages received by RSS (not with Atom), the author appears as "no_email@example.com (user_login)". Is this a Google Reader issue or a Smartfeed one ? With Atom, only the user login is displayed, and not "no_email@example.com".

EDIT: And concerning my ACP, it is in French, too. I wait for an answer from -= ET =-.

EDIT: I just received a message with RSS/HTML ! And it's a pretty old one, so I agree on a caching issue...
Thanks for finding the bug. Around line 990 in smartfeed.php, change the line to this:

Code: Select all

				$item->link = $board_url . 'viewtopic.' . $phpEx . '?f=' . $row['forum_id'] . '&t=' . $row['topic_id'] . '&p=' . $row['post_id']  . '#p' . $row['post_id'];
I agree that Google Reader is probably not showing content because the feed does not validate. And that is because when you apply HTML styling in most cases the feed won't pass validation. You can run the same test I do by entering the URL here:

http://validator.w3.org/feed/

Some newsreaders are more tolerant of validation errors than others. Most are pretty tolerant and I am guessing Google Reader is not particularly tolerant. It all gets down to trying to fit the square peg of HTML into the round hole of valid ATOM and RSS. To some extent you can get around it by using CDATA sections, but as validators improve they get picker andparse CDATA sections, hence the addition of the Safe HTML mode, which while solving the validation issue, pretty much ruins styling.

By default Smartfeed works in Privacy Mode, which obscures the real email address. You can turn this off if you want in the ACP interface. Syndication protocols vary on whether a contact email address is desired. Atom likely does not require it. The feedcreator class is design to be generic, so I pass the information and the feed type and let it figure it out.
Get the latest versions of my Digests and Smartfeed extensions.
Need phpBB services or a phpBB consultant? I offer most phpBB services.

MKULTRA
Registered User
Posts: 188
Joined: Tue Oct 16, 2007 12:07 pm
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MKULTRA »

I put together a table template for this, I did it specifically for the Vista theme so some things may need to be changed/altered, but it is a start nonetheless. It still may need some tweaking and such, but it looks pretty good overall, it can be quickly viewed at: http://defendindependence.org/Forum/smartfeed_url.php. I tested on FF and IE7 logged in and logged out.

Code: Select all

<!-- INCLUDE overall_header.html -->
<script type="text/javascript"><!--
function unCheckSubscribedForums (checkbox) {
	is_checked = checkbox.checked;
 
	var element_name = new String();
	
	// Assume a HTML 4.0 compatible browser
	var x = document.getElementById('div_0').getElementsByTagName("input");
	for(i=0;i<x.length;i++) {
		thisobject = x[i];
		element_name = thisobject.id;
		if(element_name != null) 
		{
			if(element_name.substr(0,4) == "elt_")
			{
				thisobject.checked = is_checked;
			}
		}
	}
	return true;
}

function unCheckAllForums () {

	// Unchecks or checks the all forums checkbox
	var news_id = document.getElementById('news');
	any_unchecked = false;
	
	// Assume a HTML 4.0 compatible browser
	var x = document.getElementById('div_0');
	var y = x.getElementsByTagName("input");
	for(i=0;((i<y.length) && (any_unchecked == false));i++) 
	{
		thisobject = y[i];
		element_name = thisobject.name;
		if(element_name != null) {
			if(element_name.substr(0,4) == "elt_")
			{
				if (thisobject.checked == false)
				{
					news_id.all_forums.checked = false;
					any_unchecked = true;
				}
			}
		}
	}
	if (any_unchecked == false)
	{
		news_id.all_forums.checked = true;
	}

	return;
}

function check_word_size (field)
{
	size = field.value;
	if (field.defaultValue != '')
	{
		max_items = field.defaultValue;
	}
	else
	{
		max_items = 0;
	}
	if (size.length > 0)
	{
		if (isNaN(size))
		{
			alert("{LA_SMARTFEED_SIZE_ERROR}");
			field.focus();
			return;
		}
		if (size <= 0)
		{
			alert("{LA_SMARTFEED_SIZE_ERROR}");
			field.focus();
			return;
		}
	}
	if (field.defaultValue != '')
	{
		if (size > max_items) 
		{
			alert("{LA_SMARTFEED_SIZE_ERROR}");
			field.focus();
		}
	}
}


function check_word_size_min (field) 
{
	size = field.value;
	if (size == '')
	{
		return;
	}
	if (isNaN(size))
	{
		alert("{LA_SMARTFEED_SIZE_ERROR_MIN}");
		field.focus();
	}
	else
	{
		if (size < 1) 
		{
			alert("{LA_SMARTFEED_SIZE_ERROR_MIN}");
			field.focus();
		}
		else
		{
			field.value = parseInt(size);
		}
	}
}


function disable_forums(disabled)
{
	var element_name = new String();
	var news_id = document.getElementById('news');
	
	// Assume a HTML 4.0 compatible browser
	var x = document.getElementById('div_0').getElementsByTagName("input");
	for(i=0;i<x.length;i++) {
		thisobject = x[i];
		element_name = thisobject.id;
		if(element_name != null) 
		{
			if(element_name.substr(0,4) == "elt_")
			{
				thisobject.disabled = disabled;
			}
		}
	}
	
	news_id.all_forums.disabled = disabled;
	return true;
}


function reset_url()
{
	var news_id = document.getElementById('news');
	news_id.url.value = '';
}


function createURL() {

	// Creates a URL for display to be used by the newsreader to actually retrieve the newsfeed.
	var news_id = document.getElementById('news');
	var num_checked;
	var forum_string = "";
	<!-- IF S_IS_GUEST == 'T' -->
	var logged_in = 0;
	<!-- ENDIF -->
	<!-- IF S_LDAP == 'T' -->
	var logged_in = 0;
	<!-- ENDIF -->
	<!-- IF S_IS_GUEST == 'F' -->
	var logged_in = 1;
	var bookmarks_id = document.getElementById('bookmarks');
	<!-- ENDIF -->
	 
	// Get # of checked forums
	num_checked = 0;
	var x = document.getElementById('div_0').getElementsByTagName('input');
	for(i=0;i<x.length;i++)
	{
		thisobject = x[i];
		element_name = thisobject.name;
		if(element_name != null) 
		{
			if(element_name.substr(0,4) == "elt_") 
			{
				if (thisobject.checked == true) 
				{
					num_checked++;
					underscore_loc = thisobject.id.indexOf('_',5); // Look for underscore past the "elt_", or first 4 characters
					forum_string = forum_string + "&forum=" + element_name.substring(4,underscore_loc);
				}
			}
		}
	}
	<!-- IF S_IS_GUEST == 'F' -->
	// If bookmarks are checked, then the forum string should be blank
	if (bookmarks_id.checked)
	{
		forum_string = null;
	}
	<!-- ENDIF -->

	// If no forums were checked there is no point in generating a URL. 
	// Instead, give a Javascript warning and generate nothing.
	create_url = false;

	<!-- IF S_IS_GUEST == 'F' -->
	if ((num_checked==0) && (news_id.all_forums.checked==false) && (bookmarks_id.checked==false))
	<!-- ENDIF -->
	<!-- IF S_IS_GUEST == 'T' -->
	if ((num_checked==0) && (news_id.all_forums.checked==false))
	<!-- ENDIF -->
	{
		alert("{LA_SMARTFEED_NO_FORUMS_SELECTED}");
	}
	else
	{
		create_url = true;
	}


	// Forums are selected so let's go
	if (create_url)
	{
		// Initialise the URL
		url = "{UA_SITE_URL}smartfeed.{S_PHPEXT}?";

		// If user logged in, add the specific variables
		if (logged_in)
		{
			// Add his user ID
			url = url + "u={S_USER_ID}";

			// Add his password + if needed address IP
			<!-- IF S_REQUIRED_IP_AUTHENTICATION == 'T' -->
			url = url + "&e={S_PWD_WITH_IP}";
			<!-- ENDIF -->
			<!-- IF S_REQUIRED_IP_AUTHENTICATION == 'F' -->
			if (news_id.ip_auth[0].checked == true)
			{
				url = url + "&e={S_PWD_WITH_IP}";
			}
			else
			{
				url = url + "&e={S_PWD}";
			}
			<!-- ENDIF -->

			// If checked, add to reset the last visit date
			if (news_id.lastvisit1.checked == true)
			{
				url = url + "&lastvisit=1";
			}

			// If checked, add to add his unread private messages
			if (news_id.pms1.checked == true)
			{
				url = url + "&pms=1";
			}

			// If checked, add to remove his posts
			if (news_id.remove_yours1.checked == true)
			{
				url = url + "&removemine=1";
			}

			// If checked, add to remove posts from his foes
			if (news_id.filter_foes1.checked == true)
			{
				url = url + "&filter_foes=1";
			}

			// If checked, add to select posts only from bookmarked topics, or from selected forums
			if (news_id.bookmarks.checked == true)
			{
				url = url + "&bookmarks=1";
			}
			else
			{
				if (news_id.all_forums.checked == false && num_checked > 0)
				{
					// Remove the 1st "&" of the string as it'll be the 1st variable of the url
					url = url + forum_string;
				}
			}
		}
		else
		{
			if (news_id.all_forums.checked == false && num_checked > 0)
			{
				// Add to select posts from selected forums
				url = url + forum_string.substring(1);
			}
		}


		// Add the type of posts
		if (news_id.firstpostonly1.checked == true)
		{
			url = url + "&firstpostonly=1";
		}


		// Add the time limit - Do we want to put nothing for no limit? Or limit=no_limit? !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		url = url + "&limit=" + news_id.post_limit.value;

		// Add the max number of posts
		if (news_id.count_limit.value != '')
		{
			max_items = news_id.count_limit.value;
		}
		else
		{
			max_items = 0;
		}
		if (max_items > 0)
		{
			if (news_id.count_limit.value <= max_items)
			{
				url = url +"&count_limit=" + news_id.count_limit.value;
			}
			else
			{
				alert("{LA_SMARTFEED_SIZE_ERROR}");
				news_id.count_limit.focus();
				return;
			}
		}

		// Add the sort order
		url = url + "&sort_by=" + news_id.sort_by.value;

		// Add to select posts with minimum words
		if (news_id.min_word_size.value != '')
		{
			if (news_id.min_word_size.value > 0)
			{
				url = url + "&min_word_size=" + news_id.min_word_size.value;
			}
			else
			{
				alert("{LA_SMARTFEED_SIZE_ERROR_MIN}");
				news_id.min_word_size.focus();
				return
			}
		}

		// Add the news norm
		if (news_id.feed_type1.checked == true)
		{
			url = url + "&feed_type=" + "{S_RSS_20_VALUE}";
		}
		else
		{
			if (news_id.feed_type2.checked == true)
			{
				url = url + "&feed_type=" + "{S_RSS_10_VALUE}";
			}
			else
			{
				url = url + "&feed_type=" + "{S_ATOM_10_VALUE}";
			}
		}


		// Add the news format
		if (news_id.style1.checked == true)
		{
			url = url + "&feed_style=" + news_id.style1.value;
		}
		else
		{
			if (news_id.style2.checked == true)
			{
				url = url + "&feed_style=" + news_id.style2.value;
			}
			else
			{
				if (news_id.style3.checked == true)
				{
					url = url + "&feed_style=" + news_id.style3.value;
				}
				else
				{
					url = url + "&feed_style=" + news_id.style4.value;
				}
			}
		}


		// Add the maximum words in news
		if (news_id.max_word_size.value != '')
		{
			if (news_id.max_word_size.value > 0)
			{
				url = url + "&max_word_size=" + news_id.max_word_size.value;
			}
			else
			{
				alert("{LA_SMARTFEED_SIZE_ERROR_MIN}");
				news_id.max_word_size.focus();
				return
			}
		}

		
		// Place the url in the field
		news_id.url.value = encodeURI(url);
		return true;
	}
	else
	{
		return false;	// Failed validation
	}
}	

function run_it()
{
	var url = document.getElementById("url");
	if (url.value.length > 0)
	{
		window.open(url.value);
	}
	return;
}
//--></script>
<div id="pagecontent">
<!-- IF NO_FORUMS == 'T' -->
<p style="text-align:center;"><span class="gen">{L_SMARTFEED_NO_FORUMS_AVAILABLE}<br /><br /></span></p>
<!-- ENDIF -->
<!-- IF NO_FORUMS == 'F' -->
 <form id="news" action="#">
<table id="bx" width="100%" height="28" border="0" cellpadding="0" cellspacing="0">
 <tr>
<td><img src="{T_THEME_PATH}/images/cellpic4_l.png" width="17" height="28" alt=""></td>
<td background="{T_THEME_PATH}/images/cellpic4_m.png" width="100%" height="28"><h4>{S_SMARTFEED_TITLE}</h4></td>
<td><img src="{T_THEME_PATH}/images/cellpic4_r.png" width="16" height="28" alt=""></td>
 </tr>
</table>
<table class="table1" width="100%" cellspacing="1" cellpadding="3" border="0">
 <tr>
<!-- IF S_IS_GUEST == 'T' -->
<td class="row3" colspan="2" style="text-align:justify;text-indent:20px;padding:5px;">{L_SMARTFEED_NOT_LOGGED_IN}</td>
 </tr><tr>
<!-- ENDIF -->
<!-- IF S_LDAP == 'T' -->
<td class="row3" colspan="2" style="text-align:justify;text-indent:20px;padding:5px;">{L_SMARTFEED_LDAP_WARNING}</td>
 </tr><tr>
<!-- ENDIF -->
<td class="row3" colspan="2" style="text-align:justify;text-indent:20px;padding:5px;">{L_SMARTFEED_EXPLANATION}</td>
 </tr><tr>
<th colspan="2">{L_SMARTFEED_FILTER_CRITERIA}</th>
 </tr><tr>
<td class="row1" style="width:50%;text-align:right;padding:5px;">{L_SMARTFEED_FIRST_POST_ONLY}:</td>
<td class="row1" style="width:50%;white-space:nowrap;text-align:left;padding:5px;">
 <input type="radio" name="firstpostonly" id="firstpostonly2" value="NO" onchange="reset_url();" onclick="disable_forums(0);" checked="checked" /> {L_SMARTFEED_POSTS_TYPE_ANY}&nbsp;&nbsp;
 <input type="radio" name="firstpostonly" id="firstpostonly1" value="YES" onchange="reset_url();" onclick="disable_forums(0);" /> {L_SMARTFEED_POSTS_TYPE_FIRST}&nbsp;&nbsp;
 <!-- IF S_IS_GUEST == 'F' -->
 <input type="radio" name="firstpostonly" id="bookmarks" value="BM" onchange="reset_url();" onclick="disable_forums(1);" /> {L_SMARTFEED_USE_BOOKMARKS}
 <!-- ENDIF -->
</td>
 </tr><tr>
<td class="row2" style="text-align:justify;padding:5px;">{L_SMARTFEED_LIMIT}: {L_SMARTFEED_LIMIT_EXPLAIN} {L_SMARTFEED_LIMIT_SET_EXPLAIN}</td>
<td class="row2" style="text-align:left;padding:5px;">
<select name="post_limit" id="post_limit" onchange="reset_url();">
 <!-- IF S_IS_GUEST == 'F' -->
 <option value="{L_LAST_FETCH_VALUE}">{L_SMARTFEED_SINCE_LAST_VISIT_TEXT}</option>
 <!-- ENDIF -->
 <option value="{L_NO_LIMIT_VALUE}">{L_SMARTFEED_NO_LIMIT}</option>
 <option value="{L_QUARTER_VALUE}">{L_SMARTFEED_LAST_QUARTER}</option>
 <option value="{L_MONTH_VALUE}">{L_SMARTFEED_LAST_MONTH}</option>
 <option value="{L_TWO_WEEKS_VALUE}">{L_SMARTFEED_LAST_TWO_WEEKS}</option>
 <option value="{L_WEEK_VALUE}">{L_SMARTFEED_LAST_WEEK}</option>
 <option value="{L_DAY_VALUE}" {L_DAY_DEFAULT}>{L_SMARTFEED_LAST_DAY}</option>
 <option value="{L_12_HRS_VALUE}">{L_SMARTFEED_LAST_12_HOURS}</option>
 <option value="{L_6_HRS_VALUE}">{L_SMARTFEED_LAST_6_HOURS}</option>
 <option value="{L_3_HRS_VALUE}">{L_SMARTFEED_LAST_3_HOURS}</option>
 <option value="{L_1_HRS_VALUE}">{L_SMARTFEED_LAST_1_HOURS}</option>
 <option value="{L_30_MIN_VALUE}">{L_SMARTFEED_LAST_30_MINUTES}</option>
 <option value="{L_15_MIN_VALUE}">{L_SMARTFEED_LAST_15_MINUTES}</option>
</select>
 </tr><tr>
<td class="row1" style="text-align:justify;padding:5px;">{L_SMARTFEED_COUNT_LIMIT}: {L_COUNT_LIMIT_EXPLAIN_MAX}</td>
<td class="row1" style="text-align:left;padding:5px;">
<input type="text" class="inputbox autowidth" size="3" maxlength="3" name="count_limit" id="count_limit" value="{S_SMARTFEED_MAX_ITEMS}" onblur="check_word_size(this);" onchange="reset_url();" />
</td>
 </tr><tr>
<td class="row2" style="text-align:right;padding:5px;">{L_SMARTFEED_MIN_SIZE}:</td>
<td class="row2" style="text-align:left;padding:5px;">
<input type="text" class="inputbox autowidth" size="4" maxlength="4" name="min_word_size" id="min_word_size" onblur="check_word_size_min(this);" onchange="reset_url();" />
</td>
 </tr><tr>
<!-- IF S_IS_GUEST == 'F' -->
<td class="row1" style="text-align:right;padding:5px;">{L_SMARTFEED_REMOVE_YOURS}:</td>
<td class="row1" style="text-align:left;padding:5px;">
<label for="remove_yours1"><input type="radio" name="remove_yours" id="remove_yours1" value="YES" onchange="reset_url();" /> {L_YES}</label>
<label for="remove_yours2"><input type="radio" name="remove_yours" id="remove_yours2" value="NO" onchange="reset_url();" checked="checked" /> {L_NO}</label>
</td>
 </tr><tr>
<td class="row2" style="text-align:right;padding:5px;">{L_SMARTFEED_FILTER_FOES}:</td>
<td class="row2" style="text-align:left;padding:5px;">
<label for="filter_foes1"><input type="radio" name="filter_foes" id="filter_foes1" value="YES" onchange="reset_url();" /> {L_YES}</label>
<label for="filter_foes2"><input type="radio" name="filter_foes" id="filter_foes2" value="NO" onchange="reset_url();" checked="checked" /> {L_NO}</label>
</td>
 </tr><tr>
<!-- ENDIF -->
<th colspan="2">{L_SMARTFEED_ADDITIONAL_CRITERIA}</th>
 </tr><tr>
<td class="row1" style="text-align:justify;padding:5px;">{L_SMARTFEED_SORT_BY}: {L_SMARTFEED_SORT_BY_EXPLAIN}</td>
<td class="row1" style="text-align:left;padding:5px;">
<select name="sort_by" id="sort_by" onchange="reset_url();">
 <!-- IF S_IS_GUEST == 'F' -->
 <option value="{L_BOARD}">{L_SMARTFEED_SORT_USER_ORDER}</option>
 <!-- ENDIF -->
 <option value="{L_STANDARD}">{L_SMARTFEED_SORT_FORUM_TOPIC}</option>
 <option value="{L_STANDARD_DESC}">{L_SMARTFEED_SORT_FORUM_TOPIC_DESC}</option>
 <option value="{L_POSTDATE_ASCENDING}">{L_SMARTFEED_SORT_POST_DATE}</option>
 <option value="{L_POSTDATE_DESCENDING}">{L_SMARTFEED_SORT_POST_DATE_DESC}</option>
</select>
</td>
 </tr><tr>
<td class="row2" style="text-align:right;padding:5px;">{L_SMARTFEED_PRIVATE_MESSAGES_IN_FEED}:</td>
<td class="row2" style="text-align:left;padding:5px;">
<label for="pms1"><input type="radio" name="pms" id="pms1" value="YES" onchange="reset_url();" /> {L_YES}</label>&nbsp;&nbsp;
<label for="pms2"><input type="radio" name="pms" id="pms2" value="NO" onchange="reset_url();" checked="checked" /> {L_NO}</label>
</td>
 </tr><tr>
<td class="row1" style="text-align:right;padding:5px;">{L_SMARTFEED_MAX_SIZE}:</td>
<td class="row1" style="text-align:left;padding:5px;"><input type="text" class="inputbox autowidth" size="4" maxlength="4" name="max_word_size" id="max_word_size" onblur="check_word_size_min(this);" onchange="reset_url();" /></td>
 </tr><tr>
<th colspan="2">{L_SMARTFEED_FORMAT_AND_ACCESS}</th>
 </tr><tr>
<td class="row1" style="text-align:right;padding:5px;">{L_SMARTFEED_FEED_TYPE}:</td>
<td class="row1" style="white-space:nowrap;text-align:left;padding:5px;">
 <label for="feed_type1"><input type="radio" name="feed_type" id="feed_type1" value="{S_RSS_20_VALUE}" onchange="reset_url();" checked="checked" /> <img src="{T_IMAGESET_PATH}/newsfeed_rss20.gif" alt="{L_SMARTFEED_RSS_20}" title="{L_SMARTFEED_RSS_20}" style="vertical-align:-3px" /></label>&nbsp;&nbsp;
 <label for="feed_type2"><input type="radio" name="feed_type" id="feed_type2" value="{S_RSS_10_VALUE}" onchange="reset_url();" /> <img src="{T_IMAGESET_PATH}/newsfeed_rss10.gif" alt="{L_SMARTFEED_RSS_10}" title="{L_SMARTFEED_RSS_10}" style="vertical-align:-3px" /></label>&nbsp;&nbsp;
 <label for="feed_type3"><input type="radio" name="feed_type" id="feed_type3" value="{S_ATOM_10_VALUE}" onchange="reset_url();" /> <img src="{T_IMAGESET_PATH}/newsfeed_atom10.gif" alt="{L_SMARTFEED_ATOM_10}" title="{L_SMARTFEED_ATOM_10}" style="vertical-align:-3px" /></label>
</td>
 </tr><tr>
<td class="row2" style="text-align:justify;padding:5px;">{L_SMARTFEED_FEED_STYLING}: {L_SMARTFEED_FEED_STYLING_EXPLAIN}</td>
<td class="row2" style="white-space:nowrap;text-align:left;padding:5px;">
 <label for="style1" title="{L_SMARTFEED_STYLE_COMPACT_EXPLAIN}"><input type="radio" name="style" id="style1" value="{L_COMPACT_VALUE}" onchange="reset_url();" checked="checked" /> {L_SMARTFEED_STYLE_COMPACT}</label>&nbsp;&nbsp;
 <label for="style2" title="{L_SMARTFEED_STYLE_BASIC_EXPLAIN}"><input type="radio" name="style" id="style2" style="margin-top: 3px;" value="{L_BASIC_VALUE}" onchange="reset_url();" /> {L_SMARTFEED_STYLE_BASIC}</label>&nbsp;&nbsp;
 <label for="style3" title="{L_SMARTFEED_STYLE_HTML_SAFE_EXPLAIN}"><input type="radio" name="style" id="style3" style="margin-top: 3px;" value="{L_HTMLSAFE_VALUE}" onchange="reset_url();" /> {L_SMARTFEED_STYLE_HTML_SAFE}</label>&nbsp;&nbsp;
 <label for="style4" title="{L_SMARTFEED_STYLE_HTML_EXPLAIN}"><input type="radio" name="style" id="style4" style="margin-top: 3px;" value="{L_HTML_VALUE}" checked="checked" onchange="reset_url();" /> {L_SMARTFEED_STYLE_HTML}</label>
</td>
 </tr><tr>
<!-- IF S_IS_GUEST == 'F' -->
<td class="row1" style="text-align:right;padding:5px;">{L_SMARTFEED_LASTVISIT_RESET}:</td>
<td class="row1" style="text-align:left;padding:5px;">
 <label for="lastvisit1"><input type="radio" name="lastvisit" id="lastvisit1" value="YES" onchange="reset_url();" checked="checked" /> {L_YES}</label>&nbsp;&nbsp;
 <label for="lastvisit2"><input type="radio" name="lastvisit" id="lastvisit2" value="NO" onchange="reset_url();" /> {L_NO}</label>
</td>
 </tr><tr>
<!-- ENDIF -->
<!-- IF S_REQUIRED_IP_AUTHENTICATION == 'F' -->
<td class="row2" style="text-align:justify;padding:5px;">{L_SMARTFEED_IP_AUTH}: {L_SMARTFEED_IP_AUTHENTICATION_EXPLAIN}</td>
<td class="row2" style="text-align:left;padding:5px;">
 <label for="ip_auth1"><input type="radio" name="ip_auth" id="ip_auth1" value="YES" onchange="reset_url();" /> {L_YES}</label>&nbsp;&nbsp;
 <label for="ip_auth2"><input type="radio" name="ip_auth" id="ip_auth2" value="NO" onchange="reset_url();" checked="checked" /> {L_NO}</label>
</td>
 </tr><tr>
<!-- ENDIF -->
<th colspan="2">{L_SMARTFEED_FORUM_SELECTION}</th>
 </tr><tr>
<td class="row1" colspan="2" style="text-align:justify;padding:5px;">{L_SMARTFEED_SELECT_FORUMS}: {L_SMARTFEED_SELECT_FORUMS_EXPLAIN}</td>
 </tr><tr style="vertical-align:top;">
<td class="row1" style="text-align:center;padding:5px;">
<input type="checkbox" name="all_forums" id="all_forums" {ALL_BY_DEFAULT} onclick="unCheckSubscribedForums(this);" onchange="reset_url();"/> <b>{L_SMARTFEED_ALL_FORUMS}</b>
</td>
<td class="row1" style="text-align:left;padding:5px;">
<div id="div_0">
<!-- BEGIN forums -->
<!-- IF forums.DIV_OPEN_CLOSE == 'O' -->
<div id="{forums.CAT_ID}" style="position:relative; left:20px;">
<!-- ENDIF -->
<!-- IF forums.PRINT == '1' -->
<!-- IF forums.IS_FORUM == '1' -->
<input type="checkbox" name="{forums.FORUM_NAME}" id="{forums.FORUM_NAME}" {ALL_BY_DEFAULT} onclick="unCheckAllForums();" onchange="reset_url();"/> <label for="{forums.FORUM_NAME}">{forums.FORUM_LABEL}</label><br />
<!-- ENDIF -->
<!-- IF forums.IS_FORUM == '0' -->
<i>{forums.FORUM_LABEL}</i><br />
<!-- ENDIF -->
<!-- ENDIF -->
<!-- IF forums.DIV_OPEN_CLOSE == 'C' -->
</div>
<!-- ENDIF -->
<!-- END forums -->
</div>
</td>
 </tr><tr>
<th colspan="2">{L_SMARTFEED_URL}</th>
 </tr><tr>
<td colspan="2" class="row1" style="text-align:justify;padding:5px;">{L_SMARTFEED_GENERATE_BUTTON}: {L_SMARTFEED_GENERATE_BUTTON_EXPLAIN}</td>
 </tr><tr>
<td colspan="2" class="row3" style="text-align:center;padding:5px;"><input type="button" value="{L_SMARTFEED_GENERATE_URL_TEXT}" class="button1" onclick="createURL();"/></td>
 </tr><tr>
<td colspan="2" class="row1" style="text-align:center;padding:5px;"><input type="text" class="inputbox" name="url" id="url" size="120" maxlength="3000" onfocus="this.select();" /></td>
 </tr><tr>
<td colspan="2" class="row1" style="text-align:justify;padding:5px;">{L_SMARTFEED_TEST_BUTTON}: {L_SMARTFEED_TEST_BUTTON_EXPLAIN}</td>
 </tr><tr>
<td colspan="2" class="row3" style="text-align:center;padding:5px;"><input type="button" name="runit" id="runit" value="{L_SMARTFEED_RUN_IT_NOW}" class="button1" onclick="run_it();"/></td>
 </tr>
</table>
 </form>
<!-- ENDIF -->
</div>
<div style="text-align:center;" class="copyright">Powered by <a href="{S_SMARTFEED_PAGE_URL}" class="copyright" onclick="window.open(this.href);return false;">{S_SMARTFEED_TITLE}</a> {S_SMARTFEED_VERSION}</div>
<!-- IF IS_ADMIN == 'T' -->
<div style="text-align:center;" class="copyright">{S_VERSION_INFO}</div>
<!-- ENDIF -->
<br />
<table width="100%" cellspacing="0">
 <tr>
<td style="white-space:nowrap;"><!-- IF S_DISPLAY_SEARCHBOX --><!-- INCLUDE searchbox.html --><!-- ENDIF --></td>
 </tr>
</table>
<!-- INCLUDE overall_footer.html -->

User avatar
MarkDHamill
Registered User
Posts: 4106
Joined: Fri Aug 02, 2002 12:36 am
Location: Florence, MA USA
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MarkDHamill »

I will review it at some point and assuming it works fine I will include it in the contrib folder of the archive. Thanks.
Get the latest versions of my Digests and Smartfeed extensions.
Need phpBB services or a phpBB consultant? I offer most phpBB services.

User avatar
Mickroz
Registered User
Posts: 661
Joined: Thu Mar 06, 2003 11:20 pm
Location: Netherlands
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by Mickroz »

ACP Fix:
open: includes/acp/info/acp_board.php

find:

Code: Select all

				'cookie'	=> array('title' => 'ACP_COOKIE_SETTINGS', 'auth' => 'acl_a_server', 'cat' => array('ACP_SERVER_CONFIGURATION')),
before add:

Code: Select all

				'smartfeed'	=> array('title' => 'ACP_SMARTFEED_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
Purge the cache.

this is not in the install file ;)
I don't need to "get a life." I'm a Gamer, I have lots of lives!
Q: Whats a hash and a root password?
A: hash gets you high, root password gives you god powers, combine the 2 and you are invincible.

User avatar
MarkDHamill
Registered User
Posts: 4106
Joined: Fri Aug 02, 2002 12:36 am
Location: Florence, MA USA
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MarkDHamill »

Mickroz,

Thanks! I will correct the archive. These instruction were in there so they must have inadvertently been taken out.

This should correct the problem reported at being unable to select "Smartfeed settings" as a module.

Sorry for the error.
Get the latest versions of my Digests and Smartfeed extensions.
Need phpBB services or a phpBB consultant? I offer most phpBB services.

User avatar
MarkDHamill
Registered User
Posts: 4106
Joined: Fri Aug 02, 2002 12:36 am
Location: Florence, MA USA
Contact:

Version 2.1.0 template for subsilver2

Post by MarkDHamill »

Here is a Smartfeed template for subsilver2 for version 2.1.0. You will also need to include those three feed images in the imageset folder, refresh the imageset and refresh the template for subsilver2. Let me know if you see any issues. Of course it should be saved as /styles/subsilver2/templates/smartfeed_body.html.

Code: Select all

<!-- INCLUDE overall_header.html -->

<script type="text/javascript">
<!-- Hide from older browsers

function unCheckSubscribedForums (checkbox) {
	is_checked = checkbox.checked;
 
	var element_name = new String();
	
	// Assume a HTML 4.0 compatible browser
	var x = document.getElementById('div_0').getElementsByTagName("input");
	for(i=0;i<x.length;i++) {
		thisobject = x[i];
		element_name = thisobject.id;
		if(element_name != null) 
		{
			if(element_name.substr(0,4) == "elt_")
			{
				thisobject.checked = is_checked;
			}
		}
	}
	return true;
}

function unCheckAllForums () {

	// Unchecks or checks the all forums checkbox
	var news_id = document.getElementById('news');
	any_unchecked = false;
	
	// Assume a HTML 4.0 compatible browser
	var x = document.getElementById('div_0');
	var y = x.getElementsByTagName("input");
	for(i=0;((i<y.length) && (any_unchecked == false));i++) 
	{
		thisobject = y[i];
		element_name = thisobject.name;
		if(element_name != null) {
			if(element_name.substr(0,4) == "elt_")
			{
				if (thisobject.checked == false)
				{
					news_id.all_forums.checked = false;
					any_unchecked = true;
				}
			}
		}
	}
	if (any_unchecked == false)
	{
		news_id.all_forums.checked = true;
	}

	return;
}

function check_word_size (field)
{
	size = field.value;
	if (field.defaultValue != '')
	{
		max_items = field.defaultValue;
	}
	else
	{
		max_items = 0;
	}
	if (size.length > 0)
	{
		if (isNaN(size))
		{
			alert("{LA_SMARTFEED_SIZE_ERROR}");
			field.focus();
			return;
		}
		if (size <= 0)
		{
			alert("{LA_SMARTFEED_SIZE_ERROR}");
			field.focus();
			return;
		}
	}
	if (field.defaultValue != '')
	{
		if (size > max_items) 
		{
			alert("{LA_SMARTFEED_SIZE_ERROR}");
			field.focus();
		}
	}
}


function check_word_size_min (field) 
{
	size = field.value;
	if (size == '')
	{
		return;
	}
	if (isNaN(size))
	{
		alert("{LA_SMARTFEED_SIZE_ERROR_MIN}");
		field.focus();
	}
	else
	{
		if (size < 1) 
		{
			alert("{LA_SMARTFEED_SIZE_ERROR_MIN}");
			field.focus();
		}
		else
		{
			field.value = parseInt(size);
		}
	}
}


function disable_forums(disabled)
{
	var element_name = new String();
	var news_id = document.getElementById('news');
	
	// Assume a HTML 4.0 compatible browser
	var x = document.getElementById('div_0').getElementsByTagName("input");
	for(i=0;i<x.length;i++) {
		thisobject = x[i];
		element_name = thisobject.id;
		if(element_name != null) 
		{
			if(element_name.substr(0,4) == "elt_")
			{
				thisobject.disabled = disabled;
			}
		}
	}
	
	news_id.all_forums.disabled = disabled;
	return true;
}


function reset_url()
{
	var news_id = document.getElementById('news');
	news_id.url.value = '';
}


function createURL() {

	// Creates a URL for display to be used by the newsreader to actually retrieve the newsfeed.
	var news_id = document.getElementById('news');
	var num_checked;
	var forum_string = "";
	<!-- IF S_IS_GUEST == 'T' -->
	var logged_in = 0;
	<!-- ENDIF -->
	<!-- IF S_LDAP == 'T' -->
	var logged_in = 0;
	<!-- ENDIF -->
	<!-- IF S_IS_GUEST == 'F' -->
	var logged_in = 1;
	var bookmarks_id = document.getElementById('bookmarks');
	<!-- ENDIF -->
	 
	// Get # of checked forums
	num_checked = 0;
	var x = document.getElementById('div_0').getElementsByTagName('input');
	for(i=0;i<x.length;i++)
	{
		thisobject = x[i];
		element_name = thisobject.name;
		if(element_name != null) 
		{
			if(element_name.substr(0,4) == "elt_") 
			{
				if (thisobject.checked == true) 
				{
					num_checked++;
					underscore_loc = thisobject.id.indexOf('_',5); // Look for underscore past the "elt_", or first 4 characters
					forum_string = forum_string + "&forum=" + element_name.substring(4,underscore_loc);
				}
			}
		}
	}
	<!-- IF S_IS_GUEST == 'F' -->
	// If bookmarks are checked, then the forum string should be blank
	if (bookmarks_id.checked)
	{
		forum_string = null;
	}
	<!-- ENDIF -->

	// If no forums were checked there is no point in generating a URL. 
	// Instead, give a Javascript warning and generate nothing.
	create_url = false;

	<!-- IF S_IS_GUEST == 'F' -->
	if ((num_checked==0) && (news_id.all_forums.checked==false) && (bookmarks_id.checked==false))
	<!-- ENDIF -->
	<!-- IF S_IS_GUEST == 'T' -->
	if ((num_checked==0) && (news_id.all_forums.checked==false))
	<!-- ENDIF -->
	{
		alert("{LA_SMARTFEED_NO_FORUMS_SELECTED}");
	}
	else
	{
		create_url = true;
	}


	// Forums are selected so let's go
	if (create_url)
	{
		// Initialise the URL
		url = "{UA_SITE_URL}smartfeed.{S_PHPEXT}?";

		// If user logged in, add the specific variables
		if (logged_in)
		{
			// Add his user ID
			url = url + "u={S_USER_ID}";

			// Add his password + if needed address IP
			<!-- IF S_REQUIRED_IP_AUTHENTICATION == 'T' -->
			url = url + "&e={S_PWD_WITH_IP}";
			<!-- ENDIF -->
			<!-- IF S_REQUIRED_IP_AUTHENTICATION == 'F' -->
			if (news_id.ip_auth[0].checked == true)
			{
				url = url + "&e={S_PWD_WITH_IP}";
			}
			else
			{
				url = url + "&e={S_PWD}";
			}
			<!-- ENDIF -->

			// If checked, add to reset the last visit date
			if (news_id.lastvisit1.checked == true)
			{
				url = url + "&lastvisit=1";
			}

			// If checked, add to add his unread private messages
			if (news_id.pms1.checked == true)
			{
				url = url + "&pms=1";
			}

			// If checked, add to remove his posts
			if (news_id.remove_yours1.checked == true)
			{
				url = url + "&removemine=1";
			}

			// If checked, add to remove posts from his foes
			if (news_id.filter_foes1.checked == true)
			{
				url = url + "&filter_foes=1";
			}

			// If checked, add to select posts only from bookmarked topics, or from selected forums
			if (news_id.bookmarks.checked == true)
			{
				url = url + "&bookmarks=1";
			}
			else
			{
				if (news_id.all_forums.checked == false && num_checked > 0)
				{
					// Remove the 1st "&" of the string as it'll be the 1st variable of the url
					url = url + forum_string;
				}
			}
		}
		else
		{
			if (news_id.all_forums.checked == false && num_checked > 0)
			{
				// Add to select posts from selected forums
				url = url + forum_string.substring(1);
			}
		}


		// Add the type of posts
		if (news_id.firstpostonly1.checked == true)
		{
			url = url + "&firstpostonly=1";
		}


		// Add the time limit - Do we want to put nothing for no limit? Or limit=no_limit? !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		if (logged_in)
		{
			url = url + "&limit=" + news_id.post_limit.value;
		}
		else
		{
			url = url + "limit=" + news_id.post_limit.value;
		}
		// Add the max number of posts
		if (news_id.count_limit.value != '')
		{
			max_items = news_id.count_limit.value;
		}
		else
		{
			max_items = 0;
		}
		if (max_items > 0)
		{
			if (news_id.count_limit.value <= max_items)
			{
				url = url +"&count_limit=" + news_id.count_limit.value;
			}
			else
			{
				alert("{LA_SMARTFEED_SIZE_ERROR}");
				news_id.count_limit.focus();
				return;
			}
		}

		// Add the sort order
		url = url + "&sort_by=" + news_id.sort_by.value;

		// Add to select posts with minimum words
		if (news_id.min_word_size.value != '')
		{
			if (news_id.min_word_size.value > 0)
			{
				url = url + "&min_word_size=" + news_id.min_word_size.value;
			}
			else
			{
				alert("{LA_SMARTFEED_SIZE_ERROR_MIN}");
				news_id.min_word_size.focus();
				return
			}
		}

		// Add the news norm
		if (news_id.feed_type1.checked == true)
		{
			url = url + "&feed_type=" + "{S_RSS_20_VALUE}";
		}
		else
		{
			if (news_id.feed_type2.checked == true)
			{
				url = url + "&feed_type=" + "{S_RSS_10_VALUE}";
			}
			else
			{
				url = url + "&feed_type=" + "{S_ATOM_10_VALUE}";
			}
		}


		// Add the news format
		if (news_id.style1.checked == true)
		{
			url = url + "&feed_style=" + news_id.style1.value;
		}
		else
		{
			if (news_id.style2.checked == true)
			{
				url = url + "&feed_style=" + news_id.style2.value;
			}
			else
			{
				if (news_id.style3.checked == true)
				{
					url = url + "&feed_style=" + news_id.style3.value;
				}
				else
				{
					url = url + "&feed_style=" + news_id.style4.value;
				}
			}
		}


		// Add the maximum words in news
		if (news_id.max_word_size.value != '')
		{
			if (news_id.max_word_size.value > 0)
			{
				url = url + "&max_word_size=" + news_id.max_word_size.value;
			}
			else
			{
				alert("{LA_SMARTFEED_SIZE_ERROR_MIN}");
				news_id.max_word_size.focus();
				return
			}
		}

		
		// Place the url in the field
		news_id.url.value = encodeURI(url);
		return true;
	}
	else
	{
		return false;	// Failed validation
	}
}	

function run_it()
{
	var url = document.getElementById("url");
	if (url.value.length > 0)
	{
		window.open(url.value);
	}
	return;
}

// End hiding -->  
</script>

<div id="pagecontent">

	<!-- IF NO_FORUMS == 'T' -->
	<p style="text-align:center"><span class="gen">{L_SMARTFEED_NO_FORUMS_AVAILABLE}<br /><br /></span></p>
	<!-- ENDIF -->

	<!-- IF NO_FORUMS == 'F' -->

	<form name="news" id="news" action="#">
	
	<h2>{S_SMARTFEED_TITLE}</h2> 

	<table class="forumline" width="100%" cellspacing="1" cellpadding="3" border="0">
	
	  <tr>
		<td class="row2" colspan="2" style="padding: 5px;"><span class="gen">
			<!-- IF S_IS_GUEST == 'T' -->
			{L_SMARTFEED_NOT_LOGGED_IN}<br /><br />
			<!-- ENDIF -->
			<!-- IF S_LDAP == 'T' -->
			{L_SMARTFEED_LDAP_WARNING<br /><br />
			<!-- ENDIF -->
			{L_SMARTFEED_EXPLANATION}
		</span></td>
	  </tr>
	  
	  <tr>
		  <th colspan="2">{L_SMARTFEED_FORUM_SELECTION}</th>
	  </tr>

	  <tr>
		<td valign="top" class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_SELECT_FORUMS}:</b><br />{L_SMARTFEED_SELECT_FORUMS_EXPLAIN}</span></td>
		<td class="row2" style="padding: 5px;">
		  <input type="checkbox" name="all_forums" id="all_forums" checked="checked" onclick="unCheckSubscribedForums(this);"  onchange="reset_url();"/> <label for="all_forums"><span class="gen"><b>{L_SMARTFEED_ALL_FORUMS}</b></span></label><br /><br />
		  <div id="div_0">
			<!-- BEGIN forums -->
			<!-- IF forums.DIV_OPEN_CLOSE == 'O' -->
			<div id="{forums.CAT_ID}" style="position:relative; left:20px;">
			<!-- ENDIF -->
			<!-- IF forums.PRINT == '1' -->
			<!-- IF forums.IS_FORUM == '1' -->
			<input type="checkbox" checked="checked" name="{forums.FORUM_NAME}" id="{forums.FORUM_NAME}" onclick="unCheckAllForums();" onchange="reset_url();"/> <label for="{forums.FORUM_NAME}"><span class="gen">{forums.FORUM_LABEL}</span></label><br />
			<!-- ENDIF -->
			<!-- IF forums.IS_FORUM == '0' -->
			<span class="gen"><i>{forums.FORUM_LABEL}</i></span><br />
			<!-- ENDIF -->
			<!-- ENDIF -->
			<!-- IF forums.DIV_OPEN_CLOSE == 'C' -->
			</div>
			<!-- ENDIF -->
			<!-- END forums -->
		  </div>
		</td>
	  </tr>

	  <tr>
		  <th colspan="2">{L_SMARTFEED_FILTER_CRITERIA}</th>
	  </tr>

	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_FIRST_POST_ONLY}:</b></span></td>
		<td class="row2" style="padding: 5px;">
			<input type="radio" name="firstpostonly" id="firstpostonly2" value="NO" onchange="reset_url();" onclick="disable_forums(0);" checked="checked" /> <label for="firstpostonly2"><span class="gen">{L_SMARTFEED_POSTS_TYPE_ANY}</span></label>
			<input type="radio" name="firstpostonly" id="firstpostonly1" value="YES" onchange="reset_url();" onclick="disable_forums(0);" /> <label for="firstpostonly1"><span class="gen">{L_SMARTFEED_POSTS_TYPE_FIRST}</span></label> 
			<!-- IF S_IS_GUEST == 'F' -->
			<input type="radio" name="firstpostonly" id="bookmarks" value="BM" onchange="reset_url();" onclick="disable_forums(1);" /> <label for="bookmarks"><span class="gen">{L_SMARTFEED_USE_BOOKMARKS}</span></label> 
			<!-- ENDIF -->
		</td>
	  </tr>
				
	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><label for="post_limit"><b>{L_SMARTFEED_LIMIT}</b></label><br />{L_SMARTFEED_LIMIT_EXPLAIN} {L_SMARTFEED_LIMIT_SET_EXPLAIN}</span></td>
		<td class="row2" style="padding: 5px;">
			<select name="post_limit" id="post_limit" onchange="reset_url();">
				<!-- IF S_IS_GUEST == 'F' -->
				<option value="{L_LAST_FETCH_VALUE}">{L_SMARTFEED_SINCE_LAST_VISIT_TEXT}</option>
				<!-- ENDIF -->
				<option value="{L_NO_LIMIT_VALUE}">{L_SMARTFEED_NO_LIMIT}</option>
				<option value="{L_QUARTER_VALUE}">{L_SMARTFEED_LAST_QUARTER}</option>
				<option value="{L_MONTH_VALUE}">{L_SMARTFEED_LAST_MONTH}</option>
				<option value="{L_TWO_WEEKS_VALUE}">{L_SMARTFEED_LAST_TWO_WEEKS}</option>
				<option value="{L_WEEK_VALUE}">{L_SMARTFEED_LAST_WEEK}</option>
				<option value="{L_DAY_VALUE}" {L_DAY_DEFAULT}>{L_SMARTFEED_LAST_DAY}</option>
				<option value="{L_12_HRS_VALUE}">{L_SMARTFEED_LAST_12_HOURS}</option>
				<option value="{L_6_HRS_VALUE}">{L_SMARTFEED_LAST_6_HOURS}</option>
				<option value="{L_3_HRS_VALUE}">{L_SMARTFEED_LAST_3_HOURS}</option>
				<option value="{L_1_HRS_VALUE}">{L_SMARTFEED_LAST_1_HOURS}</option>
				<option value="{L_30_MIN_VALUE}">{L_SMARTFEED_LAST_30_MINUTES}</option>
				<option value="{L_15_MIN_VALUE}">{L_SMARTFEED_LAST_15_MINUTES}</option>
			</select>
		</td>
	  </tr>

	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><label for="count_limit"><b>{L_SMARTFEED_COUNT_LIMIT}:</b></label><br />{L_COUNT_LIMIT_EXPLAIN_MAX}</span></td>
		<td class="row2" style="padding: 5px;"><input type="text" class="inputbox autowidth" size="3" maxlength="3" name="count_limit" id="count_limit" value="{S_SMARTFEED_MAX_ITEMS}" onblur="check_word_size(this);" onchange="reset_url();" /></td>
	  </tr>

	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><label for="min_word_size"><b>{L_SMARTFEED_MIN_SIZE}:</b></label></span></td>
		<td class="row2" style="padding: 5px;">
			<input type="text" name="min_word_size" id="min_word_size" value="" class="post" onblur="check_word_size_min(this);" onchange="reset_url();"/>
		</td>
	  </tr>

	  <!-- IF S_IS_GUEST == 'F' -->
	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_REMOVE_YOURS}:</b></span></td>
		<td class="row2" style="padding: 5px;">
		  <span class="gen"><input type="radio" name="remove_yours" id="remove_yours1" value="YES" onchange="reset_url();"/> <label for="remove_yours1">{L_YES}</label>
		  <input type="radio" name="remove_yours" id="remove_yours2" checked="checked" value="NO" onchange="reset_url();"/> <label for="remove_yours2">{L_NO}</label></span>
		</td>
	  </tr>
	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_FILTER_FOES}:</b></span></td>
		<td class="row2" style="padding: 5px;">
		  <span class="gen"><input type="radio" name="filter_foes" checked="checked" id="filter_foes1" value="YES" onchange="reset_url();"/> <label for="filter_foes1">{L_YES}</label>
		  <input type="radio" name="filter_foes" id="filter_foes2" value="NO" onchange="reset_url();"/> <label for="filter_foes2">{L_NO}</label></span>
		</td>
	  </tr>
	  <!-- ENDIF -->

	  <tr>
		  <td colspan="2" class="spacer" />
	  </tr>

	  <tr>
		  <th colspan="2">{L_SMARTFEED_ADDITIONAL_CRITERIA}</th>
	  </tr>

	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><label for="sort_by"><b>{L_SMARTFEED_SORT_BY}:</b></label><br /><span>{L_SMARTFEED_SORT_BY_EXPLAIN}</span></span></td>
		<td class="row2" style="padding: 5px;">
			<select name="sort_by" id="sort_by" onchange="reset_url();">
				<!-- IF S_IS_GUEST == 'F' -->
				<option value="{L_BOARD}">{L_SMARTFEED_SORT_USER_ORDER}</option>
				<!-- ENDIF -->
				<option value="{L_STANDARD}">{L_SMARTFEED_SORT_FORUM_TOPIC}</option>
				<option value="{L_STANDARD_DESC}">{L_SMARTFEED_SORT_FORUM_TOPIC_DESC}</option>
				<option value="{L_POSTDATE_ASCENDING}">{L_SMARTFEED_SORT_POST_DATE}</option>
				<option value="{L_POSTDATE_DESCENDING}">{L_SMARTFEED_SORT_POST_DATE_DESC}</option>
			</select>
		</td>
	  </tr>

	  <!-- IF S_IS_GUEST == 'F' -->
	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_PRIVATE_MESSAGES_IN_FEED}:</b></span></td>
		<td class="row2" style="padding: 5px;">
		  <span class="gen"><input type="radio" name="pms" id="pms1" value="YES" onchange="reset_url();"/> <label for="pms1">{L_YES}</label>
		  <input type="radio" name="pms" id="pms2" checked="checked" value="NO" onchange="reset_url();"/> <label for="pms2">{L_NO}</label></span>
		</td>
	  </tr>
	  <!-- ENDIF -->

	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><label for="max_word_size"><b>{L_SMARTFEED_MAX_SIZE}:</b></label></span></td>
		<td class="row2" style="padding: 5px;">
			<input type="text" name="max_word_size" id="max_word_size" class="post" onblur="check_word_size(this);" onchange="reset_url();"/>
		</td>
	  </tr>

	  <tr>
		  <th colspan="2">{L_SMARTFEED_FORMAT_AND_ACCESS}</th>
	  </tr>

	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_FEED_TYPE}:</b></span></td>
		<td class="row2" style="padding: 5px;"><span class="gen">
			<label for="feed_type1"><input type="radio" name="feed_type" id="feed_type1" value="{S_RSS_20_VALUE}" onchange="reset_url();" checked="checked" /> <img src="{T_IMAGESET_PATH}/newsfeed_rss20.gif" alt="{L_SMARTFEED_RSS_20}" title="{L_SMARTFEED_RSS_20}" style="vertical-align:-3px" /></label> 
			<label for="feed_type2"><input type="radio" name="feed_type" id="feed_type2" value="{S_RSS_10_VALUE}" onchange="reset_url();" /> <img src="{T_IMAGESET_PATH}/newsfeed_rss10.gif" alt="{L_SMARTFEED_RSS_10}" title="{L_SMARTFEED_RSS_10}" style="vertical-align:-3px" /></label>
			<label for="feed_type3"><input type="radio" name="feed_type" id="feed_type3" value="{S_ATOM_10_VALUE}" onchange="reset_url();" /> <img src="{T_IMAGESET_PATH}/newsfeed_atom10.gif" alt="{L_SMARTFEED_ATOM_10}" title="{L_SMARTFEED_ATOM_10}" style="vertical-align:-3px" /></label></span>
		</td>
	  </tr>

	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_FEED_STYLING}:</b><br />{L_SMARTFEED_FEED_STYLING_EXPLAIN}</span></td>
		<td class="row2" style="padding: 5px;">
		  <span class="gen">
			  <label for="style1" title="{L_SMARTFEED_STYLE_COMPACT_EXPLAIN}"><input type="radio" name="style" id="style1" value="{L_COMPACT_VALUE}" onchange="reset_url();" checked="checked" /> {L_SMARTFEED_STYLE_COMPACT}</label><br />
			  <label for="style2" title="{L_SMARTFEED_STYLE_BASIC_EXPLAIN}"><input type="radio" name="style" id="style2" style="margin-top: 3px;" value="{L_BASIC_VALUE}" onchange="reset_url();" /> {L_SMARTFEED_STYLE_BASIC}</label><br />
			  <label for="style3" title="{L_SMARTFEED_STYLE_HTML_SAFE_EXPLAIN}"><input type="radio" name="style" id="style3" style="margin-top: 3px;" value="{L_HTMLSAFE_VALUE}" onchange="reset_url();" /> {L_SMARTFEED_STYLE_HTML_SAFE}</label><br />
			  <label for="style4" title="{L_SMARTFEED_STYLE_HTML_EXPLAIN}"><input type="radio" name="style" id="style4" style="margin-top: 3px;" value="{L_HTML_VALUE}" checked="checked" onchange="reset_url();" /> {L_SMARTFEED_STYLE_HTML}</label>
		  </span>
		</td>
	  </tr>

	  <!-- IF S_IS_GUEST == 'F' -->
	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_LASTVISIT_RESET}:</b></span></td>
		<td class="row2" style="padding: 5px;"><span class="gen">
		  <input type="radio" name="lastvisit" id="lastvisit1" checked="checked" value="YES" onchange="reset_url();"/> <label for="lastvisit1">{L_YES}</label>
		  <input type="radio" name="lastvisit" id="lastvisit2" value="NO" onchange="reset_url();" /> <label for="lastvisit2">{L_NO}</label></span>
		</td>
	  </tr>
	  <!-- ENDIF -->
	  
	  <!-- IF S_REQUIRED_IP_AUTHENTICATION == 'F' -->
	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_IP_AUTH}</b><br />{L_SMARTFEED_IP_AUTHENTICATION_EXPLAIN}</span></td>
		<td class="row2" style="padding: 5px;">
		  <span class="gen"><input type="radio" name="ip_auth" id="ip_auth1" value="YES" onchange="reset_url();"/> <label for="ip_auth1">{L_YES}</label>
		  <input type="radio" name="ip_auth" id="ip_auth2" checked="checked" value="NO" onchange="reset_url();"/> <label for="ip_auth2">{L_NO}</label></span>
		</td>
	  </tr>
	  <!-- ENDIF -->
	  
	  <tr>
		  <td colspan="2" class="spacer" />
	  </tr>

	  <tr>
		  <th colspan="2">{L_SMARTFEED_URL}</th>
	  </tr>

	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><label for="url"><b>{L_SMARTFEED_GENERATE_BUTTON}:</b></label><br />{L_SMARTFEED_GENERATE_BUTTON_EXPLAIN}</span></td>
		<td class="row2"><span class="gen"><input type="button" class="btnmain" value="{L_SMARTFEED_GENERATE_URL_TEXT}" onclick="createURL();" /><br /><input type="text" name="url" id="url" size="80" maxlength="3000" class="post" onfocus="this.select();" /></span></td>
	  </tr>
	  <tr>
		<td class="row1" style="padding: 5px;"><span class="gen"><b>{L_SMARTFEED_TEST_BUTTON}:</b><br />{L_SMARTFEED_TEST_BUTTON_EXPLAIN}</span></td>
		<td class="row2" style="padding: 5px;"><span class="gen"><input type="button" name="runit" id="runit" value="{L_SMARTFEED_RUN_IT_NOW}" class="btnlite" onclick="run_it();"/></span><br />
		</td>
	  </tr>
	</table>
	
	</form>
	<!-- ENDIF -->
</div>

<div style="text-align:center" class="copyright">Powered by <a href="{S_SMARTFEED_PAGE_URL}" class="copyright">phpBB Smartfeed</a></div>
<!-- IF IS_ADMIN == 'T' -->	  
<div style="text-align:center" class="copyright">{S_VERSION_INFO}</div>	  
<!-- ENDIF -->	  
<!-- INCLUDE breadcrumbs.html -->

<br clear="all" />

<div align="{S_CONTENT_FLOW_END}"><!-- INCLUDE jumpbox.html --></div>

<!-- INCLUDE overall_footer.html -->
Get the latest versions of my Digests and Smartfeed extensions.
Need phpBB services or a phpBB consultant? I offer most phpBB services.

MKULTRA
Registered User
Posts: 188
Joined: Tue Oct 16, 2007 12:07 pm
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MKULTRA »

Mickroz wrote:ACP Fix:
open: includes/acp/info/acp_board.php

find:

Code: Select all

				'cookie'	=> array('title' => 'ACP_COOKIE_SETTINGS', 'auth' => 'acl_a_server', 'cat' => array('ACP_SERVER_CONFIGURATION')),
before add:

Code: Select all

				'smartfeed'	=> array('title' => 'ACP_SMARTFEED_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
Purge the cache.

this is not in the install file ;)

I updated this now I have the Smartfeed in the ACP, but I am getting these errors, so then I removed the code set the Smartfeed Module back how it was to one of the board general modules and I can't get rid of the errors, strange. I purged numerous times as well. Could that updated code I put in for the prior issue be the problem?

Code: Select all

[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3665: sprintf() [function.sprintf]: Too few arguments
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3670: sprintf() [function.sprintf]: Too few arguments
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3729: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2982)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3731: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2982)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3732: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2982)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3733: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2982)

User avatar
Mickroz
Registered User
Posts: 661
Joined: Thu Mar 06, 2003 11:20 pm
Location: Netherlands
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by Mickroz »

you did this one right? http://www.phpbb.com/community/viewtopi ... 5#p5651875

but you forgot to edit the field in the database.

don't forget to do this one to: http://www.phpbb.com/community/posting. ... #pr5658175

@MarkDHamill
couldn't u just add in lang array:

Code: Select all

'SMARTFEED_MAX_WORDS_WANTED' => '',
and replace:

Code: Select all

   // BEGIN Smartfeed 2.0 Modification
   include($phpbb_root_path . 'language/' . $config['default_lang'] . '/mods/smartfeed.' . $phpEx);
   // END Smartfeed 2.0 Modification
with:

Code: Select all

$user->setup(mods/smartfeed);
because thats the way you use the language setup,or wouldn't this be possible because of the other array's you got in there?
I don't need to "get a life." I'm a Gamer, I have lots of lives!
Q: Whats a hash and a root password?
A: hash gets you high, root password gives you god powers, combine the 2 and you are invincible.

User avatar
MarkDHamill
Registered User
Posts: 4106
Joined: Fri Aug 02, 2002 12:36 am
Location: Florence, MA USA
Contact:

Re: [RC5] Smartfeed for phpBB 3

Post by MarkDHamill »

Okay, thanks for debugging!

Around line 3329 of /includes/functions.php should be:

Code: Select all

	// BEGIN Smartfeed 2.0 Modification
	$user->setup('mods/smartfeed');
	// END Smartfeed 2.0 Modification
Also, if you changed $user->lang to $lang per my suggestion some pages back, these need to be changed back.

Around line 3470:

Code: Select all

		// BEGIN Smartfeed 2.0 Modification
		'L_FEED'				=> $config['sf_smartfeed_title_short'],
		'L_FEED_EXPLAIN'		=> $user->lang['SMARTFEED_SHORT_EXPLAIN'],
		// END Smartfeed 2.0 Modification
Around line 3488:

Code: Select all

		// BEGIN Smartfeed 2.0 Modification
		'U_ATOM_PARAMETERS'			=> sprintf($config['sf_public_feed_url_suffix_atom'], 
			rawurlencode($user->lang['SMARTFEED_TIME_LIMIT_UNREGISTERED']['SMARTFEED_LAST_DAY_VALUE']),
			rawurlencode($user->lang['SMARTFEED_SORT_BY_VALUES']['STANDARD']),
			rawurlencode($user->lang['SMARTFEED_FEED_STYLE_VALUES']['HTML'])),
		'U_FEED'				=> append_sid("{$phpbb_root_path}smartfeed_url.$phpEx"),
		'U_RSS_PARAMETERS'			=> sprintf($config['sf_public_feed_url_suffix_rss'], 
			rawurlencode($user->lang['SMARTFEED_TIME_LIMIT_UNREGISTERED']['SMARTFEED_LAST_DAY_VALUE']),
			rawurlencode($user->lang['SMARTFEED_SORT_BY_VALUES']['STANDARD']),
			rawurlencode($user->lang['SMARTFEED_FEED_STYLE_VALUES']['HTML'])),
		'U_FEED_URL'					=> "{$phpbb_root_path}smartfeed.$phpEx",
		// END Smartfeed 2.0 Modification
SMARTFEED_MAX_WORDS_WANTED is no longer needed. What should be changed are the $config variables, as I mentioned a page or so back, to remove this parameter. "sf_public_feed_url_suffix_atom" should be "feed_type=ATOM1.0&limit=%s&sort_by=%s&feed_style=%s" and "sf_public_feed_url_suffix_rss" should be "feed_type=RSS2.0&limit=%s&sort_by=%s&feed_style=%s".

All these things will be fixed in the next version, which is why your testing is so valuable. Thanks again.
Get the latest versions of my Digests and Smartfeed extensions.
Need phpBB services or a phpBB consultant? I offer most phpBB services.

Locked

Return to “[3.0.x] MODs in Development”