public function getLoginPageOptions($parameters, &$object, &$action, HookManager $hookManager)
    {
        global $langs;
        require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php';
        require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
        $langs->load('otp@otp');
        if (versioncompare(versiondolibarrarray(), array('3', '8', '0')) >= 0) {
            $this->results = array('options' => array('table' => '<tr>
<td class="nowrap center valignmiddle"><input type="text" name="otp" class="flat" size="20" id="otp" tabindex="3" placeholder="' . $langs->trans('OTPCode') . '"></td></tr>'));
        } else {
            $this->results = array('options' => array('table' => '<tr>
<td>
<label for="otp"><strong>' . $langs->trans('OTPCode') . '</strong></label></td><td><input type="text" name="otp" class="flat" size="15" id="otp" tabindex="3"></td></tr>'));
        }
    }
                         print '<td align="right">' . $langs->trans("Failed") . '</td></tr>';
                         $db->rollback();
                     }
                 }
             } else {
                 print '<div class="error">' . $langs->trans("Error") . ' ' . $db->lasterror() . '</div>';
             }
         }
     }
 }
 /*
  * Remove deprecated indexes and constraints for Mysql
  */
 if ($ok && preg_match('/mysql/', $db->type)) {
     $versioncommande = array(4, 0, 0);
     if (count($versioncommande) && count($versionarray) && versioncompare($versioncommande, $versionarray) <= 0) {
         // Suppression vieilles contraintes sans noms et en doubles
         // Les contraintes indesirables ont un nom qui commence par 0_ ou se termine par ibfk_999
         $listtables = array(MAIN_DB_PREFIX . 'adherent_options', MAIN_DB_PREFIX . 'bank_class', MAIN_DB_PREFIX . 'c_ecotaxe', MAIN_DB_PREFIX . 'c_methode_commande_fournisseur', MAIN_DB_PREFIX . 'c_input_method');
         $listtables = $db->DDLListTables($conf->db->name, '');
         foreach ($listtables as $val) {
             // Database prefix filter
             if (preg_match('/^' . MAIN_DB_PREFIX . '/', $val)) {
                 //print "x".$val."<br>";
                 $sql = "SHOW CREATE TABLE " . $val;
                 $resql = $db->query($sql);
                 if ($resql) {
                     $values = $db->fetch_array($resql);
                     $i = 0;
                     $createsql = $values[1];
                     while (preg_match('/CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`/i', $createsql, $reg) && $i < 100) {
Exemple #3
0
 $versionfrom = $migarray['from'];
 $versionto = $migarray['to'];
 $versionarray = preg_split('/[\\.-]/', $version);
 $dolibarrversionfromarray = preg_split('/[\\.-]/', $versionfrom);
 $dolibarrversiontoarray = preg_split('/[\\.-]/', $versionto);
 // Define string newversionxxx that are used for text to show
 $newversionfrom = preg_replace('/(\\.[0-9]+)$/i', '.*', $versionfrom);
 $newversionto = preg_replace('/(\\.[0-9]+)$/i', '.*', $versionto);
 $newversionfrombis = '';
 if (versioncompare($dolibarrversiontoarray, $versionarray) < -2) {
     $newversionfrombis = ' ' . $langs->trans("or") . ' ' . $versionto;
 }
 if ($ok) {
     if (count($dolibarrlastupgradeversionarray) >= 2) {
         // Now we check if this is the first qualified choice
         if ($allowupgrade && empty($foundrecommandedchoice) && (versioncompare($dolibarrversiontoarray, $dolibarrlastupgradeversionarray) > 0 || versioncompare($dolibarrversiontoarray, $versionarray) < -2)) {
             $foundrecommandedchoice = 1;
             // To show only once
             $recommended_choice = true;
         }
     } else {
         // We can not recommand a choice.
         // A version of install may be known, but we need last upgrade.
     }
 }
 $choice .= '<tr class="listofchoices ' . ($recommended_choice ? 'choiceselected' : '') . '">';
 $choice .= '<td class="listofchoices nowrap" align="center"><b>' . $langs->trans("Upgrade") . '<br>' . $newversionfrom . $newversionfrombis . ' -> ' . $newversionto . '</b></td>';
 $choice .= '<td class="listofchoices">';
 $choice .= $langs->trans("UpgradeDesc");
 if ($recommended_choice) {
     $choice .= '<br>';
Exemple #4
0
/**
 *  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;
}
Exemple #5
0
            // Define string newversionxxx that are used for text to show
            $newversionfrom=preg_replace('/(\.[0-9]+)$/i','.*',$versionfrom);
            $newversionto=preg_replace('/(\.[0-9]+)$/i','.*',$versionto);
            $newversionfrombis='';
            if (versioncompare($dolibarrversiontoarray,$versionarray) < -2)	// From x.y.z -> x.y.z+1
            {
            	$newversionfrombis=' '.$langs->trans("or").' '.$versionto;
            }

            if ($ok)
            {
                if (count($dolibarrlastupgradeversionarray) >= 2)	// If a database access is available and last upgrade version is known
                {
                    // Now we check if this is the first qualified choice
                    if ($allowupgrade && empty($foundrecommandedchoice) &&
                        (versioncompare($dolibarrversiontoarray,$dolibarrlastupgradeversionarray) > 0 || versioncompare($dolibarrversiontoarray,$versionarray) < -2)
                    )
                    {
                        $foundrecommandedchoice=1;	// To show only once
                        $recommended_choice = true;
                    }
                }
                else {
                    // We can not recommand a choice.
                    // A version of install may be known, but we need last upgrade.
                }
            }

            $choice .= '<tr class="listofchoices '.($recommended_choice ? 'choiceselected' : '').'">';
            $choice .= '<td class="listofchoices nowrap" align="center"><b>'.$langs->trans("Upgrade").'<br>'.$newversionfrom.$newversionfrombis.' -> '.$newversionto.'</b></td>';
            $choice .= '<td class="listofchoices">';
    require_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
}
// Need 22ko memory
// If install or upgrade process not done or not completely finished, we call the install page.
if (!empty($conf->global->MAIN_NOT_INSTALLED) || !empty($conf->global->MAIN_NOT_UPGRADED)) {
    dol_syslog("main.inc: A previous install or upgrade was not complete. Redirect to install page.", LOG_WARNING);
    header("Location: " . DOL_URL_ROOT . "/install/index.php");
    exit;
}
// If an upgrade process is required, we call the install page.
if (!empty($conf->global->MAIN_VERSION_LAST_UPGRADE) && $conf->global->MAIN_VERSION_LAST_UPGRADE != DOL_VERSION || empty($conf->global->MAIN_VERSION_LAST_UPGRADE) && !empty($conf->global->MAIN_VERSION_LAST_INSTALL) && $conf->global->MAIN_VERSION_LAST_INSTALL != DOL_VERSION) {
    $versiontocompare = empty($conf->global->MAIN_VERSION_LAST_UPGRADE) ? $conf->global->MAIN_VERSION_LAST_INSTALL : $conf->global->MAIN_VERSION_LAST_UPGRADE;
    require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php';
    $dolibarrversionlastupgrade = preg_split('/[.-]/', $versiontocompare);
    $dolibarrversionprogram = preg_split('/[.-]/', DOL_VERSION);
    $rescomp = versioncompare($dolibarrversionprogram, $dolibarrversionlastupgrade);
    if ($rescomp > 0) {
        dol_syslog("main.inc: database version " . $versiontocompare . " is lower than programs version " . DOL_VERSION . ". Redirect to install page.", LOG_WARNING);
        header("Location: " . DOL_URL_ROOT . "/install/index.php");
        exit;
    }
}
// Creation of a token against CSRF vulnerabilities
if (!defined('NOTOKENRENEWAL')) {
    $token = dol_hash(uniqid(mt_rand(), TRUE));
    // Generates a hash of a random number
    // roulement des jetons car cree a chaque appel
    if (isset($_SESSION['newtoken'])) {
        $_SESSION['token'] = $_SESSION['newtoken'];
    }
    $_SESSION['newtoken'] = $token;
Exemple #7
0
             $db->commit();
         } else {
             print '<tr><td>' . $langs->trans("RemoveDuplicates") . '</td>';
             print '<td align="right">' . $langs->trans("Failed") . '</td></tr>';
             $db->rollback();
         }
     }
 } else {
     print '<div class="error">' . $langs->trans("Error") . '</div>';
 }
 /*
  * Remove deprecated indexes and constraints for Mysql
  */
 if ($ok && preg_match('/mysql/', $db->type)) {
     $versioncommande = explode('.', '4.0');
     if (sizeof($versioncommande) && sizeof($versionarray) && versioncompare($versioncommande, $versionarray) <= 0) {
         // Suppression vieilles contraintes sans noms et en doubles
         // Les contraintes indesirables ont un nom qui commence par 0_ ou se termine par ibfk_999
         $listtables = array(MAIN_DB_PREFIX . 'adherent_options', MAIN_DB_PREFIX . 'bank_class', MAIN_DB_PREFIX . 'c_ecotaxe', MAIN_DB_PREFIX . 'c_methode_commande_fournisseur', MAIN_DB_PREFIX . 'c_input_method');
         $listtables = $db->DDLListTables($conf->db->name, '');
         foreach ($listtables as $val) {
             // Database prefix filter
             if (preg_match('/^' . MAIN_DB_PREFIX . '/', $val)) {
                 //print "x".$val."<br>";
                 $sql = "SHOW CREATE TABLE " . $val;
                 $resql = $db->query($sql);
                 if ($resql) {
                     $values = $db->fetch_array($resql);
                     $i = 0;
                     $createsql = $values[1];
                     while (preg_match('/CONSTRAINT `(0_[0-9a-zA-Z]+|[_0-9a-zA-Z]+_ibfk_[0-9]+)`/i', $createsql, $reg) && $i < 100) {
Exemple #8
0
			}
		}
	}
	else
	{
		print '<div class="error">'.$langs->trans("Error").'</div>';
	}

	/*
	 * Remove deprecated indexes and constraints for Mysql
	 */
	if ($ok && preg_match('/mysql/',$db->type))
	{
		$versioncommande=explode('.','4.0');
		if (sizeof($versioncommande) && sizeof($versionarray)
			&& versioncompare($versioncommande,$versionarray) <= 0)	// Si mysql >= 4.0
		{
			// Suppression vieilles contraintes sans noms et en doubles
			// Les contraintes indesirables ont un nom qui commence par 0_ ou se termine par ibfk_999
			$listtables=array(  'llx_adherent_options',
								'llx_bank_class',
								'llx_c_ecotaxe',
								'llx_c_methode_commande_fournisseur',   // table renamed
    		                    'llx_c_input_method');

			$listtables = $db->DDLListTables($conf->db->name,'');
		    foreach ($listtables as $val)
			{
				//print "x".$val."<br>";
				$sql = "SHOW CREATE TABLE ".$val;
				$resql = $db->query($sql);
 /**
  * Adds a product to the order
  *
  * @param Commande $object Order object
  * @param Product $prod Product to add
  * @param int $qty Quantity of the product
  * @throws Exception
  */
 public static function addOrderLine(Commande $object, Product $prod, $qty)
 {
     global $db, $conf, $mysoc, $langs;
     require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php';
     $tva_tx = get_default_tva($mysoc, $object->thirdparty, $prod->id);
     $tva_npr = get_default_npr($mysoc, $object->thirdparty, $prod->id);
     if (!empty($conf->global->PRODUIT_MULTIPRICES) && !empty($object->thirdparty->price_level)) {
         $pu_ht = $prod->multiprices[$object->thirdparty->price_level];
         $pu_ttc = $prod->multiprices_ttc[$object->thirdparty->price_level];
         $price_base_type = $prod->multiprices_base_type[$object->thirdparty->price_level];
         if (isset($prod->multiprices_tva_tx[$object->thirdparty->price_level])) {
             $tva_tx = $prod->multiprices_tva_tx[$object->thirdparty->price_level];
         }
         if (isset($prod->multiprices_recuperableonly[$object->thirdparty->price_level])) {
             $tva_npr = $prod->multiprices_recuperableonly[$object->thirdparty->price_level];
         }
     } elseif (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
         require_once DOL_DOCUMENT_ROOT . '/product/class/productcustomerprice.class.php';
         $prodcustprice = new Productcustomerprice($db);
         $filter = array('t.fk_product' => $prod->id, 't.fk_soc' => $object->thirdparty->id);
         $result = $prodcustprice->fetch_all('', '', 0, 0, $filter);
         if ($result >= 0) {
             if (count($prodcustprice->lines) > 0) {
                 $pu_ht = price($prodcustprice->lines[0]->price);
                 $pu_ttc = price($prodcustprice->lines[0]->price_ttc);
                 $price_base_type = $prodcustprice->lines[0]->price_base_type;
                 $prod->tva_tx = $prodcustprice->lines[0]->tva_tx;
             } else {
                 $pu_ht = $prod->price;
                 $pu_ttc = $prod->price_ttc;
                 $price_base_type = $prod->price_base_type;
             }
         } else {
             throw new Exception($prodcustprice->error);
         }
     } else {
         $pu_ht = $prod->price;
         $pu_ttc = $prod->price_ttc;
         $price_base_type = $prod->price_base_type;
     }
     // if price ht is forced (ie: calculated by margin rate and cost price)
     if (!empty($price_ht)) {
         $pu_ht = price2num($price_ht, 'MU');
         $pu_ttc = price2num($pu_ht * (1 + $tva_tx / 100), 'MU');
     } elseif ($tva_tx != $prod->tva_tx) {
         if ($price_base_type != 'HT') {
             $pu_ht = price2num($pu_ttc / (1 + $tva_tx / 100), 'MU');
         } else {
             $pu_ttc = price2num($pu_ht * (1 + $tva_tx / 100), 'MU');
         }
     }
     // Define output language
     if (!empty($conf->global->MAIN_MULTILANGS) && !empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) {
         $outputlangs = $langs;
         $newlang = '';
         if (empty($newlang) && GETPOST('lang_id')) {
             $newlang = GETPOST('lang_id');
         }
         if (empty($newlang)) {
             $newlang = $object->thirdparty->default_lang;
         }
         if (!empty($newlang)) {
             $outputlangs = new Translate("", $conf);
             $outputlangs->setDefaultLang($newlang);
         }
         $desc = !empty($prod->multilangs[$outputlangs->defaultlang]["description"]) ? $prod->multilangs[$outputlangs->defaultlang]["description"] : $prod->description;
     } else {
         $desc = $prod->description;
     }
     // Add custom code and origin country into description
     if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (!empty($prod->customcode) || !empty($prod->country_code))) {
         $tmptxt = '(';
         if (!empty($prod->customcode)) {
             $tmptxt .= $langs->transnoentitiesnoconv("CustomCode") . ': ' . $prod->customcode;
         }
         if (!empty($prod->customcode) && !empty($prod->country_code)) {
             $tmptxt .= ' - ';
         }
         if (!empty($prod->country_code)) {
             $tmptxt .= $langs->transnoentitiesnoconv("CountryOrigin") . ': ' . getCountry($prod->country_code, 0, $db, $langs, 0);
         }
         $tmptxt .= ')';
         $desc = dol_concatdesc($desc, $tmptxt);
     }
     //3.9.0 version added support for price units
     if (versioncompare(versiondolibarrarray(), array(3, 9, 0)) >= 0) {
         $fk_unit = $prod->fk_unit;
     } else {
         $fk_unit = null;
     }
     // Local Taxes
     $localtax1_tx = get_localtax($tva_tx, 1, $object->thirdparty);
     $localtax2_tx = get_localtax($tva_tx, 2, $object->thirdparty);
     $info_bits = 0;
     if ($tva_npr) {
         $info_bits |= 0x1;
     }
     //Percent remise
     if (!empty($object->thirdparty->remise_percent)) {
         $percent_remise = $object->thirdparty->remise_percent;
     } else {
         $percent_remise = 0;
     }
     // Insert line
     $result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $prod->id, $percent_remise, $info_bits, 0, $price_base_type, $pu_ttc, '', '', $prod->type, -1, 0, 0, null, 0, '', 0, $fk_unit);
     if ($result < 0) {
         throw new Exception($langs->trans('ErrorAddOrderLine', $prod->ref));
     }
 }
Exemple #10
0
						$versioncommande = explode('.', $reg[1]);
						//print var_dump($versioncommande);
						//print var_dump($versionarray);
						if (count($versioncommande) && count($versionarray)
								&& versioncompare($versioncommande, $versionarray) <= 0) {
							// Version qualified, delete SQL comments
							$buf = preg_replace('/^--\sV([0-9\.]+)/i', '', $buf);
							//print "Ligne $i qualifiee par version: ".$buf.'<br>';
						}
					}
					if ($choix == 2 && preg_match('/^--\sPOSTGRESQL\sV([0-9\.]+)/i', $buf, $reg)) {
						$versioncommande = explode('.', $reg[1]);
						//print var_dump($versioncommande);
						//print var_dump($versionarray);
						if (count($versioncommande) && count($versionarray)
								&& versioncompare($versioncommande, $versionarray) <= 0) {
							// Version qualified, delete SQL comments
							$buf = preg_replace('/^--\sPOSTGRESQL\sV([0-9\.]+)/i', '', $buf);
							//print "Ligne $i qualifiee par version: ".$buf.'<br>';
						}
					}

					// Ajout ligne si non commentaire
					if (!preg_match('/^--/i', $buf))
						$buffer .= $buf;
				}
				fclose($fp);

				// Si plusieurs requetes, on boucle sur chaque
				$listesql = explode(';', $buffer);
				foreach ($listesql as $req) {
Exemple #11
0
/**
 * Reload menu if dynamic menus, if modified by version
 *
 * @param	DoliDB		$db			Database handler
 * @param	Translate	$langs		Object langs
 * @param	Conf		$conf		Object conf
 * @param	string		$versionto	Version target
 * @return	void
 */
function migrate_reload_menu($db, $langs, $conf, $versionto)
{
    global $conf;
    dolibarr_install_syslog("upgrade2::migrate_reload_menu");
    // Define list of menu handlers to initialize
    $listofmenuhandler = array();
    $versiontoarray = explode('.', $versionto);
    // Script for VX (X<2.9) -> V2.9
    $afterversionarray = explode('.', '2.8.9');
    $beforeversionarray = explode('.', '2.9.9');
    if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) {
        $listofmenuhandler['auguria'] = 1;
        // We set here only dynamic menu handlers
    }
    // Script for VX (X<3.2) -> V3.2
    $afterversionarray = explode('.', '3.1.9');
    $beforeversionarray = explode('.', '3.2.9');
    if (versioncompare($versiontoarray, $afterversionarray) >= 0 && versioncompare($versiontoarray, $beforeversionarray) <= 0) {
        $listofmenuhandler['auguria'] = 1;
        // We set here only dynamic menu handlers
    }
    foreach ($listofmenuhandler as $key => $val) {
        print '<tr><td colspan="4">';
        //print "x".$key;
        print '<br>';
        print '<b>' . $langs->trans('Upgrade') . '</b>: ' . $langs->trans('MenuHandler') . " " . $key . "<br>\n";
        // Load sql ini_menu_handler.sql file
        $dir = DOL_DOCUMENT_ROOT . "/core/menus/";
        $file = 'init_menu_' . $key . '.sql';
        if (file_exists($dir . $file)) {
            $result = run_sql($dir . $file, 1, '', 1, $key);
        }
        print '</td></tr>';
    }
}
Exemple #12
0
            if ($row['rowid'] == $user->id) {
                echo '<strong>';
            }
            echo $row['firstname'] . ' ' . $row['lastname'] . ' :';
            echo '<PRE>' . dol_buildpath('cdav/server.php', 2) . '/calendars/' . $user->login . '/' . $row['rowid'] . '-cal-' . $row['login'] . '</PRE><br/>';
            if ($row['rowid'] == $user->id) {
                echo '</strong>';
            }
        }
    } else {
        echo '<PRE>' . dol_buildpath('cdav/server.php', 2) . '/calendars/' . $user->login . '/' . $user->id . '-cal-' . $user->login . '</PRE>';
    }
} elseif ($type == 'ICS') {
    echo '<h3>' . $langs->trans('URLforICS') . '</h3>';
    if (isset($user->rights->agenda->allactions->read) && $user->rights->agenda->allactions->read) {
        if (versioncompare(versiondolibarrarray(), array(3, 7, 9)) > 0) {
            $fk_soc_fieldname = 'fk_soc';
        } else {
            $fk_soc_fieldname = 'fk_societe';
        }
        $sql = 'SELECT u.rowid, u.login, u.firstname, u.lastname
			FROM ' . MAIN_DB_PREFIX . 'user u WHERE ' . $fk_soc_fieldname . ' IS NULL
			ORDER BY login';
        $result = $db->query($sql);
        while ($row = $db->fetch_array($result)) {
            echo '<h4>' . $row['firstname'] . ' ' . $row['lastname'] . ' :</h4>';
            echo "<PRE>" . $langs->trans('Full') . " :\n" . dol_buildpath('cdav/ics.php', 2) . '?token=' . base64url_encode(mcrypt_ecb(MCRYPT_BLOWFISH, CDAV_URI_KEY, $row['rowid'] . '+ø+full', MCRYPT_ENCRYPT)) . "\n\n";
            echo $langs->trans('NoLabel') . " :\n" . dol_buildpath('cdav/ics.php', 2) . '?token=' . base64url_encode(mcrypt_ecb(MCRYPT_BLOWFISH, CDAV_URI_KEY, $row['rowid'] . '+ø+nolabel', MCRYPT_ENCRYPT)) . '</PRE><br/>';
        }
    } else {
        echo "<PRE>" . $langs->trans('Full') . " :\n" . dol_buildpath('cdav/ics.php', 2) . '?token=' . base64url_encode(mcrypt_ecb(MCRYPT_BLOWFISH, CDAV_URI_KEY, $user->id . '+ø+full', MCRYPT_ENCRYPT)) . "\n\n";
Exemple #13
0
print '<ul>';
print '<li><strong>' . DOL_VERSION . '</strong>';
$result = getURLContent('http://sourceforge.net/projects/dolibarr/rss');
//var_dump($result['content']);
$sfurl = simplexml_load_string($result['content']);
if ($sfurl) {
    $i = 0;
    $version = '0.0';
    while (!empty($sfurl->channel[0]->item[$i]->title) && $i < 10000) {
        $title = $sfurl->channel[0]->item[$i]->title;
        if (preg_match('/([0-9]+\\.([0-9\\.]+))/', $title, $reg)) {
            $newversion = $reg[1];
            $newversionarray = explode('.', $newversion);
            $versionarray = explode('.', $version);
            //var_dump($newversionarray);var_dump($versionarray);
            if (versioncompare($newversionarray, $versionarray) > 0) {
                $version = $newversion;
            }
        }
        $i++;
    }
    // Show version
    if ($version != '0.0') {
        print ' (' . $langs->trans("LastStableVersion") . ': <b>' . $version . '</b>';
        if (DOL_VERSION == $version) {
            $youuselaststable = 1;
            print $langs->trans("YouUseLastStableVersion");
        }
        print ')';
    }
    print ' / <a href="http://www.gnu.org/copyleft/gpl.html">GNU-GPL v3+</a></li>';
Exemple #14
0
							print "<td align=\"center\">\n";
							//if ($conf->global->COMPANY_ADDON_PDF != "$name")
							//{
								print '<a href="'.$_SERVER["PHP_SELF"].'?action=del&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'">';
								print img_picto($langs->trans("Enabled"),'on');
								print '</a>';
							//}
							//else
							//{
							//	print img_picto($langs->trans("Enabled"),'on');
							//}
							print "</td>";
						}
						else
						{
							if (versioncompare($module->phpmin,versionphparray()) > 0)
							{
								print "<td align=\"center\">\n";
								print img_picto(dol_escape_htmltag($langs->trans("ErrorModuleRequirePHPVersion",join('.',$module->phpmin))),'off');
								print "</td>";
							}
							else
							{
								print "<td align=\"center\">\n";
								print '<a href="'.$_SERVER["PHP_SELF"].'?action=set&amp;value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"),'off').'</a>';
								print "</td>";
							}
						}

						// Info
						$htmltooltip =    ''.$langs->trans("Name").': '.$module->name;
/**
 *  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;
}
Exemple #16
0
                 } else {
                     $error_msg[] = '<span class="normal bold red">' . $value['directory'] . ' ' . $MESSAGE['RECORD_MODIFIED_FAILED'] . '</span> ';
                 }
             }
         }
     }
     /**
      *	Now check modules folder with entries in addons
      */
     $modules = scan_current_dir(LEPTON_PATH . '/modules');
     if (count($modules['path']) > 0) {
         foreach ($modules['path'] as &$value) {
             $code_version = get_modul_version($value);
             $db_version = get_modul_version($value, false);
             if ($db_version != null && $code_version != null) {
                 if (versioncompare($db_version, $code_version, '>')) {
                     $error_msg[] = '<span class="normal bold red">' . $value . ' ( ' . $db_version . ' > ' . $code_version . ' ) ' . $MESSAGE['GENERIC_MODULE_VERSION_ERROR'] . '</span>';
                     continue;
                 } else {
                     require LEPTON_PATH . '/modules/' . $value . "/info.php";
                     load_module(LEPTON_PATH . '/modules/' . $value);
                     $msg[] = '<span class="normal bold green">' . $value . ' :: ' . $MESSAGE['ADDON_MODULES_RELOADED'] . '</span>';
                 }
             }
         }
     } else {
         $error_msg[] = '<span class="normal bold red">' . $MESSAGE['ADDON_ERROR_RELOAD'] . '</span>';
     }
     break;
 case 'reload_templates':
     $templates = scan_current_dir(LEPTON_PATH . '/templates');
Exemple #17
0
             $db->commit();
         }
     } else {
         print $langs->trans("ErrorFailedToConnect") . "<br>";
     }
 } elseif (empty($action) || preg_match('/upgrade/i', $action)) {
     if ($db->connected) {
         $conf->setValues($db);
         // Define if we need to update the MAIN_VERSION_LAST_UPGRADE value in database
         $tagdatabase = false;
         if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE)) {
             $tagdatabase = true;
         } else {
             $mainversionlastupgradearray = preg_split('/[.-]/', $conf->global->MAIN_VERSION_LAST_UPGRADE);
             $targetversionarray = preg_split('/[.-]/', $targetversion);
             if (versioncompare($targetversionarray, $mainversionlastupgradearray) > 0) {
                 $tagdatabase = true;
             }
         }
         if ($tagdatabase) {
             dolibarr_install_syslog('step5: set MAIN_VERSION_LAST_UPGRADE const to value ' . $targetversion);
             $resql = $db->query("DELETE FROM " . MAIN_DB_PREFIX . "const WHERE " . $db->decrypt('name') . "='MAIN_VERSION_LAST_UPGRADE'");
             if (!$resql) {
                 dol_print_error($db, 'Error in setup program');
             }
             $resql = $db->query("INSERT INTO " . MAIN_DB_PREFIX . "const(name,value,type,visible,note,entity) VALUES (" . $db->encrypt('MAIN_VERSION_LAST_UPGRADE', 1) . "," . $db->encrypt($targetversion, 1) . ",'chaine',0,'Dolibarr version for last upgrade',0)");
             if (!$resql) {
                 dol_print_error($db, 'Error in setup program');
             }
             $conf->global->MAIN_VERSION_LAST_UPGRADE = $targetversion;
         } else {
Exemple #18
0
    /**
     * testConvertTime2Seconds
     *
     * @return	void
     */
    public function testVersionCompare()
    {
    	global $conf,$user,$langs,$db;
		$conf=$this->savconf;
		$user=$this->savuser;
		$langs=$this->savlangs;
		$db=$this->savdb;

		$result=versioncompare(array(3,1,-4),array(3,1,1));
    	print __METHOD__." result=".$result."\n";
		$this->assertEquals(-3,$result);
		$result=versioncompare(array(3,1,0),array(3,1,1));
    	print __METHOD__." result=".$result."\n";
		$this->assertEquals(-3,$result);
		$result=versioncompare(array(3,1,0),array(3,2,0));
		print __METHOD__." result=".$result."\n";
		$this->assertEquals(-2,$result);
		$result=versioncompare(array(3,1,0),array(3,1,0));
		print __METHOD__." result=".$result."\n";
		$this->assertEquals(0,$result);

		return $result;
    }
Exemple #19
0
	}
	// If upgrade
	elseif (preg_match('/upgrade/i',$action))
	{
		if ($db->connected == 1)
		{
			$conf->setValues($db);

			// Define if we need to update the MAIN_VERSION_LAST_UPGRADE value in database
			$tagdatabase=false;
			if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE)) $tagdatabase=true;	// We don't know what it was before, so now we consider we are version choosed.
			else
			{
				$mainversionlastupgradearray=preg_split('/[.-]/',$conf->global->MAIN_VERSION_LAST_UPGRADE);
				$targetversionarray=preg_split('/[.-]/',$targetversion);
				if (versioncompare($targetversionarray,$mainversionlastupgradearray) > 0) $tagdatabase=true;
			}

			if ($tagdatabase)
			{
				dolibarr_install_syslog('install/etape5.php set MAIN_VERSION_LAST_UPGRADE const to value '.$targetversion, LOG_DEBUG);
				$resql=$db->query("DELETE FROM llx_const WHERE ".$db->decrypt('name')."='MAIN_VERSION_LAST_UPGRADE'");
				if (! $resql) dol_print_error($db,'Error in setup program');
				$resql=$db->query("INSERT INTO llx_const(name,value,type,visible,note,entity) values(".$db->encrypt('MAIN_VERSION_LAST_UPGRADE',1).",".$db->encrypt($targetversion,1).",'chaine',0,'Dolibarr version for last upgrade',0)");
				if (! $resql) dol_print_error($db,'Error in setup program');
				$conf->global->MAIN_VERSION_LAST_UPGRADE=$targetversion;
			}
			else
			{
				dolibarr_install_syslog('install/etape5.php We run an upgrade to version '.$targetversion.' but database was already upgraded to '.$conf->global->MAIN_VERSION_LAST_UPGRADE.'. We keep MAIN_VERSION_LAST_UPGRADE as it is.', LOG_DEBUG);
			}