1. IMPORTANT : Nouvelles mesures de sécurité - 2. Règles pour obtenir de l'aide dans les forums de support - 3. Restrictions des droits pour le groupe "Support suspendu"

Il est obligatoire de respecter les Règles de MyBB.fr : Version abrégée ou Version complète pour obtenir du support sur nos forums.

Les membres ayant un site/forum contrevenant aux règles de MyBB.support seront placés dans le groupe "Support suspendu" et ne bénéficieront plus du support du staff. Nous recommandons aux autres membres d'agir de même. Il ne s'agit pas d'un bannissement, le membre retrouvera son statut "normal" dès que sa situation sera conforme aux règles.

Nouveau : un Wiki en français : plus de détails.
Avant de soumettre votre problème, consultez-le, ainsi que la FAQ, sans oublier le moteur de recherche interne.


Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Liaison WordPress/Mybb (Fatal error: Cannot redeclare)
Mots-clés » liaison, wordpressmybb, fatal, error, cannot, redeclare
08-08-2012, 13:18, (Modification du message : 08-08-2012, 13:46 par John79.)
#1
Liaison WordPress/Mybb (Fatal error: Cannot redeclare)
Bonjour à tous !

J'ai fait une recherche avant de poster et je n'ai rien trouvé de concluant.

Rentrons tout de suite dans le vif du sujet : Je possède un site WordPress et un forum Mybb. J'ai voulu créer une page nécessitant les sessions de MyBB mais utilisant le design de WordPress.
Sur ma page, il y a donc ces deux codes :

Code :
require('../wp-load.php');
include('/public_html/wp-content/themes/leetpress/header.php');

Code :
define("IN_MYBB", 1);
define('THIS_SCRIPT', 'avantages.php');
require_once "../forum/global.php";

Le problème est le suivant : Une erreur se crée :

Citation :Fatal error: Cannot redeclare get_attachment_icon() (previously declared in /public_html/wp-includes/deprecated.php:1966) in /public_html/forum/inc/functions.php on line 3111

J'ai donc bien compris que WordPress et Mybb avaient des fonctions utilisant le même nom, mais malheureusement, je ne suis pas un expert en php... J'ai donc fait quelques recherches, puis j'ai fini par trouvé quelque chose qui me paraissait bon sur le forum mybb italien, disant de faire ceci :
Code :
if(!function_exists('get_attachment_icon'))
{
  function get_attachment_icon($ext)
   {
      tutto il bla bla bla
   }
}

Voici donc mon code actuel :

Code :
if(!function_exists('get_attachment_icon'))
{
function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) {
    _deprecated_function( __FUNCTION__, '2.5', 'wp_get_attachment_image()' );
    $id = (int) $id;
    if ( !$post = & get_post($id) )
        return false;

    if ( !$src = get_attachment_icon_src( $post->ID, $fullsize ) )
        return false;

    list($src, $src_file) = $src;

    // Do we need to constrain the image?
    if ( ($max_dims = apply_filters('attachment_max_dims', $max_dims)) && file_exists($src_file) ) {

        $imagesize = getimagesize($src_file);

        if (($imagesize[0] > $max_dims[0]) || $imagesize[1] > $max_dims[1] ) {
            $actual_aspect = $imagesize[0] / $imagesize[1];
            $desired_aspect = $max_dims[0] / $max_dims[1];

            if ( $actual_aspect >= $desired_aspect ) {
                $height = $actual_aspect * $max_dims[0];
                $constraint = "width='{$max_dims[0]}' ";
                $post->iconsize = array($max_dims[0], $height);
            } else {
                $width = $max_dims[1] / $actual_aspect;
                $constraint = "height='{$max_dims[1]}' ";
                $post->iconsize = array($width, $max_dims[1]);
            }
        } else {
            $post->iconsize = array($imagesize[0], $imagesize[1]);
            $constraint = '';
        }
    } else {
        $constraint = '';
    }

    $post_title = esc_attr($post->post_title);

    $icon = "<img src='$src' title='$post_title' alt='$post_title' $constraint/>";

    return apply_filters( 'attachment_icon', $icon, $post->ID );
}
}
else
{
function get_attachment_icon($ext)
{
    global $cache, $attachtypes, $theme;

    if(!$attachtypes)
    {
        $attachtypes = $cache->read("attachtypes");
    }

    $ext = my_strtolower($ext);

    if($attachtypes[$ext]['icon'])
    {
        if(defined("IN_ADMINCP"))
        {
            $icon = str_replace("{theme}", "", $attachtypes[$ext]['icon']);
            if(my_substr($icon, 0, 1) != "/" && my_substr($icon, 0, 7) != "http://")
            {
                $icon = "../".$icon;
            }
        }
        elseif(defined("IN_PORTAL"))
        {
            global $change_dir;
            $icon = $change_dir."/".str_replace("{theme}", $theme['imgdir'], $attachtypes[$ext]['icon']);
        }
        else
        {
            $icon = str_replace("{theme}", $theme['imgdir'], $attachtypes[$ext]['icon']);
        }
        return "<img src=\"{$icon}\" border=\"0\" alt=\".{$ext}\" />";
    }
    else
    {
        if(defined("IN_ADMINCP"))
        {
            $theme['imgdir'] = "../images";
        }
        else if(defined("IN_PORTAL"))
        {
            global $change_dir;
            $theme['imgdir'] = "{$change_dir}/images";
        }
        
        return "<img src=\"{$theme['imgdir']}/attachtypes/unknown.gif\" border=\"0\" alt=\".{$ext}\" />";
    }
}
}
(J'ai mis dans la première parti le code utilisé par WordPress, dans la seconde (après le else), celui utilisé par Mybb.

Ca a donc tout d'abord fonctionné. Une autre erreur est apparu, j'ai répété l'opération. Jusqu'à ce que je revienne au début ! Donc en gros, le code de l'italien ne m'a servit a rien ^^

Si quelqu'un à une idée à me proposer, je suis preneur Smile

Merci d'avance !

Edit:
URL de la page http://land-of-craft.fr/avantages/
Version MyBB : 1.6.8
Version WordPress : 3.4.1

Edit2 : Surtout que cette technique ne fonctionne qu'à moitié, car la page d'index du forum et les sous forum s'affichent correctement, mais pas les sujets (erreur d'une fonction appelée)
Répondre
19-08-2012, 12:31,
#2
RE: Liaison WordPress/Mybb (Fatal error: Cannot redeclare)
Personne n'a d'idée ? Sad
Répondre
19-08-2012, 13:35,
#3
RE: Liaison WordPress/Mybb (Fatal error: Cannot redeclare)
Les 2 fonctions ont certainement du code différent pour WP et MyBB, elles ne sont pas mutuellement remplaçable. Il faudra donc éliminer une des deux fonctions, préférablement celle qui ne sera pas utilisée. J'imagine que ce devrait être celle de WP qui sera supprimée, pour cela il faudra contrôler les insertions faites par "wp-load.php". Wink


Administrateur de MyBBCodes.com
Cool " Ce n'est pas ce que vous savez qui est important, c'est ce que vous faites ou ne faites pas!"
Obtenez plus de 175 plugins pour MyBB ici...
~~ AUCUNE AIDE Par MP, MAIL OU MSN !!!~~
Répondre
21-08-2012, 13:30, (Modification du message : 21-08-2012, 13:32 par John79.)
#4
RE: Liaison WordPress/Mybb (Fatal error: Cannot redeclare)
Salut

Je comprends l'idée, mais comment est-ce que je pourrais m'y prendre ?
Répondre
21-08-2012, 15:01,
#5
RE: Liaison WordPress/Mybb (Fatal error: Cannot redeclare)
Je suggère de copier les lignes essentielles contenues dans le fichier "wp-load.php" plutôt que de l'insérer en bloc avec une commande comme "require('../wp-load.php');".

Ceci pourra éliminer la section chargeant la fonction "get_attachment_icon" de WP qui est problématique ...

Administrateur de MyBBCodes.com
Cool " Ce n'est pas ce que vous savez qui est important, c'est ce que vous faites ou ne faites pas!"
Obtenez plus de 175 plugins pour MyBB ici...
~~ AUCUNE AIDE Par MP, MAIL OU MSN !!!~~
Répondre
21-08-2012, 18:25,
#6
RE: Liaison WordPress/Mybb (Fatal error: Cannot redeclare)
Je viens d'essayer ceci (à noter que je m'y suis peut-être mal pris) mais je n'ai pas vraiment réussi... Tous les fichiers sont liés, j'ai donc renommé plusieurs fichiers en "nom2.php", histoire de tester puis j'ai supprimé la fonction gênante, mais au bout de la seconde, ça m'affichait une autre erreur jusqu'alors inconnue au bataillon...

Je vais chercher plus du côté de chez WordPress pour savoir s'il n'y a pas moyen d'appeler uniquement le header et le footer.

Si jamais tu as d'autres idées, je suis toujours preneurs, mais merci de ton aide déjà Smile
Répondre




Utilisateur(s) parcourant ce sujet : 3 visiteur(s)

Contact | MyBB.support | Retourner en haut | Retourner au contenu | Version bas-débit (Archivé) | Syndication RSS
 Utilitaire de traduction fourni par Regentronique