<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://www.simplemachines.org/xml/modification">
<modification xmlns="http://www.simplemachines.org/xml/modification" xmlns:smf="http://www.simplemachines.org/">
	<id>AdrianStanila:Seo4SMF</id>
	<version>0.1</version>
	<info>This is Beta version ov Seo 4 SMF. Any bug or feature request please post on http://www.webmasterstalks.com</info>
	<homepage>http://www.webmasterstalks.com</homepage>
	<file name="$boarddir/SSI.php">
		<operation>
			<search position="before"><![CDATA[
require_once($sourcedir . '/QueryString.php');
require_once($sourcedir . '/Subs.php');]]></search>
			<add><![CDATA[
require_once($sourcedir . '/Subs-Seo4SMF.php');]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[
			'new' => !empty($row['isRead']),
			'new_from' => $row['new_from'],
			'icon' => '<img src="' . $settings[$icon_sources[$row['icon']]] . '/post/' . $row['icon'] . '.gif" align="middle" alt="' . $row['icon'] . '" border="0" />',
		);
	}
	mysql_free_result($request);
]]></search>
			<add><![CDATA[
	$context['recent_topics']=$posts;
]]></add>
		</operation>
	</file>
	<file name="$boarddir/index.php">
		<operation>
			<search position="before"><![CDATA[
require_once($sourcedir . '/QueryString.php');
require_once($sourcedir . '/Subs.php');]]></search>
			<add><![CDATA[
require_once($sourcedir . '/Subs-Seo4SMF.php');]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[
		// Fall through to the board index then...
		require_once($sourcedir . '/BoardIndex.php');
		<add><![CDATA[
		header("HTTP/1.0 404 Not Found");]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[
		'.xml' => array('News.php', 'ShowXmlFeed'),
]]></search>
			<add><![CDATA[
                'seo4smfadmin' => array('Seo4SMFAdmin.php', 'Seo4SMFAdmin'),
                'seo4smfadminsave' => array('Seo4SMFAdmin.php', 'Seo4SMFAdminSave'),
		'seo4smfadminsavexml' => array('Seo4SMFAdmin.php', 'Seo4SMFAdminSaveXML'),
		'seo4smfsitemaps' => array('Seo4SMFSitemaps.php', 'Seo4SMFSitemaps'),
]]></add>
		</operation>
	</file>
	<file name="$sourcedir/BoardIndex.php">
		<operation>
			<search position="replace"><![CDATA[
		$this_last_post = array(
			'id' => $row_board['ID_MSG'],
			'time' => $row_board['posterTime'] > 0 ? timeformat($row_board['posterTime']) : $txt[470],
			'timestamp' => forum_time(true, $row_board['posterTime']),
			'subject' => $row_board['short_subject'],
]]></search>
			<add><![CDATA[
		$this_last_post = array(
			'id' => $row_board['ID_MSG'],
			'time' => $row_board['posterTime'] > 0 ? timeformat($row_board['posterTime']) : $txt[470],
			'timestamp' => forum_time(true, $row_board['posterTime']),
			'subject' => $row_board['short_subject'],
			'long_subject' => $row_board['subject'],
]]></add>
		</operation>
	</file>
	<file name="$sourcedir/Display.php">
		<operation>
			<search position="replace"><![CDATA[
	// Build the link tree.
	$context['linktree'][] = array(
		'url' => $scripturl . '?topic=' . $topic . '.0',
		'name' => $topicinfo['subject'],
		'extra_before' => $settings['linktree_inline'] ? $txt[118] . ': ' : ''
	);

	// Build a list of this board's moderators.
	$context['moderators'] = &$board_info['moderators'];
	$context['link_moderators'] = array();
]]></search>
			<add><![CDATA[
    // Build the link tree.
    $context['linktree'][] = array(
            'url' => $scripturl . '?topic=' . $topic . '.0',
            'name' => $topicinfo['subject'],
            'id' => 't'.$topic,
            'extra_before' => $settings['linktree_inline'] ? $txt[118] . ': ' : ''
    );

    // Build a list of this board's moderators.
    $context['moderators'] = &$board_info['moderators'];
    $context['board_description'] =$board_info['description'];
    $context['board_name'] =$board_info['name'];
    $context['link_moderators'] = array();
]]></add>
		</operation>
	<operation>
	<search position="after"><![CDATA[
	if (empty($options['view_newest_first']))
		$counter++;
	else
		$counter--;

	]]></search>
	<add><![CDATA[
	if (!isset($context['first_message_body'])) $context['first_message_body']=$message['body'];

	if ($context['first_message']==$message['ID_MSG'])
	{
	    $context['seo4smf_usernames']=array();
	    array_push($context['seo4smf_usernames'],$memberContext[$message['ID_MEMBER']]);
	}
	else
	{
	    array_push($context['seo4smf_usernames'],$memberContext[$message['ID_MEMBER']]);
	}
	]]></add>
	</operation>

	</file>
	<file name="$sourcedir/Load.php">
		<operation>
			<search position="replace"><![CDATA[
			array_reverse($board_info['parent_boards']),
			array(array(
				'url' => $scripturl . '?board=' . $board . '.0',
				'name' => $board_info['name']
			))
]]></search>
			<add><![CDATA[
			array_reverse($board_info['parent_boards']),
			array(array(
			    'url' => $scripturl . '?board=' . $board . '.0',
			    'name' => $board_info['name'],
			    'id' => $board_info['id']
                        ))

]]></add>
		</operation>
		<operation>
			<search position="replace"><![CDATA[
		while ($row = mysql_fetch_assoc($result))
		{
			if (!isset($boards[$row['ID_BOARD']]))
			{
				$id_parent = $row['ID_PARENT'];
				$boards[$row['ID_BOARD']] = array(
					'url' => $scripturl . '?board=' . $row['ID_BOARD'] . '.0',
					'name' => $row['name'],
]]></search>
			<add><![CDATA[
		while ($row = mysql_fetch_assoc($result))
		{
			if (!isset($boards[$row['ID_BOARD']]))
			{
				$id_parent = $row['ID_PARENT'];
				$boards[$row['ID_BOARD']] = array(
					'url' => $scripturl . '?board=' . $row['ID_BOARD'] . '.0',
					'name' => $row['name'],
					'id' => $row['ID_BOARD'],
]]></add>
		</operation>
	</file>
	<file name="$sourcedir/MessageIndex.php">
		<operation>
			<search position="replace"><![CDATA[
				$context['boards'][$row['ID_PARENT']]['last_post'] = array(
					'id' => $row['ID_MSG'],
					'time' => $row['posterTime'] > 0 ? timeformat($row['posterTime']) : $txt[470],
					'timestamp' => forum_time(true, $row['posterTime']),
					'subject' => $short_subject,
]]></search>
			<add><![CDATA[
				$context['boards'][$row['ID_PARENT']]['last_post'] = array(
					'id' => $row['ID_MSG'],
					'time' => $row['posterTime'] > 0 ? timeformat($row['posterTime']) : $txt[470],
					'timestamp' => forum_time(true, $row['posterTime']),
					'subject' => $short_subject,
					'long_subject' => $row['subject'],
]]></add>
		</operation>
		<operation>
			<search position="replace"><![CDATA[
				$context['boards'][$row_board['ID_BOARD']] = array(
					'id' => $row_board['ID_BOARD'],
					'last_post' => array(
						'id' => $row_board['ID_MSG'],
						'time' => $row_board['posterTime'] > 0 ? timeformat($row_board['posterTime']) : $txt[470],
						'timestamp' => forum_time(true, $row_board['posterTime']),
						'subject' => $short_subject,
]]></search>
			<add><![CDATA[
				$context['boards'][$row_board['ID_BOARD']] = array(
					'id' => $row_board['ID_BOARD'],
					'last_post' => array(
						'id' => $row_board['ID_MSG'],
						'time' => $row_board['posterTime'] > 0 ? timeformat($row_board['posterTime']) : $txt[470],
						'timestamp' => forum_time(true, $row_board['posterTime']),
						'subject' => $short_subject,
						'long_subject' => $row_board['subject'],
]]></add>
		</operation>
	</file>
	<file name="$sourcedir/QueryString.php">
		<operation>
			<search position="replace"><![CDATA[
	if (empty($_COOKIE) && SID != '' && empty($context['browser']['possibly_robot']) && @version_compare(PHP_VERSION, '4.3.0') != -1)
]]></search>
			<add><![CDATA[
	if (empty($_COOKIE) && SID != '' && empty($context['browser']['possibly_robot']) && @version_compare(PHP_VERSION, '4.3.0') != -1 && ($modSettings['seo4smf_enable']!="on"))
]]></add>
		</operation>
		<operation>
			<search position="before"><![CDATA[
	// If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit.
	if ($scripturl == '' || !defined('SID'))
		return $buffer;
]]></search>
			<add><![CDATA[
	$scripturl1=str_replace("/index.php","",$scripturl);

]]></add>
		</operation>
		<operation>
			<search position="replace"><![CDATA[
		else
			$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
]]></search>
			<add><![CDATA[
                    if ($modSettings['seo4smf_sb_enable'] == "on")
                    {
                        $buffer = preg_replace('/<!-- Seo4SMF Social Bookmark -->/', create_sb() , $buffer);
                    }

                    if ($modSettings['seo4smf_enable'] == "on")
                    {		

                        $buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic|page)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl1 . '/' . beautify_urls(strtr('\$1', '&;=', '//,')) . '\$2\"'", $buffer);

                        if ($modSettings['seo4smf_beautify_profiles'] == "on")
                        {
                            $buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?action=profile;u=([^#"]+?)?"/e', "'\"' . \$scripturl1 . '/' . beautify_url_profiles(strtr('\$1', '&;=', '//,')) . '\$2\"'", $buffer);
                        }

                        if ($modSettings['seo4smf_beautify_actions'] == "on")
                        {	
			    $buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?action=([^#"]+?)?"/e', "'\"' . \$scripturl1 . '/' . beautify_url_action('\$1'). '\$2\"'", $buffer);
			}

			if ($modSettings['seo4smf_keywords'] == "on")
			{
                    	    $buffer = preg_replace('<meta name="keywords" content=(.*) />', create_keywords() , $buffer);
			}
			if ($modSettings['seo4smf_description'] == "on")
			{
                    	    $buffer = preg_replace('<meta name="description" content=(.*) />', create_description() , $buffer);
			}

                        $buffer = preg_replace('/<a href=\"http:\/\/www.simplemachines.org\/about\/copyright.php\" title=\"Free Forum Software\" target=\"_blank\">SMF &copy; 2006-2007, Simple Machines LLC<\/a>/', '<a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2006-2007, Simple Machines LLC</a><br /> <a href="http://www.webmasterstalks.com" target="blank_">Seo4Smf v0.2 &copy; Webmaster\'s Talks</a>' , $buffer);
                        $buffer = preg_replace('/<a href=\"http:\/\/www.simplemachines.org\/about\/copyright.php\" title=\"Free Forum Software\" target=\"_blank\">SMF &copy; 2006, Simple Machines LLC<\/a>/', '<a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2006, Simple Machines LLC</a><br /> <a href="http://www.webmasterstalks.com" target="blank_">Seo4Smf v0.2 &copy; Webmaster\'s Talks</a>' , $buffer);
                        $buffer = preg_replace('/<a href=\"http:\/\/www.simplemachines.org\/about\/copyright.php\" title=\"Free Forum Software\" target=\"_blank\">SMF © 2001-2006, Lewis Media<\/a>/', '<a href="http://www.simplemachines.org/about/copyright.php" title="Free Forum Software" target="_blank">SMF &copy; 2001-2006, Simple Machines, Lewis Media</a><br /> <a href="http://www.webmasterstalks.com" target="blank_">Seo4Smf v0.2 &copy; Webmaster\'s Talks</a>' , $buffer);
                    }
                    else
                    {
                        $buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
                    }
]]></add>
		</operation>
	</file>
	<file name="$sourcedir/Search.php">
		<operation>
			<search position="before"><![CDATA[
	$output['matches'][] = array(
		'id' => $message['ID_MSG'],
		'attachment' => loadAttachmentContext($message['ID_MSG']),
		'alternate' => $counter % 2,
		'member' => &$memberContext[$message['ID_MEMBER']],
		'icon' => $message['icon'],
		'icon_url' => $settings[$context['icon_sources'][$message['icon']]] . '/post/' . $message['icon'] . '.gif',
		'subject' => $message['subject'],
		'subject_highlighted' => $subject_highlighted,
		'time' => timeformat($message['posterTime']),
		'timestamp' => forum_time(true, $message['posterTime']),
		'counter' => $counter,
		'modified' => array(
			'time' => timeformat($message['modifiedTime']),
			'timestamp' => forum_time(true, $message['modifiedTime']),
			'name' => $message['modifiedName']
		),
		'body' => $message['body'],
		'body_highlighted' => $body_highlighted,
		'start' => 'msg' . $message['ID_MSG']
	);
]]></search>
			<add><![CDATA[
	$context['search_results'][]=array('id'=>$message['ID_TOPIC'],'subject'=>$message['subject'],'board_id'=>$message['ID_BOARD'],'board_name'=>$message['bName'],'member_name'=>$memberContext[$message['ID_MEMBER']]['username'],'member_id'=>$message['ID_MEMBER'],'last_member_name'=>$message['last_member_name'],'last_member_id'=>$message['last_member_id']);
]]></add>
		</operation>
	</file>
	<file name="$sourcedir/Subs.php">
		<operation>
			<search position="before"><![CDATA[
				'manage_themes' => '<a href="' . $scripturl . '?action=theme;sa=admin;sesc=' . $sc . '">' . $txt['theme_admin'] . '</a>',
]]></search>
			<add><![CDATA[
				'seo4smfadmin' => '<a href="' . $scripturl . '?action=seo4smfadmin;sesc=' . $sc . '">Seo4SMF Admin</a>',
]]></add>
		</operation>
	</file>
	<file name="$sourcedir/TPortal.php" error="skip">
		<operation>
			<search position="replace"><![CDATA[
	$request = db_query("
		SELECT
			m.icon, m.subject, m.body, IFNULL(mem.realName, m.posterName) AS posterName, m.posterTime,
			t.numReplies, t.ID_TOPIC, m.ID_MEMBER, m.smileysEnabled, m.ID_MSG, t.locked, t.numViews,t.numReplies
		FROM ({$db_prefix}topics AS t, {$db_prefix}messages AS m)
		LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)
		WHERE t.ID_FIRST_MSG IN (" . implode(', ', $posts) . ")
		AND m.ID_MSG = t.ID_FIRST_MSG
		ORDER BY t.ID_FIRST_MSG DESC
		LIMIT " . count($posts), __FILE__, __LINE__);
]]></search>
			<add><![CDATA[
	$request = db_query("
		SELECT
			m.icon, m.subject, m.body, IFNULL(mem.realName, m.posterName) AS posterName, m.posterTime,
			t.numReplies, t.ID_TOPIC, m.ID_MEMBER, m.smileysEnabled, m.ID_MSG, t.locked, t.numViews,t.numReplies, board.name
		FROM ({$db_prefix}topics AS t, {$db_prefix}messages AS m)
			LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)
                        LEFT JOIN {$db_prefix}boards AS board ON (board.ID_BOARD = m.ID_BOARD)
		WHERE t.ID_FIRST_MSG IN (" . implode(', ', $posts) . ")
			AND m.ID_MSG = t.ID_FIRST_MSG
		ORDER BY t.ID_FIRST_MSG DESC
		LIMIT " . count($posts), __FILE__, __LINE__);
]]></add>
		</operation>
		<operation>
			<search position="replace"><![CDATA[
		$return[] = array(
			'id' => $row['ID_TOPIC'],
			'message_id' => $row['ID_MSG'],
			'icon' => '<img src="' . $settings[$icon_sources[$row['icon']]] . '/post/' . $row['icon'] . '.gif" align="middle" alt="' . $row['icon'] . '" border="0" />',
			'subject' => $row['subject'],
			'time' => timeformat($row['posterTime']),
			'timestamp' => forum_time(true, $row['posterTime']),
]]></search>
			<add><![CDATA[
		$return[] = array(
			'id' => $row['ID_TOPIC'],
			'message_id' => $row['ID_MSG'],
			'board_name' => $row['name'],
			'icon' => '<img src="' . $settings[$icon_sources[$row['icon']]] . '/post/' . $row['icon'] . '.gif" align="middle" alt="' . $row['icon'] . '" border="0" />',
			'subject' => $row['subject'],
			'time' => timeformat($row['posterTime']),
			'timestamp' => forum_time(true, $row['posterTime']),
]]></add>
		</operation>
		<operation>
			<search position="replace"><![CDATA[
	if (in_array($context['TPortal']['action'], array('theme','tpadmin','admin', 'ban', 'boardrecount', 'cleanperms', 'detailedversion', 'dumpdb', 'featuresettings', 'featuresettings2', 'findmember', 'maintain', 'manageattachments', 'manageboards', 'managecalendar', 'managesearch', 'membergroups', 'modlog', 'news', 'optimizetables', 'packageget', 'packages', 'permissions', 'pgdownload', 'postsettings', 'regcenter', 'repairboards', 'reports', 'serversettings', 'serversettings2', 'smileys', 'viewErrorLog', 'viewmembers')))
]]></search>
			<add><![CDATA[
	if (in_array($context['TPortal']['action'], array('theme','tpadmin','admin', 'ban', 'boardrecount', 'cleanperms', 'detailedversion', 'dumpdb', 'featuresettings', 'featuresettings2', 'findmember', 'maintain', 'manageattachments', 'manageboards', 'managecalendar', 'managesearch', 'membergroups', 'modlog', 'news', 'optimizetables', 'packageget', 'packages', 'permissions', 'pgdownload', 'postsettings', 'regcenter', 'repairboards', 'reports', 'serversettings', 'serversettings2', 'smileys', 'viewErrorLog', 'viewmembers','seo4smfadmin')))
]]></add>
		</operation>

	</file>
	<file name="$themedir/Display.template.php">
		<operation>
			<search position="after"><![CDATA[
		// Show the member's signature?
		if (!empty($message['member']['signature']) && empty($options['show_no_signatures']))
]]></search>
			<add><![CDATA[
               if ($context['first_message']==$message['id'])
               {
                   echo '<!-- Seo4SMF Social Bookmark -->';
               }

]]></add>
		</operation>
	</file>
	<file name="$themedir/index.template.php">
		<operation>
			<search position="replace"><![CDATA[
	<title>', $context['page_title'], '</title>';]]></search>
			<add><![CDATA[
	<title>', create_title(), '</title>';]]></add>
		</operation>
	</file>

	<file name="$themedir/BoardIndex.template.php">
		<operation>
			<search position="after"><![CDATA[
	// "Users online" - in order of activity.
]]></search>
			<add><![CDATA[
	if ($modSettings['seo4smf_sitemaps_box']=="on")
	{

	    if ($modSettings['seo4smf_sitemaps_links']!=0)
	    $how_many_links_per_page=$modSettings['seo4smf_sitemaps_links'];
	    else
	    $how_many_links_per_page=100;


	echo '
	<tr>
		<td class="titlebg" colspan="2"> Sitemaps </td>
	</tr><tr>
		<td class="windowbg" width="20" valign="middle" align="center">
			<img src="', $settings['images_url'], '/icons/online.gif" alt="Sitemaps" border="0" />
		</td>
		<td class="windowbg2" width="100%">
	<div class="smalltext">';
	echo'<a href="sitemaps-home.html">Start</a> &nbsp;';
	for($i=0; $i<$modSettings['totalTopics']/$how_many_links_per_page; $i++)
	{
	    echo'<a href="sitemaps-',$i,'.html">Page', $i ,'</a>&nbsp;';
	    if (!($i%13) && ($i!=0)) echo "<br />";
	}
	echo'<br />';
	echo '

			</div>
		</td>
	</tr>';

	}
]]></add>
		</operation>
	</file>

	<file name="$sourcedir/News.php">
		<operation>
			<search position="before"><![CDATA[
	if (empty($modSettings['queryless_urls']) || ($context['server']['is_cgi'] && @ini_get('cgi.fix_pathinfo') == 0) || !$context['server']['is_apache'])
		return $val;

]]></search>
			<add><![CDATA[
	if ($modSettings['seo4smf_enable']=="on")
	{
	$scripturl1=str_replace("/index.php","",$scripturl);
        $val = preg_replace('/^' . preg_quote($scripturl, '/') . '\?((?:board|topic|page)=[^#"]+)(#[^"]*)?$/e', "'' . \$scripturl1 . '/' . beautify_urls(strtr('\$1', '&;=', '//,')) . '\$2'", $val);

    	    if ($modSettings['seo4smf_beautify_profiles']=="on")
    	    {
                $val = preg_replace('/^' . preg_quote($scripturl, '/') . '\?action=profile;u=([^#"]+?)?$/e', "'' . \$scripturl1 . '/' . beautify_url_profiles(strtr('\$1', '&;=', '//,')) . '\$2'", $val);
    	    }
	}
	else
]]></add>
		</operation>
	</file>
	<file name="$sourcedir/Subs-Post.php">
		<operation>
			<search position="before"><![CDATA[
		$hotmail_fix = false;

		// No other addresses left? Return instantly.
		if (empty($to_array))
			return $mail_result;
	}
]]></search>
			<add><![CDATA[
        if ($modSettings['seo4smf_enable']=="on")
        {		
	    $scripturl1=str_replace("/index.php","",$scripturl);

            $message = preg_replace('/' . preg_quote($scripturl, '/') . '\?((?:board|topic|page)=[^#"]+?)(#[^"]*?)?\n/e', "'' . \$scripturl1 . '/' . beautify_urls(strtr('\$1', '&;=', '//,')) . '\$2'", $message);

            if ($modSettings['seo4smf_beautify_profiles']=="on")
            {
                $message = preg_replace('/"' . preg_quote($scripturl, '/') . '\?action=profile;u=([^#"]+?)?"/e', "'\"' . \$scripturl1 . '/' . beautify_url_profiles(strtr('\$1', '&;=', '//,')) . '\$2\"'", $message);
            }
	}
]]></add>
		</operation>
	</file>

</modification>

