Page 1 sur 1

Besoin d'aide php/joomla

Posté : 12 nov. 2013, 03:17
par randwic
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();

Re: Besoin d'aide php/joomla

Posté : 12 nov. 2013, 09:50
par Mazarini
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.

Re: Besoin d'aide php/joomla

Posté : 12 nov. 2013, 12:54
par randwic
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(); 

Re: Besoin d'aide php/joomla

Posté : 12 nov. 2013, 13:02
par Mazarini
il y a un blanc entre le $ et JFactory
$document =$ JFactory::getDocument();

Re: Besoin d'aide php/joomla

Posté : 12 nov. 2013, 13:08
par randwic
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

Re: Besoin d'aide php/joomla

Posté : 12 nov. 2013, 14:19
par Mazarini
enlève juste le $ devant JFactory, c'était pas le blanc en trop, mais le $.

Re: Besoin d'aide php/joomla

Posté : 12 nov. 2013, 16:28
par randwic
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.

Re: Besoin d'aide php/joomla

Posté : 14 déc. 2013, 16:23
par tartine
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