siren = $siren; if ( $db === null ) { $this->iDb = new WDB(); } else { $this->iDb = $db; } } public function getLibSource($source) { switch ($source) { case 'B': return 'Business Wire'; break; case 'H': return 'Hugin'; break; case 'A': return 'ActusNews'; break; case 'D': return 'DiRelease'; break; case 'E': return 'Les Echos'; break; default: return 'N/C'; break; } } /** Vérifie la validité de la structure d'un code ISIN ** ** @param string $isin ** @return bool **/ function isIsin($isin) { if (strlen(trim($isin))) { $cle = substr($isin, -1); $isinLeft = substr($isin, 0, strlen($isin)-1); $letter2number = array('A'=>10, 'B'=>11, 'C'=>12, 'D'=>13, 'E'=>14, 'F'=>15, 'G'=>16, 'H'=>17, 'I'=>18, 'J'=>19, 'K'=>20, 'L'=>21, 'M'=>22, 'N'=>23, 'O'=>24, 'P'=>25, 'Q'=>26, 'R'=>27, 'S'=>28, 'T'=>29, 'U'=>30, 'V'=>31, 'W'=>32, 'X'=>33, 'Y'=>34, 'Z'=>35); $isinConvertion = strtr($isinLeft, $letter2number); $sum = ''; $sumFinal = 0; for($i=0; $isiren; $tabTmp = $this->iDb->select('jo.infos_entrep', 'isin', "siren=$siren AND isin<>''", false, MYSQL_ASSOC); return trim(@$tabTmp[0]['isin']); } /** Obtenir le SIREN à partir d'un code ISIN ** ** @param string $isin Code ISIN ** @return integer **/ function getCodeSiren($isin) { $tabTmp = $this->iDb->select('jo.infos_entrep', 'siren', "isin='$isin' AND siren<>0", false, MYSQL_ASSOC); return trim($tabTmp[0]['siren']); } /** A partir d'un siren, récupère les informations règlementés ** ** @param integer $siren ** @param integer $id ** @return unknown **/ function getInfosReg($siren=false, $id=null) { if (!$siren) $siren = $this->siren; $isin = $this->getCodeIsin($siren); $tabRet=array(); if ($isin!='') { $sqlID = ''; if (null !== $id) { $sqlID=" AND id=$id "; } $bodacc = $this->iDb->select( 'presse.articles', 'id, companyName, companyIsin, companySiren, companyWebSite, pressReleaseDate, pressReleaseTitle, '. 'pressReleaseText, pressReleaseHtml, pressReleaseAttachments, pressReleaseUrl, source, dateInsert', "companyIsin='$isin' $sqlID ORDER BY pressReleaseDate DESC", true, MYSQL_ASSOC); if (count($bodacc)>0) { foreach ($bodacc as $k=>$ann) { if ($id) $tabRet[$k]=array( 'id'=>$ann['id'], 'source'=>$this->getLibSource($ann['source']), 'DateParution'=>$ann['pressReleaseDate'], 'raisonSociale'=>$ann['companyName'], 'titre'=>$ann['pressReleaseTitle'], 'communique'=>$ann['pressReleaseText'], 'communiqueHtml'=>$ann['pressReleaseHtml'], 'pj'=>$ann['pressReleaseAttachments'], 'url'=>$ann['pressReleaseUrl'], 'dateInsertionSD'=>$ann['dateInsert'], ); else $tabRet[$k]=array( 'id'=>$ann['id'], 'source'=>$this->getLibSource($ann['source']), 'DateParution'=>$ann['pressReleaseDate'], 'raisonSociale'=>$ann['companyName'], 'titre'=>$ann['pressReleaseTitle'], 'pj'=>$ann['pressReleaseAttachments'], 'url'=>$ann['pressReleaseUrl'], 'dateInsertionSD'=>$ann['dateInsert'], ); } } } return $tabRet; } /** A partir d'un siren, récupère les informations boursières ** ** @param integer $siren ** @return unknown **/ function getInfosBourse($siren=false) { global $timer; if (!$siren) $siren=$this->siren; $isin=$this->getCodeIsin($siren); $timer['infosBoursieres-getCodeIsin']=microtime(true); $tabRet=array(); if ($isin<>'') { $tabRes = $this->iDb->select( 'sdv1.bourse_isin b, sdv1.bourse_cours c', 'siren, raisonSociale, adresse, effectif, code_sicovam, code_mnemo, code_bloomberg, code_datastream, code_isin, logo, code_ric, '. 'dateIntroduction, dateDerAG, dateRadiation, autre_isin, eligibleSRD, eligiblePEA, nombreTitres, tel1, tel2, fax1, fax2, web, mail, '. 'marche, placeCotation, description, secteur, activite, activiteDet, dirigeants, actionnaires, chiffresTrim, '. 'c.autre, c.`date`, c.`heure`, c.`open` , c.`high` , c.`low` , c.`close` , c.`volume`', "code_isin='$isin' /*OR siren=$siren)*/ AND b.code_isin=c.isin AND c.autre IN('','e','f','g','m','s','u') ORDER BY c.`date` DESC, c.`heure` DESC LIMIT 0,1", false, MYSQL_ASSOC); $tabRet=$tabRes[0]; $timer['infosBoursieres-infosIsin']=microtime(true); $tabRes = $this->iDb->select('sdv1.bourse_cours', 'min(close) AS coursMin, avg(close) AS coursMoy, max(close) AS coursMax', "isin='$isin' GROUP BY isin", false, MYSQL_ASSOC); $tabTmp=$tabRes[0]; $tabRet['coursMin']=$tabTmp['coursMin']; $tabRet['coursMoy']=$tabTmp['coursMoy']; $tabRet['coursMax']=$tabTmp['coursMax']; $timer['infosBoursieres-derniersCours']=microtime(true); } return $tabRet; } }