// Scan les drivers $dir = DOL_DOCUMENT_ROOT . '/core/db'; $handle = opendir($dir); if (is_resource($handle)) { while (($file = readdir($handle)) !== false) { if (is_readable($dir . "/" . $file) && preg_match('/^(.*)\.class\.php$/i', $file, $reg)) { $type = $reg[1]; $class = 'DoliDB' . ucfirst($type); include_once($dir . "/" . $file); if ($type == 'sqlite') continue; // We hide sqlite because support can't be complete unti sqlit does not manage foreign key creation after table creation // Version min of database $versionbasemin = getStaticMember($class, 'versionmin'); $note = '(' . getStaticMember($class, 'label') . ' >= ' . versiontostring($versionbasemin) . ')'; // Switch to mysql if mysqli is not present if ($defaultype == 'mysqli' && !function_exists('mysqli_connect')) $defaultype = 'mysql'; // Show line into list if ($type == 'mysql') { $testfunction = 'mysql_connect'; $testclass = ''; } if ($type == 'mysqli') { $testfunction = 'mysqli_connect'; $testclass = ''; } if ($type == 'pgsql') {
if ($browsername == 'ie' && $browserversion < 7) { print '<img src="../theme/eldy/img/warning.png" alt="Error"> ' . $langs->trans("WarningBrowserTooOld") . "<br>\n"; } } // Check PHP version if (versioncompare(versionphparray(), array(5, 2, 3)) < 0) { print '<img src="../theme/eldy/img/error.png" alt="Error"> ' . $langs->trans("ErrorPHPVersionTooLow", '5.2.3'); $checksok = 0; // 0=error, 1=warning } else { if (versioncompare(versionphparray(), array(5, 3, 0)) < 0) { print '<img src="../theme/eldy/img/warning.png" alt="Error"> ' . $langs->trans("ErrorPHPVersionTooLow", '5.3.0'); $checksok = 0; // 0=error, 1=warning } else { print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs->trans("PHPVersion") . " " . versiontostring(versionphparray()); } } if (empty($force_install_nophpinfo)) { print ' (<a href="phpinfo.php" target="_blank">' . $langs->trans("MoreInformation") . '</a>)'; } print "<br>\n"; // Check PHP support for $_POST if (!isset($_GET["testget"]) && !isset($_POST["testpost"])) { print '<img src="../theme/eldy/img/warning.png" alt="Warning"> ' . $langs->trans("PHPSupportPOSTGETKo"); print ' (<a href="' . $_SERVER["PHP_SELF"] . '?testget=ok">' . $langs->trans("Recheck") . '</a>)'; print "<br>\n"; $checksok = 0; } else { print '<img src="../theme/eldy/img/tick.png" alt="Ok"> ' . $langs->trans("PHPSupportPOSTGETOk") . "<br>\n"; }
/** * Enable a module * * @param string $value Name of module to activate * @param int $withdeps Activate/Disable also all dependencies * @return string Error message or ''; */ function activateModule($value, $withdeps = 1) { global $db, $modules, $langs, $conf; // Check parameters if (empty($value)) { return 'ErrorBadParameter'; } $ret = ''; $modName = $value; $modFile = $modName . ".class.php"; // Loop on each directory to fill $modulesdir $modulesdir = dolGetModulesDirs(); // Loop on each modulesdir directories $found = false; foreach ($modulesdir as $dir) { if (file_exists($dir . $modFile)) { $found = @(include_once $dir . $modFile); if ($found) { break; } } } $objMod = new $modName($db); // Test if PHP version ok $verphp = versionphparray(); $vermin = isset($objMod->phpmin) ? $objMod->phpmin : 0; if (is_array($vermin) && versioncompare($verphp, $vermin) < 0) { return $langs->trans("ErrorModuleRequirePHPVersion", versiontostring($vermin)); } // Test if Dolibarr version ok $verdol = versiondolibarrarray(); $vermin = isset($objMod->need_dolibarr_version) ? $objMod->need_dolibarr_version : 0; //print 'eee '.versioncompare($verdol,$vermin).' - '.join(',',$verdol).' - '.join(',',$vermin);exit; if (is_array($vermin) && versioncompare($verdol, $vermin) < 0) { return $langs->trans("ErrorModuleRequireDolibarrVersion", versiontostring($vermin)); } // Test if javascript requirement ok if (!empty($objMod->need_javascript_ajax) && empty($conf->use_javascript_ajax)) { return $langs->trans("ErrorModuleRequireJavascript"); } $result = $objMod->init(); if ($result <= 0) { $ret = $objMod->error; } if (!$ret && $withdeps) { if (isset($objMod->depends) && is_array($objMod->depends) && !empty($objMod->depends)) { // Activation des modules dont le module depend $num = count($objMod->depends); for ($i = 0; $i < $num; $i++) { foreach ($modulesdir as $dir) { if (file_exists($dir . $objMod->depends[$i] . ".class.php")) { activateModule($objMod->depends[$i]); } } } } if (isset($objMod->conflictwith) && is_array($objMod->conflictwith) && !empty($objMod->conflictwith)) { // Desactivation des modules qui entrent en conflit $num = count($objMod->conflictwith); for ($i = 0; $i < $num; $i++) { foreach ($modulesdir as $dir) { if (file_exists($dir . $objMod->conflictwith[$i] . ".class.php")) { unActivateModule($objMod->conflictwith[$i], 0); } } } } } return $ret; }
/** * Enable a module * @param value Name of module to activate * @param withdeps Activate/Disable also all dependencies * @return string Error message or ''; */ function Activate($value,$withdeps=1) { global $db, $modules, $langs, $conf; $modName = $value; $ret=''; // Activate module if ($modName) { $modFile = $modName . ".class.php"; // Loop on each directory $found=false; foreach ($conf->file->dol_document_root as $type => $dirroot) { $modulesdir[] = $dirroot."/includes/modules/"; if ($type == 'alt') { $handle=@opendir($dirroot); if (is_resource($handle)) { while (($file = readdir($handle))!==false) { if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') { if (is_dir($dirroot . '/' . $file . '/includes/modules/')) { $modulesdir[] = $dirroot . '/' . $file . '/includes/modules/'; } } } closedir($handle); } } } foreach ($modulesdir as $dir) { if (file_exists($dir.$modFile)) { $found=@include_once($dir.$modFile); if ($found) break; } } $objMod = new $modName($db); // Test if PHP version ok $verphp=versionphparray(); $vermin=isset($objMod->phpmin)?$objMod->phpmin:0; if (is_array($vermin) && versioncompare($verphp,$vermin) < 0) { return $langs->trans("ErrorModuleRequirePHPVersion",versiontostring($vermin)); } // Test if Dolibarr version ok $verdol=versiondolibarrarray(); $vermin=isset($objMod->need_dolibarr_version)?$objMod->need_dolibarr_version:0; //print 'eee'.versioncompare($verdol,$vermin).join(',',$verdol).' - '.join(',',$vermin);exit; if (is_array($vermin) && versioncompare($verdol,$vermin) < 0) { return $langs->trans("ErrorModuleRequireDolibarrVersion",versiontostring($vermin)); } // Test if javascript requirement ok if (! empty($objMod->need_javascript_ajax) && empty($conf->use_javascript_ajax)) { return $langs->trans("ErrorModuleRequireJavascript"); } $result=$objMod->init(); if ($result <= 0) $ret=$objMod->error; } if (! $ret && $withdeps) { if (is_array($objMod->depends) && !empty($objMod->depends)) { // Activation des modules dont le module depend for ($i = 0; $i < sizeof($objMod->depends); $i++) { if (file_exists(DOL_DOCUMENT_ROOT."/includes/modules/".$objMod->depends[$i].".class.php")) { Activate($objMod->depends[$i]); } } } if (isset($objMod->conflictwith) && is_array($objMod->conflictwith)) { // Desactivation des modules qui entrent en conflit for ($i = 0; $i < sizeof($objMod->conflictwith); $i++) { if (file_exists(DOL_DOCUMENT_ROOT."/includes/modules/".$objMod->conflictwith[$i].".class.php")) { UnActivate($objMod->conflictwith[$i],0); } } } } return $ret; }
{ $type=$reg[1]; // Version min de la base $versionbasemin=array(); if ($type=='mysql') { $versionbasemin=array(3,1,0); $testfunction='mysql_connect'; } if ($type=='mysqli') { $versionbasemin=array(4,1,0); $testfunction='mysqli_connect'; } if ($type=='pgsql') { $versionbasemin=array(8,4,0); $testfunction='pg_connect'; } if ($type=='mssql') { $versionbasemin=array(2000); $testfunction='mssql_connect'; } // Remarques $note=''; if ($type=='mysql') $note='(Mysql >= '.versiontostring($versionbasemin).')'; if ($type=='mysqli') $note='(Mysql >= '.versiontostring($versionbasemin).')'; if ($type=='pgsql') $note='(Postgresql >= '.versiontostring($versionbasemin).')'; if ($type=='mssql') $note='(SQL Server >= '.versiontostring($versionbasemin).')'; // Switch to mysql if mysqli is not present if ($defaultype=='mysqli' && !function_exists('mysqli_connect')) $defaultype = 'mysql'; // Affiche ligne dans liste $option.='<option value="'.$type.'"'.($defaultype == $type?' selected="selected"':''); if (! function_exists($testfunction)) $option.=' disabled="disabled"'; $option.='>'; $option.=$type.' '; if ($note) $option.=' '.$note; // Experimental if ($type=='pgsql') $option.=' '.$langs->trans("Experimental"); elseif ($type=='mssql') $option.=' '.$langs->trans("Experimental"); // No available elseif (! function_exists($testfunction)) $option.=' - '.$langs->trans("FunctionNotAvailableInThisPHP");