set Default values as CURD classes

This commit is contained in:
Florian HENRY 2021-03-01 20:36:42 +01:00
parent 1b57d2a4a0
commit f62386a6a5
4 changed files with 42 additions and 43 deletions

View File

@ -83,7 +83,7 @@ if ($action == 'set') {
dolibarr_set_const($db, 'AGENDA_DEFAULT_VIEW', GETPOST('AGENDA_DEFAULT_VIEW'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, 'AGENDA_DEFAULT_VIEW', GETPOST('AGENDA_DEFAULT_VIEW'), 'chaine', 0, '', $conf->entity);
$defaultValues = new DefaultValues($db); $defaultValues = new DefaultValues($db);
$result = $defaultValues->fetchAll('','',0,0,array('t.page'=>'comm/action/card.php', 't.param'=>'complete','t.user_id'=>'0', 't.type'=>'createform', 'entity'=>$conf->entity)); $result = $defaultValues->fetchAll('','',0,0,array('t.page'=>'comm/action/card.php', 't.param'=>'complete','t.user_id'=>'0', 't.type'=>'createform', 't.entity'=>$conf->entity));
if (!is_array($result) && $result<0) { if (!is_array($result) && $result<0) {
setEventMessages($defaultValues->error,$defaultValues->errors,'errors'); setEventMessages($defaultValues->error,$defaultValues->errors,'errors');
} elseif(count($result)>0) { } elseif(count($result)>0) {
@ -358,7 +358,7 @@ print '<td class="center">&nbsp;</td>'."\n";
print '<td class="right nowrap">'."\n"; print '<td class="right nowrap">'."\n";
$defval='na'; $defval='na';
$defaultValues = new DefaultValues($db); $defaultValues = new DefaultValues($db);
$result = $defaultValues->fetchAll('','',0,0,array('t.page'=>'comm/action/card.php', 't.param'=>'complete','t.user_id'=>'0', 't.type'=>'createform', 'entity'=>$conf->entity)); $result = $defaultValues->fetchAll('','',0,0,array('t.page'=>'comm/action/card.php', 't.param'=>'complete','t.user_id'=>'0', 't.type'=>'createform', 't.entity'=>$conf->entity));
if (!is_array($result) && $result<0) { if (!is_array($result) && $result<0) {
setEventMessages($defaultValues->error,$defaultValues->errors,'errors'); setEventMessages($defaultValues->error,$defaultValues->errors,'errors');
} elseif(count($result)>0) { } elseif(count($result)>0) {

View File

@ -43,7 +43,7 @@ $id = GETPOST('rowid', 'int');
$action = GETPOST('action', 'aZ09'); $action = GETPOST('action', 'aZ09');
$optioncss = GETPOST('optionscss', 'alphanohtml'); $optioncss = GETPOST('optionscss', 'alphanohtml');
$mode = GETPOST('mode', 'aZ09') ?GETPOST('mode', 'aZ09') : 'createform'; // 'createform', 'filters', 'sortorder', 'focus' $mode = GETPOST('mode', 'aZ09') ? GETPOST('mode', 'aZ09') : 'createform'; // 'createform', 'filters', 'sortorder', 'focus'
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit;
$sortfield = GETPOST("sortfield", 'alpha'); $sortfield = GETPOST("sortfield", 'alpha');
@ -138,13 +138,12 @@ if (($action == 'add' || (GETPOST('add') && $action != 'update')) || GETPOST('ac
} }
if (!$error) { if (!$error) {
$db->begin();
if ($action == 'add' || (GETPOST('add') && $action != 'update')) { if ($action == 'add' || (GETPOST('add') && $action != 'update')) {
$object->type=$mode; $object->type=$mode;
$object->user_id=0; $object->user_id=0;
$object->page=$defaulturl; $object->page=$defaulturl;
$object->param=$defaulturl; $object->param=$defaultkey;
$object->value=$defaultvalue; $object->value=$defaultvalue;
$object->entity=$conf->entity; $object->entity=$conf->entity;
$result=$object->create($user); $result=$object->create($user);
@ -162,9 +161,11 @@ if (($action == 'add' || (GETPOST('add') && $action != 'update')) || GETPOST('ac
if (GETPOST('actionmodify')) if (GETPOST('actionmodify'))
{ {
$object->id=$id; $object->id=$id;
$object->page=$defaulturl; $object->type=$mode;
$object->page=$urlpage;
$object->param=$key; $object->param=$key;
$object->value=$defaultvalue; $object->value=$value;
$object->entity=$conf->entity;
$result=$object->update($user); $result=$object->update($user);
if ($result<0) { if ($result<0) {
$action = ''; $action = '';
@ -358,8 +359,9 @@ print '</tr>';
$result=$object->fetchAll( $sortorder, $sortfield, 0, 0, array('t.type'=>$mode,'t.entity'=>array($user->entity,$conf->entity))); $result=$object->fetchAll( $sortorder, $sortfield, 0, 0, array('t.type'=>$mode,'t.entity'=>array($user->entity,$conf->entity)));
if (!is_array($result) && $result<0) { if (!is_array($result) && $result<0) {
setEventMessages($object->error, $object->errors,'errors'); setEventMessages($object->error, $object->errors,'errors');
} else { } elseif (count($result)>0) {
foreach($result as $key=>$defaultvalue) { foreach($result as $key=>$defaultvalue) {
print "\n"; print "\n";
@ -367,13 +369,13 @@ if (!is_array($result) && $result<0) {
// Page // Page
print '<td>'; print '<td>';
if ($action != 'edit' || GETPOST('rowid', 'int') != $defaultvalue->rowid) print $defaultvalue->page; if ($action != 'edit' || GETPOST('rowid', 'int') != $defaultvalue->id) print $defaultvalue->page;
else print '<input type="text" name="urlpage" value="'.dol_escape_htmltag($defaultvalue->page).'">'; else print '<input type="text" name="urlpage" value="'.dol_escape_htmltag($defaultvalue->page).'">';
print '</td>'."\n"; print '</td>'."\n";
// Field // Field
print '<td>'; print '<td>';
if ($action != 'edit' || GETPOST('rowid') != $defaultvalue->rowid) print $defaultvalue->param; if ($action != 'edit' || GETPOST('rowid') != $defaultvalue->id) print $defaultvalue->param;
else print '<input type="text" name="key" value="'.dol_escape_htmltag($defaultvalue->param).'">'; else print '<input type="text" name="key" value="'.dol_escape_htmltag($defaultvalue->param).'">';
print '</td>'."\n"; print '</td>'."\n";
@ -385,7 +387,7 @@ if (!is_array($result) && $result<0) {
print '<input type="hidden" name="const['.$i.'][name]" value="'.$obj->transkey.'">'; print '<input type="hidden" name="const['.$i.'][name]" value="'.$obj->transkey.'">';
print '<input type="text" id="value_'.$i.'" class="flat inputforupdate" size="30" name="const['.$i.'][value]" value="'.dol_escape_htmltag($obj->transvalue).'">'; print '<input type="text" id="value_'.$i.'" class="flat inputforupdate" size="30" name="const['.$i.'][value]" value="'.dol_escape_htmltag($obj->transvalue).'">';
*/ */
if ($action != 'edit' || GETPOST('rowid') != $defaultvalue->rowid) print dol_escape_htmltag($defaultvalue->value); if ($action != 'edit' || GETPOST('rowid') != $defaultvalue->id) print dol_escape_htmltag($defaultvalue->value);
else print '<input type="text" name="value" value="'.dol_escape_htmltag($defaultvalue->value).'">'; else print '<input type="text" name="value" value="'.dol_escape_htmltag($defaultvalue->value).'">';
print '</td>'; print '</td>';
} }
@ -400,7 +402,7 @@ if (!is_array($result) && $result<0) {
} else { } else {
print '<input type="hidden" name="page" value="'.$page.'">'; print '<input type="hidden" name="page" value="'.$page.'">';
print '<input type="hidden" name="rowid" value="'.$id.'">'; print '<input type="hidden" name="rowid" value="'.$id.'">';
print '<div name="'.(!empty($defaultvalue->id) ? $obj->rowid : 'none').'"></div>'; print '<div name="'.(!empty($defaultvalue->id) ? $defaultvalue->id : 'none').'"></div>';
print '<input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">'; print '<input type="submit" class="button" name="actionmodify" value="'.$langs->trans("Modify").'">';
print '<input type="submit" class="button button-cancel" name="actioncancel" value="'.$langs->trans("Cancel").'">'; print '<input type="submit" class="button button-cancel" name="actioncancel" value="'.$langs->trans("Cancel").'">';
} }

View File

@ -265,13 +265,12 @@ class DefaultValues extends CommonObject
$sql = 'SELECT '; $sql = 'SELECT ';
$sql .= $this->getFieldList(); $sql .= $this->getFieldList();
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) $sql .= ' WHERE t.entity IN ('.getEntity($this->table_element).')'; $sql .= ' WHERE 1 = 1';
else $sql .= ' WHERE 1 = 1';
// Manage filter // Manage filter
$sqlwhere = array(); $sqlwhere = array();
if (count($filter) > 0) { if (count($filter) > 0) {
foreach ($filter as $key => $value) { foreach ($filter as $key => $value) {
if ($key == 't.rowid' || ($key == 't.entity' && !is_array($value)) || $key == 't.user_id') { if ($key == 't.rowid' || ($key == 't.entity' && !is_array($value)) || ($key == 't.user_id' && !is_array($value))) {
$sqlwhere[] = $key.'='.$value; $sqlwhere[] = $key.'='.$value;
} elseif (in_array($this->fields[$key]['type'], array('date', 'datetime', 'timestamp'))) { } elseif (in_array($this->fields[$key]['type'], array('date', 'datetime', 'timestamp'))) {
$sqlwhere[] = $key.' = \''.$this->db->idate($value).'\''; $sqlwhere[] = $key.' = \''.$this->db->idate($value).'\'';
@ -296,10 +295,12 @@ class DefaultValues extends CommonObject
if (!empty($limit)) { if (!empty($limit)) {
$sql .= ' '.$this->db->plimit($limit, $offset); $sql .= ' '.$this->db->plimit($limit, $offset);
} }
print $sql;
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) { if ($resql) {
$num = $this->db->num_rows($resql); $num = $this->db->num_rows($resql);
var_dump($num);
$i = 0; $i = 0;
while ($i < ($limit ? min($limit, $num) : $num)) while ($i < ($limit ? min($limit, $num) : $num))
{ {

View File

@ -611,31 +611,32 @@ class User extends CommonObject
public function loadDefaultValues() public function loadDefaultValues()
{ {
global $conf; global $conf;
if (!empty($conf->global->MAIN_ENABLE_DEFAULT_VALUES)) {
// Load user->default_values for user. TODO Save this in memcached ? // Load user->default_values for user. TODO Save this in memcached ?
$sql = "SELECT rowid, entity, type, page, param, value"; require_once DOL_DOCUMENT_ROOT.'/core/class/defaultvalues.class.php';
$sql .= " FROM ".MAIN_DB_PREFIX."default_values";
$sql .= " WHERE entity IN (".($this->entity > 0 ? $this->entity.", " : "").$conf->entity.")"; // Entity of user (if defined) + current entity $defaultValues = new DefaultValues($this->db);
$sql .= " AND user_id IN (0".($this->id > 0 ? ", ".$this->id : "").")"; // User 0 (all) + me (if defined) $result = $defaultValues->fetchAll('','',0,0,array('t.user_id'=>array(0,$this->id), 'entity'=>array($this->entity,$conf->entity)));
$resql = $this->db->query($sql);
if ($resql) { if (!is_array($result) && $result<0) {
while ($obj = $this->db->fetch_object($resql)) { setEventMessages($defaultValues->error,$defaultValues->errors,'errors');
if (!empty($obj->page) && !empty($obj->type) && !empty($obj->param)) { dol_print_error($this->db);
// $obj->page is relative URL with or without params return -1;
// $obj->type can be 'filters', 'sortorder', 'createform', ... } elseif(count($result)>0) {
// $obj->param is key or param foreach($result as $defval) {
$pagewithoutquerystring = $obj->page; if (!empty($defval->page) && !empty($defval->type) && !empty($defval->param)) {
$pagewithoutquerystring = $defval->page;
$pagequeries = ''; $pagequeries = '';
$reg = array(); $reg = array();
if (preg_match('/^([^\?]+)\?(.*)$/', $pagewithoutquerystring, $reg)) { // There is query param if (preg_match('/^([^\?]+)\?(.*)$/', $pagewithoutquerystring, $reg)) { // There is query param
$pagewithoutquerystring = $reg[1]; $pagewithoutquerystring = $reg[1];
$pagequeries = $reg[2]; $pagequeries = $reg[2];
} }
$this->default_values[$pagewithoutquerystring][$obj->type][$pagequeries ? $pagequeries : '_noquery_'][$obj->param] = $obj->value; $this->default_values[$pagewithoutquerystring][$defval->type][$pagequeries ? $pagequeries : '_noquery_'][$defval->param] = $defval->value;
//if ($pagequeries) $this->default_values[$pagewithoutquerystring][$obj->type.'_queries']=$pagequeries; }
} }
} }
// Sort by key, so _noquery_ is last
if (!empty($this->default_values)) { if (!empty($this->default_values)) {
foreach ($this->default_values as $a => $b) { foreach ($this->default_values as $a => $b) {
foreach ($b as $c => $d) { foreach ($b as $c => $d) {
@ -643,13 +644,8 @@ class User extends CommonObject
} }
} }
} }
$this->db->free($resql);
return 1;
} else {
dol_print_error($this->db);
return -1;
} }
return 1;
} }
/** /**