Fix: functions "ereg", "ereg_replace", "eregi", "eregi_replace" is deprecated since php 5.3.0
This commit is contained in:
parent
f966acfbdb
commit
66ce14106e
@ -104,8 +104,8 @@ class CMailFile
|
||||
|
||||
// On definit fin de ligne
|
||||
$this->eol="\n";
|
||||
if (eregi('^win',PHP_OS)) $this->eol="\r\n";
|
||||
if (eregi('^mac',PHP_OS)) $this->eol="\r";
|
||||
if (preg_match('/^win/i',PHP_OS)) $this->eol="\r\n";
|
||||
if (preg_match('/^mac/i',PHP_OS)) $this->eol="\r";
|
||||
|
||||
// On defini mime_boundary
|
||||
$this->mime_boundary = md5(uniqid("dolibarr"));
|
||||
@ -744,7 +744,7 @@ class CMailFile
|
||||
*/
|
||||
function checkIfHTML($msg)
|
||||
{
|
||||
if (!eregi('^[ \t]*<html',$msg))
|
||||
if (!preg_match('/^[\s\t]*<html/i',$msg))
|
||||
{
|
||||
$out = "<html><head><title></title>";
|
||||
if (!empty($this->styleCSS)) $out.= $this->styleCSS;
|
||||
@ -946,7 +946,7 @@ class CMailFile
|
||||
$i=0;
|
||||
foreach ($matches[1] as $full)
|
||||
{
|
||||
eregi('file=([A-Za-z0-9_\-\/]+[.]?[A-Za-z0-9]+)?$',$full,$regs);
|
||||
preg_match('/file=([A-Za-z0-9_\-\/]+[\.]?[A-Za-z0-9]+)?$/i',$full,$regs);
|
||||
$img = $regs[1];
|
||||
|
||||
if (file_exists($images_dir.'/'.$img))
|
||||
@ -961,13 +961,13 @@ class CMailFile
|
||||
$this->html_images[$i]["name"] = $img;
|
||||
|
||||
// Content type
|
||||
$ext = preg_replace('#^.*\.(\w{3,4})$#e', 'strtolower("$1")', $img);
|
||||
$ext = preg_replace('/^.*\.(\w{3,4})$/e', 'strtolower("$1")', $img);
|
||||
$this->html_images[$i]["content_type"] = $this->image_types[$ext];
|
||||
|
||||
// cid
|
||||
$this->html_images[$i]["cid"] = md5(uniqid(time()));
|
||||
|
||||
$this->html = preg_replace("#src=\"$src\"|src='$src'#", "src=\"cid:".$this->html_images[$i]["cid"]."\"", $this->html);
|
||||
$this->html = preg_replace("/src=\"$src\"|src='$src'/i", "src=\"cid:".$this->html_images[$i]["cid"]."\"", $this->html);
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
@ -989,7 +989,7 @@ class CMailFile
|
||||
if ($image = file_get_contents($fullpath))
|
||||
{
|
||||
// On garde que le nom de l'image
|
||||
eregi('([A-Za-z0-9_-]+[.]?[A-Za-z0-9]+)?$',$img["name"],$regs);
|
||||
preg_match('/([A-Za-z0-9_-]+[\.]?[A-Za-z0-9]+)?$/i',$img["name"],$regs);
|
||||
$imgName = $regs[1];
|
||||
|
||||
$this->images_encoded[$i]['name'] = $imgName;
|
||||
@ -1035,7 +1035,7 @@ class CMailFile
|
||||
// Boucle sur chaque composant de l'adresse
|
||||
foreach($arrayaddress as $val)
|
||||
{
|
||||
if (eregi('^(.*)<(.*)>$',trim($val),$regs))
|
||||
if (preg_match('/^(.*)<(.*)>$/i',trim($val),$regs))
|
||||
{
|
||||
$name = trim($regs[1]);
|
||||
$email = trim($regs[2]);
|
||||
|
||||
@ -55,8 +55,8 @@ function versioncompare($versionarray1,$versionarray2)
|
||||
{
|
||||
$operande1=isset($versionarray1[$level])?$versionarray1[$level]:0;
|
||||
$operande2=isset($versionarray2[$level])?$versionarray2[$level]:0;
|
||||
if (eregi('beta|alpha',$operande1)) $operande1=-1;
|
||||
if (eregi('beta|alpha',$operande2)) $operande2=-1;
|
||||
if (preg_match('/beta|alpha/i',$operande1)) $operande1=-1;
|
||||
if (preg_match('/beta|alpha/i',$operande2)) $operande2=-1;
|
||||
$level++;
|
||||
//print 'level '.$level.' '.$operande1.'-'.$operande2;
|
||||
if ($operande1 < $operande2) { $ret = -$level; break; }
|
||||
@ -114,7 +114,7 @@ function run_sql($sqlfile,$silent=1)
|
||||
$buf = fgets($fp, 4096);
|
||||
|
||||
// Cas special de lignes autorisees pour certaines versions uniquement
|
||||
if (eregi('^-- V([0-9\.]+)',$buf,$reg))
|
||||
if (preg_match('/^--\sV([0-9\.]+)/i',$buf,$reg))
|
||||
{
|
||||
$versioncommande=explode('.',$reg[1]);
|
||||
//print var_dump($versioncommande);
|
||||
@ -123,13 +123,13 @@ function run_sql($sqlfile,$silent=1)
|
||||
&& versioncompare($versioncommande,$versionarray) <= 0)
|
||||
{
|
||||
// Version qualified, delete SQL comments
|
||||
$buf=preg_replace('/^-- V([0-9\.]+)/i','',$buf);
|
||||
$buf=preg_replace('/^--\sV([0-9\.]+)/i','',$buf);
|
||||
//print "Ligne $i qualifi?e par version: ".$buf.'<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Ajout ligne si non commentaire
|
||||
if (! preg_match('/^--/i',$buf)) $buffer .= $buf;
|
||||
if (! preg_match('/^--/',$buf)) $buffer .= $buf;
|
||||
|
||||
// print $buf.'<br>';
|
||||
|
||||
@ -200,14 +200,14 @@ function run_sql($sqlfile,$silent=1)
|
||||
if (! $silent) print '<tr><td valign="top">'.$langs->trans("Request").' '.($i+1)." sql='".$newsql."'</td></tr>\n";
|
||||
dol_syslog('Admin.lib::run_sql Request '.($i+1).' sql='.$newsql, LOG_DEBUG);
|
||||
|
||||
if (eregi('insert into ([^ ]+)',$newsql,$reg))
|
||||
if (preg_match('/insert into ([^\s]+)/i',$newsql,$reg))
|
||||
{
|
||||
// It's an insert
|
||||
$cursorinsert++;
|
||||
}
|
||||
|
||||
// Replace __x__ with rowid of insert nb x
|
||||
while (eregi('__([0-9]+)__',$newsql,$reg))
|
||||
while (preg_match('/__([0-9]+)__/',$newsql,$reg))
|
||||
{
|
||||
$cursor=$reg[1];
|
||||
if (empty($listofinsertedrowid[$cursor]))
|
||||
@ -225,7 +225,7 @@ function run_sql($sqlfile,$silent=1)
|
||||
}
|
||||
|
||||
// Replace __ENTITY__ with current entity id
|
||||
while (eregi('(__ENTITY__)',$newsql,$reg))
|
||||
while (preg_match('/(__ENTITY__)/i',$newsql,$reg))
|
||||
{
|
||||
$from = $reg[1];
|
||||
$to = $conf->entity;
|
||||
@ -464,20 +464,20 @@ function listOfSessions()
|
||||
$dh = @opendir($sessPath);
|
||||
while(($file = @readdir($dh)) !== false)
|
||||
{
|
||||
if (eregi('^sess_',$file) && $file != "." && $file != "..")
|
||||
if (preg_match('/^sess_/i',$file) && $file != "." && $file != "..")
|
||||
{
|
||||
$fullpath = $sessPath.$file;
|
||||
if(! @is_dir($fullpath))
|
||||
{
|
||||
$sessValues = file_get_contents($fullpath); // get raw session data
|
||||
|
||||
if (eregi('dol_login',$sessValues) && // limit to dolibarr session
|
||||
eregi('dol_entity\|s:([0-9]+):"('.$conf->entity.')"',$sessValues) && // limit to current entity
|
||||
eregi('dol_company\|s:([0-9]+):"('.$conf->global->MAIN_INFO_SOCIETE_NOM.')"',$sessValues)) // limit to company name
|
||||
if (preg_match('/dol_login/i',$sessValues) && // limit to dolibarr session
|
||||
preg_match('/dol_entity\|s:([0-9]+):"(/i'.$conf->entity.')"',$sessValues) && // limit to current entity
|
||||
preg_match('/dol_company\|s:([0-9]+):"(/i'.$conf->global->MAIN_INFO_SOCIETE_NOM.')"',$sessValues)) // limit to company name
|
||||
{
|
||||
$tmp=explode('_', $file);
|
||||
$idsess=$tmp[1];
|
||||
$login = eregi('dol_login\|s:[0-9]+:"([A-Za-z0-9]+)"',$sessValues,$regs);
|
||||
$login = preg_match('/dol_login\|s:[0-9]+:"([A-Za-z0-9]+)"/i',$sessValues,$regs);
|
||||
$arrayofSessions[$idsess]["login"] = $regs[1];
|
||||
$arrayofSessions[$idsess]["age"] = time()-filectime( $fullpath );
|
||||
$arrayofSessions[$idsess]["creation"] = filectime( $fullpath );
|
||||
@ -516,9 +516,9 @@ function purgeSessions($mysessionid)
|
||||
{
|
||||
$sessValues = file_get_contents($fullpath); // get raw session data
|
||||
|
||||
if (eregi('dol_login',$sessValues) && // limit to dolibarr session
|
||||
eregi('dol_entity\|s:([0-9]+):"('.$conf->entity.')"',$sessValues) && // limit to current entity
|
||||
eregi('dol_company\|s:([0-9]+):"('.$conf->global->MAIN_INFO_SOCIETE_NOM.')"',$sessValues)) // limit to company name
|
||||
if (preg_match('/dol_login/i',$sessValues) && // limit to dolibarr session
|
||||
preg_match('/dol_entity\|s:([0-9]+):"('.$conf->entity.')"/i',$sessValues) && // limit to current entity
|
||||
preg_match('/dol_company\|s:([0-9]+):"('.$conf->global->MAIN_INFO_SOCIETE_NOM.')"/i',$sessValues)) // limit to company name
|
||||
{
|
||||
$tmp=explode('_', $file);
|
||||
$idsess=$tmp[1];
|
||||
|
||||
@ -111,8 +111,8 @@ class DoliDb
|
||||
$this->db = $this->connect($host, $user, $pass, $name, $port);
|
||||
if ($this->db)
|
||||
{
|
||||
// Si client connect<EFBFBD> avec charset different de celui de la base Dolibarr
|
||||
// (La base Dolibarr a <EFBFBD>t<EFBFBD> forc<72>e en this->forcecharset <20> l'install)
|
||||
// Si client connecte avec charset different de celui de la base Dolibarr
|
||||
// (La base Dolibarr a ete forcee en this->forcecharset a l'install)
|
||||
$this->connected = 1;
|
||||
$this->ok = 1;
|
||||
}
|
||||
@ -125,7 +125,7 @@ class DoliDb
|
||||
dol_syslog("DoliDB::DoliDB : Erreur Connect mssql_get_last_message=".$this->error,LOG_ERR);
|
||||
}
|
||||
|
||||
// Si connexion serveur ok et si connexion base demand<EFBFBD>e, on essaie connexion base
|
||||
// Si connexion serveur ok et si connexion base demandee, on essaie connexion base
|
||||
if ($this->connected && $name)
|
||||
{
|
||||
if ($this->select_db($name))
|
||||
@ -179,7 +179,7 @@ class DoliDb
|
||||
\param passwd mot de passe
|
||||
\param name nom de la database (ne sert pas sous mysql, sert sous pgsql)
|
||||
\param port Port of database server
|
||||
\return resource handler d'acc<EFBFBD>s <EFBFBD> la bas
|
||||
\return resource handler d'acces a la base
|
||||
\seealso close
|
||||
*/
|
||||
function connect($host, $login, $passwd, $name, $port=0)
|
||||
@ -188,9 +188,9 @@ class DoliDb
|
||||
$newhost=$host;
|
||||
if ($port) $newhost.=':'.$port;
|
||||
$this->db = @mssql_connect($newhost, $login, $passwd);
|
||||
//force les enregistrement en latin1 si la base est en utf8 par d<EFBFBD>faut
|
||||
// Supprim<EFBFBD> car plante sur mon PHP-Mysql. De plus, la base est forcement en latin1 avec
|
||||
// les nouvelles version de Dolibarr car forc<EFBFBD> par l'install Dolibarr.
|
||||
//force les enregistrement en latin1 si la base est en utf8 par defaut
|
||||
// Supprime car plante sur mon PHP-Mysql. De plus, la base est forcement en latin1 avec
|
||||
// les nouvelles version de Dolibarr car force par l'install Dolibarr.
|
||||
//$this->query('SET NAMES '.$this->forcecharset);
|
||||
//print "Resultat fonction connect: ".$this->db;
|
||||
return $this->db;
|
||||
@ -297,7 +297,7 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Effectue une requete et renvoi le resultset de r<EFBFBD>ponse de la base
|
||||
\brief Effectue une requete et renvoi le resultset de reponse de la base
|
||||
\param query Contenu de la query
|
||||
\return resource Resultset de la reponse
|
||||
*/
|
||||
@ -327,7 +327,7 @@ class DoliDb
|
||||
// Extraire le nombre limite
|
||||
$number = stristr($query, " limit ");
|
||||
$number = substr($number, 7);
|
||||
// Ins<EFBFBD>rer l'instruction TOP et le nombre limite
|
||||
// Inserer l'instruction TOP et le nombre limite
|
||||
$query = str_ireplace("select ", "select top ".$number." ", $query);
|
||||
// Supprimer l'instruction MySql
|
||||
$query = str_ireplace(" limit ".$number, "", $query);
|
||||
@ -335,20 +335,20 @@ class DoliDb
|
||||
|
||||
$itemfound = stripos($query, " week(");
|
||||
if ($itemfound !== false) {
|
||||
// Recr<EFBFBD>er une requ<71>te sans instruction Mysql
|
||||
// Recreer une requete sans instruction Mysql
|
||||
$positionMySql = stripos($query, " week(");
|
||||
$newquery = substr($query, 0, $positionMySql);
|
||||
|
||||
// R<EFBFBD>cup<EFBFBD>rer la date pass<73>e en param<61>tre
|
||||
// Recuperer la date passee en parametre
|
||||
$extractvalue = stristr($query, " week(");
|
||||
$extractvalue = substr($extractvalue, 6);
|
||||
$positionMySql = stripos($extractvalue, ")");
|
||||
// Conserver la fin de la requ<EFBFBD>te
|
||||
// Conserver la fin de la requete
|
||||
$endofquery = substr($extractvalue, $positionMySql);
|
||||
$extractvalue = substr($extractvalue, 0, $positionMySql);
|
||||
|
||||
// Remplacer l'instruction MySql en Sql Server
|
||||
// Ins<EFBFBD>rer la date en param<61>tre et le reste de la requ<71>te
|
||||
// Inserer la date en parametre et le reste de la requete
|
||||
$query = $newquery." DATEPART(week, ".$extractvalue.$endofquery;
|
||||
}
|
||||
|
||||
@ -356,7 +356,7 @@ class DoliDb
|
||||
|
||||
if (! $this->database_name)
|
||||
{
|
||||
// Ordre SQL ne n<EFBFBD>cessitant pas de connexion <20> une base (exemple: CREATE DATABASE)
|
||||
// Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE)
|
||||
$ret = mssql_query($query, $this->db);
|
||||
}
|
||||
else
|
||||
@ -364,7 +364,7 @@ class DoliDb
|
||||
$ret = mssql_query($query, $this->db);
|
||||
}
|
||||
|
||||
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
|
||||
if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query))
|
||||
{
|
||||
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
|
||||
if (! $ret)
|
||||
@ -391,32 +391,32 @@ class DoliDb
|
||||
*/
|
||||
function fetch_object($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return mssql_fetch_object($resultset);
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Renvoie les donn<EFBFBD>es dans un tableau.
|
||||
\brief Renvoie les donnees dans un tableau.
|
||||
\param resultset Curseur de la requete voulue
|
||||
\return array
|
||||
*/
|
||||
function fetch_array($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return mssql_fetch_array($resultset);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
\brief Renvoie les donn<EFBFBD>es comme un tableau.
|
||||
\brief Renvoie les donnees comme un tableau.
|
||||
\param resultset Curseur de la requete voulue
|
||||
\return array
|
||||
*/
|
||||
function fetch_row($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return @mssql_fetch_row($resultset);
|
||||
}
|
||||
@ -429,7 +429,7 @@ class DoliDb
|
||||
*/
|
||||
function num_rows($resultset=0)
|
||||
{
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilis<EFBFBD> sur cette connexion
|
||||
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
|
||||
if (! is_resource($resultset)) { $resultset=$this->results; }
|
||||
return mssql_num_rows($resultset);
|
||||
}
|
||||
@ -481,7 +481,7 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
\brief D<EFBFBD>fini le tri de la requ<EFBFBD>te.
|
||||
\brief Defini le tri de la requete.
|
||||
\param sortfield liste des champ de tri
|
||||
\param sortorder ordre du tri
|
||||
\return string chaine exprimant la syntax sql de l'ordre de tri
|
||||
@ -565,7 +565,7 @@ class DoliDb
|
||||
* \param test chaine test
|
||||
* \param resok resultat si test egal
|
||||
* \param resko resultat si test non egal
|
||||
* \return string chaine format<EFBFBD> SQL
|
||||
* \return string chaine formate SQL
|
||||
*/
|
||||
function ifsql($test,$resok,$resko)
|
||||
{
|
||||
@ -674,8 +674,8 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief R<EFBFBD>cup<EFBFBD>re l'id gen<EFBFBD>r<EFBFBD> par le dernier INSERT.
|
||||
\param tab Nom de la table concern<EFBFBD>e par l'insert. Ne sert pas sous mssql mais requis pour compatibilit<EFBFBD> avec Postgresql
|
||||
\brief Recupere l'id genere par le dernier INSERT.
|
||||
\param tab Nom de la table concernee par l'insert. Ne sert pas sous mssql mais requis pour compatibilite avec Postgresql
|
||||
\return int id
|
||||
*/
|
||||
function last_insert_id($tab)
|
||||
@ -750,7 +750,7 @@ class DoliDb
|
||||
$ret=$this->query($sql);
|
||||
if (! $ret)
|
||||
{
|
||||
// On r<EFBFBD>essaie pour compatibilit<69> avec mssql < 5.0
|
||||
// On reessaie pour compatibilite avec mssql < 5.0
|
||||
$sql = 'CREATE DATABASE '.$database;
|
||||
$ret=$this->query($sql);
|
||||
}
|
||||
@ -770,19 +770,19 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Cr<EFBFBD>e une table
|
||||
\brief Cree une table
|
||||
\param table Nom de la table
|
||||
\param fields Tableau associatif [nom champ][tableau des descriptions]
|
||||
\param primary_key Nom du champ qui sera la clef primaire
|
||||
\param unique_keys Tableau associatifs Nom de champs qui seront clef unique => valeur
|
||||
\param fulltext Tableau des Nom de champs qui seront index<EFBFBD>s en fulltext
|
||||
\param key Tableau des champs cl<EFBFBD>s noms => valeur
|
||||
\param fulltext Tableau des Nom de champs qui seront indexes en fulltext
|
||||
\param key Tableau des champs cles noms => valeur
|
||||
\param type Type de la table
|
||||
\return int <0 si KO, >=0 si OK
|
||||
*/
|
||||
function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
|
||||
{
|
||||
// cl<EFBFBD>s recherch<63>es dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
|
||||
// cles recherchees dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
|
||||
// ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
|
||||
$sql = "create table ".$table."(";
|
||||
$i=0;
|
||||
@ -790,21 +790,21 @@ class DoliDb
|
||||
{
|
||||
$sqlfields[$i] = $field_name." ";
|
||||
$sqlfields[$i] .= $field_desc['type'];
|
||||
if( eregi("^[^ ]",$field_desc['value']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['value']))
|
||||
$sqlfields[$i] .= "(".$field_desc['value'].")";
|
||||
else if( eregi("^[^ ]",$field_desc['attribute']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['attribute']))
|
||||
$sqlfields[$i] .= " ".$field_desc['attribute'];
|
||||
else if( eregi("^[^ ]",$field_desc['default']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['default']))
|
||||
{
|
||||
if(eregi("null",$field_desc['default']))
|
||||
if(preg_match("/null/i",$field_desc['default']))
|
||||
$sqlfields[$i] .= " default ".$field_desc['default'];
|
||||
else
|
||||
$sqlfields[$i] .= " default '".$field_desc['default']."'";
|
||||
}
|
||||
else if( eregi("^[^ ]",$field_desc['null']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['null']))
|
||||
$sqlfields[$i] .= " ".$field_desc['null'];
|
||||
|
||||
else if( eregi("^[^ ]",$field_desc['extra']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['extra']))
|
||||
$sqlfields[$i] .= " ".$field_desc['extra'];
|
||||
$i++;
|
||||
}
|
||||
@ -846,7 +846,7 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief d<EFBFBD>crit une table dans une database.
|
||||
\brief decrit une table dans une database.
|
||||
\param table Nom de la table
|
||||
\param field Optionnel : Nom du champ si l'on veut la desc d'un champ
|
||||
\return resource
|
||||
@ -864,28 +864,28 @@ class DoliDb
|
||||
* \brief Insert a new field in table
|
||||
* \param table Nom de la table
|
||||
* \param field_name Nom du champ a inserer
|
||||
* \param field_desc Tableau associatif de description du champ a inserer[nom du parametre][valeur du param<EFBFBD>tre]
|
||||
* \param field_desc Tableau associatif de description du champ a inserer[nom du parametre][valeur du parametre]
|
||||
* \param field_position Optionnel ex.: "after champtruc"
|
||||
* \return int <0 si KO, >0 si OK
|
||||
*/
|
||||
function DDLAddField($table,$field_name,$field_desc,$field_position="")
|
||||
{
|
||||
// cl<EFBFBD>s recherch<63>es dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
|
||||
// cles recherchees dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
|
||||
// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
|
||||
$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
|
||||
$sql .= $field_desc['type'];
|
||||
if( eregi("^[^ ]",$field_desc['value']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['value']))
|
||||
$sql .= "(".$field_desc['value'].")";
|
||||
if( eregi("^[^ ]",$field_desc['attribute']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['attribute']))
|
||||
$sql .= " ".$field_desc['attribute'];
|
||||
if( eregi("^[^ ]",$field_desc['null']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['null']))
|
||||
$sql .= " ".$field_desc['null'];
|
||||
if( eregi("^[^ ]",$field_desc['default']))
|
||||
if(eregi("null",$field_desc['default']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['default']))
|
||||
if(preg_match("/null/i",$field_desc['default']))
|
||||
$sql .= " default ".$field_desc['default'];
|
||||
else
|
||||
$sql .= " default '".$field_desc['default']."'";
|
||||
if( eregi("^[^ ]",$field_desc['extra']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['extra']))
|
||||
$sql .= " ".$field_desc['extra'];
|
||||
$sql .= " ".$field_position;
|
||||
|
||||
@ -978,7 +978,7 @@ class DoliDb
|
||||
}
|
||||
return $liste;
|
||||
*/
|
||||
return ''; // attente d<EFBFBD>bugage
|
||||
return ''; // attente debugage
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -139,8 +139,8 @@ class DoliDb
|
||||
|
||||
// If client connected with different charset than Dolibarr HTML output
|
||||
$clientmustbe='';
|
||||
if (eregi('UTF-8',$conf->file->character_set_client)) $clientmustbe='utf8';
|
||||
if (eregi('ISO-8859-1',$conf->file->character_set_client)) $clientmustbe='latin1';
|
||||
if (preg_match('/UTF-8/i',$conf->file->character_set_client)) $clientmustbe='utf8';
|
||||
if (preg_match('/ISO-8859-1/i',$conf->file->character_set_client)) $clientmustbe='latin1';
|
||||
if (mysql_client_encoding($this->db) != $clientmustbe)
|
||||
{
|
||||
$this->query("SET NAMES '".$clientmustbe."'", $this->db);
|
||||
@ -165,8 +165,8 @@ class DoliDb
|
||||
{
|
||||
// If client connected with different charset than Dolibarr HTML output
|
||||
$clientmustbe='';
|
||||
if (eregi('UTF-8',$conf->file->character_set_client)) $clientmustbe='utf8';
|
||||
if (eregi('ISO-8859-1',$conf->file->character_set_client)) $clientmustbe='latin1';
|
||||
if (preg_match('/UTF-8/i',$conf->file->character_set_client)) $clientmustbe='utf8';
|
||||
if (preg_match('/ISO-8859-1/i',$conf->file->character_set_client)) $clientmustbe='latin1';
|
||||
if (mysql_client_encoding($this->db) != $clientmustbe)
|
||||
{
|
||||
$this->query("SET NAMES '".$clientmustbe."'", $this->db);
|
||||
@ -361,7 +361,7 @@ class DoliDb
|
||||
$ret = mysql_db_query($this->database_name, $query, $this->db);
|
||||
}
|
||||
|
||||
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
|
||||
if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query))
|
||||
{
|
||||
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
|
||||
if (! $ret)
|
||||
@ -838,21 +838,21 @@ class DoliDb
|
||||
{
|
||||
$sqlfields[$i] = $field_name." ";
|
||||
$sqlfields[$i] .= $field_desc['type'];
|
||||
if( eregi("^[^ ]",$field_desc['value']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['value']))
|
||||
$sqlfields[$i] .= "(".$field_desc['value'].")";
|
||||
else if( eregi("^[^ ]",$field_desc['attribute']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['attribute']))
|
||||
$sqlfields[$i] .= " ".$field_desc['attribute'];
|
||||
else if( eregi("^[^ ]",$field_desc['default']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['default']))
|
||||
{
|
||||
if(eregi("null",$field_desc['default']))
|
||||
if(preg_match("/null/i",$field_desc['default']))
|
||||
$sqlfields[$i] .= " default ".$field_desc['default'];
|
||||
else
|
||||
$sqlfields[$i] .= " default '".$field_desc['default']."'";
|
||||
}
|
||||
else if( eregi("^[^ ]",$field_desc['null']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['null']))
|
||||
$sqlfields[$i] .= " ".$field_desc['null'];
|
||||
|
||||
else if( eregi("^[^ ]",$field_desc['extra']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['extra']))
|
||||
$sqlfields[$i] .= " ".$field_desc['extra'];
|
||||
$i++;
|
||||
}
|
||||
@ -922,18 +922,18 @@ class DoliDb
|
||||
// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
|
||||
$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
|
||||
$sql .= $field_desc['type'];
|
||||
if( eregi("^[^ ]",$field_desc['value']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['value']))
|
||||
$sql .= "(".$field_desc['value'].")";
|
||||
if( eregi("^[^ ]",$field_desc['attribute']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['attribute']))
|
||||
$sql .= " ".$field_desc['attribute'];
|
||||
if( eregi("^[^ ]",$field_desc['null']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['null']))
|
||||
$sql .= " ".$field_desc['null'];
|
||||
if( eregi("^[^ ]",$field_desc['default']))
|
||||
if(eregi("null",$field_desc['default']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['default']))
|
||||
if(preg_match("/null/i",$field_desc['default']))
|
||||
$sql .= " default ".$field_desc['default'];
|
||||
else
|
||||
$sql .= " default '".$field_desc['default']."'";
|
||||
if( eregi("^[^ ]",$field_desc['extra']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['extra']))
|
||||
$sql .= " ".$field_desc['extra'];
|
||||
$sql .= " ".$field_position;
|
||||
|
||||
|
||||
@ -142,8 +142,8 @@ class DoliDb
|
||||
|
||||
// If client connected with different charset than Dolibarr HTML output
|
||||
$clientmustbe='';
|
||||
if (eregi('UTF-8',$conf->file->character_set_client)) $clientmustbe='utf8';
|
||||
if (eregi('ISO-8859-1',$conf->file->character_set_client)) $clientmustbe='latin1';
|
||||
if (preg_match('/UTF-8/i',$conf->file->character_set_client)) $clientmustbe='utf8';
|
||||
if (preg_match('/ISO-8859-1/i',$conf->file->character_set_client)) $clientmustbe='latin1';
|
||||
if (mysqli_client_encoding($this->db) != $clientmustbe)
|
||||
{
|
||||
$this->query("SET NAMES '".$clientmustbe."'", $this->db);
|
||||
@ -168,8 +168,8 @@ class DoliDb
|
||||
{
|
||||
// If client connected with different charset than Dolibarr HTML output
|
||||
$clientmustbe='';
|
||||
if (eregi('UTF-8',$conf->file->character_set_client)) $clientmustbe='utf8';
|
||||
if (eregi('ISO-8859-1',$conf->file->character_set_client)) $clientmustbe='latin1';
|
||||
if (preg_match('/UTF-8/i',$conf->file->character_set_client)) $clientmustbe='utf8';
|
||||
if (preg_match('/ISO-8859-1/i',$conf->file->character_set_client)) $clientmustbe='latin1';
|
||||
if (mysqli_client_encoding($this->db) != $clientmustbe)
|
||||
{
|
||||
$this->query("SET NAMES '".$clientmustbe."'", $this->db);
|
||||
@ -367,7 +367,7 @@ class DoliDb
|
||||
$ret = mysqli_query($this->db,$query);
|
||||
}
|
||||
|
||||
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
|
||||
if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query))
|
||||
{
|
||||
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
|
||||
if (! $ret)
|
||||
@ -850,21 +850,21 @@ class DoliDb
|
||||
{
|
||||
$sqlfields[$i] = $field_name." ";
|
||||
$sqlfields[$i] .= $field_desc['type'];
|
||||
if( eregi("^[^ ]",$field_desc['value']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['value']))
|
||||
$sqlfields[$i] .= "(".$field_desc['value'].")";
|
||||
else if( eregi("^[^ ]",$field_desc['attribute']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['attribute']))
|
||||
$sqlfields[$i] .= " ".$field_desc['attribute'];
|
||||
else if( eregi("^[^ ]",$field_desc['default']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['default']))
|
||||
{
|
||||
if(eregi("null",$field_desc['default']))
|
||||
if(preg_match("/null/i",$field_desc['default']))
|
||||
$sqlfields[$i] .= " default ".$field_desc['default'];
|
||||
else
|
||||
$sqlfields[$i] .= " default '".$field_desc['default']."'";
|
||||
}
|
||||
else if( eregi("^[^ ]",$field_desc['null']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['null']))
|
||||
$sqlfields[$i] .= " ".$field_desc['null'];
|
||||
|
||||
else if( eregi("^[^ ]",$field_desc['extra']))
|
||||
else if( preg_match("/^[^\s]/i",$field_desc['extra']))
|
||||
$sqlfields[$i] .= " ".$field_desc['extra'];
|
||||
$i++;
|
||||
}
|
||||
@ -934,18 +934,18 @@ class DoliDb
|
||||
// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
|
||||
$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
|
||||
$sql .= $field_desc['type'];
|
||||
if( eregi("^[^ ]",$field_desc['value']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['value']))
|
||||
$sql .= "(".$field_desc['value'].")";
|
||||
if( eregi("^[^ ]",$field_desc['attribute']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['attribute']))
|
||||
$sql .= " ".$field_desc['attribute'];
|
||||
if( eregi("^[^ ]",$field_desc['null']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['null']))
|
||||
$sql .= " ".$field_desc['null'];
|
||||
if( eregi("^[^ ]",$field_desc['default']))
|
||||
if(eregi("null",$field_desc['default']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['default']))
|
||||
if(preg_match("/null/i",$field_desc['default']))
|
||||
$sql .= " default ".$field_desc['default'];
|
||||
else
|
||||
$sql .= " default '".$field_desc['default']."'";
|
||||
if( eregi("^[^ ]",$field_desc['extra']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['extra']))
|
||||
$sql .= " ".$field_desc['extra'];
|
||||
$sql .= " ".$field_position;
|
||||
|
||||
|
||||
@ -152,7 +152,7 @@ class DoliDb
|
||||
function convertSQLFromMysql($line)
|
||||
{
|
||||
# comments or empty lines
|
||||
if (eregi('^-- \$Id',$line)) {
|
||||
if (preg_match('/^--\s\$Id/i',$line)) {
|
||||
return '';
|
||||
}
|
||||
# comments or empty lines
|
||||
@ -163,13 +163,13 @@ class DoliDb
|
||||
if ($line != "")
|
||||
{ # we are inside create table statement so lets process datatypes
|
||||
if (preg_match('/(ISAM|innodb)/i',$line)) { # end of create table sequence
|
||||
$line=preg_replace('/\) *type=(MyISAM|innodb);/i',');',$line);
|
||||
$line=preg_replace('/\) *engine=(MyISAM|innodb);/i',');',$line);
|
||||
$line=preg_replace('/\)[\s\t]*type=(MyISAM|innodb);/i',');',$line);
|
||||
$line=preg_replace('/\)[\s\t]*engine=(MyISAM|innodb);/i',');',$line);
|
||||
$line=preg_replace('/,$/','',$line);
|
||||
}
|
||||
|
||||
if (preg_match('/[\s\t]*(\w*)\s*.*int.*auto_increment/i',$line,$reg)) {
|
||||
$line=preg_replace('/[\s\t]*([a-zA-Z_0-9]*)\s*.*int.*auto_increment[^,]*/i','\\1 SERIAL PRIMARY KEY',$line);
|
||||
$line=preg_replace('/[\s\t]*([a-zA-Z_0-9]*)[\s\t]*.*int.*auto_increment[^,]*/i','\\1 SERIAL PRIMARY KEY',$line);
|
||||
}
|
||||
|
||||
# int type conversion
|
||||
@ -493,7 +493,7 @@ class DoliDb
|
||||
$query=$this->convertSQLFromMysql($query);
|
||||
|
||||
$ret = pg_query($this->db, $query);
|
||||
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
|
||||
if (! preg_match("/^COMMIT/i",$query) && ! preg_match("/^ROLLBACK/i",$query))
|
||||
{
|
||||
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
|
||||
if (! $ret)
|
||||
@ -965,18 +965,18 @@ class DoliDb
|
||||
// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
|
||||
$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
|
||||
$sql .= $field_desc['type'];
|
||||
if( eregi("^[^ ]",$field_desc['value']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['value']))
|
||||
$sql .= "(".$field_desc['value'].")";
|
||||
if( eregi("^[^ ]",$field_desc['attribute']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['attribute']))
|
||||
$sql .= " ".$field_desc['attribute'];
|
||||
if( eregi("^[^ ]",$field_desc['null']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['null']))
|
||||
$sql .= " ".$field_desc['null'];
|
||||
if( eregi("^[^ ]",$field_desc['default']))
|
||||
if(eregi("null",$field_desc['default']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['default']))
|
||||
if(preg_match("/null/i",$field_desc['default']))
|
||||
$sql .= " default ".$field_desc['default'];
|
||||
else
|
||||
$sql .= " default '".$field_desc['default']."'";
|
||||
if( eregi("^[^ ]",$field_desc['extra']))
|
||||
if( preg_match("/^[^\s]/i",$field_desc['extra']))
|
||||
$sql .= " ".$field_desc['extra'];
|
||||
$sql .= " ".$field_position;
|
||||
|
||||
|
||||
@ -60,8 +60,8 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
|
||||
$qualified=1;
|
||||
|
||||
// Check if file is qualified
|
||||
if (eregi('^\.',$file)) $qualified=0;
|
||||
if ($excludefilter && eregi($excludefilter,$file)) $qualified=0;
|
||||
if (preg_match('/^\./',$file)) $qualified=0;
|
||||
if ($excludefilter && preg_match('/'.$excludefilter.'/i',$file)) $qualified=0;
|
||||
|
||||
if ($qualified)
|
||||
{
|
||||
@ -72,7 +72,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
|
||||
if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file);
|
||||
if ($loadsize || $sortcriteria == 'size') $filesize=dol_filesize($path."/".$file);
|
||||
|
||||
if (! $filter || eregi($filter,$path.'/'.$file))
|
||||
if (! $filter || preg_match('/'.$filter.'/i',$path.'/'.$file))
|
||||
{
|
||||
$file_list[] = array(
|
||||
"name" => $file,
|
||||
@ -94,7 +94,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
|
||||
// Add file into file_list array
|
||||
if ($loaddate || $sortcriteria == 'date') $filedate=dol_filemtime($path."/".$file);
|
||||
if ($loadsize || $sortcriteria == 'size') $filesize=dol_filesize($path."/".$file);
|
||||
if (! $filter || eregi($filter,$path.'/'.$file))
|
||||
if (! $filter || preg_match('/'.$filter.'/i',$path.'/'.$file))
|
||||
{
|
||||
$file_list[] = array(
|
||||
"name" => $file,
|
||||
@ -169,42 +169,45 @@ function dol_mimetype($file)
|
||||
{
|
||||
$mime='application/octet-stream';
|
||||
// Text files
|
||||
if (eregi('\.txt',$file)) $mime='text/plain';
|
||||
if (eregi('\.csv$',$file)) $mime='text/csv';
|
||||
if (eregi('\.tsv$',$file)) $mime='text/tab-separated-values';
|
||||
if (preg_match('/\.txt$/i',$file)) $mime='text/plain';
|
||||
if (preg_match('/\.csv$/i',$file)) $mime='text/csv';
|
||||
if (preg_match('/\.tsv$/i',$file)) $mime='text/tab-separated-values';
|
||||
// MS office
|
||||
if (eregi('\.mdb$',$file)) $mime='application/msaccess';
|
||||
if (eregi('\.doc$',$file)) $mime='application/msword';
|
||||
if (eregi('\.dot$',$file)) $mime='application/msword';
|
||||
if (eregi('\.xls$',$file)) $mime='application/vnd.ms-excel';
|
||||
if (eregi('\.ppt$',$file)) $mime='application/vnd.ms-powerpoint';
|
||||
if (preg_match('/\.mdb$/i',$file)) $mime='application/msaccess';
|
||||
if (preg_match('/\.doc(x|m)?$/i',$file)) $mime='application/msword';
|
||||
if (preg_match('/\.dot(x|m)?$/i',$file)) $mime='application/msword';
|
||||
if (preg_match('/\.xls(b|m|x)?$/i',$file)) $mime='application/vnd.ms-excel';
|
||||
if (preg_match('/\.xlt(x)?$/i',$file)) $mime='application/vnd.ms-excel';
|
||||
if (preg_match('/\.xla(m)?$/i',$file)) $mime='application/vnd.ms-excel';
|
||||
if (preg_match('/\.pps(m|x)?$/i',$file)) $mime='application/vnd.ms-powerpoint';
|
||||
if (preg_match('/\.ppt(m|x)?$/i',$file)) $mime='application/x-mspowerpoint';
|
||||
// Open office
|
||||
if (eregi('\.odp$',$file)) $mime='application/vnd.oasis.opendocument.presentation';
|
||||
if (eregi('\.ods$',$file)) $mime='application/vnd.oasis.opendocument.spreadsheet';
|
||||
if (eregi('\.odt$',$file)) $mime='application/vnd.oasis.opendocument.text';
|
||||
if (preg_match('/\.odp$/i',$file)) $mime='application/vnd.oasis.opendocument.presentation';
|
||||
if (preg_match('/\.ods$/i',$file)) $mime='application/vnd.oasis.opendocument.spreadsheet';
|
||||
if (preg_match('/\.odt$/i',$file)) $mime='application/vnd.oasis.opendocument.text';
|
||||
// Mix
|
||||
if (eregi('\.(html|htm)$',$file)) $mime='text/html';
|
||||
if (eregi('\.pdf$',$file)) $mime='application/pdf';
|
||||
if (eregi('\.sql$',$file)) $mime='text/plain';
|
||||
if (eregi('\.(sh|ksh|bash)$',$file)) $mime='text/plain';
|
||||
if (preg_match('/\.(html|htm)$/i',$file)) $mime='text/html';
|
||||
if (preg_match('/\.pdf$/i',$file)) $mime='application/pdf';
|
||||
if (preg_match('/\.sql$/i',$file)) $mime='text/plain';
|
||||
if (preg_match('/\.(sh|ksh|bash)$/i',$file)) $mime='text/plain';
|
||||
// Images
|
||||
if (eregi('\.jpg$',$file)) $mime='image/jpeg';
|
||||
if (eregi('\.jpeg$',$file)) $mime='image/jpeg';
|
||||
if (eregi('\.png$',$file)) $mime='image/png';
|
||||
if (eregi('\.gif$',$file)) $mime='image/gif';
|
||||
if (eregi('\.bmp$',$file)) $mime='image/bmp';
|
||||
if (eregi('\.tiff$',$file)) $mime='image/tiff';
|
||||
if (preg_match('/\.jpg$/i',$file)) $mime='image/jpeg';
|
||||
if (preg_match('/\.jpeg$/i',$file)) $mime='image/jpeg';
|
||||
if (preg_match('/\.png$/i',$file)) $mime='image/png';
|
||||
if (preg_match('/\.gif$/i',$file)) $mime='image/gif';
|
||||
if (preg_match('/\.bmp$/i',$file)) $mime='image/bmp';
|
||||
if (preg_match('/\.tiff$/i',$file)) $mime='image/tiff';
|
||||
// Calendar
|
||||
if (eregi('\.vcs$',$file)) $mime='text/calendar';
|
||||
if (eregi('\.ics$',$file)) $mime='text/calendar';
|
||||
if (preg_match('/\.vcs$/i',$file)) $mime='text/calendar';
|
||||
if (preg_match('/\.ics$/i',$file)) $mime='text/calendar';
|
||||
// Other
|
||||
if (eregi('\.torrent$',$file)) $mime='application/x-bittorrent';
|
||||
if (preg_match('/\.torrent$/i',$file)) $mime='application/x-bittorrent';
|
||||
// Audio
|
||||
if (eregi('\.(mp3|ogg|au)$',$file)) $mime='audio';
|
||||
if (preg_match('/\.(mp3|ogg|au|wav|wma|mid)$/i',$file)) $mime='audio';
|
||||
// Video
|
||||
if (eregi('\.(avi|mvw|divx|xvid)$',$file)) $mime='video';
|
||||
if (preg_match('/\.(avi|divx|xvid|wmv|mpg|mpeg)$/i',$file)) $mime='video';
|
||||
// Archive
|
||||
if (eregi('\.(zip|rar|gz|tgz|z|cab|bz2)$',$file)) $mime='archive';
|
||||
if (preg_match('/\.(zip|rar|gz|tgz|z|cab|bz2|7z)$/i',$file)) $mime='archive';
|
||||
return $mime;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user