Clean code v16

This commit is contained in:
Laurent Destailleur 2022-05-18 11:00:43 +02:00
parent 1a0e416c1a
commit ed2e1bda46
16 changed files with 183 additions and 459 deletions

View File

@ -36,10 +36,10 @@ $langs->loadLangs(array("admin", "trips", "errors", "other", "dict"));
$error = 0;
$action = GETPOST('action', 'aZ09');
$id = GETPOST('id', 'int');
$ikoffset = GETPOST('ikoffset', 'int');
$coef = GETPOST('coef', 'int');
$fk_c_exp_tax_cat = GETPOST('fk_c_exp_tax_cat');
$fk_range = GETPOST('fk_range', 'int');
@ -62,9 +62,16 @@ if ($action == 'updateik') {
}
}
$expIk->setValues($_POST);
$result = $expIk->create($user);
$expIk->coef = $coef;
$expIk->ikoffset = $ikoffset;
$expIk->fk_c_exp_tax_cat = $fk_c_exp_tax_cat;
$expIk->fk_range = $fk_range;
if ($expIk->id > 0) {
$result = $expIk->update($user);
} else {
$result = $expIk->create($user);
}
if ($result > 0) {
setEventMessages('SetupSaved', null, 'mesgs');

View File

@ -34,13 +34,19 @@ require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport_rule.class.ph
// Load translation files required by the page
$langs->loadLangs(array("admin", "other", "trips", "errors", "dict"));
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
$hookmanager->initHooks(array('admin', 'dictionaryadmin','expensereport_rules'));
$object = new ExpenseReportRule($db);
if (!$user->admin) {
accessforbidden();
}
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
$hookmanager->initHooks(array('admin', 'dictionaryadmin','expensereport_rules'));
/*
* Action
*/
$parameters = array();
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
@ -51,7 +57,6 @@ if ($reshook < 0) {
if (empty($reshook)) {
//Init error
$error = false;
$message = false;
$action = GETPOST('action', 'aZ09');
$id = GETPOST('id', 'int');
@ -59,21 +64,20 @@ if (empty($reshook)) {
$apply_to = GETPOST('apply_to');
$fk_user = GETPOST('fk_user', 'int');
$fk_usergroup = GETPOST('fk_usergroup', 'int');
$fk_c_type_fees = GETPOST('fk_c_type_fees');
$restrictive = GETPOST('restrictive', 'int');
$fk_c_type_fees = GETPOST('fk_c_type_fees', 'int');
$code_expense_rules_type = GETPOST('code_expense_rules_type');
$dates = dol_mktime(12, 0, 0, GETPOST('startmonth'), GETPOST('startday'), GETPOST('startyear'));
$datee = dol_mktime(12, 0, 0, GETPOST('endmonth'), GETPOST('endday'), GETPOST('endyear'));
$amount = GETPOST('amount');
$amount = price2num(GETPOST('amount'), 'MT', 2);
$object = new ExpenseReportRule($db);
if (!empty($id)) {
$result = $object->fetch($id);
if ($result < 0) {
dol_print_error('', $object->error, $object->errors);
}
}
// TODO do action
if ($action == 'save') {
$error = 0;
@ -104,8 +108,6 @@ if (empty($reshook)) {
}
if (empty($error)) {
$object->setValues($_POST);
if ($apply_to == 'U') {
$object->fk_user = (int) $fk_user;
$object->fk_usergroup = 0;
@ -122,18 +124,30 @@ if (empty($reshook)) {
$object->dates = $dates;
$object->datee = $datee;
$object->restrictive = $restrictive;
$object->fk_c_type_fees = $fk_c_type_fees;
$object->code_expense_rules_type = $code_expense_rules_type;
$object->amount = $amount;
$object->entity = $conf->entity;
$res = $object->create($user);
if ($object->id > 0) {
$res = $object->update($user);
} else {
$res = $object->create($user);
}
if ($res > 0) {
setEventMessages($langs->trans('ExpenseReportRuleSave'), null);
} else {
dol_print_error($object->db);
$error++;
}
header('Location: ' . $_SERVER['PHP_SELF']);
exit;
if (!$error) {
header('Location: ' . $_SERVER['PHP_SELF']);
exit;
} else {
$action = '';
}
}
} elseif ($action == 'delete') {
// TODO add confirm
@ -207,7 +221,7 @@ if ($action != 'edit') {
echo '<td class="linecoltyperule">' . $form->selectarray('code_expense_rules_type', $tab_rules_type, '', 0) . '</td>';
echo '<td class="linecoldatestart">' . $form->selectDate(strtotime(date('Y-m-01', dol_now())), 'start', '', '', 0, '', 1, 0) . '</td>';
echo '<td class="linecoldateend>' . $form->selectDate(strtotime(date('Y-m-t', dol_now())), 'end', '', '', 0, '', 1, 0) . '</td>';
echo '<td class="linecolamount"><input type="text" value="" class="maxwidth100" name="amount" class="amount" /> ' . $conf->currency . '</td>';
echo '<td class="linecolamount"><input type="text" value="" class="maxwidth100" name="amount" class="amount right" /></td>';
echo '<td class="linecolrestrictive">' . $form->selectyesno('restrictive', 0, 1) . '</td>';
echo '<td class="right linecolbutton"><input type="submit" class="button button-add" value="' . $langs->trans('Add') . '" /></td>';
echo '</tr>';
@ -304,10 +318,10 @@ foreach ($rules as $rule) {
}
echo '</td>';
// Amount
echo '<td class="linecolamount">';
if ($action == 'edit' && $object->id == $rule->id) {
echo '<input type="text" value="' . price2num($object->amount) . '" name="amount" class="amount" />' . $conf->currency;
echo '<input type="text" value="' . price2num($object->amount) . '" name="amount" class="amount width50 right" />';
} else {
echo price($rule->amount, 0, $langs, 1, -1, -1, $conf->currency);
}

View File

@ -165,7 +165,7 @@ class PaymentVarious extends CommonObject
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
public function __construct(DoliDB $db)
{
$this->db = $db;
$this->element = 'payment_various';

View File

@ -121,7 +121,7 @@ class Deplacement extends CommonObject
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
public function __construct(DoliDB $db)
{
$this->db = $db;

View File

@ -222,7 +222,7 @@ class FactureRec extends CommonInvoice
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
public function __construct(DoliDB $db)
{
$this->db = $db;
}

View File

@ -428,7 +428,7 @@ class Facture extends CommonInvoice
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
public function __construct(DoliDB $db)
{
$this->db = $db;
}

View File

@ -57,7 +57,7 @@ class FactureStats extends Stats
* @param int $typentid Id typent of thirdpary for filter
* @param int $categid Id category of thirdpary for filter
*/
public function __construct($db, $socid, $mode, $userid = 0, $typentid = 0, $categid = 0)
public function __construct(DoliDB $db, $socid, $mode, $userid = 0, $typentid = 0, $categid = 0)
{
global $user, $conf;

View File

@ -68,7 +68,7 @@ class PaymentTerm // extends CommonObject
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
public function __construct(DoliDB $db)
{
$this->db = $db;
}

View File

@ -123,7 +123,7 @@ class ChargeSociales extends CommonObject
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
public function __construct(DoliDB $db)
{
$this->db = $db;
}

View File

@ -105,7 +105,7 @@ class PaymentSocialContribution extends CommonObject
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
public function __construct(DoliDB $db)
{
$this->db = $db;
}

View File

@ -1,413 +0,0 @@
<?php
/* EXPERIMENTAL
*
* Copyright (C) 2016 ATM Consulting <support@atm-consulting.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/core/class/coreobject.class.php
* \ingroup core
* \brief File of class to manage all object. Might be replace or merge into commonobject
*/
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
// TODO Remove this class (used in Expensereportik and ExpenseReportRule
/**
* CoreObject
*/
class CoreObject extends CommonObject
{
public $withChild = true;
/**
* @var Array $_fields Fields to synchronize with Database
*/
protected $fields = array();
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct(DoliDB &$db)
{
$this->db = $db;
}
/**
* Function to init fields
*
* @return bool
*/
protected function init()
{
$this->id = 0;
$this->datec = 0;
$this->tms = 0;
if (!empty($this->fields)) {
foreach ($this->fields as $field => $info) {
if ($this->isDate($info)) {
$this->{$field} = time();
} elseif ($this->isArray($info)) {
$this->{$field} = array();
} elseif ($this->isInt($info)) {
$this->{$field} = (int) 0;
} elseif ($this->isFloat($info)) {
$this->{$field} = (double) 0;
} else {
$this->{$field} = '';
}
}
$this->to_delete = false;
$this->is_clone = false;
return true;
} else {
return false;
}
}
/**
* Test type of field
*
* @param string $field name of field
* @param string $type type of field to test
* @return boolean value of field or false
*/
private function checkFieldType($field, $type)
{
if (isset($this->fields[$field]) && method_exists($this, 'is_'.$type)) {
return $this->{'is_'.$type}($this->fields[$field]);
} else {
return false;
}
}
/**
* Get object and children from database
*
* @param int $id Id of object to load
* @param bool $loadChild used to load children from database
* @return int >0 if OK, <0 if KO, 0 if not found
*/
public function fetch($id, $loadChild = true)
{
$res = $this->fetchCommon($id);
if ($res > 0) {
if ($loadChild) {
$this->fetchChild();
}
}
return $res;
}
/**
* Function to instantiate a new child
*
* @param string $tabName Table name of child
* @param int $id If id is given, we try to return his key if exist or load if we try_to_load
* @param string $key Attribute name of the object id
* @param bool $try_to_load Force the fetch if an id is given
* @return int
*/
public function addChild($tabName, $id = 0, $key = 'id', $try_to_load = false)
{
if (!empty($id)) {
foreach ($this->{$tabName} as $k => &$object) {
if ($object->{$key} === $id) {
return $k;
}
}
}
$k = count($this->{$tabName});
$className = ucfirst($tabName);
$this->{$tabName}[$k] = new $className($this->db);
if ($id > 0 && $key === 'id' && $try_to_load) {
$this->{$tabName}[$k]->fetch($id);
}
return $k;
}
/**
* Function to set a child as to delete
*
* @param string $tabName Table name of child
* @param int $id Id of child to set as to delete
* @param string $key Attribute name of the object id
* @return bool
*/
public function removeChild($tabName, $id, $key = 'id')
{
foreach ($this->{$tabName} as &$object) {
if ($object->{$key} == $id) {
$object->to_delete = true;
return true;
}
}
return false;
}
/**
* Function to fetch children objects
*
* @return void
*/
public function fetchChild()
{
if ($this->withChild && !empty($this->childtables) && !empty($this->fk_element)) {
foreach ($this->childtables as &$childTable) {
$className = ucfirst($childTable);
$this->{$className} = array();
$sql = "SELECT rowid FROM ".$this->db->prefix().$childTable." WHERE ".$this->fk_element." = ".((int) $this->id);
$res = $this->db->query($sql);
if ($res) {
while ($obj = $this->db->fetch_object($res)) {
$o = new $className($this->db);
$o->fetch($obj->rowid);
$this->{$className}[] = $o;
}
} else {
$this->errors[] = $this->db->lasterror();
}
}
}
}
/**
* Function to update children data
*
* @param User $user user object
* @return void
*/
public function saveChild(User &$user)
{
if ($this->withChild && !empty($this->childtables) && !empty($this->fk_element)) {
foreach ($this->childtables as &$childTable) {
$className = ucfirst($childTable);
if (!empty($this->{$className})) {
foreach ($this->{$className} as $i => &$object) {
$object->{$this->fk_element} = $this->id;
$object->update($user);
if ($this->unsetChildDeleted && isset($object->to_delete) && $object->to_delete == true) {
unset($this->{$className}[$i]);
}
}
}
}
}
}
/**
* Function to update object or create or delete if needed
*
* @param User $user User object
* @return int < 0 if KO, > 0 if OK
*/
public function update(User &$user)
{
if (empty($this->id)) {
return $this->create($user); // To test, with that, no need to test on high level object, the core decide it, update just needed
} elseif (isset($this->to_delete) && $this->to_delete == true) {
return $this->delete($user);
}
$error = 0;
$this->db->begin();
$res = $this->updateCommon($user);
if ($res) {
$result = $this->call_trigger(strtoupper($this->element).'_MODIFY', $user);
if ($result < 0) {
$error++;
} else {
$this->saveChild($user);
}
} else {
$error++;
$this->error = $this->db->lasterror();
$this->errors[] = $this->error;
}
if (empty($error)) {
$this->db->commit();
return $this->id;
} else {
$this->db->rollback();
return -1;
}
}
/**
* Function to create object in database
*
* @param User $user User object
* @return int < 0 if KO, > 0 if OK
*/
public function create(User $user)
{
if ($this->id > 0) {
return $this->update($user);
}
$error = 0;
$this->db->begin();
$res = $this->createCommon($user);
if ($res) {
$this->id = $this->db->last_insert_id($this->table_element);
$result = $this->call_trigger(strtoupper($this->element).'_CREATE', $user);
if ($result < 0) {
$error++;
} else {
$this->saveChild($user);
}
} else {
$error++;
$this->error = $this->db->lasterror();
$this->errors[] = $this->error;
}
if (empty($error)) {
$this->db->commit();
return $this->id;
} else {
$this->db->rollback();
return -1;
}
}
/**
* Function to delete object in database
*
* @param User $user user object
* @return int < 0 if KO, > 0 if OK
*/
public function delete(User &$user)
{
if ($this->id <= 0) {
return 0;
}
$error = 0;
$this->db->begin();
$result = $this->call_trigger(strtoupper($this->element).'_DELETE', $user);
if ($result < 0) {
$error++;
}
if (!$error) {
$this->deleteCommon($user);
if ($this->withChild && !empty($this->childtables)) {
foreach ($this->childtables as &$childTable) {
$className = ucfirst($childTable);
if (!empty($this->{$className})) {
foreach ($this->{$className} as &$object) {
$object->delete($user);
}
}
}
}
}
if (empty($error)) {
$this->db->commit();
return 1;
} else {
$this->error = $this->db->lasterror();
$this->errors[] = $this->error;
$this->db->rollback();
return -1;
}
}
/**
* Function to get a formatted date
*
* @param string $field Attribute to return
* @param string $format Output date format
* @return string
*/
public function getDate($field, $format = '')
{
if (empty($this->{$field})) {
return '';
} else {
return dol_print_date($this->{$field}, $format);
}
}
/**
* Function to set date in field
*
* @param string $field field to set
* @param string $date formatted date to convert
* @return mixed
*/
public function setDate($field, $date)
{
if (empty($date)) {
$this->{$field} = 0;
} else {
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
$this->{$field} = dol_stringtotime($date);
}
return $this->{$field};
}
/**
* Function to update current object
*
* @param array $Tab Array of values
* @return int
*/
public function setValues(&$Tab)
{
foreach ($Tab as $key => $value) {
if ($this->checkFieldType($key, 'date')) {
$this->setDate($key, $value);
} elseif ($this->checkFieldType($key, 'float')) {
$this->{$key} = (double) price2num($value);
} elseif ($this->checkFieldType($key, 'int')) {
$this->{$key} = (int) price2num($value);
} else {
$this->{$key} = dol_string_nohtmltag($value);
}
}
return 1;
}
}

View File

@ -465,7 +465,7 @@ print '</div>';
$count = 0;
print '<div class="divadvancedsearchfield">';
print '<div class="inline-block opacitymedium"><span class="fas fa-ruler-horizontal paddingright pictofixedwidth" title="'.dol_escape_htmltag($langs->trans("GroupBy")).'"></span></div>';
print $formother->selectGroupByField($object, $search_groupby, $arrayofgroupby, 'minwidth200 maxwidth250', $langs->trans("GroupBy")); // Fill the array $arrayofgroupby with possible fields
print $formother->selectGroupByField($object, $search_groupby, $arrayofgroupby, 'minwidth250 maxwidth300', $langs->trans("GroupBy")); // Fill the array $arrayofgroupby with possible fields
print '</div>';

View File

@ -1026,7 +1026,7 @@ class DoliDBSqlite3 extends DoliDB
*
* @param string $table Name of table
* @param string $field Optionnel : Name of field if we want description of field
* @return SQLite3Result Resource
* @return bool|SQLite3Result Resource
*/
public function DDLDescTable($table, $field = "")
{

View File

@ -120,7 +120,7 @@ class pdf_espadon extends ModelePdfExpedition
*
* @param DoliDB $db Database handler
*/
public function __construct($db = 0)
public function __construct($db)
{
global $conf, $langs, $mysoc;

View File

@ -22,12 +22,12 @@
* \brief File of class to manage expense ik
*/
require_once DOL_DOCUMENT_ROOT.'/core/class/coreobject.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
/**
* Class to manage inventories
*/
class ExpenseReportIk extends CoreObject
class ExpenseReportIk extends CommonObject
{
/**
* @var string ID to identify managed object
@ -68,6 +68,7 @@ class ExpenseReportIk extends CoreObject
*/
public $ikoffset;
/**
* Attribute object linked with database
* @var array
@ -80,17 +81,75 @@ class ExpenseReportIk extends CoreObject
,'ikoffset'=>array('type'=>'double')
);
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct(DoliDB &$db)
public function __construct(DoliDB $db)
{
parent::__construct($db);
parent::init();
$this->db = $db;
}
$this->errors = array();
/**
* Create object into database
*
* @param User $user User that creates
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, Id of created object if OK
*/
public function create(User $user, $notrigger = false)
{
$resultcreate = $this->createCommon($user, $notrigger);
//$resultvalidate = $this->validate($user, $notrigger);
return $resultcreate;
}
/**
* Load object in memory from the database
*
* @param int $id Id object
* @param string $ref Ref
* @return int <0 if KO, 0 if not found, >0 if OK
*/
public function fetch($id, $ref = null)
{
$result = $this->fetchCommon($id, $ref);
if ($result > 0 && !empty($this->table_element_line)) {
$this->fetchLines();
}
return $result;
}
/**
* Update object into database
*
* @param User $user User that modifies
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, >0 if OK
*/
public function update(User $user, $notrigger = false)
{
return $this->updateCommon($user, $notrigger);
}
/**
* Delete object in database
*
* @param User $user User that deletes
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, >0 if OK
*/
public function delete(User $user, $notrigger = false)
{
return $this->deleteCommon($user, $notrigger);
//return $this->deleteCommon($user, $notrigger, 1);
}

View File

@ -22,12 +22,12 @@
* \brief File of class to manage expense ik
*/
require_once DOL_DOCUMENT_ROOT.'/core/class/coreobject.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
/**
* Class to manage inventories
*/
class ExpenseReportRule extends CoreObject
class ExpenseReportRule extends CommonObject
{
/**
* @var string ID to identify managed object
@ -125,21 +125,78 @@ class ExpenseReportRule extends CoreObject
,'entity'=>array('type'=>'integer')
);
/**
* Constructor
*
* @param DoliDB $db Database handler
*/
public function __construct(DoliDB &$db)
public function __construct(DoliDB $db)
{
global $conf;
parent::__construct($db);
parent::init();
$this->errors = array();
$this->db = $db;
}
/**
* Create object into database
*
* @param User $user User that creates
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, Id of created object if OK
*/
public function create(User $user, $notrigger = false)
{
$resultcreate = $this->createCommon($user, $notrigger);
//$resultvalidate = $this->validate($user, $notrigger);
return $resultcreate;
}
/**
* Load object in memory from the database
*
* @param int $id Id object
* @param string $ref Ref
* @return int <0 if KO, 0 if not found, >0 if OK
*/
public function fetch($id, $ref = null)
{
$result = $this->fetchCommon($id, $ref);
if ($result > 0 && !empty($this->table_element_line)) {
$this->fetchLines();
}
return $result;
}
/**
* Update object into database
*
* @param User $user User that modifies
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, >0 if OK
*/
public function update(User $user, $notrigger = false)
{
return $this->updateCommon($user, $notrigger);
}
/**
* Delete object in database
*
* @param User $user User that deletes
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, >0 if OK
*/
public function delete(User $user, $notrigger = false)
{
return $this->deleteCommon($user, $notrigger);
//return $this->deleteCommon($user, $notrigger, 1);
}
/**
* Return all rules or filtered by something
*