<?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>mooontes.com &#187; smf</title>
	<atom:link href="http://mooontes.com/tag/smf/feed/" rel="self" type="application/rss+xml" />
	<link>http://mooontes.com</link>
	<description></description>
	<lastBuildDate>Sun, 12 Feb 2012 09:55:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Los hilos más activos en SMF 2</title>
		<link>http://mooontes.com/2012/02/11/los-hilos-mas-activos-en-smf-2/</link>
		<comments>http://mooontes.com/2012/02/11/los-hilos-mas-activos-en-smf-2/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 21:02:54 +0000</pubDate>
		<dc:creator>montes</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[simple machines forum]]></category>
		<category><![CDATA[smf]]></category>
		<category><![CDATA[smf2]]></category>

		<guid isPermaLink="false">http://mooontes.com/?p=501</guid>
		<description><![CDATA[Como me han preguntado cómo hacemos para mostrar los hilos más activos en furgovw, aprovecho y pongo el código aquí por si a alguien más le interesase, simplemente es poner este código en un bloque PHP de TinyPortal o el CMS que usemos con SMF2 (Simple Machines Forum) y obtendremos algo del estilo de la [...]]]></description>
			<content:encoded><![CDATA[<p>Como me han preguntado cómo hacemos para mostrar los hilos más activos en <a href="http://www.furgovw.org">furgovw</a>, aprovecho y pongo el código aquí por si a alguien más le interesase, simplemente es poner este código en un bloque PHP de TinyPortal o el CMS que usemos con SMF2 (<a href="http://www.simplemachines.org">Simple Machines Forum</a>) y obtendremos algo del estilo de la captura:</p>
<p><img src="http://mooontes.com/wp-content/uploads/2012/02/Captura-de-pantalla-2012-02-11-a-las-21.59.50.png" alt="" title="Captura de pantalla 2012-02-11 a la(s) 21.59.50" width="615" height="255" class="alignnone size-full wp-image-507" /></p>
<p><span id="more-501"></span></p>
<pre class="brush: php; title: ; notranslate">
/*
(C) Javier Montes &lt;kalimocho@gmail.com&gt; 

Twitter: @mooontes
Web: http://mooontes.com

Written for: http://www.furgovw.org

This code is licensed under GPL 2.0 http://www.gnu.org/licenses/gpl-2.0.html

THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

//Set here forums you don't want to have topics shown on hottest topics
$notShowThisForumIDs = array(50, 46, 71, 29, 43, 136, 57, 58, 56, 49, 120, 133, 128, 122, 65, 85);

global $smcFunc;

$sql = '
	SELECT
		value
	FROM {db_prefix}settings
	WHERE variable = &quot;furgovw_hottest_topics&quot;';

$result = $smcFunc['db_query']('', $sql);

if ($row = $smcFunc['db_fetch_assoc']($result)) {

	$hottestTopics = unserialize($row['value']);

	if (($hottestTopics[0]['time'] + (60 * 15)) &lt; time()) {
		$hottestTopics = getHottestTopics($smcFunc, $notShowThisForumIDs);
	}

} else {

	$hottestTopics = getHottestTopics($smcFunc, $notShowThisForumIDs);

}

showHottestTopicsTable($smcFunc, $hottestTopics);

function getHottestTopics($smcFunc, $notShowThisForumIDs)
{
	$hottestTopics = array();

	$sql = '
		SELECT
			COUNT(*) AS total,
			m.id_topic AS id_topic,
			t.id_first_msg AS id_first_msg
		FROM {db_prefix}messages AS m
		LEFT JOIN {db_prefix}topics AS t
		ON m.id_topic = t.id_topic
		WHERE
		t.id_board NOT IN (' . implode(',', $notShowThisForumIDs) . ')
		AND (FROM_UNIXTIME(m.poster_time) &gt; DATE_SUB(DATE(NOW()), INTERVAL 24 HOUR))
		GROUP by m.id_topic
		ORDER BY total DESC
		LIMIT 10
		';

	$result = $smcFunc['db_query']('', $sql);

	while ($row = $smcFunc['db_fetch_assoc']($result)) {
		$hottestTopics[] = $row;
	}

	if (is_array($hottestTopics)) {
		$hottestTopics[0]['time'] = time();

		$smcFunc['db_insert']('replace',
            '{db_prefix}settings',
            array(
                'variable' =&gt; 'string', 'value' =&gt; 'string',
            ),
            array(
                'furgovw_hottest_topics', serialize($hottestTopics),
            ),
            array('variable')
        );

		return $hottestTopics;
	} else
		die('Error getting stats');
}

function showHottestTopicsTable($smcFunc, $hottestTopics)
{
	echo '&lt;table style=&quot;clear:both;margin:0 auto;&quot;&gt;';

	foreach ($hottestTopics as $hottestTopic) {

		$sql = '
			SELECT
				m.subject,
				m.poster_name,
				m.id_member,
				t.id_last_msg
			FROM {db_prefix}messages AS m
			LEFT JOIN {db_prefix}topics AS t
			ON m.id_topic = t.id_topic
			WHERE m.id_topic = ' . $hottestTopic['id_topic'];

		$result = $smcFunc['db_query']('', $sql);
		$row = $smcFunc['db_fetch_assoc']($result);

   		echo '
   			&lt;tr&gt;
   				&lt;td align=&quot;right&quot;&gt;
   					&lt;h2&gt; ['.$hottestTopic['total'].' resp. hoy] &lt;/h2&gt;
   				&lt;/td&gt;
   				&lt;td&gt;
   					&lt;h2&gt;
    					&lt;a href=&quot;/index.php?topic='.
    						$hottestTopic['id_topic'].
    						'.msg'.$row['id_last_msg'].
    						';topicseen#new&quot;&gt;'.$row['subject'].
    						'&lt;/a&gt;
  					&lt;/h2&gt;
  				&lt;/td&gt;
  			&lt;/tr&gt;';
	}

	echo '&lt;/table&gt;';
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mooontes.com/2012/02/11/los-hilos-mas-activos-en-smf-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajustar el tamaño de las fotos en SMF (Simple Machines Forum)</title>
		<link>http://mooontes.com/2009/06/15/ajustar-el-tamano-de-las-fotos-en-smf-simple-machines-forum/</link>
		<comments>http://mooontes.com/2009/06/15/ajustar-el-tamano-de-las-fotos-en-smf-simple-machines-forum/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 13:43:11 +0000</pubDate>
		<dc:creator>montes</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smf]]></category>

		<guid isPermaLink="false">http://mooontes.com/?p=245</guid>
		<description><![CDATA[Si tienes un foro en SMF (Simple Machines Forum), una de las opciones que no deberías activar nunca es la de ajustar automáticamente el tamaño de las fotos, ya que implica que cada vez que alguien escribe un mensaje que incluye fotos, el servidor se descargará todas las fotos del mensaje para comprobar su tamaño [...]]]></description>
			<content:encoded><![CDATA[<p>Si tienes un foro en SMF (<a href="http://www.simplemachines.org">Simple Machines Forum</a>), una de las opciones que no deberías activar nunca es la de ajustar automáticamente el tamaño de las fotos, ya que implica que cada vez que alguien escribe un mensaje que incluye fotos, el servidor se descargará todas las fotos del mensaje para comprobar su tamaño antes de que el mensaje se publique, con la consiguiente pérdida de tiempo y de paciencia del usuario.</p>
<p>En nuestro caso tenemos un foro con SMF2 y un movimiento de unos 1.200 mensajes diarios, con lo que realizar esta tarea manualmente (que es la única alternativa que queda) se hace bastante pesado.</p>
<p>La solución que he encontrado es escribir un pequeño programa en PHP que se ejecutará una vez al día gracias a <a href="http://es.wikipedia.org/wiki/Cron_%28unix%29">cron</a> y que realizará esta tarea por nosotros.<br />
<span id="more-245"></span><br />
Lo que hace este script es comprobar el tamaño de las fotos de los mensajes que se han escrito durante las últimas 24 horas y en el caso de que el tamaño exceda los 800 pixels de ancho, sustituirá la etiqueta <em>[IMG]</em> por <em>[IMG width=800]</em>, lo que evitará esas fotos gigantes que estropean la normal lectura del foro, además nos enviará un correo con la lista de mensajes que haya modificado.</p>
<p>Este es el script (bajo <a href="http://creativecommons.org/licenses/by/3.0/es/deed.es">licencia CC</a> como es habitual por aquí). Sólo ha sido testeado con SMF2, aunque no creo que haya mucho problema para hacerlo funcionar con SMF1.</p>
<p>Para hacerlo funcionar en vuestro servidor sólo tenéis que modificar la primera línea <em>require_once</em> con la ruta de vuestro <em>Settings.php</em> de SMF, la segunda línea asignando la variable <em>$to</em> al correo donde queréis recibir el resumen diario de mensajes modificados y la tercera línea asignando a <em>$url_foro</em> la dirección de vuestro foro. Y luego por supuesto añadir la tarea para que se ejecute diariamente.</p>
<pre class="brush: php; title: ; notranslate">
	//***
	//Creado Junio 2009 por Montes http://mooontes.com
	//Bajo licencia http://creativecommons.org/licenses/by/3.0/es/deed.es
	//***
	require_once(&quot;/ruta/Settings.php&quot;);  //la configuracion de la BD la cogemos del archivo de configuracion de SMF
	$to = &quot;correo@mail.com&quot;;
	$url_foro = &quot;www.foro.com&quot;;

	$mysqli = new mysqli($db_server,$db_user,$db_passwd,$db_name);

	$mail = &quot;Fotos modificadas hoy &quot;.date(&quot;d/m/Y&quot;).&quot;\n\n&quot;;

	//Comprobamos conexion
	if (mysqli_connect_errno())
	{
		printf(&quot;Connect failed: %s\n&quot;, mysqli_connect_error());
		exit();
	}	

	//Buscamos todos los mensajes con fotos de las ultimas 24 horas
	$sql = &quot;SELECT id_msg,id_topic,body FROM smf_messages WHERE DATE(FROM_UNIXTIME(poster_time))&quot;.
			&quot;&gt; DATE_SUB(DATE(NOW()), INTERVAL 1 DAY) AND body LIKE '%[IMG]http%'&quot;;
	if ($result = $mysqli-&gt;query($sql))
	{
		while($row = $result-&gt;fetch_assoc())
		{
			$body = $row[&quot;body&quot;];
			echo &quot;\n****msg: &quot;.$row[&quot;id_msg&quot;].&quot; topic: &quot;.$row[&quot;id_topic&quot;].&quot;, buscando imagenes...\n\n&quot;;

			//Comprobamos imagen x imagen
			preg_match_all(&quot;%\[img\]([^\[]*)\[/img\]%i&quot;, $row[&quot;body&quot;], $encuentra, PREG_PATTERN_ORDER);
			for ($j = 0; $j &lt; count($encuentra[1]); $j++)
			{
				echo &quot;una foto: &quot;.$encuentra[1][$j].&quot;\n&quot;;
				if (list($ancho, $altura, $tipo, $atr) = getimagesize($encuentra[1][$j]))
				{
					echo &quot;ancho: &quot;.$ancho.&quot; alto: &quot;.$altura.&quot;\n&quot;;
					if ($ancho &gt; 800)
					{
						echo &quot;Tamanyo mayor de 800, vamos a reemplazar...\n&quot;;
						//Mas ancha de 800 pixels? anyadimos width=800
						$body = str_ireplace(&quot;[img]&quot;.$encuentra[1][$j].&quot;[/img]&quot;, &quot;[img width=800]&quot;.$encuentra[1][$j].&quot;[/img]&quot;, $body);
						//actualizamos en la bd
						$bodys = addslashes($body);
						$sql = &quot;UPDATE smf_messages SET body = '&quot;.$bodys.
							&quot;', modified_time=UNIX_TIMESTAMP(), modified_name='bot' WHERE id_msg = &quot;.$row[&quot;id_msg&quot;];
						$mysqli-&gt;query($sql);
						echo &quot;Actualizada la BD\n&quot;;
						$mail .= &quot;Modificada foto en: http://&quot;.$url_foro
						.&quot;/index.php?topic=&quot;.$row[&quot;id_topic&quot;].&quot;.msg&quot;.
						$row[&quot;id_msg&quot;].&quot;#msg&quot;.$row[&quot;id_msg&quot;].&quot;\n&quot;;
					}
				}
				else
				{
					echo &quot;Tamanyo desconocido\n&quot;;
				}
			}
		}
	}

    $result-&gt;close();
    unset($row);
    unset($sql);
    unset($query);

	if ($mail != &quot;Fotos modificadas hoy &quot;.date(&quot;d/m/Y&quot;).&quot;\n\n&quot;)
	{
		$subject = &quot;Fotos arregladas dimensiones &quot;.date(&quot;d/m/Y&quot;);
		if (mail($to, $subject, $mail))
		{
			echo(&quot;Mensaje enviado\n&quot;);
		}
		else
		{
			echo(&quot;Fallo al enviar mensaje...\n&quot;);
		}
	}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mooontes.com/2009/06/15/ajustar-el-tamano-de-las-fotos-en-smf-simple-machines-forum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

