Prohibir ver un post a un user con menos de xx mensajes

rarauz Seguir

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 Mar 2009
Mensajes
59
Buenas a todos,

Me gustaría hacer en mi foro (VBulletin 4.1.7) lo que se hace en este post antiguo: http://www.vbhispano.com/foros/f39/solucionado_como_han_hecho_esto-7504/

He intentado por todos los medios, pero no soy capaz.

Quiero que cuando en el título del post se ponga AV+ no puedan leerlo los usuarios con menos de 20 mensajes.

He añadido un plugin con esto:

if(stristr($thread[title], 'AV+') == TRUE)
{
$soloadultos = TRUE;
}


En la plantilla SHOWTHREAD he añadido, después de {vb:raw navbar}:

<vb:if condition="($soloadultos == TRUE) and ($bbuserinfo[posts]<=20)">
<center><h2>Tema Solo para Adultos </h2></center>



Y antes de {vb:raw footer} añado:

</vb:if>


Pues no sé por qué, pero no me deja ver ni ese post, ni ningún otro, no me sale el mensaje ni nada. He intentado cambiar la variable $bbuserinfo[posts] pero no encuentro la forma de que me funcione.

¿podríais echarme una mano?

Gracias por adelantado.
 

rarauz

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 Mar 2009
Mensajes
59
pues para que crear otro tema igual si ya esta ese??

instalate este hack
Cyb - Advanced Permissions Based on Post Count - vBulletin.org Forum configuralo a lso foros y numero de post que quieras y ya esta

saludos

Pues eso pensé yo, pero como puedes ver, me lo han cerrado y me han dado un toque. En fin...

Una pregunta, ese hack que me pasas ¿filtraría a nivel de posts ?

Yo lo que quiero es que solo los posts que contengan, por ejemplo AV+, estén restringidos a usuarios que no cumplan xx mensajes.

Gracias por la ayuda, voy a ver ese hack.
 

ALFA MH

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
14 Jul 2010
Mensajes
132
no amigo eso es en General eliges el Foro que quieras y ya, pero no funcioan con prefijo AV+

saludos
 

rarauz

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 Mar 2009
Mensajes
59
Acabo de bajarlo e instalarlo, y efectivamente restringe a nivel de foro, y yo lo que quiero es a nivel de post.

Seguimos buscando


Un saludo.
 

SEW810

Delta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 Mar 2008
Mensajes
684
Utilizar cadenas de caracteres a veces suele ser un poco engorroso, te aconsejaría que mejor iguales a números tus if's

Po ejemplo:

if(stristr($thread[title], 'AV+') == "1")
{
$soloadultos = "1";
}


Prueba con eso y nos comentas.

PD. Me gustaría que compartieras el contenido del plug in para darnos una idea de donde podría ser que se encuentre el error.

Saludos!!!
 

rarauz

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 Mar 2009
Mensajes
59
Utilizar cadenas de caracteres a veces suele ser un poco engorroso, te aconsejaría que mejor iguales a números tus if's

Po ejemplo:

if(stristr($thread[title], 'AV+') == "1")
{
$soloadultos = "1";
}


Prueba con eso y nos comentas.

PD. Me gustaría que compartieras el contenido del plug in para darnos una idea de donde podría ser que se encuentre el error.

Saludos!!!

Hola, muchas gracias por tu ayuda.

El Plugin lo puse en el primer post, es este:


if(stristr($thread[title], 'AV+') == TRUE)
{
$soloadultos = TRUE;
}


Ver el archivo adjunto 5125

El cual tomé del post que digo arriba que se trató este tema y que se dió como solucionado, pero que yo no soy capaz, aunque también es cierto que tengo muchos menos conocimientos.

Voy a hacer la prueba que me comentas.

Gracias de nuevo.
 

rarauz

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 Mar 2009
Mensajes
59
Pues nada, no consigo que funcione, no me enseña ningún post.

No sé si el problema está en el plugin, en su punto de enganche (showthread_postbit_create), o en el código de la plantilla, que ahora mismo tengo esto:

<vb:if condition="($soloadultos == '1') and ($bbuserinfo[posts]<=20)">
<center><h2>Tema Solo para Adultos</h2></center>
<vb:else />


Ahora no me filtra, pues un user con 3 mensajes puede ver un post que tengo con AV+
 

imported_Arcade Fire

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
14 Jun 2008
Mensajes
102
Hola rarauz, hace tiempo publiqué ese plugin en vb.org, puedes verlo aquí:

http://www.vbulletin.org/forum/showthread.php?t=228117

Aunque inicialmente se hizo para vb 3.x, puedes ver mas abajo la versión para vb 4.x. Imagino que nada ha cambiado, yo sólo usé la versión 4.0.2 y volví a poner el foro a la 3.8.x de nuevo.

Si tienes dudas me lo comentas, un saludo.
 

ALFA MH

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
14 Jul 2010
Mensajes
132
Una duda Arcade, Esto evita que los Invitados vean Cierto tema segun el Titulo verdad o aun que este registrado si no cumple la edad Bloque el Post??

creo solo bloquea a invitados mas no a miembros sin importar la edad

saludos
 

SEW810

Delta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 Mar 2008
Mensajes
684
Técnicamente solo afecta a los not logged in (Visitantes) y a los registrados que tengan cero posts).
En el ejemplo de raruz, afectará a los Visitantes y a los Registrados con menos de 20 posts.

Claro está que si usas vb 3.X ese código te va bien pero si usas vb 4.0 las sentencias if cambian.

Para afectar a algún grupo de usuario en específico, edad,etc debes jugar un poco con el array del $bbuserinfo.

Saludos!!!
 

rarauz

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 Mar 2009
Mensajes
59
Arcade Fire, no tengo palabras de agradecimiento, de verdad. Eres un fenómeno.

Quise contestarte ayer, en el momento en que lo probé, pero Jazztel se encargó de no dejarme hacerlo, :-(

Puse un comentario o corrección en la página del plugin, pues para VB4, debe llevar un <vb:else />

Probé así y perfecto.

Efectivamente, yo lo que quiero evitar es a la gente que se registra sólo para entrar en un post. De esta manera tengo ese contenido solo para users asiduos.

De nuevo, muchas gracias.

---------- Actualizado a las 10:02 ---------- Original a las 08:57 ----------

Una pregunta más, a ver si se puede rizar el rizo...

Si además de filtrar por usuario registrado y con +20 mensajes, se quisiera filtrar por antigüedad, osea que lleven xx días registrados ????

Entiendo que se debe usar la variable joindate, pero no sé como usarla ni donde, para filtrar esto.

Gracias de antemano.
 

imported_Arcade Fire

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
14 Jun 2008
Mensajes
102
Hola rarauz,

para filtrar por antigüedad puedes usar promociones y no te complicas tanto. Por ejemplo que a 6 meses de registrado promocionen de "usuarios registrados" a "usuarios registrados +6" por decir algo y luego jugar con el plugin y los condicionales como:


Insertar CODE, HTML o PHP:
<vb:if condition="is_member_of($bbuserinfo, 6,5,9)">Mostrar sólo a los grupos 6,5 y 9</vb:if>

Sobre bloquear por edad:

Yo no obligo en el registro a definir la edad a los usuarios, pero también hice un plugin para esto. Los temas dque tengan el +18 en el título sólo lo pueden ver usuarios registrados (nunca visitantes) con más de un post. ¿Y como se la edad?. Básicamente he colocado un script con un formulario y una cookie. Cuando un usuario entra a un post "+18" antes de visualizarlo le obliga a confirmar que tiene más de 18 años, con un "acepto", que le deja entrar al tema y un "No acepto, salir" que le devuelve al index. La cookie caduca a los 7 días, para no estar confirmando siempre. Puedes crear una cuenta en mi foro (el de la firma) y verlo en funcionamiento, busca en el foro general algún hilo con el +18, pero antes suma un par de post en el foro de pruebas si quieres.

Además como a adsense no le hace mucha gracia tener publicidad en hilos que sean +18, he añadido una condicional para que en estos hilos no se muestre la publi de adsense y así cumplir con sus políticas.

Un saludo.
 

rarauz

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 Mar 2009
Mensajes
59
Buenos días,

precisamente, para otra cosa, creé un grupo de usuarios que se llama "usuarios registrados 5", los cuales para poder enviar mp's tienen que llevar 5 días registrado y 5 mensajes en el foro.

Vamos que la promoción ya la tengo hecha.

Ahora, la cosa sería encadenar en el plugin todos los grupos de usuarios a los que quiero darles acceso a este plugin. Tengo como grupos que accederían a los grupos: 2, 5, 6, 7, 20, 22, 23, y 25.

Si ves claro como meterlo dentro del plugin que ya tenemos, me ahorrarás dolores de cabeza... jejeje, sino, ya investigo y pruebo.

Gracias por tu ayuda.

Voy a darle vueltas a ver cómo lo hago.


Edito:

Perdón, es lo que tiene seguir pensando después :)

Si filtro por grupos de usuarios, ya no tengo que filtrar por nada más, pues se cumplen las condiciones que tenía puesto anteriormente.
 

imported_Arcade Fire

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
14 Jun 2008
Mensajes
102
Buenos días rarauz,

Bueno, pero si tenes que usar el plugin igualmente para limitar el acceso únicamente a ciertos post con etiqueta "+hd" por ejemplo, sino nadie podrá acceder que no sea de ese grupo a ningún post.

Imagino que esto te debe funcionar:


Insertar CODE, HTML o PHP:
<vb:if condition="($onlygroup == TRUE) and is_member_of($bbuserinfo, 2,5,6,7,20,23,25) ">
Aviso
<vb:else />
Y antes del {vb:raw footer}
Insertar CODE, HTML o PHP:
</vb:if>

Y el plugin:


Insertar CODE, HTML o PHP:
if(stristr($thread[title], '+hd') == TRUE)
 { 
$onlygroup = TRUE;  
vB_Template::preRegister('SHOWTHREAD', array('onlygroup' => $onlygroup)); 
}


Creo que debería valer, personalizalo a tu gusto.

Saludos.
 

rarauz

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
31 Mar 2009
Mensajes
59
Bueno, pues después de hacer algunas pruebas y ponerlo a mi gusto, funciona perfectamente.

Muchas gracias !!!
 

Gorgias

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
19 Ene 2008
Mensajes
182
Buenas!

Por si a alguien le interesa filtrar en función de tiempos de antigüedad o desde la última visita, yo esto lo hago como cuenta a continuación, según quiera que sean más de X días de registro o menos de X días desde su última visita. El plugin es así:
Insertar CODE, HTML o PHP:
if(stristr($thread[title], '+pv') == TRUE){
    $filtropv = TRUE;
    $fechaunix = time ();
    vB_Template::preRegister('SHOWTHREAD', array(
        'filtropv' => $filtropv,
        'fechaunix' => $fechaunix));
    }
Por explicarlo un poco, por si alguien quiere trastear, lo que hago es crear la variable fechaunix, a la le doy el valor de la fecha actual en formato UNIX (el que usa vB para las fechas de registro, última visita, etc. Si alguien tiene curiosidad, la wikipedia informa). Después "meto" ambas variables en vBulletin con el array, y listo. A por la plantilla!!!

En la plantilla SHOWTHREAD pongo la condición, según lo que quiera hacer. Como en función del número de mensajes ya está puesto, pongo sólo las que están relacionadas con el tiempo. Justo tras {vb:raw navbar} se pone esto:
Insertar CODE, HTML o PHP:
<vb:if condition="($filtropv == TRUE) and (($fechaunix - $bbuserinfo[lastvisit])/86400 > 30)" >
Texto que verá el usuario que haga MÁS de 30 días que no entra a la página.
<vb:else />
Que no tiene mucho misterio :) Se resta la fecha de la última visita de la actual, y el resultado se convierte en días dividendo por 86400, que son los segundos que hay en un día. Y si el resultado es superior a 30, pues el usuario no puede ver el hilo. Y si es menor, pues lo ve.

O bien esto otro según el tiempo que lleve registrado:
Insertar CODE, HTML o PHP:
<vb:if condition="($filtropv == TRUE) and (($fechaunix - $bbuserinfo[joindate])/86400 < 30)" >
Texto que verá el usuario que lleve MENOS de 30 días registrado.
<vb:else />
Que es muy parecido a lo anterior. Aquí lo que resto a la fecha actual es la fecha de registro. Se convierte en días de la misma manera (división por 86400) y si el resultado es menor a 30 días, pues el usuario no ve el hilo. Y si es superior, lo ve.

Y luego el cierre de la condición, que como ya se ha dicho va justo antes de {vb:raw footer}:
Insertar CODE, HTML o PHP:
</vb:if>

El motivo de hacerlo así fue simplemente que no me gusta tener grupos de usuario en exceso, que luego es un cisco para dar permisos (o igual es una manía personal. Es lo que peor llevo de vBulletin, el sistema de permisos). En fin, eso, otra opción a usar promociones de grupos de usuarios, fácil y para toda la familia :D

Y ya puestos, he probado a meter varios filtros a la vez, por eso de no andar creando plugins de más ni nada, de modo que lo que habría que cambiar es la primera línea del plugin, que pasaría a ser así:
Insertar CODE, HTML o PHP:
if((stristr($thread[title], '+pv') || stristr($thread[title], '+18')) == TRUE){
Esto vigilaría si en el título están las partículas "+pv" o "+vip". Añadir más, es cuestión de copiar y pegar (ojo que hay mucho paréntesis). El resto del plugin y de ediciones de la plantilla, se podría quedar igual ;)

Creo que con esto queda más que apañado todo lo relacionado con filtros en los títulos de los hilos (H)

Un saludo, Gorgias.
 

imported_Arcade Fire

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
14 Jun 2008
Mensajes
102
Muy bueno Gorgias, muchas gracias por esta pequeña lección.

Lo único que nunca he conseguido es el plugin +prv de frocoches:

+prv
* Especial temas que por sus características o contenidos requieran un acceso restringido a usuarios con poca actividad o registrados en fecha posterior a la creación del tema.

Requisitos de acceso (todos necesarios):
- Usuarios registrados al menos 90 dias (3 meses) antes respecto la fecha y hora de creación del tema.
(ejemplo: para acceder a un tema +prv creado el 15 de octubre, es necesario estar registrado antes del 15 de julio).
- Más de 100 mensajes.
En rojo a lo que me refiero.

¿Sabrías como hacerlo?

Saludos y gracias de nuevo.
 

Gorgias

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
19 Ene 2008
Mensajes
182
Lo único que nunca he conseguido es el plugin +prv de frocoches:

En rojo a lo que me refiero.

¿Sabrías como hacerlo?

Saludos y gracias de nuevo.
Pues no lo había hecho nunca, pero me he puesto un rato a trastear y probar y funciona (aunque tampoco he probado mucho y a fondo, pero creo que está todo bien). Así que aquí va. El plugin no hace falta cambiarlo (no se usa la variable fechaunix que usé antes, pero lo demás es válido), y la condición quedaría así:
Insertar CODE, HTML o PHP:
<vb:if condition="($filtrotitulo == TRUE) and (($post[dateline] - $bbuserinfo[joindate])/86400 < 30)" >
El usuario NO ve el hilo y sólo le aparece este mensaje porque está registrado MENOS DE 30 días antes de que se creara el hilo.
<vb:else />
Y si no, pues lo ve.
</vb:if>
Esa condición toma el valor de creación del hilo ($post[dateline]), el del registro del usuario ($bbuserinfo[joindate]) y los resta. La explicación a lo bruto:
Hilo creado el día 50 y usuario registrado el día 60. La resta es 50-60 = -10. Al ser el resultado MENOR que 30, el usuario no ve el hilo.
Hilo creado el día 50 y usuario registrado el día 30. En este caso, 50-30 = 20. Sigue siendo MENOR que 30, y sigue sin ver el hilo.
Hilo creado el día 50 y usuario registrado el día 10. Bien, pues 50-10= 40. Como es MAYOR que 30, vualá, ahora sí que ve el hilo.


No es la explicación más científica y exacta, pero creo que para entender le funcionamiento de la condición ya sirve, que es lo que importa :) Si quieres cambiar el número de días, es cuestión de cambiar el 30 de la condición por el número de días que quieras poner, y a correr.

De todos modos, esto es lo que se me ha ocurrido a mi, pero no sé si Electrik lo habrá hecho igual. Y vuelvo a repetir que es algo recién hecho, así que antes de nada, prueba para comprobar, y ya dirás si funciona o no (para dejarlo como válido o buscar la forma de arreglarlo). Pero igual hasta me animo a usarlo yo también, que puede ser útil para cosillas, sí.

Un saludo!!!
 
Arriba