Work on 3.1.0 release

This commit is contained in:
Laurent Destailleur 2011-07-13 21:09:30 +00:00
parent adbff7bc50
commit 46380c0b18
7 changed files with 58 additions and 50 deletions

View File

@ -10,7 +10,7 @@
; only the root user with no password, stop server and catch ; only the root user with no password, stop server and catch
; files user.MY* to put them in the Dolibarr build/exe/doliwamp/mysql directory. ; files user.MY* to put them in the Dolibarr build/exe/doliwamp/mysql directory.
; ;
; Version: $Id$ ; Version: $Id: doliwamp.iss,v 1.82 2011/07/13 21:09:30 eldy Exp $
;---------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------
@ -18,12 +18,12 @@
; ----- Change this ----- ; ----- Change this -----
AppName=DoliWamp AppName=DoliWamp
; DoliWamp-x.x.x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta ; DoliWamp-x.x.x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta
AppVerName=DoliWamp-3.1.0-alpha AppVerName=DoliWamp-3.1.0-beta
; DoliWamp-x.x x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta ; DoliWamp-x.x x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta
OutputBaseFilename=DoliWamp-3.1.0-alpha OutputBaseFilename=DoliWamp-3.1.0-beta
; Define full path from wich all relative path are defined ; Define full path from wich all relative path are defined
; You must modify this to put here your dolibarr root directory ; You must modify this to put here your dolibarr root directory
SourceDir=C:\Work\Data\Workspace\dolibarr SourceDir=C:\Mes Developpements\dolibarr
; ----- End of change ; ----- End of change
;OutputManifestFile=build\doliwampbuild.log ;OutputManifestFile=build\doliwampbuild.log
AppId=doliwamp AppId=doliwamp
@ -101,10 +101,10 @@ Source: "build\exe\doliwamp\UsedPort.exe"; DestDir: "{app}\"; Flags: ignoreversi
; PhpMyAdmin, Apache, Php, Mysql ; PhpMyAdmin, Apache, Php, Mysql
; Put here path of Wampserver applications ; Put here path of Wampserver applications
; Value OK: apache 2.2.6, php 5.2.5 (5.2.11 fails if php_exif is on), mysql 5.0.45 or 5.1.36 ; Value OK: apache 2.2.6, php 5.2.5 (5.2.11 fails if php_exif is on), mysql 5.0.45 or 5.1.36
Source: "C:\Work\Applis\Wamp\apps\phpmyadmin3.2.0.1\*.*"; DestDir: "{app}\apps\phpmyadmin3.2.0.1"; Flags: ignoreversion recursesubdirs; Excludes: "config.inc.php,wampserver.conf,*.log,*_log" Source: "C:\Program Files\Wamp\apps\phpmyadmin3.2.0.1\*.*"; DestDir: "{app}\apps\phpmyadmin3.2.0.1"; Flags: ignoreversion recursesubdirs; Excludes: "config.inc.php,wampserver.conf,*.log,*_log"
Source: "C:\Work\Applis\Wamp\bin\apache\apache2.2.6\*.*"; DestDir: "{app}\bin\apache\apache2.2.6"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log" Source: "C:\Program Files\Wamp\bin\apache\apache2.2.6\*.*"; DestDir: "{app}\bin\apache\apache2.2.6"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log"
Source: "C:\Work\Applis\Wamp\bin\php\php5.2.5\*.*"; DestDir: "{app}\bin\php\php5.2.5"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,phpForApache.ini,wampserver.conf,*.log,*_log" Source: "C:\Program Files\Wamp\bin\php\php5.2.5\*.*"; DestDir: "{app}\bin\php\php5.2.5"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,phpForApache.ini,wampserver.conf,*.log,*_log"
Source: "C:\Work\Applis\Wamp\bin\mysql\mysql5.0.45\*.*"; DestDir: "{app}\bin\mysql\mysql5.0.45"; Flags: ignoreversion recursesubdirs; Excludes: "my.ini,data\*,wampserver.conf,*.log,*_log,MySQLInstanceConfig.exe" Source: "C:\Program Files\Wamp\bin\mysql\mysql5.0.45\*.*"; DestDir: "{app}\bin\mysql\mysql5.0.45"; Flags: ignoreversion recursesubdirs; Excludes: "my.ini,data\*,wampserver.conf,*.log,*_log,MySQLInstanceConfig.exe"
; Mysql data files (does not overwrite if exists) ; Mysql data files (does not overwrite if exists)
Source: "build\exe\doliwamp\mysql\*.*"; DestDir: "{app}\bin\mysql\data\mysql"; Flags: onlyifdoesntexist ignoreversion recursesubdirs; Excludes: ".cvsignore,.project,CVS\*,Thumbs.db" Source: "build\exe\doliwamp\mysql\*.*"; DestDir: "{app}\bin\mysql\data\mysql"; Flags: onlyifdoesntexist ignoreversion recursesubdirs; Excludes: ".cvsignore,.project,CVS\*,Thumbs.db"
; Dolibarr ; Dolibarr

View File

@ -22,7 +22,7 @@
* \file htdocs/core/class/commonobject.class.php * \file htdocs/core/class/commonobject.class.php
* \ingroup core * \ingroup core
* \brief File of parent class of all other business classes (invoices, contracts, proposals, orders, ...) * \brief File of parent class of all other business classes (invoices, contracts, proposals, orders, ...)
* \version $Id: commonobject.class.php,v 1.145 2011/07/10 16:50:40 eldy Exp $ * \version $Id: commonobject.class.php,v 1.146 2011/07/13 16:55:25 eldy Exp $
*/ */
@ -365,9 +365,10 @@ class CommonObject
* Return array with list of possible values for type of contacts * Return array with list of possible values for type of contacts
* @param source internal, external or all if not defined * @param source internal, external or all if not defined
* @param order Sort order by : code or rowid * @param order Sort order by : code or rowid
* @return array List of type of contacts * @param option 0=Return array id->label, 1=Return array code->label
* @return array Array list of type of contacts (id->label if option=0, code->label if option=1)
*/ */
function liste_type_contact($source='internal', $order='code') function liste_type_contact($source='internal', $order='code', $option=0)
{ {
global $langs; global $langs;
@ -390,7 +391,8 @@ class CommonObject
$transkey="TypeContact_".$this->element."_".$source."_".$obj->code; $transkey="TypeContact_".$this->element."_".$source."_".$obj->code;
$libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle); $libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle);
$tab[$obj->rowid]=$libelle_type; if (empty($option)) $tab[$obj->rowid]=$libelle_type;
else $tab[$obj->code]=$libelle_type;
$i++; $i++;
} }
return $tab; return $tab;

View File

@ -25,7 +25,7 @@
* \ingroup core * \ingroup core
* \brief Fichier de la classe de stockage de la config courante * \brief Fichier de la classe de stockage de la config courante
* \remarks La config est stockee dans le fichier conf/conf.php * \remarks La config est stockee dans le fichier conf/conf.php
* \version $Id: conf.class.php,v 1.60 2011/07/09 05:28:42 hregis Exp $ * \version $Id: conf.class.php,v 1.61 2011/07/13 18:04:25 eldy Exp $
*/ */
@ -145,13 +145,13 @@ class Conf
elseif (preg_match('/^MAIN_MODULE_([A-Z_]+)_TRIGGERS$/i',$key,$reg)) elseif (preg_match('/^MAIN_MODULE_([A-Z_]+)_TRIGGERS$/i',$key,$reg))
{ {
$modulename = strtolower($reg[1]); $modulename = strtolower($reg[1]);
$this->triggers_modules[] = '/'.$modulename.'/inc/triggers/'; $this->triggers_modules[] = '/'.$modulename.'/inc/triggers/'; // TODO Replace inc by includes to have same path than standard
} }
// If this is constant for login method activated by a module // If this is constant for login method activated by a module
elseif (preg_match('/^MAIN_MODULE_([A-Z_]+)_LOGIN_METHOD$/i',$key,$reg)) elseif (preg_match('/^MAIN_MODULE_([A-Z_]+)_LOGIN_METHOD$/i',$key,$reg))
{ {
$modulename = strtolower($reg[1]); $modulename = strtolower($reg[1]);
$this->login_method_modules[] = DOL_DOCUMENT_ROOT.'/'.$modulename.'/inc/login/'; $this->login_method_modules[] = DOL_DOCUMENT_ROOT.'/'.$modulename.'/inc/login/'; // TODO Replace inc by includes to have same path than standard
} }
// If this is constant for hook activated by a module. Value is list of hooked tabs separated with : // If this is constant for hook activated by a module. Value is list of hooked tabs separated with :
elseif (preg_match('/^MAIN_MODULE_([A-Z_]+)_HOOKS$/i',$key,$reg)) elseif (preg_match('/^MAIN_MODULE_([A-Z_]+)_HOOKS$/i',$key,$reg))

View File

@ -22,7 +22,7 @@
* \file htdocs/core/class/html.formmail.class.php * \file htdocs/core/class/html.formmail.class.php
* \ingroup core * \ingroup core
* \brief Fichier de la classe permettant la generation du formulaire html d'envoi de mail unitaire * \brief Fichier de la classe permettant la generation du formulaire html d'envoi de mail unitaire
* \version $Id: html.formmail.class.php,v 1.31 2011/07/10 20:03:41 eldy Exp $ * \version $Id: html.formmail.class.php,v 1.32 2011/07/13 16:55:25 eldy Exp $
*/ */
require_once(DOL_DOCUMENT_ROOT ."/core/class/html.form.class.php"); require_once(DOL_DOCUMENT_ROOT ."/core/class/html.form.class.php");
@ -519,7 +519,7 @@ class FormMail
foreach($listofpaths as $key => $val) foreach($listofpaths as $key => $val)
{ {
$out.= '<div id="attachfile_'.$key.'">'; $out.= '<div id="attachfile_'.$key.'">';
$out.= img_mime($listofnames[$key]).' '.$listofnames[$key]; $out.= img_mime($listofnames[$key]).' '.$listofnames[$key];
if (! $this->withfilereadonly) if (! $this->withfilereadonly)
{ {
$out.= ' <input type="image" style="border: 0px;" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/delete.png" value="'.($key+1).'" class="removedfile" id="removedfile_'.$key.'" name="removedfile_'.$key.'" />'; $out.= ' <input type="image" style="border: 0px;" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/delete.png" value="'.($key+1).'" class="removedfile" id="removedfile_'.$key.'" name="removedfile_'.$key.'" />';
@ -547,15 +547,15 @@ class FormMail
$defaultmessage=""; $defaultmessage="";
// TODO A partir du type, proposer liste de messages dans table llx_models // TODO A partir du type, proposer liste de messages dans table llx_models
if ($this->param["models"]=='body') { $defaultmessage=$this->withbody; } if ($this->param["models"]=='facture_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoice"); }
if ($this->param["models"]=='facture_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoice"); } elseif ($this->param["models"]=='facture_relance') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoiceReminder"); }
if ($this->param["models"]=='facture_relance') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoiceReminder"); } elseif ($this->param["models"]=='propal_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendProposal"); }
if ($this->param["models"]=='propal_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendProposal"); } elseif ($this->param["models"]=='order_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendOrder"); }
if ($this->param["models"]=='order_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendOrder"); } elseif ($this->param["models"]=='order_supplier_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendSupplierOrder"); }
if ($this->param["models"]=='order_supplier_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendSupplierOrder"); } elseif ($this->param["models"]=='invoice_supplier_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendSupplierInvoice"); }
if ($this->param["models"]=='invoice_supplier_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendSupplierInvoice"); } elseif ($this->param["models"]=='shipping_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendShipping"); }
if ($this->param["models"]=='shipping_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendShipping"); } elseif ($this->param["models"]=='fichinter_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendFichInter"); }
if ($this->param["models"]=='fichinter_send') { $defaultmessage=$langs->transnoentities("PredefinedMailContentSendFichInter"); } elseif (! is_numeric($this->withbody)) { $defaultmessage=$this->withbody; }
if ($conf->paypal->enabled && $conf->global->PAYPAL_ADD_PAYMENT_URL) if ($conf->paypal->enabled && $conf->global->PAYPAL_ADD_PAYMENT_URL)
{ {
@ -565,12 +565,12 @@ class FormMail
if ($this->param["models"]=='order_send') if ($this->param["models"]=='order_send')
{ {
$url=getPaymentUrl('order',$this->substit['__ORDERREF__']); $url=getPaypalPaymentUrl('order',$this->substit['__ORDERREF__']);
$defaultmessage=$langs->transnoentities("PredefinedMailContentSendOrderWithPaypalLink",$url); $defaultmessage=$langs->transnoentities("PredefinedMailContentSendOrderWithPaypalLink",$url);
} }
if ($this->param["models"]=='facture_send') if ($this->param["models"]=='facture_send')
{ {
$url=getPaymentUrl('invoice',$this->substit['__FACREF__']); $url=getPaypalPaymentUrl('invoice',$this->substit['__FACREF__']);
$defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoiceWithPaypalLink",$url); $defaultmessage=$langs->transnoentities("PredefinedMailContentSendInvoiceWithPaypalLink",$url);
} }
} }

View File

@ -22,7 +22,7 @@
* \file htdocs/includes/triggers/interface_modAgenda_ActionsAuto.class.php * \file htdocs/includes/triggers/interface_modAgenda_ActionsAuto.class.php
* \ingroup agenda * \ingroup agenda
* \brief Trigger file for agenda module * \brief Trigger file for agenda module
* \version $Id: interface_modAgenda_ActionsAuto.class.php,v 1.33 2011/07/07 09:18:27 simnandez Exp $ * \version $Id: interface_modAgenda_ActionsAuto.class.php,v 1.34 2011/07/13 18:05:27 eldy Exp $
*/ */
@ -550,8 +550,14 @@ class InterfaceActionsAuto
{ {
$now=dol_now(); $now=dol_now();
require_once(DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php');
require_once(DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php');
$contactforaction=new Contact($this->db);
$societeforaction=new Societe($this->db);
if ($object->sendtoid > 0) $contactforaction->fetch($object->sendtoid);
if ($object->socid > 0) $societeforaction->fetch($object->socid);
// Insertion action // Insertion action
require_once(DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php');
require_once(DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'); require_once(DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php');
$actioncomm = new ActionComm($this->db); $actioncomm = new ActionComm($this->db);
$actioncomm->type_code = $object->actiontypecode; $actioncomm->type_code = $object->actiontypecode;
@ -562,8 +568,8 @@ class InterfaceActionsAuto
$actioncomm->durationp = 0; $actioncomm->durationp = 0;
$actioncomm->punctual = 1; $actioncomm->punctual = 1;
$actioncomm->percentage = -1; // Not applicable $actioncomm->percentage = -1; // Not applicable
$actioncomm->contact = new Contact($this->db,$object->sendtoid); $actioncomm->contact = $contactforaction;
$actioncomm->societe = new Societe($this->db,$object->socid); $actioncomm->societe = $societeforaction;
$actioncomm->author = $user; // User saving action $actioncomm->author = $user; // User saving action
//$actioncomm->usertodo = $user; // User affected to action //$actioncomm->usertodo = $user; // User affected to action
$actioncomm->userdone = $user; // User doing action $actioncomm->userdone = $user; // User doing action

View File

@ -42,7 +42,7 @@ ErrCatAlreadyExists=Ce nom est déjà utilisé
AddProductToCat=Ajouter ce produit à une catégorie ? AddProductToCat=Ajouter ce produit à une catégorie ?
ImpossibleAddCat=Impossible d'ajouter la catégorie ImpossibleAddCat=Impossible d'ajouter la catégorie
ImpossibleAssociateCategory=Impossible d'associer la catégorie ImpossibleAssociateCategory=Impossible d'associer la catégorie
WasAddedSuccessfully=<b>%s</b> a été ajoutée avec succès. WasAddedSuccessfully=<b>%s</b> a été ajouté avec succès.
ObjectAlreadyLinkedToCategory=L'élément est déjà lié à cette catégorie. ObjectAlreadyLinkedToCategory=L'élément est déjà lié à cette catégorie.
CategorySuccessfullyCreated=La catégorie %s a été ajouté avec succès. CategorySuccessfullyCreated=La catégorie %s a été ajouté avec succès.
ProductIsInCategories=Ce produit/service est dans les catégories suivantes ProductIsInCategories=Ce produit/service est dans les catégories suivantes

View File

@ -22,7 +22,7 @@
* \file htdocs/paypal/lib/paypal.lib.php * \file htdocs/paypal/lib/paypal.lib.php
* \ingroup paypal * \ingroup paypal
* \brief Library for common paypal functions * \brief Library for common paypal functions
* \version $Id$ * \version $Id: paypal.lib.php,v 1.25 2011/07/13 16:55:34 eldy Exp $
*/ */
function llxHeaderPaypal($title, $head = "") function llxHeaderPaypal($title, $head = "")
{ {
@ -132,7 +132,7 @@ function html_print_paypal_footer($fromcompany,$langs)
function paypaladmin_prepare_head() function paypaladmin_prepare_head()
{ {
global $langs, $conf; global $langs, $conf;
$h = 0; $h = 0;
$head = array(); $head = array();
@ -140,7 +140,7 @@ function paypaladmin_prepare_head()
$head[$h][1] = $langs->trans("Account"); $head[$h][1] = $langs->trans("Account");
$head[$h][2] = 'paypalaccount'; $head[$h][2] = 'paypalaccount';
$h++; $h++;
// Show more tabs from modules // Show more tabs from modules
// Entries must be declared in modules descriptor with line // Entries must be declared in modules descriptor with line
// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
@ -151,24 +151,24 @@ function paypaladmin_prepare_head()
} }
/** /**
* *
*/ */
function getPaymentUrl($source='',$ref='',$amount=0,$freetag='') function getPaypalPaymentUrl($source='',$ref='',$amount=0,$freetag='')
{ {
global $conf; global $conf;
require_once(DOL_DOCUMENT_ROOT."/lib/security.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/security.lib.php");
if (! empty($source) && ! empty($ref)) if (! empty($source) && ! empty($ref))
{ {
$token=''; $token='';
if (! empty($conf->global->PAYPAL_SECURITY_TOKEN)) $token='&securekey='.dol_hash($conf->global->PAYPAL_SECURITY_TOKEN.$source.$ref, 2); if (! empty($conf->global->PAYPAL_SECURITY_TOKEN)) $token='&securekey='.dol_hash($conf->global->PAYPAL_SECURITY_TOKEN.$source.$ref, 2);
if ($source == 'commande') $source = 'order'; if ($source == 'commande') $source = 'order';
if ($source == 'facture') $source = 'invoice'; if ($source == 'facture') $source = 'invoice';
$url = DOL_MAIN_URL_ROOT.'/public/paypal/newpayment.php?source='.$source.'&ref='.$ref.$token; $url = DOL_MAIN_URL_ROOT.'/public/paypal/newpayment.php?source='.$source.'&ref='.$ref.$token;
return $url; return $url;
} }
} }
@ -482,7 +482,7 @@ function hash_call($methodName,$nvpStr)
global $conf, $langs; global $conf, $langs;
global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT, $PROXY_USER, $PROXY_PASS; global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT, $PROXY_USER, $PROXY_PASS;
global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE; global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE;
// TODO problem with triggers // TODO problem with triggers
$API_version="56"; $API_version="56";
if ($conf->global->PAYPAL_API_SANDBOX) if ($conf->global->PAYPAL_API_SANDBOX)
@ -495,7 +495,7 @@ function hash_call($methodName,$nvpStr)
$API_Endpoint = "https://api-3t.paypal.com/nvp"; $API_Endpoint = "https://api-3t.paypal.com/nvp";
$API_Url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="; $API_Url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=";
} }
// Clean parameters // Clean parameters
$PAYPAL_API_USER=""; $PAYPAL_API_USER="";
if ($conf->global->PAYPAL_API_USER) $PAYPAL_API_USER=$conf->global->PAYPAL_API_USER; if ($conf->global->PAYPAL_API_USER) $PAYPAL_API_USER=$conf->global->PAYPAL_API_USER;
@ -506,7 +506,7 @@ function hash_call($methodName,$nvpStr)
$PAYPAL_API_SANDBOX=""; $PAYPAL_API_SANDBOX="";
if ($conf->global->PAYPAL_API_SANDBOX) $PAYPAL_API_SANDBOX=$conf->global->PAYPAL_API_SANDBOX; if ($conf->global->PAYPAL_API_SANDBOX) $PAYPAL_API_SANDBOX=$conf->global->PAYPAL_API_SANDBOX;
// TODO END problem with triggers // TODO END problem with triggers
dol_syslog("Paypal API endpoint ".$API_Endpoint); dol_syslog("Paypal API endpoint ".$API_Endpoint);
//setting the curl parameters. //setting the curl parameters.
@ -580,19 +580,19 @@ function hash_call($methodName,$nvpStr)
function GetApiError() function GetApiError()
{ {
$errors=array(); $errors=array();
$resArray=$_SESSION['reshash']; $resArray=$_SESSION['reshash'];
if(isset($_SESSION['curl_error_no'])) if(isset($_SESSION['curl_error_no']))
{ {
$errors[] = $_SESSION['curl_error_no'].'-'.$_SESSION['curl_error_msg']; $errors[] = $_SESSION['curl_error_no'].'-'.$_SESSION['curl_error_msg'];
} }
foreach($resArray as $key => $value) foreach($resArray as $key => $value)
{ {
$errors[] = $key.'-'.$value; $errors[] = $key.'-'.$value;
} }
return $errors; return $errors;
} }