2013-10-30 15:58:16 +00:00

115 lines
3.0 KiB
PHP

<?php
class Logo
{
protected $path = '';
protected $siren;
protected $isin = null;
protected $logoNom = '';
protected $logoSize = '';
public function __construct($siren, $isin = null)
{
$c = Zend_Registry::get('config');
$this->path = realpath($c->profil->path->data).'/logos';
$this->siren = $siren;
$this->isin = $isin;
}
public function affiche()
{
// Ne pas afficher le logo si il n'existe pas OU
// si le siren est à 0 OU si le siren est inférieur a 100
$logo = $this->exist($this->siren, $this->isin);
if ( $logo && (intval($this->siren)!=0 || intval($this->siren)>100) )
{
$tabTmp = @getimagesize($this->path.'/'.$logo);
$w = $tabTmp[0];
$h = $tabTmp[1];
if ($w > 350) {
$strSize = $this->redimage($this->path.'/'.$logo, 350, 150);
} else {
$strSize = '';
}
return '<img src="/fichier/logo/'.$logo.'" '.$strSize.'/>';
}
return '';
}
public function getFromUrl($siteWeb)
{
$img = false;
if (substr($siteWeb,-1)!='/') $siteWeb.='/';
try {
$client = new Zend_Http_Client($url);
$response = $client->request('GET');
$siteBody = $response->getBody();
} catch (Zend_Http_Client_Exception $e) {
}
if (preg_match('/<img(?:.*)src=(?:"|\')((?:.*)logo(?:.*)(?:gif|png|jpg|jpeg))/Ui', $siteBody, $matches)) {
$logo = trim(strtr($matches[1],'"\'',' '));
$urlLogo = $siteWeb.$logo;
$tmp = explode('.', basename($logo));
$ext = end($tmp);
try {
$client = new Zend_Http_Client($url);
$client->setStream();
$response = $client->request('GET');
if ( $response->isSuccessful() ) {
$img = $this->path.'/'.$this->siren.'.'.$ext;
copy($response->getStreamName(), $img);
chmod($img, 0755);
}
} catch (Zend_Http_Client_Exception $e) {}
}
return $img;
}
public function exist()
{
$img_ext = array('gif', 'png', 'jpg', 'jpeg');
$ext = '';
// Recherche le logo avec le siren
$locImg = $this->path.'/'.$this->siren;
foreach($img_ext as $extension){
if( file_exists($locImg.'.'.$extension) ) {
return $this->siren.'.'.$extension;
break;
}
}
// Recherche de logos avec le code isin
if(!empty($this->isin))
{
$locImg = $this->path.'/'.$this->isin;
foreach($img_ext as $extension) {
if( file_exists($locImg.'.'.$extension) ) {
return $this->isin.'.'.$extension;
break;
}
}
}
return false;
}
function redimage($img_src,$dst_w,$dst_h) {
// Lit les dimensions de l'image
$size = getimagesize($img_src);
$src_w = $size[0]; $src_h = $size[1];
// Teste les dimensions tenant dans la zone
$test_h = round(($dst_w / $src_w) * $src_h);
$test_w = round(($dst_h / $src_h) * $src_w);
// Si Height final non précisé (0)
if(!$dst_h) $dst_h = $test_h;
// Sinon si Width final non précisé (0)
elseif(!$dst_w) $dst_w = $test_w;
// Sinon teste quel redimensionnement tient dans la zone
elseif($test_h>$dst_h) $dst_w = $test_w;
else $dst_h = $test_h;
// Affiche les dimensions optimales
return "width=".$dst_w." height=".$dst_h;
}
}