public static function showEditDatabase($params) { if (!\mod\user\Main::userIsLoggedIn() || (!\mod\user\Main::userBelongsToGroup('Admin') && !\mod\arkeogis\ArkeoGIS::isDatabaseOwner((int) $params['id'], \mod\user\Main::getUserId($_SESSION['login'])) || !$params['id'])) { return false; } $scaleTranslations = array('site' => 'Site', 'watershed' => 'Bassin versant', 'micro-region' => 'Micro-région', 'region' => 'Région', 'country' => 'Pays', 'europe' => 'Europe'); $databaseInfos = array(); $ret = ArkeoGIS::getFullDatabaseInfos((int) $params['id']); $smarty = \mod\smarty\Main::newSmarty(); $ret[0]['published'] = $ret[0]['published'] ? 1 : 0; $smarty->assign('infos', $ret[0]); $response = array('title' => \mod\lang\Main::ch_t('arkeogis', 'Edition of the base') . ' ' . $ret[0]['name'], 'content' => $smarty->fetch('arkeogis/databasesEdit')); $response['footer'] = '<input type="button" class="btn btn-primary" value="' . \mod\lang\Main::ch_t('arkeogis', 'Modifier') . '" onclick="editDatabase(' . $ret[0]['id'] . ')" />'; $response['footer'] .= '<input type="button" class="btn" value="' . \mod\lang\Main::ch_t('arkeogis', 'Fermer') . '" onclick="modalWin.hide()" />'; return $response; }
public static function getSiteInfos($siteId) { $strings = ArkeoGIS::load_strings(); $siteInfos = array(); $query = "SELECT si_name AS name, si_code AS code, ST_AsGeoJSON(si_geom) AS geom, si_centroid AS centroid, si_occupation AS occupation, to_char(si_creation, 'dd/mm/yyyy') AS creation, to_char(si_modification, 'dd/mm/yyyy') AS modification, si_city_name AS city_name, si_city_code AS city_code, da_name AS dbname, da_owner_id as author FROM ark_site AS si "; $query .= "LEFT JOIN ark_database AS da ON si.si_database_id=da.da_id "; $query .= "WHERE si.si_id=?"; $infos = \core\Core::$db->fetchAll($query, array($siteId)); if (sizeof($infos) > 1) { throw new \Exception("Multiple result found for a site id"); } else { if (sizeof($infos) < 1) { return NULL; } } $geom = json_decode($infos[0]['geom']); $siteInfos['database'] = $infos[0]['dbname']; $siteInfos['name'] = $infos[0]['name']; $siteInfos['code'] = $infos[0]['code']; $siteInfos['author'] = \mod\user\Main::getUserFullNameById($infos[0]['author']); $siteInfos['geom'] = $geom->coordinates; $siteInfos['centroid'] = $infos[0]['centroid']; $siteInfos['occupation'] = $infos[0]['occupation']; $siteInfos['creation'] = $infos[0]['creation']; $siteInfos['modification'] = $infos[0]['modification']; $siteInfos['city']['name'] = $infos[0]['city_name']; $siteInfos['city']['code'] = $infos[0]['city_code']; // Get site periods $query = "SELECT sp_id AS id, (SELECT node_path FROM ark_period WHERE pe_id=sp_period_start) AS period_start_path, (SELECT node_path FROM ark_period WHERE pe_id=sp_period_end) AS period_end_path, sp_period_isrange AS isrange, sp_knowledge_type AS knowledge, sp_comment AS comment, sp_bibliography AS bibliography FROM ark_site_period WHERE sp_site_id = ?"; $datas = array(); $caracs = array('realestate' => array(), 'production' => array(), 'furniture' => array(), 'landscape' => array()); foreach (\core\Core::$db->fetchAll($query, array($siteId)) as $pInfos) { $periodHash = md5($pInfos['period_start_path'] . $pInfos['period_end_path']); if (!isset($siteInfos['characteristics'][$periodHash])) { $datas['start'] = Arkeogis::node_path_to_array($pInfos['period_start_path'], $strings['period']); $datas['end'] = Arkeogis::node_path_to_array($pInfos['period_end_path'], $strings['period']); $datas['knowledge'] = $pInfos['knowledge']; $datas['comment'] = $pInfos['comment']; $datas['bibliography'] = $pInfos['bibliography']; $siteInfos['characteristics'][$periodHash]['datas'] = $datas; unset($datas); } $i = sizeof($periodHash); // Realestate $q = "SELECT node_path, sr_exceptional FROM ark_siteperiod_realestate LEFT JOIN ark_realestate ON ark_siteperiod_realestate.sr_realestate_id=ark_realestate.re_id WHERE ark_siteperiod_realestate.sr_site_period_id = ?"; foreach (\core\Core::$db->fetchAll($q, array($pInfos['id'])) as $carac) { $siteInfos['characteristics'][$periodHash]['caracs'][$i]['realestate'][] = array(Arkeogis::node_path_to_array($carac['node_path'], $strings['realestate']), $carac['sr_exceptional']); } // Production $q = "SELECT node_path, sp_exceptional FROM ark_siteperiod_production LEFT JOIN ark_production ON ark_siteperiod_production.sp_production_id=ark_production.pr_id WHERE ark_siteperiod_production.sp_site_period_id = ?"; foreach (\core\Core::$db->fetchAll($q, array($pInfos['id'])) as $carac) { $siteInfos['characteristics'][$periodHash]['caracs'][$i]['production'][] = array(Arkeogis::node_path_to_array($carac['node_path'], $strings['production']), $carac['sp_exceptional']); } // Furniture $q = "SELECT node_path, sf_exceptional FROM ark_siteperiod_furniture LEFT JOIN ark_furniture ON ark_siteperiod_furniture.sf_furniture_id=ark_furniture.fu_id WHERE ark_siteperiod_furniture.sf_site_period_id = ?"; foreach (\core\Core::$db->fetchAll($q, array($pInfos['id'])) as $carac) { $siteInfos['characteristics'][$periodHash]['caracs'][$i]['furniture'][] = array(Arkeogis::node_path_to_array($carac['node_path'], $strings['furniture']), $carac['sf_exceptional']); } // Landscape $q = "SELECT node_path, sl_exceptional FROM ark_siteperiod_landscape LEFT JOIN ark_landscape ON ark_siteperiod_landscape.sl_landscape_id=ark_landscape.la_id WHERE ark_siteperiod_landscape.sl_site_period_id = ?"; foreach (\core\Core::$db->fetchAll($q, array($pInfos['id'])) as $carac) { $siteInfos['characteristics'][$periodHash]['caracs'][$i]['landscape'][] = array(Arkeogis::node_path_to_array($carac['node_path'], $strings['landscape']), $carac['sl_exceptional']); } } // \core\Core::log($siteInfos); return $siteInfos; }
public static function hook_mod_arkeogis_export_sheet($hookname, $userdata, $urlmatches) { if (!\mod\user\Main::userIsLoggedIn()) { return self::hook_mod_arkeogis_public($hookname, $userdata); } if (!\mod\user\Main::userBelongsToGroup('Admin') && !\mod\user\Main::userBelongsToGroup('Chercheur')) { return self::display_html_error(\mod\lang\Main::ch_t('arkeogis', "Vous n'avez pas la permission de télécharger au format csv")); } $q = json_decode(urldecode($urlmatches[1]), true); $columns = "ark_site.si_id, si_code, si_name, si_description, si_city_name, si_city_code, ST_AsGeoJSON(si_geom) as coords, si_centroid, si_occupation, si_creation, si_modification"; // ark_site $columns .= ", da_name, da_description, da_creation, da_modification"; // ark_database $columns .= ", ark_site_period.sp_id, sp_knowledge_type, sp_comment, sp_bibliography"; // ark_site_period $columns .= ", (SELECT node_path FROM ark_period WHERE pe_id=sp_period_start) AS period_start"; $columns .= ", (SELECT node_path FROM ark_period WHERE pe_id=sp_period_end) AS period_end"; $res = ArkeoGIS::search_sites($q, $columns, array('ark_city' => false, 'ark_database' => true), false, 'ark_site.si_id, ark_site_period.sp_id, da_id', '', 'ark_site.si_code, ark_site.si_id, ark_site_period.sp_id', false, false); \mod\arkeogis\ArkeoGIS::sitesToCsv($res['sites']); }