usr_i18n.".php") ) { require(GV_RootPath."config/help_".$session->usr_i18n.".php") ; } elseif( file_exists(GV_RootPath.'config/help.php') )// on verifie si il y a une home personnalisee sans langage { require(GV_RootPath.'config/help.php') ; } else { require(GV_RootPath.'www/client/help.php') ; } } if($type == 'PUBLI') { $conn = connection::getInstance(); if($context == 'prod') require(GV_RootPath."www/prod/homeinterpubbask.php") ; else require(GV_RootPath."www/client/homeinterpubbask.php") ; } if(in_array($type, array('QUERY', 'LAST_QUERY'))) { $context = in_array($context,array('client','prod')) ? $context : 'prod'; $parm = array(); $bas = array(); $searchSet = json_decode(user::getPrefs('search')); if($searchSet && isset($searchSet->bases)) { foreach($searchSet->bases as $bases) $bas = array_merge($bas, $bases); } else { $lb = phrasea_open_session($session->ses_id,$session->usr_id); foreach($lb['bases'] as $base) foreach($base['collections'] as $coll) $bas[] = $coll['base_id']; } $start_page_query = user::getPrefs('start_page_query'); if($context == "prod") { $parm["bas"] = $bas; $parm["qry"] = $start_page_query; $parm["pag"] = 0; $parm["sel"] = ''; $parm["ord"] = null; $parm["search_type"] = 0; $parm["recordtype"] = ''; $parm["status"] = array(); $parm["fields"] = array(); $parm["datemin"] = ''; $parm["datemax"] = ''; $parm["datefield"] = ''; } if($context == "client") { $parm["mod"] = user::getPrefs('client_view'); $parm["bas"] = $bas; $parm["qry"] = $start_page_query; $parm["pag"] = ''; $parm["search_type"] = 0; $parm["qryAdv"] = ''; $parm["opAdv"] = array(); $parm["status"] = ''; $parm["nba"] = ''; $parm["datemin"] = ''; $parm["datemax"] = ''; $parm["dateminfield"] = array(); $parm["datemaxfield"] = array(); $parm["infield"] = ''; $parm["regroup"] = null; $parm["ord"] = 0; } require(GV_RootPath.'www/'.$context."/answer.php") ; } return; } public static function sbas_params() { if(self::$_sbas_params) return self::$_sbas_params; self::$_sbas_params = array(); $conn = connection::getInstance(); $sql = 'SELECT sbas_id, host, port, user, pwd, dbname FROM sbas';// WHERE sbas_id="'.$conn->escape_string($name).'"'; if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs)) { self::$_sbas_params[$row['sbas_id']] = $row; } } return self::$_sbas_params; } public static function guest_allowed() { $conn = connection::getInstance(); $ret = false; $sql = 'SELECT basusr.* FROM basusr, bas, usr WHERE usr.usr_login="invite" AND bas.active="1" AND basusr.actif="1" AND basusr.base_id = bas.base_id AND usr.usr_id=basusr.usr_id'; if($rs = $conn->query($sql)) { if($conn->num_rows($rs) > 0) $ret = true; $conn->free_result($rs); } return $ret; } public static function load_events() { $events = eventsmanager::getInstance(); $events->start(); } public static function use_i18n($locale = false, $textdomain = 'phraseanet') { $session = session::getInstance(); $codeset = "UTF8"; $default = 'en_GB'; if(defined('GV_default_lng')) $default = GV_default_lng; if(!$locale) $locale = isset($session->locale) ? $session->locale : $default; putenv('LANG='.$locale.'.'.$codeset); putenv('LANGUAGE='.$locale.'.'.$codeset); bind_textdomain_codeset($textdomain, $codeset); bindtextdomain($textdomain, dirname( __FILE__ ).'/../../locale/'); setlocale(LC_ALL, $locale.'.'.$codeset); textdomain($textdomain); } public static function modulesName($array_modules) { $array = array(); $modules = array( 1 => _('admin::monitor: module production'), 2 => _('admin::monitor: module client'), 3 => _('admin::monitor: module admin'), 4 => _('admin::monitor: module report'), 5 => _('admin::monitor: module thesaurus'), 6 => _('admin::monitor: module comparateur'), 7 => _('admin::monitor: module validation'), 8 => _('admin::monitor: module upload') ); foreach($array_modules as $a) { if(isset($modules[$a])) $array[] = $modules[$a]; } return $array; } public static function bases() { if(!self::$_bases) { $cache = cache_appbox::getInstance(); if(($tmp = $cache->get('list_bases')) != false) { self::$_bases = $tmp; } else { self::$_bases = phrasea_list_bases(); $cache->set('list_bases', self::$_bases); } } return self::$_bases; } public static function sbasFromBas($base_id) { if(!self::$_bas2sbas) { $cache = cache_appbox::getInstance(); if(($tmp = $cache->get('sbas_from_bas')) != false) { self::$_bas2sbas = $tmp; } else { $bases = self::bases(); foreach($bases['bases'] as $base) foreach($base['collections'] as $coll) self::$_bas2sbas[$coll['base_id']] = $base['sbas_id']; $cache->set('sbas_from_bas', self::$_bas2sbas); } } return isset(self::$_bas2sbas[$base_id]) ? self::$_bas2sbas[$base_id] : false; } public static function baseFromColl($sbas_id, $coll_id) { if(!self::$_coll2bas) { $bases = self::bases(); foreach($bases['bases'] as $base) { if(!isset(self::$_coll2bas[$base['sbas_id']])) self::$_coll2bas[$base['sbas_id']] = array(); foreach($base['collections'] as $coll) self::$_coll2bas[$base['sbas_id']][$coll['coll_id']] = $coll['base_id']; } } return isset(self::$_coll2bas[$sbas_id][$coll_id]) ? self::$_coll2bas[$sbas_id][$coll_id] : false; } public static function collFromBas($base_id) { if(!self::$_bas2coll) { $bases = self::bases(); foreach($bases['bases'] as $base) { foreach($base['collections'] as $coll) self::$_bas2coll[$coll['base_id']] = $coll['coll_id']; } } return isset(self::$_bas2coll[$base_id]) ? self::$_bas2coll[$base_id] : false; } public static function sbas_names($sbas_id) { if(!self::$_sbas_names) { $cache = cache_appbox::getInstance(); if(($tmp = $cache->get('sbas_names')) != false) { self::$_sbas_names = $tmp; } else { $bases = self::bases(); foreach($bases['bases'] as $base) self::$_sbas_names[$base['sbas_id']] = $base['viewname']; $cache->set('sbas_names', self::$_sbas_names); } } return isset(self::$_sbas_names[$sbas_id]) ? self::$_sbas_names[$sbas_id] : 'Unknown base'; } public static function bas_names($base_id) { if(!self::$_bas_names) { $cache = cache_appbox::getInstance(); if(($tmp = $cache->get('bas_names')) != false) { self::$_bas_names = $tmp; } else { $bases = self::bases(); foreach($bases['bases'] as $base) foreach($base['collections'] as $coll) self::$_bas_names[$coll['base_id']] = $coll['name']; $cache->set('bas_names', self::$_bas_names); } } return isset(self::$_bas_names[$base_id]) ? self::$_bas_names[$base_id] : 'Unknown collection'; } public static function getBasesOrder() { $ret = array(); $conn = connection::getInstance(); $sql = 'SELECT b.base_id, b.sbas_id, b.server_coll_id FROM bas b, sbas s WHERE b.sbas_id = s.sbas_id ORDER BY s.ord ASC, b.ord ASC, b.server_coll_id ASC'; if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs)) { $ret[$row['base_id']] = array('base_id'=>$row['base_id'],'sbas_id'=>$row['sbas_id'],'server_coll_id'=>$row['server_coll_id']); } $conn->free_result($rs); } return $ret; } public static function headers($code = 200,$nocache=false) { switch((int)$code) { case 204: case 403: case 404: case 400: case 500: $request = httpRequest::getInstance(); $request->set_code($code); include(dirname( __FILE__ ) . '/../../www/include/error.php'); die(); break; case 200: if($nocache) { header("Content-Type: text/xml; charset=UTF-8"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // HTTP/1.0 } header("Content-Type: text/html; charset=UTF-8"); echo ''; break; } return; } public static function write_connection($host,$port,$usr,$pwd,$db) { $EOL = "\n"; $connexionINI = 'get('bases_settings_'.$locale)) != false) { return $basesettings; } if(!$basesettings) { $basesettings = array("bases"=>array(), "colls"=>array(), "xsltinfo"=>null); $xml = new DomDocument(); if($xml->load(GV_RootPath . "www/skins/lng/".$locale."_docinfo.xsl")) { $basesettings["xsltinfo"] = $xml->saveXML(); } $lb = self::bases(); foreach($lb["bases"] as $base) { $connbas = connection::getInstance($base['sbas_id']); if(!$connbas) continue; $structure = false; if($rs = $connbas->query('SELECT value FROM pref WHERE prop="structure"')) { if($row = $connbas->fetch_assoc($rs)) $structure = trim($row['value']); $connbas->free_result($rs); } if(!$structure) continue; $sbas_id = $base["sbas_id"]; $basesettings["bases"][$sbas_id] = array(); $zxmlbase = answer::getXslRollOver2($structure, "PRODUCTION_grid", $i18n_code); $homelink_xsl = answer::getXslRollOver2($structure, "homelink", $i18n_code); $xmlbase = answer::getXslRollOver2Grp($structure, "PRODUCTION_grid", $i18n_code); $basesettings["bases"][$sbas_id]["xsl_title"] = false; $basesettings["bases"][$sbas_id]["structure"] = $structure; if($sxe = simplexml_load_string($structure)) { $array_fields = array(); foreach($sxe->description->children() as $fldname=>$fld) { if($fld["thumbTitle"]=="1" || mb_strtolower($fld["thumbTitle"])==mb_strtolower($i18n_code)) { $array_fields[] = $fldname; } } if(count($array_fields) > 0 ) { $default_xml = ' '; $array_xml = array(); $idxTitle = 0; foreach($array_fields as $fldname) { $array_xml[] = ' '.($idxTitle++?' - ':'').' '; } $default_xml .= implode('',$array_xml); $default_xml .= ' '; if($xml->loadXML($default_xml)) { $basesettings["bases"][$sbas_id]["defaultxml"] = false; $basesettings["bases"][$sbas_id]["xsl_title"] = $default_xml; } } } if(!$basesettings["bases"][$sbas_id]["xsl_title"]) { $default_xml = '' . '' . '' . '' . '' . '' . '' . '' . ''; if($xml->loadXML($default_xml)) { $basesettings["bases"][$sbas_id]["defaultxml"] = true; $basesettings["bases"][$sbas_id]["xsl_title"] = $default_xml; } } foreach($base["collections"] as $coll) { $base_id = $coll["base_id"]; $basesettings["colls"][$base_id] = array("sbas_id"=>$sbas_id, "prefs"=>$coll["prefs"]); $zxmlcoll = answer::getXslRollOver2($basesettings["colls"][$base_id]["prefs"], "PRODUCTION_grid", $i18n_code); // prefs de collection non (encore) connues : on essaye de charger $basesettings["colls"][$base_id]["xsltRollOver"] = null; $xml = new DomDocument(); if(trim($zxmlcoll) !== '' && $xml->loadXML($zxmlcoll)) { $basesettings["colls"][$base_id]["xsltRollOver"] = $zxmlcoll; } elseif(trim($zxmlbase) !== '' && $xml->loadXML($zxmlbase)) { $basesettings["colls"][$base_id]["xsltRollOver"] = $zxmlbase; } else { $xsl = '
:
:
;
'; if($xml->loadXML($xsl)) { $basesettings["colls"][$base_id]["xsltRollOver"] = $xsl; } } if(trim($homelink_xsl) !== '' && $xml->loadXML($homelink_xsl)) { $basesettings["colls"][$base_id]["xslthomelink"] = $homelink_xsl; } elseif(trim($zxmlbase) !== '' && $xml->loadXML($zxmlbase)) { $basesettings["colls"][$base_id]["xslthomelink"] = $basesettings["colls"][$base_id]["xsltRollOver"]; } // prefs de collection non (encore) connues : on essaye de charger $basesettings["colls"][$base_id]["xsltRollOverGrp"] = null; $xmlcoll = answer::getXslRollOver2Grp($basesettings["colls"][$base_id]["prefs"], "PRODUCTION_grid", $i18n_code); if(trim($xmlcoll) !== '' && $xml->loadXML($xmlcoll)) { $basesettings["colls"][$base_id]["xsltRollOverGrp"] = $xmlcoll; } elseif(trim($xmlbase) !== '' && $xml->loadXML($xmlbase)) { $basesettings["colls"][$base_id]["xsltRollOverGrp"] = $xmlbase; } else { $xslt = '
:
:
;
'; if($xml->loadXML($xslt)) { $basesettings["colls"][$base_id]["xsltRollOverGrp"] = $xslt; } } } } $appbox_memcache->set('bases_settings_'.$locale,$basesettings); self::$_basesettings = $basesettings; } return $basesettings; } public static function scheduler_key($renew = false) { $conn = connection::getInstance(); $schedulerkey = false; $sql = 'SELECT schedulerkey FROM sitepreff'; if(($rs = $conn->query($sql))) { if($row = $conn->fetch_assoc($rs)) { $schedulerkey = $row['schedulerkey']; } $conn->free_result($rs); } if($renew === true || trim($schedulerkey) == '') { $schedulerkey = random::generatePassword(20); $sql = 'UPDATE sitepreff SET schedulerkey="'.$conn->escape_string($schedulerkey).'"'; $conn->query($sql); } return $schedulerkey; } }