<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Moulin Créatif</title>
	<atom:link href="http://moulincreatif.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://moulincreatif.com/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Tue, 29 Jun 2010 20:11:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>UpdateWall is now available</title>
		<link>http://moulincreatif.com/blog/phpmotion/updatewall-is-now-available/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/updatewall-is-now-available/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 12:53:41 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=156</guid>
		<description><![CDATA[This is just a quick post to say that you can now buy the UpdateWall. It&#8217;s finally ready for public use. You can grab the addon for half price at the moment and even pay monthly if you can&#8217;t afford the years license. You can get started for only $4.99!
There will be many new features [...]]]></description>
			<content:encoded><![CDATA[<p>This is just a quick post to say that you can now buy the UpdateWall. It&#8217;s finally ready for public use. You can grab the addon for half price at the moment and even pay monthly if you can&#8217;t afford the years license. You can get started for only $4.99!</p>
<p>There will be many new features being added in the future and all updates are free for people using the addon.</p>
<p>Visit the<a href="http://updatewall.com"> UpdateWall PHPmotion social addon for more information</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/updatewall-is-now-available/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Fixing &#8220;Most commented&#8221; problems in PHPmotion</title>
		<link>http://moulincreatif.com/blog/phpmotion/fixing-most-commented-problems-in-phpmotion/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/fixing-most-commented-problems-in-phpmotion/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 08:08:12 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=131</guid>
		<description><![CDATA[Lately some of my clients have been running into performance issues with PHPmotion when they have lots of videos (20,000+ for some). One of the main issues (which has also been mentioned on the PHPmotion forum) is with most commented feature in PHPmotion. Below is an explanation of the problem and more interestingly the solution!

The [...]]]></description>
			<content:encoded><![CDATA[<p>Lately some of my clients have been running into performance issues with PHPmotion when they have lots of videos (20,000+ for some). One of the main issues (which has also been mentioned on the PHPmotion forum) is with most commented feature in PHPmotion. Below is an explanation of the problem and more interestingly the solution!</p>
<p><span id="more-131"></span></p>
<h2>The Problem:</h2>
<p>The logic behind the whole most commented process is completely wrong. Here&#8217;s how it works at the moment.</p>
<ul>
<li>User requests most commented videos</li>
<li>The script gets every single video from the database (every single one!)</li>
<li>It then loops through every video and does another 3 queries to get the username, number of comments and star rating.</li>
<li>It then loops through every video again to sort them by most comments.</li>
<li>It then loops through once more! This time to only return the amount of videos defined by the limit.</li>
</ul>
<p>To return 12, 20 or even 3 videos it searches through and loops through every video.If you have quite a few videos it can load slowly or worse, a client of mine has over 20,000 videos in the DB and the most commented just kills the page instantly because it uses too much memory.</p>
<p>Say you have 200 videos in total <strong>you are running 601 queries</strong> (3 per video + 1 to fetch all videos) to return 20 videos! Now depending on the hosting you have this feature could stop working after you&#8217;ve only got a few hundred or a few thousand either way all these database queries are totally unnecessary.</p>
<h2>The Solution:</h2>
<p>How much of a difference will the below changes make? How about reducing all of the above queries down to <strong>one single query</strong>.</p>
<p>First lets change the stars_array() function to stop it fetching the rating separately (don&#8217;t worry these changes won&#8217;t break any of the other parts of the site using stars_array()).</p>
<p>In classes/functions.inc.php find the following code:</p>
<pre class="brush: php">function stars_array($vid) {

$sql_stars		= &quot;SELECT * FROM videos WHERE indexer = $vid&quot;;
$query_stars	= @mysql_query($sql_stars);
$result_stars	= @mysql_fetch_array($query_stars);
$stars 		= $result_stars[&#039;updated_rating&#039;];

//default stars</pre>
<p>And change it to:</p>
<pre class="brush: php">
function stars_array($vid, $stars = null) {

if($stars === null) {
$sql_stars		= &quot;SELECT * FROM videos WHERE indexer = $vid&quot;;
$query_stars	= @mysql_query($sql_stars);
$result_stars	= @mysql_fetch_array($query_stars);
$stars 		= $result_stars[&#039;updated_rating&#039;];
}
//default stars
</pre>
<p>What we&#8217;re doing here is changing the function to only fetch the stars if they aren&#8217;t already provided as an argument.</p>
<p>Now that&#8217;s optimized let&#8217;s get cracking at fixing the problem. In index_ajax.php we&#8217;re going to be replacing the code from line 168 to 242 with the following:</p>
<pre class="brush: php">if($which_one == &#039;comments&#039;) {

$browse_videos = array();

$sql = &quot;SELECT v.*, COUNT( vc.indexer ) AS comments, u.user_name as uploaded_by

FROM videos v

JOIN videocomments vc ON vc.video_id = v.indexer

JOIN member_profile u ON u.user_id=v.user_id

WHERE approved = &#039;yes&#039;

AND public_private = &#039;public&#039;

GROUP BY vc.video_id

ORDER BY comments DESC

LIMIT $limit&quot;;

$qry = mysql_query($sql);

while($row = mysql_fetch_assoc($qry)) {

$row[&#039;date_uploaded&#039;] = dateTimeDiff($row[&#039;date_uploaded&#039;]);

$browse_videos[] = array_merge($row, stars_array($row[&#039;indexer&#039;], $row[&#039;updated_rating&#039;]));

}

$see_more_title = $config[&#039;most_commented&#039;];

}</pre>
<p>And there we go! You&#8217;re down from hundreds of queries to one  smart query which does most of the work for us and then PHP simply outputs it for the templates and displays the results.</p>
<p>What&#8217;s changed here? Let&#8217;s take a look.</p>
<p>The query:</p>
<pre class="brush: php">SELECT v.*, COUNT( vc.indexer ) AS comments, u.user_name as uploaded_by
FROM videos v
JOIN videocomments vc ON vc.video_id = v.indexer
JOIN member_profile u ON u.user_id=v.user_id
WHERE approved = &#039;yes&#039;
AND public_private = &#039;public&#039;
GROUP BY vc.video_id
ORDER BY comments DESC
LIMIT $limit</pre>
<p>This is the biggest change, what I&#8217;ve done here is basically merge all the other queries into one optimized one which fetches all the required data at the same time. It also and most importantly sorts the results and fetches the most commented directly instead of every video in the database.</p>
<pre class="brush: php">while($row = mysql_fetch_assoc($qry)) {
$row[&#039;date_uploaded&#039;] = dateTimeDiff($row[&#039;date_uploaded&#039;]);
$browse_videos[] = array_merge($row, stars_array($row[&#039;indexer&#039;], $row[&#039;updated_rating&#039;]));
}</pre>
<p>Now that we&#8217;ve got rid of the other queries the while loop gets simplified quite a bit. All we have to do here is format the date correctly and merge the stars into the video array. Remember the change we did above to the stars_array function well we&#8217;re now using that <em>stars_array($row['indexer'], $row['updated_rating'])</em> and avoiding yet another query for the stars info as we&#8217;ve already got that from the main query.</p>
<p>Now we apply similar code to seemore.php change the code between if ($which_one == &#8216;comments&#8217;) { .. everything here .. } to the following:</p>
<pre class="brush: php">if ($which_one == &#039;comments&#039;) {    

	$pagination = pagination( &quot;SELECT v.indexer, COUNT(c.indexer) as comments FROM videos v JOIN videocomments c ON v.indexer=c.video_id WHERE 1=1 $sql_public_private GROUP BY v.indexer&quot;, $limit);

    	$set_limit = $pagination[0][&#039;set_limit&#039;];

    	$total_pages = $pagination[0][&#039;total_pages&#039;];

    	$current_page = $pagination[0][&#039;current_page&#039;];

    	$total_records = $pagination[0][&#039;total_records&#039;];

    	$next_page = $pagination[0][&#039;next_page&#039;];//use in html navigation (src)

    	$prev_page = $pagination[0][&#039;prev_page&#039;];//use in html navigation (src)

    	$nl = $pagination[0][&#039;nl&#039;];//use in html navigation: next&gt;&gt;

    	$pl = $pagination[0][&#039;pl&#039;];//use in html navigation: &lt;&lt;previous

    	$result_featured	= array();    	        

    	$sql = &quot;SELECT v.*, COUNT( vc.indexer ) AS comments, u.user_name as uploaded_by

FROM videos v

JOIN videocomments vc ON vc.video_id = v.indexer

JOIN member_profile u ON u.user_id=v.user_id

WHERE approved = &#039;yes&#039;

AND public_private = &#039;public&#039;

GROUP BY vc.video_id

ORDER BY comments DESC

LIMIT $set_limit, $limit&quot;;

		$qry = mysql_query($sql);

		while($row = mysql_fetch_assoc($qry)) {

			$row[&#039;date_uploaded&#039;] = dateTimeDiff($row[&#039;date_uploaded&#039;]);

			$result_featured[] = array_merge($row, stars_array($row[&#039;indexer&#039;], $row[&#039;updated_rating&#039;]));

		}

	$see_more_title = $config[&#039;most_commented&#039;];

	//PAGINATION PLUS &gt;&gt; start  -- reusable code

	$url = &#039;videos/load&#039;;								//the url to be put in links - EDIT ME

	$additional_url_variable = &#039;/comments/&#039;;			//add addtions information that goes in query string here , e.g. &#039;&amp;load=groups&amp;friends=all&#039; - EDIT ME

	@include_once ($include_base . &#039;/includes/pagination.inc.php&#039;);

	//PAGINATION PLUS &gt;&gt; end

}
</pre>
<p>Here we run the same code again basically with the addition of the pagination. I&#8217;ve changed the pagination query slightly by removing the ORDER BY as there&#8217;s no need to sort the results here only count them. Because of this I&#8217;ve also changed the SELECT to only fetch a minimum of data.</p>
<p>That&#8217;s about it! Did this help? Did it break something? Let me know below.</p>
<p>PS. You can now sign up for a newsletter. Get PHPmotion tips and advice straight to your front door (well your inbox).</p>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/fixing-most-commented-problems-in-phpmotion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Update on UpdateWall progress</title>
		<link>http://moulincreatif.com/blog/phpmotion/update-on-updatewall-progress/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/update-on-updatewall-progress/#comments</comments>
		<pubDate>Thu, 27 May 2010 08:25:20 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=118</guid>
		<description><![CDATA[I thought I should post an update as to what&#8217;s happening with the UpdateWall addon for PHPmotion. Well things are going good although it&#8217;s taking longer then I planned. I will hopefully be launching for the first testers within the next week or two.
I&#8217;ve been adding more update types trying to include everything I think [...]]]></description>
			<content:encoded><![CDATA[<p>I thought I should post an update as to what&#8217;s happening with the UpdateWall addon for PHPmotion. Well things are going good although it&#8217;s taking longer then I planned. I will hopefully be launching for the first testers within the next week or two.</p>
<p>I&#8217;ve been adding more update types trying to include everything I think will be useful, here&#8217;s the current list of actions that can be posted to the UpdateWall.</p>
<ul>
<li>Video uploads</li>
<li>Audio uploads</li>
<li>Image uploads</li>
<li>Blog posts</li>
<li>Comments on videos</li>
<li>Comments on audio</li>
<li>Comments on images</li>
<li>Replies to blogs</li>
<li>New friendships</li>
<li>Newly created groups</li>
<li>Friends joining groups</li>
</ul>
<p>If you can think of additional actions that should be added let me know and I&#8217;ll see if I can implement them for the initial release.</p>
<h2>Additional info about the addon:</h2>
<ul>
<li>There is a built in admin panel where you have multiple settings and control over additional ad spots (currently one extra on the right, more will be added).</li>
<li>The add-on can run in any language. Whilst this has yet to be fully tested the addon was built with internationalization in mind.</li>
<li>You can purchase the addon with either a yearly license or pay as you go monthly.</li>
<li>It will eventually run interscriptably (ok I made that word up). Which means you&#8217;ll be able t o post updates from your phpBB forum, WP blog, etc. to your UpdateWall on PHPmotion!</li>
</ul>
<p>Why is this a yearly or monthly license, you ask. Unlike other add-ons which are just updated when bugs are found, I will be continuously adding new features, options and improvements which you will have immediate access to with an active license.</p>
<p>More news soon! Don&#8217;t forget to follow <a href="http://twitter.com/moulincreatif">me on Twitter</a> if you don&#8217;t already to receive all the latest updates!</p>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/update-on-updatewall-progress/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Very beta online demo of updatewall</title>
		<link>http://moulincreatif.com/blog/phpmotion/very-beta-online-demo-of-updatewall/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/very-beta-online-demo-of-updatewall/#comments</comments>
		<pubDate>Wed, 19 May 2010 19:06:14 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=110</guid>
		<description><![CDATA[If you&#8217;ve been following me on the UpdateWall Twitter you&#8217;ll now that I&#8217;ve been sorting out some server issues lately. Well I&#8217;ve finally got a working demo online for you all to check out! It&#8217;s still got stuff to be done to finish it off but I&#8217;ve wanted to post a demo online for days [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve been following me on the <a href="http://twitter.com/updatewall">UpdateWall Twitter</a> you&#8217;ll now that I&#8217;ve been sorting out some server issues lately. Well I&#8217;ve finally got a working demo online for you all to check out! It&#8217;s still got stuff to be done to finish it off but I&#8217;ve wanted to post a demo online for days now so here goes: <a href="http://demo.updatewall.com/phpmotion/wall.php">http://demo.updatewall.com/phpmotion/wall.php</a></p>
<p>There are some bugs that I&#8217;ve already noted but please report anything you find in the comments below. <span style="text-decoration: line-through;">There are still more update types to be created you can see the ones that are currently ready on the wiki I&#8217;ve been setting up on this page. </span></p>
<p><em>Edit: More up to date info on this blog post: <a href="http://moulincreatif.com/blog/phpmotion/update-on-updatewall-progress/">Update on UpdateWall progress</a></em></p>
<p>I&#8217;ve setup a basic cron job which will automatically post updates to the public wall. To try the wall out fully though I recommend you register, add one of the demo profiles (admin or testGuy) as a friend or even upload stuff yourself. The automatic updates are run once a minute so you may need to wait a bit for something to happen. The automatic updates on post the following: new videos, new audio, video comments &amp; audio comments. To view the other update types you will need to create an account and do the required action (create a group, etc.).</p>
<p>Anyway it&#8217;s 9pm here so time for a break <img src='http://moulincreatif.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Let me know what you think, what doesn&#8217;t work &amp; what you don&#8217;t like.</p>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/very-beta-online-demo-of-updatewall/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Updates about the upcoming updatewall</title>
		<link>http://moulincreatif.com/blog/phpmotion/updates-about-the-upcoming-updatewall/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/updates-about-the-upcoming-updatewall/#comments</comments>
		<pubDate>Mon, 17 May 2010 16:45:01 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=104</guid>
		<description><![CDATA[I thought that it was about time to write a short update on the progress of the updatewall. Since my first post many months ago it has been completely rewritten to allow easy creation of new updates or even to modify the existing ones. It will be completely translatable as is PHPmotion and will be [...]]]></description>
			<content:encoded><![CDATA[<p>I thought that it was about time to write a short update on the progress of the updatewall. Since my first post many months ago it has been completely rewritten to allow easy creation of new updates or even to modify the existing ones. It will be completely translatable as is PHPmotion and will be easy to modify the look of.</p>
<p>I still have a few more features to add regarding updates and also a server issue to sort out before posting a demo online and allowing a few users to have access to the add-on to help test it. Hopefully it will be online by the weekend and you will be able to share your thoughts before I release a beta.</p>
<p>If you want to stay up to date easily you can follow the newly created twitter account <a href="http://twitter.com/updatewall">@UpdateWall</a> for real time updates &amp; news. Who knows followers may be get first access to the demo <img src='http://moulincreatif.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/updates-about-the-upcoming-updatewall/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Seo Pack V2 &gt; V3 upgrade kit</title>
		<link>http://moulincreatif.com/blog/phpmotion/seo-pack-v2-v3-upgrade-kit/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/seo-pack-v2-v3-upgrade-kit/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 11:17:57 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>
		<category><![CDATA[seo pack]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=83</guid>
		<description><![CDATA[As more and more people are upgrading to V3 I thought it was about time to complete the redirection kit which will help you minimize any effects the link changes might cause.
The script is available for download at the end of the post, this only works for people who have the seo pack. If you [...]]]></description>
			<content:encoded><![CDATA[<p>As more and more people are upgrading to V3 I thought it was about time to complete the redirection kit which will help you minimize any effects the link changes might cause.</p>
<p>The script is available for download at the end of the post, this only works for people who have the seo pack. If you are upgrading from v2 to V3 but never installed the seo pack you do not need this and it will probably cause problems trying to use it.</p>
<p><span id="more-83"></span></p>
<h3>Installation:</h3>
<p>The installation is really simple but requires one thing, that you still have the add-on. For the script to work the add-on must be available in the /addons/seo-pack folder. It<strong> does not need to be installed</strong> on the site though. If during the upgrade you removed the addons folder then simply re-upload (I repeat you do not need to re-install it) the seo-pack folder into it from the backup you made before upgrading, <em>you did backup first right?</em></p>
<p>Once the folder is in place you need to upload the file in the .zip (there&#8217;s only one) at the end of the post to the root of your PHPmotion installation. And finally one change is required in the .htaccess file:</p>
<pre class="brush: php">ErrorDocument 404 /404.php</pre>
<p>Should read:</p>
<pre class="brush: php">ErrorDocument 404 /upgrade-seo.php</pre>
<p>If PHPmotion is installed in a sub folder you may need to include the sub domain in there like so:</p>
<pre class="brush: php">ErrorDocument 404 /subfolder/upgrade-seo.php</pre>
<p>Now you may check to see if the redirects are working correctly, try visiting yoursite.com/featured_videos (or any other url you setup on the seo pack) and if you are redirected to the correct page on your V3 website then congratulations you just saved your traffic!</p>
<p><span style="color: #999999;"><em><span style="color: #808080;">Please note: this script is provided as is and I cannot be held responsible for any possible loss or change in search rankings. I have created the script and offer it for free to help those with the Seo Pack who wish to upgrade. I do not guarantee any support but will do my best. Should you wish for better support or customisation of the script I can do so at an hourly rate, please<a href="http://moulincreatif.com/contact"> contact me through the form</a> on the website</span>.</em></span></p>
<p><a title="Download the seo pack upgrade kit" href="http://moulincreatif.com/clients/upgrade-seo.zip">Download the upgrade kit here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/seo-pack-v2-v3-upgrade-kit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make search engines love PHPmotion (part 2)</title>
		<link>http://moulincreatif.com/blog/phpmotion/make-search-engines-love-phpmotion-part-2/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/make-search-engines-love-phpmotion-part-2/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 10:27:36 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=60</guid>
		<description><![CDATA[Part 2 of the PHPmotion seo series is now done (part 1 here)! In this article I will be concentrating on improving the .htaccess file to remove duplicate content &#38; set up correct redirect headers for links.

Having 2 addresses to display the same content is bad (search engines may think you&#8217;re trying to trick them) [...]]]></description>
			<content:encoded><![CDATA[<p>Part 2 of the PHPmotion seo series is now done (<a title="Make search engines love PHPmotion (part 1)" href="http://moulincreatif.com/blog/phpmotion/make-search-engines-love-phpmotion-part-1/">part 1 here</a>)! In this article I will be concentrating on improving the .htaccess file to remove duplicate content &amp; set up correct redirect headers for links.<br />
<span id="more-60"></span><br />
Having 2 addresses to display the same content is bad (search engines may think you&#8217;re trying to trick them) and un-necessary. By having only one link for each page also means that there is no chance of visitors linking to different urls for the same content. A few changes in the .htaccess and all will be well!</p>
<h3>To www or not to www</h3>
<p>Choose which ever you prefer and redirect all the others over to it.</p>
<p><strong>To redirect from non www to www</strong></p>
<pre class="brush: php">RewriteCond %{HTTP_HOST} ^yourdomainname.com [NC]
RewriteRule (.*) http://www.yourdomainname.com/$1 [R=301,L]</pre>
<p><strong>To redirect from www to non www</strong></p>
<pre class="brush: php">RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [L,R=301]</pre>
<h3>Adjust the audio/video/image/blog listing pages</h3>
<p>If you use a <a href="http://www.duplicatecontent.net/">duplicate content checker</a> to check the following urls:</p>
<ul>
<li> http://v3.phpmotion.com/videos</li>
<li>http://v3.phpmotion.com/videos/load/recent</li>
</ul>
<p>You will see they are both identical. To correct this you could (should) change the links in the template files (themes/yourtheme/templates/main_1.htm) to point to videos/load/recent or vice-versa.</p>
<p>But we don&#8217;t want to lose any existing value on the old links do we? So we&#8217;ll just add a 301 redirect so everyone knows to use the other link from now on. Add the following line after RewriteCond %{REQUEST_FILENAME} !-d</p>
<pre class="brush: php">RewriteRule ^videos(/?)$ videos/load/recent [R=301,L]</pre>
<p>If you chose to replace all videos/load/recent links with just videos you should use this code:</p>
<pre class="brush: php">RewriteRule ^videos/load/recent(/?)$  videos [R=301,L]</pre>
<p>Now you just need to do similar for each of the media links in the main menu (audios, blogs &#038; images). You only need to do this for the load/recent links the other load/featured, etc&#8230; should be fine.</p>
<p>If done correctly (once you make the changes make sure that they work!) then you&#8217;ll have just done yourself a favor. Also if you don&#8217;t already use <a href="https://www.google.com/webmasters/tools/">Google Webmaster tools</a> then make sure you check it out! It will help show issues with your website and also give you some info like the top search queries, etc..</p>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/make-search-engines-love-phpmotion-part-2/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>UpdateWall sneak peak</title>
		<link>http://moulincreatif.com/blog/phpmotion/updatewall-sneak-peak/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/updatewall-sneak-peak/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 09:19:47 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[user feature]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=39</guid>
		<description><![CDATA[Update: beta screen shot at end of the post.
I think it&#8217;s about time to unveil my latest PHPmotion addon, which will be available for v3. No price or ETA yet but it will be released within the next month at latest.
So what is it?
It is possibly one of the most useful addons you could ever [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> beta screen shot at end of the post.</p>
<p>I think it&#8217;s about time to unveil my latest PHPmotion addon, which will be available for v3. No price or ETA yet but it will be released within the next month at latest.</p>
<h3>So what is it?</h3>
<p>It is possibly one of the most useful addons you could ever buy for your website (and I&#8217;m not just saying that because I made it <img src='http://moulincreatif.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).<span id="more-39"></span></p>
<p>Think Facebook activity wall <em>with search engine benefits</em>. And it doesn&#8217;t stop there! With the update wall you will see an increase in user interactivity, people will see groups friends create, the friends they add, videos they upload, comments they leave and a lot more (full list &amp; screenshots soon!).</p>
<h3>Why will search engines love this?</h3>
<p>Not only does each user have their own update wall listing updates from their friends, there is also a public timeline which is basically a <strong>live feed</strong> to <strong>everything happening on your website in real time</strong>!</p>
<p>Once search engines index this they will be back all the time to find out what&#8217;s new, crawling links to new videos &amp; audio files within seconds of them being uploaded!</p>
<h3>Why will your users love this?</h3>
<p>Why do they love facebook? Because they can see what people are doing as they do it. Once a user logs in they can go to their update wall and see what their friends latest actions where. Allowing them to join groups they have created, watch videos they&#8217;ve rated &amp; commented on and much more!</p>
<h3>Why will you love this addon?</h3>
<p>Did you read the above two paragraphs? <img src='http://moulincreatif.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  What more is there to add? Search engines will love it, users will too. Add this to a smart bit of marketing and some <a title="Make search engines love PHPmotion (part 1)" href="http://moulincreatif.com/blog/phpmotion/make-search-engines-love-phpmotion-part-1/">optimized seo</a> and watch your site grow!</p>
<p>I will be posting screenshots &amp; more of the features soon, I may even time permitting put up a demo. Let me know your thoughts &amp; ideas in the comments below. Good ideas may see their way into the addon!</p>
<p>Update: I&#8217;ve taken a quick screenshot, if you think it looks a bit plain at the moment remember not all features have been added yet. Wait until you see it in action.</p>
<div id="attachment_56" class="wp-caption aligncenter" style="width: 510px"><a href="http://moulincreatif.com/blog/wp-content/uploads/2009/11/Screenshot.png"><img class="size-thumbnail wp-image-56" title="PHPmotion UpdateWall beta screen shot" src="http://moulincreatif.com/blog/wp-content/uploads/2009/11/Screenshot-500x300.png" alt="PHPmotion UpdateWall beta screen shot" width="500" height="300" /></a><p class="wp-caption-text">PHPmotion UpdateWall beta screen shot</p></div>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/updatewall-sneak-peak/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Make search engines love PHPmotion (part 1)</title>
		<link>http://moulincreatif.com/blog/phpmotion/make-search-engines-love-phpmotion-part-1/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/make-search-engines-love-phpmotion-part-1/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 17:54:13 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=24</guid>
		<description><![CDATA[This is part one of an as of yet undetermined amount of posts in which I will try to explain how to improve your search engine rankings for your PHPmotion website. I probably won&#8217;t be covering the actual marketing but will be providing code, ideas &#38; examples of ways to improve your website.
Let me know [...]]]></description>
			<content:encoded><![CDATA[<p>This is part one of an as of yet undetermined amount of posts in which I will try to explain how to improve your search engine rankings for your PHPmotion website. I probably won&#8217;t be covering the actual marketing but will be providing code, ideas &amp; examples of ways to improve your website.</p>
<p>Let me know if you find it useful and I&#8217;ll get started on more posts!<span id="more-24"></span></p>
<h3>Do not use duplicate title &amp; meta tags!</h3>
<p>This is easily missed as the keyword &amp; description tags are invisible to regular visitors, they only show up within the source code. Having the same titles on different pages is missing out on a great opportunity for getting some keywords picked up in search engines.</p>
<p>For example the featured, recent, most viewed &amp; most commented videos all have the same title &amp; meta tags! This is not good!</p>
<p>Here&#8217;s a simple way of fixing this and can be used in pretty much any of the .php files:</p>
<pre class="brush: php">$page_title = &quot;Your page title will go here! - $site_name&quot;;
$description = &quot;Enter a description for the page here, descriptions are often used as the small part of text that shows in search results and shouldn&#039;t exceed 150 or so characters (the amount Google display in results).&quot;;
$keywords = &quot;comma,separated,words,or short, search keywords&quot;;</pre>
<p>Meta keywords aren&#8217;t used so much now as the search engines prefer to scan the actual content of your page rather then trust what you enter.</p>
<p>So where do you stick this code into your files? Most of the time anywhere before this will be fine except in certain files (more on that in a bit):</p>
<pre class="brush: php">$TBS 			= new clsTinyButStrong;</pre>
<p>Try it out now in category_home.php.</p>
<p>But wait I hear you say, I want to display the name of the category! Good thinking! So here&#8217;s how you go about it, take the code had earlier with a few minor adjustements:</p>
<pre class="brush: php">$page_title = &quot;Watch $channel videos – $site_name&quot;;
$description = &quot;View all videos in the $channel category, watch, rate and comment on $channel videos.&quot;;
$keywords = &quot;$channel, $channel videos, popular $channel vids&quot;;</pre>
<p>Now that&#8217;s much better. Of course you can (and should) take this a lot further. Remember you will need to replace $channel with other variables (and don&#8217;t forget to change the descriptions &amp; keywords around a bit). Some pages not to miss are seemore.php ($see_more_title), audio.php (also $see_more_title).</p>
<p>If you find this useful let me know below! Any questions just ask!</p>
<p><strong>Update:</strong> How to add this for sub categories<br />
At the bottom of the file just before adding the above code add the following:</p>
<pre class="brush: php">if($sub &gt; 0) {
	$channel = $channel_name;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/make-search-engines-love-phpmotion-part-1/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>5 Things any new PHPmotion user should do.</title>
		<link>http://moulincreatif.com/blog/phpmotion/5-things-any-new-phpmotion-user-should-do/</link>
		<comments>http://moulincreatif.com/blog/phpmotion/5-things-any-new-phpmotion-user-should-do/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 13:19:16 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[PHPmotion]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://moulincreatif.com/blog/?p=7</guid>
		<description><![CDATA[A short article on things you should check you haven&#8217;t forgotten before launching your PHPmotion website.

#1 Finish your information pages
I&#8217;ve lost count of how many times I&#8217;ve visited people&#8217;s websites from the showcase section in the PHPmotion forum to see the default &#8220;demo&#8221; content still on the About, Contact &#38; Terms pages. If you&#8217;ve just [...]]]></description>
			<content:encoded><![CDATA[<p>A short article on things you should check you haven&#8217;t forgotten before launching your PHPmotion website.</p>
<p><span id="more-7"></span></p>
<h3>#1 Finish your information pages</h3>
<p>I&#8217;ve lost count of how many times I&#8217;ve visited people&#8217;s websites from the showcase section in the PHPmotion forum to see the default &#8220;demo&#8221; content still on the About, Contact &amp; Terms pages. If you&#8217;ve just finished your website, double check to make sure you haven&#8217;t forgotten this!</p>
<h3>#2 Check it all works OK</h3>
<p>This seems obvious right? Well even though the script should work out of the box I&#8217;d recommend checking it out in different browsers just to make sure that everything works as expected. A few times people have contacted me or posted on the forum because of javascript errors or blank pages caused by a missing file. This goes for all websites not just PHPmotion ones <img src='http://moulincreatif.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Do not expect visitors to inform you of any errors on the site! They won&#8217;t, if something doesn&#8217;t work then they will just go elsewhere. Wouldn&#8217;t you do the same? Every now and then check your server error logs to see if any user actions are causing problems on the site.</p>
<h3>#3 Customize your website</h3>
<p>If your site looks just like someone else&#8217;s, visitors may think that you&#8217;ve copied the others site (or vice versa) or that you are the same &amp; therefor have the same content. Now the chances that your visitor has been to another PHPmotion website are slim but with an ever growing number of downloads, it&#8217;s getting more and more likely every day.</p>
<p>The easiest option is to buy a pre-made theme or hire a professional to do the changes for you. The costs will vary a lot based on the theme or the designer you hire. If you didn&#8217;t plan on spending any money or don&#8217;t have any to spend before the launch, you can change stuff fairly easily yourself.</p>
<p>Being template based means most logic is kept outside of the templates so you only have to deal with actual code which will effect your layout/design. This makes it easier to edit, just take a look into your themes/default/templates/ folder to see the files that make your website look like it does currently. It only takes a few minutes to change your logo &amp; upload it (provided you have one of course). But spend a little extra time changing the css files and you&#8217;ll be able to easily change the main colors &amp; images used in the theme.</p>
<h3>#4 Optimize your site for search engines</h3>
<p>The latest version of PHPmotion is an improvement compared to v2 but there&#8217;s still room for improvement (there always is). In the near future I will try to post some articles on improving the rankings of your PHPmotion based website.</p>
<h3>#5 Install extra features/addons</h3>
<p>The only free addon I can think of for v3 that should not only be installed but should also become a default part of the script is <a title="RSSmotion addon" href="http://phpmotion.com/forum/index.php/topic,8235.0.html"><strong>RSSmotion</strong></a>. This is a must have if you plan on getting your site well known. Created by the forum member LennonNZ this easy to install addon will allow you to add RSS feeds of your videos to various different websites such as Google Video &amp; Truveo.</p>
<p>There are plenty of addons available, most of them come at a cost though. Depending on your budget, you may want to be careful when choosing which commercial addons you buy. I&#8217;d recommend the video embedder for a quick way to get videos on the site &amp; the invite my contacts addon to help grow your community faster. It&#8217;s also a good idea to remove the branding by purchasing a license.</p>
<p>That&#8217;s all for now, hopefully this short post will help any new users out there.</p>
]]></content:encoded>
			<wfw:commentRss>http://moulincreatif.com/blog/phpmotion/5-things-any-new-phpmotion-user-should-do/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
