siren = $siren; if ( $db === null ) { $this->iDb = new Metier_Util_Db(); } else { $this->iDb = $db; } } /** * Libellé de la source * * @param string $source * @return string */ public function getLibSource($code) { switch ($code) { 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 boolean */ public 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 * @return string */ public 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 string $siren * @param integer $id * @return array */ public 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 string $siren * @return array */ public function getInfosBourse($siren=false) { if (!$siren) { $siren = $this->siren; } $isin = $this->getCodeIsin($siren); $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); if (count($tabRes) > 0) { $tabRet = $tabRes[0]; $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); if (count($tabRes) > 0) { $tabTmp = $tabRes[0]; $tabRet['coursMin'] = $tabTmp['coursMin']; $tabRet['coursMoy'] = $tabTmp['coursMoy']; $tabRet['coursMax'] = $tabTmp['coursMax']; } } } return $tabRet; } }