is_admin; $seeUsr = $user->_global_rights['manageusers']; $seeTaskManager = $user->_global_rights['taskmanager']; $feature = 'connected'; $featured = false; $position = explode(':',$position); if(count($position) > 0) { if(in_array($position[0],array('connected','registrations','taskmanager','base','bases','collection','user','users'))) { $feature = $position[0]; if(isset($position[1])) $featured = $position[1]; } } unset($position); $sql = "SELECT sb.sbas_id, bu.base_id, bu.canaddrecord, bu.canmodifrecord, bu.canadmin, bu.manage,bu.modify_struct, sb.bas_manage, sb.bas_modify_struct FROM (usr u, sbasusr sb) LEFT JOIN (bas b, basusr bu) ON (b.sbas_id = sb.sbas_id AND bu.base_id = b.base_id AND bu.usr_id='".$conn->escape_string($usr_id)."') WHERE sb.usr_id = u.usr_id AND u.usr_id='".$conn->escape_string($usr_id)."'"; if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs)) { $usrRight[$row["sbas_id"]][$row["base_id"]]['canmodifrecord'] = $row['canmodifrecord']; $usrRight[$row["sbas_id"]][$row["base_id"]]['canadmin'] = $row['canadmin']; $usrRight[$row["sbas_id"]][$row["base_id"]]['manage'] = $row['manage']; $usrRight[$row["sbas_id"]]["bas_manage"] = $row["bas_manage"]; $usrRight[$row["sbas_id"]][$row["base_id"]] = $row['modify_struct']; $usrRight[$row["sbas_id"]]['bas_modify_struct'] = $row['bas_modify_struct']; } $conn->free_result($rs); } $sql = 'SELECT b.server_coll_id, b.ord, b.base_id, b.active, sb.host, sb.sbas_id, sb.port, sb.dbname, sb.viewname, sb.user FROM (sbasusr sbu, sbas sb, usr u) LEFT JOIN (bas b, basusr bu) ON (b.active="1" AND bu.base_id = b.base_id AND bu.usr_id = "'.$conn->escape_string($usr_id).'" AND b.sbas_id=sb.sbas_id AND (bu.canadmin="1" OR bu.manage="1" OR bu.modify_struct="1") ) WHERE u.usr_id="'.$conn->escape_string($usr_id).'" AND sbu.usr_id=u.usr_id AND sb.sbas_id = sbu.sbas_id AND (sbu.bas_manage="1" OR sbu.bas_modify_struct="1") ORDER BY sb.ord,sb.sbas_id,b.ord,b.base_id'; if($rs = $conn->query($sql)) { while(($row = $conn->fetch_assoc($rs)) ) { $unik = "_" . $row["sbas_id"]; if(!isset($allcoll[$unik])) { $allcoll[$unik]["host"] = $row['host'] ; $allcoll[$unik]["sbas_id"] = $row["sbas_id"]; $allcoll[$unik]["dbname"] = $row["dbname"]; $allcoll[$unik]["viewname"] = trim($row["viewname"]) != '' ? $row['viewname'] : $row['dbname']; $allcoll[$unik]["server_coll_list"] = ""; $allcoll[$unik]["collections"] = array(); } if(!is_null($row["server_coll_id"])) { $allcoll[$unik]["collections"][$row["server_coll_id"]]["base_id"]= $row["base_id"]; $allcoll[$unik]["collections"][$row["server_coll_id"]]["coll_id"]= $row["server_coll_id"]; if( $allcoll[$unik]["server_coll_list"]!="") $allcoll[$unik]["server_coll_list"].= ","; $allcoll[$unik]["server_coll_list"].= $row["server_coll_id"]; } } $conn->free_result($rs); } foreach($allcoll as $indice =>$myunik) { $conn2 = connection::getInstance($myunik['sbas_id']); if($conn2) { $sql2 = "SELECT coll_id,htmlname from coll WHERE coll_id in (".$myunik["server_coll_list"].")"; if($rs2 = $conn2->query($sql2)) { while(($row2 = $conn2->fetch_assoc($rs2)) ) { if( isset($allcoll[$indice]["collections"][$row2["coll_id"]]) ) { $allcoll[$indice]["collections"][$row2["coll_id"]]["name"] = $row2["htmlname"]; } } $conn2->free_result($rs2); } } else { $offcoll[] = array('dbname'=>$allcoll[$indice]['dbname'],'host'=>$allcoll[$indice]['host']); unset($allcoll[$indice]["coll"]); unset($allcoll[$indice]); } unset($allcoll[$indice]["server_coll_list"]); } $out .= ''; return $out; } function createBase($type,$ghost,$gport,$guser,$gpasswd,$gdbname,$writeConn=false) { $connexion = dirname(__FILE__)."/../config/connexion.inc"; $go = true; $ret = array('error'=>true,'message'=>''); if(trim($gdbname)=='' || trim($ghost)=='') { $ret['message'] = _('Identifiants incorrects'); return $ret; } if($writeConn) { $go = false; if(is_file($connexion)) unlink($connexion); $EOL = PHP_EOL; $connexionINI = 'conn !== false)) { if($base->create($gdbname) !== false) { $ret['error'] = false; $ret['message'] = sprintf(_('Creation de la base avec succes')); } else { $ret['message'] = _('setup::la base de donnees existe deja ou vous n\'avez pas les droits de la creer'); } } else { $ret['message'] = sprintf(_('Identifiants incorrects')); } return $ret; } function createAdmin($password,$email, $databox, $tasks, $indexer, $template, $pathweb, $pathnoweb, $baseurl,$convert, $composite, $php_cli, $exiftool) { require_once dirname(__FILE__).'/../lib/classes/user.class.php'; require_once dirname(__FILE__).'/../lib/classes/cache.class.php'; require_once dirname(__FILE__).'/../lib/classes/cache/user.class.php'; require_once dirname(__FILE__).'/../lib/classes/p4string.class.php'; require_once dirname(__FILE__).'/../lib/classes/p4.class.php'; require_once dirname(__FILE__).'/../lib/classes/connection.class.php'; require_once dirname(__FILE__).'/../lib/classes/phrasea.class.php'; require_once dirname(__FILE__).'/../lib/classes/base.class.php'; require_once dirname(__FILE__).'/../lib/classes/databox.class.php'; require_once dirname(__FILE__).'/../lib/classes/collection.class.php'; require_once dirname(__FILE__).'/../lib/classes/cache/appbox.class.php'; require_once dirname(__FILE__).'/../lib/classes/cache/databox.class.php'; require_once dirname(__FILE__).'/../lib/classes/cache/basket.class.php'; define('GV_ServerName','INSTALL'); define('GV_RootPath',dirname(dirname(__FILE__)).'/'); $session = session::getInstance(); $conn = connection::getInstance(); $ret = array('error'=>true,'message'=>'', 'usr_id'=>0); if($indexer !== 'false') { if(!is_file($indexer)) { $ret['message'] = _('Le fichier indexeur specifie n\'existe pas'); return $ret; } elseif(!is_executable($indexer)) { $ret['message'] = _('Le fichier indexeur specifie n\'est pas executable'); return $ret; } } $id = false; try { $user = new user(); if(!defined('GV_sit')) define('GV_sit','install'); $user->password = $password; $user->login = 'admin'; $user->email = $email; $user->superu = true; $user->is_admin = true; $id=$user->save(); } catch(Exception $e) { $ret['message'] = $e->getMessage(); } if($id !== false) { $pathnoweb = p4string::addEndSlash($pathnoweb); $pathweb = p4string::addEndSlash($pathweb); $baseurl = p4string::addEndSlash($baseurl); $datas = array('GV_base_datapath_noweb'=>$pathnoweb, 'GV_base_datapath_web'=>$pathweb, 'GV_base_dataurl'=>$baseurl, 'GV_exiftool'=>$exiftool, 'GV_imagick'=>$convert, 'GV_pathcomposite'=>$composite, 'GV_cli'=>$php_cli ); if(setup::create_global_values($datas)) { $ret['usr_id'] = $id; phrasea::start(); $ses_id = phrasea_create_session($id); if($ses_id !== false) { $session->usr_id = $id; $session->ses_id = $ses_id; $session->admin = true; $session->invite = false; $ret['error'] = false; if($databox) { $ret['error'] = true; if(!p4string::hasAccent($databox)) { if( ($base = new databox()) !== false ) { if($base->create($databox) !== false) { $data_template = GV_RootPath.'lib/conf.d/data_templates/'.$template.'.xml'; if(is_file($data_template) && $base->setNewStructure( $data_template , $pathweb , $pathnoweb , $baseurl )) { try { $sbas_id = $base->save($session->usr_id); $base->registerAdmin($session->usr_id, true); $base->registerAdminStruct($session->usr_id, true); $base->registerAdminThesaurus($session->usr_id, true); $base->registerPublication($session->usr_id, true); collection::create_collection($sbas_id, 'test'); $ret['error'] = false; } catch(Exception $e) { $ret['message'] = $e->getMessage(); } if(is_array($tasks) && count($tasks) > 0) { foreach($tasks as $task) { $id = $conn->getId('task'); switch($task) { case 'readmeta'; $sql = 'INSERT INTO `task2` (`task_id`, `usr_id_owner`, `pid`, `status`, `crashed`, `active`, `name`, `last_exec_time`, `class`, `settings`, `completed`) VALUES ('.$id.', 0, 0, "stopped", 0, 1, "Metadatas Reading", "0000-00-00 00:00:0", "task_readmeta", "\n\n10101\n", -1)'; break; case 'writemeta'; $sql = 'INSERT INTO `task2` (`task_id`, `usr_id_owner`, `pid`, `status`, `crashed`, `active`, `name`, `last_exec_time`, `class`, `settings`, `completed`) VALUES ('.$id.', 0, 0, "stopped", 0, 1, "Metadatas Writing", "0000-00-00 00:00:0", "task_writemeta", "\n\n 10\n 1\n \n \n 0\n\n", -1)'; break; case 'subdefs'; $sql = 'INSERT INTO `task2` (`task_id`, `usr_id_owner`, `pid`, `status`, `crashed`, `active`, `name`, `last_exec_time`, `class`, `settings`, `completed`) VALUES ('.$id.', 0, 0, "stopped", 0, 1, "Subdefs", "0000-00-00 00:00:0", "task_subdef", "\n\n10101\n", -1)'; break; case 'indexer'; require GV_RootPath.'config/connexion.inc'; $sql = 'INSERT INTO `task2` (`task_id`, `usr_id_owner`, `pid`, `status`, `crashed`, `active`, `name`, `last_exec_time`, `class`, `settings`, `completed`) VALUES ('.$id.', 0, 0, "stopped", 0, 1, "Indexer", "0000-00-00 00:00:0", "task_cindexer", "\n\n'.$conn->escape_string(str_replace('/phraseanet_indexer','',$indexer)).''.$conn->escape_string($hostname).''.$conn->escape_string($port).''.$conn->escape_string($dbname).''.$conn->escape_string($user).''.$conn->escape_string($password).'25200100utf8\n", -1)'; break; } $conn->query($sql); } } } else { $ret['message'] = _('Impossible de charger les templates de base'); } } else { $ret['message'] = _('Impossible de creer la base de donnee'); } } else { $ret['message'] = _('Impossible d instancier la base'); } } else { $ret['message'] = _('Le nom de base ne doit contenir ni espace ni caractere special'); } if($ret['error']) { $sql = 'TRUNCATE bas'; $conn->query($sql); $sql = 'TRUNCATE sbas'; $conn->query($sql); $sql = 'TRUNCATE basusr'; $conn->query($sql); $sql = 'TRUNCATE sbasusr'; $conn->query($sql); $sql = 'DROP DATABASE `'.$databox.'`'; $conn->query($sql); } } if($ret['error']) p4::logout(); } else { $ret['error'] = true; $ret['message'] = _('Impossible d\'ouvrir une session'); } } else { $ret['message'] = _('Impossible de creer le fichier de configuration'); } } if($ret['error']) { $sql = 'DELETE FROM usr WHERE usr_login="admin"'; $conn->query($sql); @unlink(GV_RootPath.'config/_GV.php'); } return $ret; }