Clicky

[SOLVED] Error Joomla deprecated constructor function plgContent en PHP 7

PHP 7

Solución a errores de los plugins jw_allvideos y RichSnippetsVote

Desde que instalé el nuevo servidor con CentOS 7.2 y PHP 7 he estado recibiendo errores en los logs de sitios web en los que utilizo dos plugins de Joomla muy específicos.

Uno es el conocido AllVideos (de JoomlaWorks), que permite integrar fácilmente vídeos alojados en servicios populares como YouTube, Metacafe, Vimeo (y muchos más) en el interior de los artículos de Joomla (elementos de contenido). Además, permite reproducir casi cualquier tipo de archivo de vídeo/audio directamente desde el servidor o en un servidor remoto, que da una ventaja competitiva cuando se trata de contenido multimedia.

El otro es Rich Snippets Vote (de DeConf.com), un plugin para Joomla! que añade soporte de datos estructurados para los sistemas de votación de Joomla! y K2. Mediante el uso de este plugin, se puede mejorar el SEO de un sitio web y fortalecer la posición en los SERPs de la página web. Al mostrar datos estructurados en los resultados de búsqueda de Google, los enlaces del sitio web serán más atractivos para los usuarios.

Los errores aparecían de la siguiente manera:

[Wed Aug 17 13:56:42.461276 2016] [fcgid:warn] [pid 6732:tid 140586283689728] [client 163.172.29.81:41177] mod_fcgid: stderr: PHP Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; plgContentJw_allvideos has a deprecated constructor in /home/apanados35/public_html/plugins/content/jw_allvideos/jw_allvideos.php on line 18, referer: http://xn--apaados-6za.es/

[Wed Aug 17 13:56:42.461160 2016] [fcgid:warn] [pid 6732:tid 140586283689728] [client 163.172.29.81:41177] mod_fcgid: stderr: PHP Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; plgContentRichSnippetsVote has a deprecated constructor in /home/apanados35/public_html/plugins/content/richsnippetsvote/richsnippetsvote.php on line 13, referer: http://xn--apaados-6za.com/

Y las líneas del error eran respectivamente las siguientes:

function plgContentJw_allvideos( & $subject, $params ) {
parent::__construct( $subject, $params );

y

function plgContentRichSnippetsVote(& $subject, $params) {
parent::__construct($subject, $params);

A pesar de que comenté estos errores en los respectivos servicios de ayuda de los dos desarrolladores no me dieron ninguna solución, así que buscando en Internet he dado con ella para que los plugins trabajen sin errores con soporte PHP 7 en Joomla 3.6.2

Las líneas se deben dejar de la siguiente manera:

Para AllVideos en el archivo /plugins/content/jw_allvideos/jw_allvideos.php sobre la línea 18, buscar y comentar dos líneas consecutivas y añadir otras dos como en el siguiente ejemplo:

/* function plgContentJw_allvideos( & $subject, $params ) {
parent::__construct( $subject, $params ); */

function __construct(& $subject, $params) {
parent::__construct($subject, $params);

Para Rich Snippets Vote, en el archivo /plugins/content/richsnippetsvote/richsnippetsvote.php sobre la línea 13, buscar y comentar dos líneas consecutivas y añadir otras dos como en el siguiente ejemplo:

/* function plgContentRichSnippetsVote(& $subject, $params) {
parent::__construct($subject, $params); */

function __construct(& $subject, $params) {
parent::__construct($subject, $params);

En ambos casos se debe limpiar la cache de Joomla para que se recojan los cambios.

La solución la encontré en un foro de GitHub de mathiasverraes cuya entrada lleva por título wrong classname - deprecated in PHP7

¡¡ Espero os sirva de ayuda !!

Jesus_Caceres