Christian KAKESA

Aller au contenu | Aller au menu | Aller à la recherche

mardi 25 septembre 2007

Installer des plugins dotclear 1.2.7 sans "allow_url_fopen"

J'héberge actuellement mon blog sur une une plateforme ne permettant pas l'utilisation de "fopen" avec une url distante, J'ai voulu me lancer dans l'écriture d'une alternative utilisant un client http (curl) ou les sockets, j'ai assez vite trouvé une fonction permettantde récupérer des données en http.
Pour faire simple voici la manip à suivre :
  • Editer le fichier à la racine de dotclear "inc/libs/lib.files.php"
  • Trouver la ligne
    # Copier d'un fichier binaire distant
    function copyRemote($src,$dest)

    Chez moi la ligne 157
  • Supprimer cette fonction. Pour les développeurs modifier la fonction. ajouter les deux suivantes
  • Inserer ces deux fonctions juste en dessous comme ci-après
        # Copier d'un fichier binaire distant
	function copyRemote($src,$dest)
	{
		if (($fp1 = @fopen($src,'r')) === false)
		{
			//return __('An error occured while downloading the file.');
			files::copyRemote2($src,$dest);
		}
		else
		{
			if (($fp2 = @fopen($dest,'w')) === false)
			{
				fclose($fp1);
				return __('An error occured while writing the file.');
			}
			else
			{
				while (($buffer = fgetc($fp1)) !== false) {
					fwrite($fp2,$buffer);
				}
				fclose($fp1);
				fclose($fp2);
				return true;
			}
		}
	}

	function copyRemote2($src,$dest)
	{
		$buffer = files::httpGet($src);
		if (($fp = @fopen($dest,'w')) === false)
		{
			return __('An error occured while writing the file.');
		}
		else
		{
			fwrite($fp, $buffer);
			fclose($fp);
			return true;
		}
	}
	
	function httpGet($url)
	{
		$url_stuff = parse_url($url);
		$port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;
		
		$fp = fsockopen($url_stuff['host'], $port);
		
		$query  = 'GET ' . $url_stuff['path'] . " HTTP/1.0\n";
		$query .= 'Host: ' . $url_stuff['host'];
		$query .= "\n\n";
		
		fwrite($fp, $query);
		
		while ($tmp = fread($fp, 1024))
		{
			$buffer .= $tmp;
		}
		
		preg_match('/Content-Length: ([0-9]+)/', $buffer, $parts);
		if (!($parts[1] > 0))
			return __('An error occured while downloading the file.');

		return substr($buffer, - $parts[1]);
	}

Avec ceci je peux installer un plugins via l'installeur sans problème.
Si vous rencontrez des soucis n'hésitez pas à émettre vos commentaires sur ce billet.

samedi 26 novembre 2005

Algorithme Phonex en PHP4

Cette algorithme réécrit en php4, sur l'algo de FREDERIC BROUARD : http://sqlpro.developpez.com/cours/soundex, permet de retrouver des chaînes de caractères avec une valeur phonétiques (phonex) proches. Cela peut éviter par exemple la saisie de doublon dans une application...

Si j'ai un peu de temps je compte rajouter le Soundex2 dans cette classe et porter le tout sous PHP5.

Voici le code PHP4...

Read next

mercredi 20 juillet 2005

MyDVD :: Gestionnaire de vidéos personnelles

MyDVD est application de type Web utilisant les technologies PHP5/MySQL (AdoDB). L’application permet la gestion d’une vidéothèque personnelle gérant différent formats de vidéos dont les DVD, DivX, VCD/SVCD, VHS/SVHS et bien d’autres selon les futurs formats à venir.

Read next

mardi 12 juillet 2005

KCM Office.fr

eCommerce basé sur osCommerce.
Le travail sur osCommerce (PHP/MySQL) consistait dans un premier temps à intégré une charte graphique qui corresponde aux couleurs de la société et ensuite modifier la base de donnée pour y intégré les données venant du distributeur Ingram Micro.

Read next

CongoPro

CongoPro est un service gratuit d'annuaire qui recense les professionnels basés à la République Démocratique du CONGO. L'annuaire permet une gestion des professionnels à l'échelle africaine voir mondiale.

Le lien vers l'annuaire en production

Read next