Intégration d'une librairie dans un plugin

flipflipflipflip Member
février 2014 modifié dans Entraide
Bonjour,

Je réalise un plugin dont le but est de parser des pages défini d'un site pour en extraire des données. Pour simplifier cette tâche je me base sur la lib simple_html_dom (http://simplehtmldom.sourceforge.net), le parse est lancé toute les nuits via une tâche cron sur le serveur. La tâche exécute le fichier plugins/priceParser/cron.php qui contient ça
<?php 
define('PLX_ROOT', '../../');
define('PLX_CORE', PLX_ROOT.'core/');
define('PLX_PLUGINS', PLX_ROOT.'plugins/');
include(PLX_ROOT.'config.php');
include(PLX_CORE.'lib/config.php');

# On verifie que PluXml est installé
if(!file_exists(path('XMLFILE_PARAMETERS'))) {
	header('Location: '.PLX_ROOT);
	exit;
}

# On inclut les librairies nécessaires
include(PLX_CORE.'lib/class.plx.glob.php');
include(PLX_CORE.'lib/class.plx.utils.php');
include(PLX_CORE.'lib/class.plx.motor.php');
include(PLX_CORE.'lib/class.plx.plugins.php');
include(PLX_PLUGINS.'/priceParser/lib/simple_html_dom.php');
include(PLX_PLUGINS.'/priceParser/priceParser.php');

$plxMotor = plxMotor::getInstance();
$priceParser = $plxMotor->plxPlugins->getInstance('priceParser');

$html = new simple_html_dom();
$requetes = $priceParser->getRequetes();

foreach($requetes as $k=>$v) {
	$html->load_file($v['url']);
	if($v['method'] == 'class') {
		 $sellingPrice = $html->find('#'.$v['item'], 0)->plaintext;
	} else {
		$sellingPrice = $html->find('.'.$v['item'], 0)->plaintext;
	}
}

$html->clear();
echo '---'.$sellingPrice.'<br>';

$priceParser->updateSearch();
?>

Pour ce cas j'obtient l'erreur
Fatal error: Call to a member function find() on a non-object in /xxxx/plugins/priceParser/lib/simple_html_dom.php on line 1129

Je réalise le même teste mais enlevant la partie pluxml
<?php
include('simple_html_dom.php');
 
$url = "http://www.monurl";
echo "parse de l'url ".$url."<br>";
$html = new simple_html_dom();
$html->load_file($url);
 
$e = $html->find('.price_wot', 0)->plaintext;
                                                                                                                                                          
$e = preg_replace('#[^0-9[,.]#u', '', $e);
echo $e;
?>

La ça marche, donc petit à petit je commente certaine partie de mon cron.php et je tombe sur la ligne qui pose problème :
$plxMotor = plxMotor::getInstance();

Après ça dépasse mes compétences :(

J'ai un string de l'array

Réponses

  • Tu l'appelles où cron.php ?
  • Bonjour,

    Il est prévue que je l'appel soit directement depuis l'url http://monsite/plugins/priceParser/cron.php ou alors en ligne de commande via php-cli.

    J'ai un string de l'array

  • J'ai trouvé.

    Dans le __construct de la class de mon plugin j'avais ça :
    public function __construct($default_lang) {
    		
    		parent::__construct($default_lang);
    
    		# droits pour accèder à la page config.php du plugin
    		$this->setConfigProfil(PROFIL_ADMIN);
    		
    		$this->setAdminProfil(PROFIL_ADMIN);
    		$this->setAdminMenu('priceParser', 1, 'Surveillance de prix');
    	}
    

    Et c'était la ligne parent::... qui posait problème.

    J'ai un string de l'array

Connectez-vous ou Inscrivez-vous pour répondre.