Besoin d'aide php/joomla

Eléphanteau du PHP | 10 Messages

12 nov. 2013, 03:17

Bonjour à tous,

Je viens vers vous car j'aimerais savoir si il est possible de rendre compatible un composant joomla 2.5 vers 3.x. J'ai installer ce composant sur joomla 3.2 et j'obiens cette erreur.

Code : Tout sélectionner

Strict Standards: Declaration of PokersController::display() should be compatible with JControllerAdmin::display($cachable = false, $urlparams = Array) in /homepages/27/d293530020/htdocs/joomla3/administrator/components/com_poker/controller.php on line 11 Strict Standards: Only variables should be assigned by reference in /homepages/27/d293530020/htdocs/joomla3/administrator/components/com_poker/poker.php on line 19
Voici les lignes en questions:

Controller.php

<?php

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport('joomla.application.component.controller');

class PokersController extends JControllerAdmin
{
	/**
	 * Method to display the view
	 *
	 * @access	public
	 */
	function display()
	{
		$user = JFactory::getuser();
		$view = JRequest::getVar('view','pokers','get');
		
		$myusergrp	= array_values($user->groups);
		$user->gid	= $myusergrp[0];
			
		if ($user->gid == 6 AND $view == 'pokers')
		{
			JError::raiseWarning (500, JText::_('ERROR_MANAGE_SEASONS') );
			$this->setRedirect( 'index.php?option=com_poker&view=events', $msg );	
		}
		if ($user->gid == 6 AND $view == 'players')
		{
			// Get component params
			// can managers view the players list
			$params = &JComponentHelper::getParams( 'com_poker' );
			$manager_view_players = $params->get('manager_view_players');
			if ((!$manager_view_players) && (!empty($manager_view_players))) $manager_view_players = 1;
			
			if ( $manager_view_players == 0 )
			{
				JError::raiseWarning (500, JText::_('ERROR_VIEW_PLAYERS') );
				$this->setRedirect( 'index.php?option=com_poker&view=events', $msg );
				
			}
		}

		parent::display();
	}
	
	function __construct()
	{
		parent::__construct();

		// Register Extra tasks
		$this->registerTask( 'add'  , 	'edit' );
	}

	/**
	 * display the edit form
	 * @return void
	 */
	function edit()
	{
		JRequest::setVar( 'view', 'poker' );
		JRequest::setVar( 'layout', 'form' );
		JRequest::setVar( 'hidemainmenu', 1);

		parent::display();
	}

	/**
	 * save a record (and redirect to main page)
	 * @return void
	 */
	function save()
	{
		$model = $this->getModel('poker');

		if ($model->store($post)) {
			$msg = JText::_( 'CHANGES_SAVED' );
		} else {
			$msg = JText::_( 'ERROR_SAVING' );
		}

		// Check the table in so it can be edited.... we are done with it anyway
		$link = 'index.php?option=com_poker&view=pokers';
		$this->setRedirect($link, $msg);
	}

	/**
	 * remove record(s)
	 * @return void
	 */
	function remove()
	{
		$model = $this->getModel('poker');
		if(!$model->delete()) {
			$msg = JText::_( 'ERROR_DELETE_RECORDS' );
		} else {
			$msg = JText::_( 'RECORD_DELETED' );
		}

		$this->setRedirect( 'index.php?option=com_poker&view=pokers', $msg );
	}

	/**
	 * cancel editing a record
	 * @return void
	 */
	function cancel()
	{
		$msg = JText::_( 'OPERATION_CANCELLED' );
		$this->setRedirect( 'index.php?option=com_poker&view=pokers', $msg );
	}
}

Poker.php

	<?php
	if(!defined('DS')){
define('DS',DIRECTORY_SEPARATOR);
} 
// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

function pr() {
	echo '<pre>';
  print_r(func_get_args());
	echo '</pre>';
	exit;
} 

// Require the base controller
require_once( JPATH_COMPONENT.DS.'controller.php' );
require_once( JPATH_COMPONENT.DS.'controllers.php' );

$document =& JFactory::getDocument();
$document->addStyleSheet('components/com_poker/css/poker_icon.css');


// Require specific controller if requested
if($controller = JRequest::getWord('controller')) {
	$path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
	if (file_exists($path)) {
		require_once $path;
	} else {
		$controller = '';
	}
}

// Create the controller
$classname	= 'PokersController'.$controller;
$controller	= new $classname( );

// Perform the Request task
$controller->execute( JRequest::getVar( 'task' ) );

// Redirect if set by the controller
$controller->redirect();

ViPHP
ViPHP | 2577 Messages

12 nov. 2013, 09:50

A tout hazard, tu peux ajouter les paramètres facultatif dans ta fonction :
class PokersController extends JControllerAdmin
{
        /**
         * Method to display the view
         *
         * @access      public
         */
        function display($cachable = false, $urlparams = Array())  // ligne à modifier
...
Mais il faudrait connaitre Joombla pour savoir si ca a un impact.

Eléphanteau du PHP | 10 Messages

12 nov. 2013, 12:54

A tout hazard, tu peux ajouter les paramètres facultatif dans ta fonction :
class PokersController extends JControllerAdmin
{
        /**
         * Method to display the view
         *
         * @access      public
         */
        function display($cachable = false, $urlparams = Array())  // ligne à modifier
...
Mais il faudrait connaitre Joombla pour savoir si ca a un impact.
Merci de ta réponses, ça avance je n'ai plus l'erreur citée précédemment. Maintenant j'ai celle ci :


Parse error: syntax error, unexpected 'JFactory' (T_STRING), expecting variable (T_VARIABLE) or '$' in /homepages/27/d293530020/htdocs/joomla3/administrator/components/com_poker/poker.php on line 20

        <?php
        if(!defined('DS')){
define('DS',DIRECTORY_SEPARATOR);
}
// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

function pr() {
        echo '<pre>';
  print_r(func_get_args());
        echo '</pre>';
        exit;
}

// Require the base controller
require_once( JPATH_COMPONENT.DS.'controller.php' );
require_once( JPATH_COMPONENT.DS.'controllers.php' );

$document =$ JFactory::getDocument();
$document->addStyleSheet('components/com_poker/css/poker_icon.css');


// Require specific controller if requested
if($controller = JRequest::getWord('controller')) {
        $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
        if (file_exists($path)) {
                require_once $path;
        } else {
                $controller = '';
        }
}

// Create the controller
$classname      = 'PokersController'.$controller;
$controller     = new $classname( );

// Perform the Request task
$controller->execute( JRequest::getVar( 'task' ) );

// Redirect if set by the controller
$controller->redirect(); 

ViPHP
ViPHP | 2577 Messages

12 nov. 2013, 13:02

il y a un blanc entre le $ et JFactory
$document =$ JFactory::getDocument();

Eléphanteau du PHP | 10 Messages

12 nov. 2013, 13:08

il y a un blanc entre le $ et JFactory
$document =$ JFactory::getDocument();
Je pense que tout le code est à revoir car j'ai supprimer l'espace et j'obtiens ceci maintenant:


Notice: Undefined variable: JFactory in /homepages/27/d293530020/htdocs/joomla3/administrator/components/com_poker/poker.php on line 20

Fatal error: Class name must be a valid object or a string in /homepages/27/d293530020/htdocs/joomla3/administrator/components/com_poker/poker.php on line 20

ViPHP
ViPHP | 2577 Messages

12 nov. 2013, 14:19

enlève juste le $ devant JFactory, c'était pas le blanc en trop, mais le $.

Eléphanteau du PHP | 10 Messages

12 nov. 2013, 16:28

enlève juste le $ devant JFactory, c'était pas le blanc en trop, mais le $.

Effectivement je n'ai plus d'erreur mais j'obtiens une page blanche.

tartine
Invité n'ayant pas de compte PHPfrance

14 déc. 2013, 16:23

Bonjour,

Il y a des fonctions et/ou class qui ne sont plus utilisées depuis la version 3 de Joomla.
Par exemple :
JRequest::getVar() doit être remplacé par JFactory::getApplication()->input->get()

Il faut donc, dans un premier temps, remplacer toutes les fonctions qui sont
deprecated
par celles recommandées.

Il faut aussi passer en revue tout le code PHP pour trouver et remplacer judicieusement les différences entre la version 4 et la 5.3.
Je ne suis pas sûr qu'il faille enlever le $ après le = . Ne serait-ce pas plutôt un & (et commercial), dans ce cas il est possible qu'il faille le garder (référence). Tu peux aller voir là :
http://www.php.net/manual/fr/language.r ... whatdo.php

Voici un lien Joomla qui peu t'aider :
http://docs.joomla.org/Potential_backwa ... XMLElement

Bon courage